----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 2 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------

#ifndef C_CONFIG
#define C_CONFIG

#ifdef PP
#undef PP
#endif

#ifdef APP
#undef APP
#endif

#ifdef FPP
#undef FPP
#endif

#ifdef VSTD
#undef VSTD
#endif

#define PP	no_pre,no_post
#define APP	arith,PP
#define FPP	fragile,PP
#define VSTD    var "@r $$;"

C_CHAR_CREATE_CHAR:	PP,exec		"CHARC_CHAR($1)"; 
C_CHAR_CHAR:		PP,exec		"C_CHARCHAR($0)";
C_CHAR_ZERO:		PP,exec		"C_CHAR_zero";
C_CHAR_PLUS:		APP,VSTD, exec "$$=C_CHARPLUS($0,$1);" "$$";
C_CHAR_MINUS:		APP,VSTD, exec "$$=C_CHARMINUS($0,$1);" "$$";
C_CHAR_TIMES:		APP,VSTD, exec "$$=C_CHARTIMES($0,$1);" "$$";
C_CHAR_DIV:		APP,VSTD, exec "$$=C_CHARDIV($0,$1);" "$$";
C_CHAR_IS_EQ:		PP,VSTD,exec	"$$=C_CHAR_IS_EQ($0,$1);" "$$";
C_CHAR_IS_LT:		PP,VSTD,exec	"$$=C_CHARIS_LT($0,$1);" "$$";

C_UNSIGNED_CHAR_CREATE_CHAR:	PP,exec		"CHARC_UNSIGNED_CHAR($1)"; 
C_UNSIGNED_CHAR_CHAR:		PP,exec		"C_UNSIGNED_CHARCHAR($0)";
C_UNSIGNED_CHAR_ZERO:		PP,exec		"C_UNSIGNED_CHAR_zero";
C_UNSIGNED_CHAR_PLUS:		APP,VSTD, exec "$$=C_UNSIGNED_CHARPLUS($0,$1);" "$$";
C_UNSIGNED_CHAR_MINUS:		APP,VSTD, exec "$$=C_UNSIGNED_CHARMINUS($0,$1);" "$$";
C_UNSIGNED_CHAR_TIMES:		APP,VSTD, exec "$$=C_UNSIGNED_CHARTIMES($0,$1);" "$$";
C_UNSIGNED_CHAR_DIV:		APP,VSTD, exec "$$=C_UNSIGNED_CHARDIV($0,$1);" "$$";
C_UNSIGNED_CHAR_IS_EQ:		PP,VSTD,exec	"$$=C_UNSIGNED_CHAR_IS_EQ($0,$1);" "$$";
C_UNSIGNED_CHAR_IS_LT:		PP,VSTD,exec	"$$=C_UNSIGNED_CHARIS_LT($0,$1);" "$$";

C_SIGNED_CHAR_CREATE_CHAR:	PP,exec		"CHARC_SIGNED_CHAR($1)"; 
C_SIGNED_CHAR_CHAR:		PP,exec		"C_SIGNED_CHARCHAR($0)";
C_SIGNED_CHAR_ZERO:		PP,exec		"C_SIGNED_CHAR_zero";
C_SIGNED_CHAR_PLUS:		APP,VSTD, exec "$$=C_SIGNED_CHARPLUS($0,$1);" "$$";
C_SIGNED_CHAR_MINUS:		APP,VSTD, exec "$$=C_SIGNED_CHARMINUS($0,$1);" "$$";
C_SIGNED_CHAR_TIMES:		APP,VSTD, exec "$$=C_SIGNED_CHARTIMES($0,$1);" "$$";
C_SIGNED_CHAR_DIV:		APP,VSTD, exec "$$=C_SIGNED_CHARDIV($0,$1);" "$$";
C_SIGNED_CHAR_IS_EQ:		PP,VSTD,exec	"$$=C_SIGNED_CHAR_IS_EQ($0,$1);" "$$";
C_SIGNED_CHAR_IS_LT:		PP,VSTD,exec	"$$=C_SIGNED_CHARIS_LT($0,$1);" "$$";

