----------------->  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 FSTR_CONFIG
#define FSTR_CONFIG

#ifdef PP
#undef PP
#endif

#define PP	no_pre,no_post

-- note: all ACOPY macros are hard coded int
-- the compiler. This was needed especially for pSather to
-- achieve highest performance. However, you should not delete
-- them here, as the compiler still needs some of the information
-- in this file.
FSTR_ACOPY_FSTR:		PP,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				exec "FSTRACOPYF($0,$1);",
				f_exec "if(^0 && ^1) FSTRACOPYF($0,$1); else F_FSTRACOPYF($0,$1);";
FSTR_ACOPY_STR:			PP,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				exec "FSTRACOPY($0,$1);",
				f_exec "if(^0 && ^1) FSTRACOPY($0,$1); else F_FSTRACOPY($0,$1);";
FSTR_ACOPYN_FSTR_INT:		PP,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				exec "FSTRACOPYNF($0,$1,$2);",
				f_exec "if(^0 && ^1) FSTRACOPYNF($0,$1,$2); else F_FSTRACOPYNF($0,$1,$2);";
FSTR_ACOPYN_STR_INT:		PP,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				exec "FSTRACOPYN($0,$1,$2);",
				f_exec "if(^0 && ^1) FSTRACOPYN($0,$1,$2); else F_FSTRACOPYN($0,$1,$2);";
FSTR_ACOPY_INT_FSTR:		PP,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				exec "FSTRACOPYIF($0,$1,$2);",
				f_exec "if(^0 && ^2) FSTRACOPYIF($0,$1,$2); else F_FSTRACOPYIF($0,$1,$2);";
FSTR_ACOPY_INT_STR:		PP,reads "@0::[]" "@0::asize",writes "@0::[]" "@0::asize",
				exec "FSTRACOPYIS($0,$1,$2);",
				f_exec "if(^0 && ^2) FSTRACOPYIS($0,$1,$2); else F_FSTRACOPYIS($0,$1,$2);";
FSTR_MEMCMP_FSTR_INT:		PP,reads "@0::asize" "@0::loc" "@0::[]",var "@r $$;",
				exec "$$=STRISEQHELPER($0,$1,$2);" "$$",
				f_exec "$$=(^0&&^1)?STRISEQHELPER($0,$1,$2):F_STRISEQHELPER(@0,$0,@1,$1,$2);" "$$";
FSTR_MEMCMP_STR_INT:		PP,reads "@0::asize" "@0::loc" "@0::[]",var "@r $$;",
				exec "$$=STRISEQHELPER($0,$1,$2);" "$$",
				f_exec "$$=(^0&&^1)?STRISEQHELPER($0,$1,$2):F_STRISEQHELPER(@0,$0,@1,$1,$2);" "$$";

#endif