C_SHORT_CREATE_INT:	PP,exec		"INTC_SHORT($1)"; 
C_SHORT_INT:		PP,exec		"C_SHORTINT($0)";
C_SHORT_ZERO:		PP,exec		"C_SHORT_zero";
C_SHORT_PLUS:		APP,VSTD, exec "$$=C_SHORTPLUS($0,$1);" "$$";
C_SHORT_MINUS:		APP,VSTD, exec "$$=C_SHORTMINUS($0,$1);" "$$";
C_SHORT_TIMES:		APP,VSTD, exec "$$=C_SHORTTIMES($0,$1);" "$$";
C_SHORT_DIV:		APP,VSTD, exec "$$=C_SHORTDIV($0,$1);" "$$";
C_SHORT_IS_EQ:		PP,VSTD,exec	"$$=C_SHORT_IS_EQ($0,$1);" "$$";
C_SHORT_IS_LT:		PP,VSTD,exec	"$$=C_SHORTIS_LT($0,$1);" "$$";

C_INT_CREATE_INT:	PP,exec		"INTC_INT($1)"; 
C_INT_INT:		PP,exec		"C_INTINT($0)";
C_INT_ZERO:		PP,exec		"C_INT_zero";
C_INT_PLUS:		APP,VSTD, exec "$$=C_INTPLUS($0,$1);" "$$";
C_INT_MINUS:		APP,VSTD, exec "$$=C_INTMINUS($0,$1);" "$$";
C_INT_TIMES:		APP,VSTD, exec "$$=C_INTTIMES($0,$1);" "$$";
C_INT_DIV:		APP,VSTD, exec "$$=C_INTDIV($0,$1);" "$$";
C_INT_IS_EQ:		PP,VSTD,exec	"$$=C_INT_IS_EQ($0,$1);" "$$";
C_INT_IS_LT:		PP,VSTD,exec	"$$=C_INTIS_LT($0,$1);" "$$";

C_LONG_CREATE_INT:	PP,exec		"INTC_LONG($1)"; 
C_LONG_INT:		PP,exec		"C_LONGINT($0)";
C_LONG_ZERO:		PP,exec		"C_LONG_zero";
C_LONG_PLUS:		APP,VSTD, exec "$$=C_LONGPLUS($0,$1);" "$$";
C_LONG_MINUS:		APP,VSTD, exec "$$=C_LONGMINUS($0,$1);" "$$";
C_LONG_TIMES:		APP,VSTD, exec "$$=C_LONGTIMES($0,$1);" "$$";
C_LONG_DIV:		APP,VSTD, exec "$$=C_LONGDIV($0,$1);" "$$";
C_LONG_IS_EQ:		PP,VSTD,exec	"$$=C_LONG_IS_EQ($0,$1);" "$$";
C_LONG_IS_LT:		PP,VSTD,exec	"$$=C_LONGIS_LT($0,$1);" "$$";

C_UNSIGNED_SHORT_CREATE_INT:	PP,exec		"INTC_UNSIGNED_SHORT($1)"; 
C_UNSIGNED_SHORT_INT:		PP,exec		"C_UNSIGNED_SHORTINT($0)";
C_UNSIGNED_SHORT_ZERO:		PP,exec		"C_UNSIGNED_SHORT_zero";
C_UNSIGNED_SHORT_PLUS:		APP,VSTD, exec "$$=C_UNSIGNED_SHORTPLUS($0,$1);" "$$";
C_UNSIGNED_SHORT_MINUS:		APP,VSTD, exec "$$=C_UNSIGNED_SHORTMINUS($0,$1);" "$$";
C_UNSIGNED_SHORT_TIMES:		APP,VSTD, exec "$$=C_UNSIGNED_SHORTTIMES($0,$1);" "$$";
C_UNSIGNED_SHORT_DIV:		APP,VSTD, exec "$$=C_UNSIGNED_SHORTDIV($0,$1);" "$$";
C_UNSIGNED_SHORT_IS_EQ:		PP,VSTD,exec	"$$=C_UNSIGNED_SHORT_IS_EQ($0,$1);" "$$";
C_UNSIGNED_SHORT_IS_LT:		PP,VSTD,exec	"$$=C_UNSIGNED_SHORTIS_LT($0,$1);" "$$";

C_UNSIGNED_INT_CREATE_INT:	PP,exec		"INTC_UNSIGNED_INT($1)"; 
C_UNSIGNED_INT_INT:		PP,exec		"C_UNSIGNED_INTINT($0)";
C_UNSIGNED_INT_ZERO:		PP,exec		"C_UNSIGNED_INT_zero";
C_UNSIGNED_INT_PLUS:		APP,VSTD, exec "$$=C_UNSIGNED_INTPLUS($0,$1);" "$$";
C_UNSIGNED_INT_MINUS:		APP,VSTD, exec "$$=C_UNSIGNED_INTMINUS($0,$1);" "$$";
C_UNSIGNED_INT_TIMES:		APP,VSTD, exec "$$=C_UNSIGNED_INTTIMES($0,$1);" "$$";
C_UNSIGNED_INT_DIV:		APP,VSTD, exec "$$=C_UNSIGNED_INTDIV($0,$1);" "$$";
C_UNSIGNED_INT_IS_EQ:		PP,VSTD,exec	"$$=C_UNSIGNED_INT_IS_EQ($0,$1);" "$$";
C_UNSIGNED_INT_IS_LT:		PP,VSTD,exec	"$$=C_UNSIGNED_INTIS_LT($0,$1);" "$$";

C_UNSIGNED_LONG_CREATE_INT:	PP,exec		"INTC_UNSIGNED_LONG($1)"; 
C_UNSIGNED_LONG_INT:		PP,exec		"C_UNSIGNED_LONGINT($0)";
C_UNSIGNED_LONG_ZERO:		PP,exec		"C_UNSIGNED_LONG_zero";
C_UNSIGNED_LONG_PLUS:		APP,VSTD, exec "$$=C_UNSIGNED_LONGPLUS($0,$1);" "$$";
C_UNSIGNED_LONG_MINUS:		APP,VSTD, exec "$$=C_UNSIGNED_LONGMINUS($0,$1);" "$$";
C_UNSIGNED_LONG_TIMES:		APP,VSTD, exec "$$=C_UNSIGNED_LONGTIMES($0,$1);" "$$";
C_UNSIGNED_LONG_DIV:		APP,VSTD, exec "$$=C_UNSIGNED_LONGDIV($0,$1);" "$$";
C_UNSIGNED_LONG_IS_EQ:		PP,VSTD,exec	"$$=C_UNSIGNED_LONG_IS_EQ($0,$1);" "$$";
C_UNSIGNED_LONG_IS_LT:		PP,VSTD,exec	"$$=C_UNSIGNED_LONGIS_LT($0,$1);" "$$";

C_FLOAT_CREATE_FLT:	PP,exec		"FLTC_FLOAT($1)"; 
C_FLOAT_FLT:		PP,exec		"C_FLOATFLT($0)";
C_FLOAT_ZERO:		PP,exec		"C_FLOAT_zero";
C_FLOAT_PLUS:		APP,VSTD, exec "$$=C_FLOATPLUS($0,$1);" "$$";
C_FLOAT_MINUS:		APP,VSTD, exec "$$=C_FLOATMINUS($0,$1);" "$$";
C_FLOAT_TIMES:		APP,VSTD, exec "$$=C_FLOATTIMES($0,$1);" "$$";
C_FLOAT_DIV:		APP,VSTD, exec "$$=C_FLOATDIV($0,$1);" "$$";
C_FLOAT_IS_EQ:		PP,VSTD,exec	"$$=C_FLOAT_IS_EQ($0,$1);" "$$";
C_FLOAT_IS_LT:		PP,VSTD,exec	"$$=C_FLOATIS_LT($0,$1);" "$$";

C_DOUBLE_CREATE_FLTD:	PP,exec		"FLTDC_DOUBLE($1)"; 
C_DOUBLE_FLTD:		PP,exec		"C_DOUBLEFLTD($0)";
C_DOUBLE_ZERO:		PP,exec		"C_DOUBLE_zero";
C_DOUBLE_PLUS:		APP,VSTD, exec "$$=C_DOUBLEPLUS($0,$1);" "$$";
C_DOUBLE_MINUS:		APP,VSTD, exec "$$=C_DOUBLEMINUS($0,$1);" "$$";
C_DOUBLE_TIMES:		APP,VSTD, exec "$$=C_DOUBLETIMES($0,$1);" "$$";
C_DOUBLE_DIV:		APP,VSTD, exec "$$=C_DOUBLEDIV($0,$1);" "$$";
C_DOUBLE_IS_EQ:		PP,VSTD,exec	"$$=C_DOUBLE_IS_EQ($0,$1);" "$$";
C_DOUBLE_IS_LT:		PP,VSTD,exec	"$$=C_DOUBLEIS_LT($0,$1);" "$$";

C_LONG_DOUBLE_CREATE_FLTD:	PP,exec		"FLTDC_LONG_DOUBLE($1)"; 
C_LONG_DOUBLE_FLTD:		PP,exec		"C_LONG_DOUBLEFLTD($0)";
C_LONG_DOUBLE_ZERO:		PP,exec		"C_LONG_DOUBLE_zero";
C_LONG_DOUBLE_PLUS:		APP,VSTD, exec "$$=C_LONG_DOUBLEPLUS($0,$1);" "$$";
C_LONG_DOUBLE_MINUS:		APP,VSTD, exec "$$=C_LONG_DOUBLEMINUS($0,$1);" "$$";
C_LONG_DOUBLE_TIMES:		APP,VSTD, exec "$$=C_LONG_DOUBLETIMES($0,$1);" "$$";
C_LONG_DOUBLE_DIV:		APP,VSTD, exec "$$=C_LONG_DOUBLEDIV($0,$1);" "$$";
C_LONG_DOUBLE_IS_EQ:		PP,VSTD,exec	"$$=C_LONG_DOUBLE_IS_EQ($0,$1);" "$$";
C_LONG_DOUBLE_IS_LT:		PP,VSTD,exec	"$$=C_LONG_DOUBLEIS_LT($0,$1);" "$$";

CONVERT_FROM_C_PTR_CREATE_C_PTR:	PP,exec  "(@0)$1";
CONVERT_TO_C_PTR:			PP,exec  "(C_PTR)$0";

C_PTR_ZERO:			PP,exec		"C_PTR_zero";
C_CHAR_PTR_ZERO:		PP,exec		"C_CHAR_PTR_zero";
C_UNSIGNED_CHAR_PTR_ZERO:	PP,exec		"C_UNSIGNED_CHAR_PTR_zero";
C_SIGNED_CHAR_PTR_ZERO:		PP,exec		"C_SIGNED_CHAR_PTR_zero";
C_SHORT_PTR_ZERO:		PP,exec		"C_SHORT_PTR_zero";
C_INT_PTR_ZERO:			PP,exec		"C_INT_PTR_zero";
C_LONG_PTR_ZERO:		PP,exec		"C_LONG_PTR_zero";
C_UNSIGNED_SHORT_PTR_ZERO:	PP,exec		"C_UNSIGNED_SHORT_PTR_zero";
C_UNSIGNED_INT_PTR_ZERO:	PP,exec		"C_UNSIGNED_INT_PTR_zero";
C_UNSIGNED_LONG_PTR_ZERO:	PP,exec		"C_UNSIGNED_LONG_PTR_zero";
C_FLOAT_PTR_ZERO:		PP,exec		"C_FLOAT_PTR_zero";
C_DOUBLE_PTR_ZERO:		PP,exec		"C_DOUBLE_PTR_zero";
C_LONG_DOUBLE_PTR_ZERO:		PP,exec		"C_LONG_DOUBLE_PTR_zero";

C_PTR_IS_EQ:		PP,VSTD,exec	"$$=C_PTR_IS_EQ($0,$1);" "$$";
C_CHAR_PTR_IS_EQ:	PP,VSTD,exec	"$$=C_CHAR_PTR_IS_EQ($0,$1);" "$$";
C_UNSIGNED_CHAR_PTR_IS_EQ: PP,VSTD,exec	"$$=C_UNSIGNED_CHAR_PTR_IS_EQ($0,$1);" "$$";
C_SIGNED_CHAR_PTR_IS_EQ:	PP,VSTD,exec	"$$=C_SIGNED_CHAR_PTR_IS_EQ($0,$1);" "$$";
C_SHORT_PTR_IS_EQ:	PP,VSTD,exec	"$$=C_SHORT_PTR_IS_EQ($0,$1);" "$$";
C_INT_PTR_IS_EQ:	PP,VSTD,exec	"$$=C_INT_PTR_IS_EQ($0,$1);" "$$";
C_LONG_PTR_IS_EQ:	PP,VSTD,exec	"$$=C_LONG_PTR_IS_EQ($0,$1);" "$$";
C_UNSIGNED_SHORT_PTR_IS_EQ:	PP,VSTD,exec	"$$=C_UNSIGNED_SHORT_PTR_IS_EQ($0,$1);" "$$";
C_UNSIGNED_INT_PTR_IS_EQ:	PP,VSTD,exec	"$$=C_UNSIGNED_INT_PTR_IS_EQ($0,$1);" "$$";
C_UNSIGNED_LONG_PTR_IS_EQ:	PP,VSTD,exec	"$$=C_UNSIGNED_LONG_PTR_IS_EQ($0,$1);" "$$";
C_FLOAT_PTR_IS_EQ:	PP,VSTD,exec	"$$=C_FLOAT_PTR_IS_EQ($0,$1);" "$$";
C_DOUBLE_PTR_IS_EQ:	PP,VSTD,exec	"$$=C_DOUBLE_PTR_IS_EQ($0,$1);" "$$";
C_LONG_DOUBLE_PTR_IS_EQ:	PP,VSTD,exec	"$$=C_LONG_DOUBLE_PTR_IS_EQ($0,$1);" "$$";


#endif C_CONFIG




