/* C file produced by GAC */
#include "compiled.h"
#define FILE_CRC "-115201159"
/* global variables used in handlers */
static GVar G_REREADING;
static Obj GC_REREADING;
static GVar G_SHALLOW__COPY__OBJ;
static Obj GF_SHALLOW__COPY__OBJ;
static GVar G_PRINT__OBJ;
static Obj GC_PRINT__OBJ;
static GVar G_GAPInfo;
static Obj GC_GAPInfo;
static GVar G_TYPE__FUNCTION__WITH__NAME;
static Obj GC_TYPE__FUNCTION__WITH__NAME;
static GVar G_TYPE__OPERATION__WITH__NAME;
static Obj GC_TYPE__OPERATION__WITH__NAME;
static GVar G_IS__FUNCTION;
static Obj GF_IS__FUNCTION;
static GVar G_NAME__FUNC;
static Obj GF_NAME__FUNC;
static GVar G_SET__NAME__FUNC;
static Obj GF_SET__NAME__FUNC;
static GVar G_NARG__FUNC;
static Obj GF_NARG__FUNC;
static GVar G_CHECK__REPEATED__ATTRIBUTE__SET;
static GVar G_IS__OPERATION;
static Obj GF_IS__OPERATION;
static GVar G_IS__INT;
static Obj GF_IS__INT;
static GVar G_IS__LIST;
static Obj GF_IS__LIST;
static GVar G_ADD__LIST;
static Obj GF_ADD__LIST;
static GVar G_IS__STRING__REP;
static Obj GF_IS__STRING__REP;
static GVar G_Error;
static Obj GF_Error;
static GVar G_VAL__GVAR;
static Obj GF_VAL__GVAR;
static GVar G_TYPE__OBJ;
static Obj GF_TYPE__OBJ;
static GVar G_IMMUTABLE__COPY__OBJ;
static Obj GF_IMMUTABLE__COPY__OBJ;
static GVar G_IS__IDENTICAL__OBJ;
static Obj GF_IS__IDENTICAL__OBJ;
static GVar G_MakeImmutable;
static Obj GF_MakeImmutable;
static GVar G_INPUT__FILENAME;
static Obj GF_INPUT__FILENAME;
static GVar G_INPUT__LINENUMBER;
static Obj GF_INPUT__LINENUMBER;
static GVar G_IS__OBJECT;
static Obj GC_IS__OBJECT;
static GVar G_TRY__NEXT__METHOD;
static Obj GC_TRY__NEXT__METHOD;
static GVar G_SUB__FLAGS;
static Obj GF_SUB__FLAGS;
static GVar G_WITH__HIDDEN__IMPS__FLAGS;
static Obj GF_WITH__HIDDEN__IMPS__FLAGS;
static GVar G_WITH__IMPS__FLAGS;
static Obj GF_WITH__IMPS__FLAGS;
static GVar G_IS__SUBSET__FLAGS;
static Obj GF_IS__SUBSET__FLAGS;
static GVar G_TRUES__FLAGS;
static Obj GF_TRUES__FLAGS;
static GVar G_FLAG1__FILTER;
static Obj GF_FLAG1__FILTER;
static GVar G_FLAGS__FILTER;
static Obj GF_FLAGS__FILTER;
static GVar G_METHODS__OPERATION;
static Obj GF_METHODS__OPERATION;
static GVar G_CHANGED__METHODS__OPERATION;
static Obj GF_CHANGED__METHODS__OPERATION;
static GVar G_INSTALL__EARLY__METHOD;
static Obj GC_INSTALL__EARLY__METHOD;
static GVar G_DO__NOTHING__SETTER;
static Obj GC_DO__NOTHING__SETTER;
static GVar G_IS__CONSTRUCTOR;
static Obj GF_IS__CONSTRUCTOR;
static GVar G_QUO__INT;
static Obj GF_QUO__INT;
static GVar G_STRING__INT;
static Obj GF_STRING__INT;
static GVar G_fail;
static Obj GC_fail;
static GVar G_RETURN__TRUE;
static Obj GC_RETURN__TRUE;
static GVar G_RETURN__FALSE;
static Obj GC_RETURN__FALSE;
static GVar G_LEN__LIST;
static Obj GF_LEN__LIST;
static GVar G_APPEND__LIST__INTR;
static Obj GF_APPEND__LIST__INTR;
static GVar G_COPY__LIST__ENTRIES;
static Obj GF_COPY__LIST__ENTRIES;
static GVar G_CONV__STRING;
static Obj GF_CONV__STRING;
static GVar G_Print;
static Obj GF_Print;
static GVar G_ViewObj;
static Obj GC_ViewObj;
static GVar G_RUN__IMMEDIATE__METHODS__RUNS;
static Obj GC_RUN__IMMEDIATE__METHODS__RUNS;
static GVar G_RUN__IMMEDIATE__METHODS__CHECKS;
static Obj GC_RUN__IMMEDIATE__METHODS__CHECKS;
static GVar G_RUN__IMMEDIATE__METHODS__HITS;
static Obj GC_RUN__IMMEDIATE__METHODS__HITS;
static GVar G_BIND__GLOBAL;
static Obj GF_BIND__GLOBAL;
static GVar G_IGNORE__IMMEDIATE__METHODS;
static Obj GC_IGNORE__IMMEDIATE__METHODS;
static GVar G_IMM__FLAGS;
static Obj GC_IMM__FLAGS;
static GVar G_TRACE__IMMEDIATE__METHODS;
static Obj GC_TRACE__IMMEDIATE__METHODS;
static GVar G_IMMEDIATES;
static Obj GC_IMMEDIATES;
static GVar G_SIZE__IMMEDIATE__METHOD__ENTRY;
static Obj GC_SIZE__IMMEDIATE__METHOD__ENTRY;
static GVar G_IMMEDIATE__METHODS;
static Obj GC_IMMEDIATE__METHODS;
static GVar G_RankFilter;
static Obj GF_RankFilter;
static GVar G_CHECK__INSTALL__METHOD;
static Obj GC_CHECK__INSTALL__METHOD;
static GVar G_READEVALCOMMAND__LINENUMBER;
static Obj GC_READEVALCOMMAND__LINENUMBER;
static GVar G_INSTALL__METHOD;
static Obj GF_INSTALL__METHOD;
static GVar G_DeclareGlobalFunction;
static Obj GF_DeclareGlobalFunction;
static GVar G_EvalString;
static Obj GF_EvalString;
static GVar G_RANK__SHIFT__FUNCTION;
static Obj GF_RANK__SHIFT__FUNCTION;
static GVar G_WRAPPER__OPERATIONS;
static Obj GC_WRAPPER__OPERATIONS;
static GVar G_INFO__DEBUG;
static Obj GF_INFO__DEBUG;
static GVar G_GET__OPER__FLAGS;
static Obj GF_GET__OPER__FLAGS;
static GVar G_NamesFilter;
static Obj GF_NamesFilter;
static GVar G_Ordinal;
static Obj GF_Ordinal;
static GVar G_HasNameFunction;
static Obj GC_HasNameFunction;
static GVar G_INSTALL__METHOD__FLAGS;
static Obj GF_INSTALL__METHOD__FLAGS;
static GVar G_LENGTH__SETTER__METHODS__2;
static Obj GC_LENGTH__SETTER__METHODS__2;
static GVar G_InstallAttributeFunction;
static Obj GF_InstallAttributeFunction;
static GVar G_INFO__FILTERS;
static Obj GC_INFO__FILTERS;
static GVar G_FNUM__CATS__AND__REPS;
static Obj GC_FNUM__CATS__AND__REPS;
static GVar G_FILTERS;
static Obj GC_FILTERS;
static GVar G_FNUM__PROS;
static Obj GC_FNUM__PROS;
static GVar G_InstallOtherMethod;
static Obj GF_InstallOtherMethod;
static GVar G_Tester;
static Obj GF_Tester;
static GVar G_IsPrimeInt;
static Obj GF_IsPrimeInt;
static GVar G_DeclareOperation;
static Obj GF_DeclareOperation;
static GVar G_VALUE__GLOBAL;
static Obj GF_VALUE__GLOBAL;
static GVar G_DeclareAttribute;
static Obj GF_DeclareAttribute;
static GVar G_InstallMethod;
static Obj GF_InstallMethod;
static GVar G_PositionSortedOddPositions;
static Obj GF_PositionSortedOddPositions;
static GVar G_CallFuncList;
static Obj GF_CallFuncList;
/* record names used in handlers */
static RNam R_MaxNrArgsMethod;
static RNam R_CommandLineOptions;
static RNam R_N;
/* information for the functions */
static Obj NameFunc[20];
static Obj FileName;
/* handler for function 2 */
static Obj HdlrFunc2 (
Obj self,
Obj a_obj,
Obj a_flags )
{
Obj l_flagspos = 0;
Obj l_tried = 0;
Obj l_type = 0;
Obj l_j = 0;
Obj l_imm = 0;
Obj l_i = 0;
Obj l_meth = 0;
Obj l_res = 0;
Obj l_loc = 0;
Obj l_newflags = 0;
Obj t_1 = 0;
Obj t_2 = 0;
Obj t_3 = 0;
Obj t_4 = 0;
Obj t_5 = 0;
Obj t_6 = 0;
Obj t_7 = 0;
Obj t_8 = 0;
Obj t_9 = 0;
Obj t_10 = 0;
Obj t_11 = 0;
Obj t_12 = 0;
Obj t_13 = 0;
Obj t_14 = 0;
Obj t_15 = 0;
Obj t_16 = 0;
Obj t_17 = 0;
(void )l_flagspos;
(void )l_tried;
(void )l_type;
(void )l_j;
(void )l_imm;
(void )l_i;
(void )l_meth;
(void )l_res;
(void )l_loc;
(void )l_newflags;
Bag oldFrame;
/* allocate new stack frame */
SWITCH_TO_NEW_FRAME(self,0,0,oldFrame);
/* if IGNORE_IMMEDIATE_METHODS then */
t_2 = GC_IGNORE__IMMEDIATE__METHODS;
CHECK_BOUND( t_2, "IGNORE_IMMEDIATE_METHODS" );
CHECK_BOOL( t_2 );
t_1 = (Obj)(UInt)(t_2 != False );
if ( t_1 ) {
/* return; */
SWITCH_TO_OLD_FRAME(oldFrame);
return 0;
}
/* fi */
/* if IS_SUBSET_FLAGS( IMM_FLAGS, flags ) then */
t_3 = GF_IS__SUBSET__FLAGS;
t_4 = GC_IMM__FLAGS;
CHECK_BOUND( t_4, "IMM_FLAGS" );
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_2ARGS( t_3, t_4, a_flags );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( t_4, a_flags ) );
}
CHECK_FUNC_RESULT( t_2 );
CHECK_BOOL( t_2 );
t_1 = (Obj)(UInt)(t_2 != False );
if ( t_1 ) {
/* return; */
SWITCH_TO_OLD_FRAME(oldFrame);
return 0;
}
/* fi */
/* flags := SUB_FLAGS( flags, IMM_FLAGS ); */
t_2 = GF_SUB__FLAGS;
t_3 = GC_IMM__FLAGS;
CHECK_BOUND( t_3, "IMM_FLAGS" );
if ( TNUM_OBJ( t_2 ) == T_FUNCTION ) {
t_1 = CALL_2ARGS( t_2, a_flags, t_3 );
}
else {
t_1 = DoOperation2Args( CallFuncListOper, t_2, NewPlistFromArgs( a_flags, t_3 ) );
}
CHECK_FUNC_RESULT( t_1 );
a_flags = t_1;
/* flagspos := SHALLOW_COPY_OBJ( TRUES_FLAGS( flags ) ); */
t_2 = GF_SHALLOW__COPY__OBJ;
t_4 = GF_TRUES__FLAGS;
if ( TNUM_OBJ( t_4 ) == T_FUNCTION ) {
t_3 = CALL_1ARGS( t_4, a_flags );
}
else {
t_3 = DoOperation2Args( CallFuncListOper, t_4, NewPlistFromArgs( a_flags ) );
}
CHECK_FUNC_RESULT( t_3 );
if ( TNUM_OBJ( t_2 ) == T_FUNCTION ) {
t_1 = CALL_1ARGS( t_2, t_3 );
}
else {
t_1 = DoOperation2Args( CallFuncListOper, t_2, NewPlistFromArgs( t_3 ) );
}
CHECK_FUNC_RESULT( t_1 );
l_flagspos = t_1;
/* tried := [ ]; */
t_1 = NEW_PLIST( T_PLIST, 0 );
SET_LEN_PLIST( t_1, 0 );
l_tried = t_1;
/* type := TYPE_OBJ( obj ); */
t_2 = GF_TYPE__OBJ;
if ( TNUM_OBJ( t_2 ) == T_FUNCTION ) {
t_1 = CALL_1ARGS( t_2, a_obj );
}
else {
t_1 = DoOperation2Args( CallFuncListOper, t_2, NewPlistFromArgs( a_obj ) );
}
CHECK_FUNC_RESULT( t_1 );
l_type = t_1;
/* flags := type![2]; */
t_1 = ElmPosObj( l_type, 2 );
a_flags = t_1;
/* RUN_IMMEDIATE_METHODS_RUNS := RUN_IMMEDIATE_METHODS_RUNS + 1; */
t_2 = GC_RUN__IMMEDIATE__METHODS__RUNS;
CHECK_BOUND( t_2, "RUN_IMMEDIATE_METHODS_RUNS" );
C_SUM_FIA( t_1, t_2, INTOBJ_INT(1) )
AssGVar( G_RUN__IMMEDIATE__METHODS__RUNS, t_1 );
/* if TRACE_IMMEDIATE_METHODS then */
t_2 = GC_TRACE__IMMEDIATE__METHODS;
CHECK_BOUND( t_2, "TRACE_IMMEDIATE_METHODS" );
CHECK_BOOL( t_2 );
t_1 = (Obj)(UInt)(t_2 != False );
if ( t_1 ) {
/* Print( "#I RunImmediateMethods\n" ); */
t_1 = GF_Print;
t_2 = MakeString( "#I RunImmediateMethods\n" );
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_1ARGS( t_1, t_2 );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2 ) );
}
}
/* fi */
/* for j in flagspos do */
t_4 = l_flagspos;
if ( IS_SMALL_LIST(t_4) ) {
t_3 = (Obj)(UInt)1;
t_1 = INTOBJ_INT(1);
}
else {
t_3 = (Obj)(UInt)0;
t_1 = CALL_1ARGS( GF_ITERATOR, t_4 );
}
while ( 1 ) {
if ( t_3 ) {
if ( LEN_LIST(t_4) < Int_ObjInt(t_1) ) break ;
t_2 = ELMV0_LIST( t_4, Int_ObjInt(t_1) );
t_1 = (Obj)(((UInt)t_1)+4);
if ( t_2 == 0 ) continue ;
}
else {
if ( CALL_1ARGS( GF_IS_DONE_ITER, t_1 ) != False ) break ;
t_2 = CALL_1ARGS( GF_NEXT_ITER, t_1 );
}
l_j = t_2;
/* if IsBound( IMMEDIATES[j] ) then */
t_7 = GC_IMMEDIATES;
CHECK_BOUND( t_7, "IMMEDIATES" );
CHECK_INT_POS( l_j );
t_6 = C_ISB_LIST( t_7, l_j );
t_5 = (Obj)(UInt)(t_6 != False );
if ( t_5 ) {
/* imm := IMMEDIATES[j]; */
t_6 = GC_IMMEDIATES;
CHECK_BOUND( t_6, "IMMEDIATES" );
C_ELM_LIST_FPL( t_5, t_6, l_j )
l_imm = t_5;
/* for i in [ 0, SIZE_IMMEDIATE_METHOD_ENTRY .. LEN_LIST( imm ) - SIZE_IMMEDIATE_METHOD_ENTRY ] do */
t_9 = GC_SIZE__IMMEDIATE__METHOD__ENTRY;
CHECK_BOUND( t_9, "SIZE_IMMEDIATE_METHOD_ENTRY" );
t_12 = GF_LEN__LIST;
if ( TNUM_OBJ( t_12 ) == T_FUNCTION ) {
t_11 = CALL_1ARGS( t_12, l_imm );
}
else {
t_11 = DoOperation2Args( CallFuncListOper, t_12, NewPlistFromArgs( l_imm ) );
}
CHECK_FUNC_RESULT( t_11 );
t_12 = GC_SIZE__IMMEDIATE__METHOD__ENTRY;
CHECK_BOUND( t_12, "SIZE_IMMEDIATE_METHOD_ENTRY" );
C_DIFF_FIA( t_10, t_11, t_12 )
t_8 = Range3Check( INTOBJ_INT(0), t_9, t_10 );
if ( IS_SMALL_LIST(t_8) ) {
t_7 = (Obj)(UInt)1;
t_5 = INTOBJ_INT(1);
}
else {
t_7 = (Obj)(UInt)0;
t_5 = CALL_1ARGS( GF_ITERATOR, t_8 );
}
while ( 1 ) {
if ( t_7 ) {
if ( LEN_LIST(t_8) < Int_ObjInt(t_5) ) break ;
t_6 = ELMV0_LIST( t_8, Int_ObjInt(t_5) );
t_5 = (Obj)(((UInt)t_5)+4);
if ( t_6 == 0 ) continue ;
}
else {
if ( CALL_1ARGS( GF_IS_DONE_ITER, t_5 ) != False ) break ;
t_6 = CALL_1ARGS( GF_NEXT_ITER, t_5 );
}
l_i = t_6;
/* if IS_SUBSET_FLAGS( flags, imm[i + 4] ) and not IS_SUBSET_FLAGS( flags, imm[i + 3] ) and not imm[i + 6] in tried then */
t_13 = GF_IS__SUBSET__FLAGS;
C_SUM_FIA( t_15, l_i, INTOBJ_INT(4) )
CHECK_INT_POS( t_15 );
C_ELM_LIST_FPL( t_14, l_imm, t_15 )
if ( TNUM_OBJ( t_13 ) == T_FUNCTION ) {
t_12 = CALL_2ARGS( t_13, a_flags, t_14 );
}
else {
t_12 = DoOperation2Args( CallFuncListOper, t_13, NewPlistFromArgs( a_flags, t_14 ) );
}
CHECK_FUNC_RESULT( t_12 );
CHECK_BOOL( t_12 );
t_11 = (Obj)(UInt)(t_12 != False );
t_10 = t_11;
if ( t_10 ) {
t_15 = GF_IS__SUBSET__FLAGS;
C_SUM_FIA( t_17, l_i, INTOBJ_INT(3) )
CHECK_INT_POS( t_17 );
C_ELM_LIST_FPL( t_16, l_imm, t_17 )
if ( TNUM_OBJ( t_15 ) == T_FUNCTION ) {
t_14 = CALL_2ARGS( t_15, a_flags, t_16 );
}
else {
t_14 = DoOperation2Args( CallFuncListOper, t_15, NewPlistFromArgs( a_flags, t_16 ) );
}
CHECK_FUNC_RESULT( t_14 );
CHECK_BOOL( t_14 );
t_13 = (Obj)(UInt)(t_14 != False );
t_12 = (Obj)(UInt)( ! ((Int )t_13) );
t_10 = t_12;
}
t_9 = t_10;
if ( t_9 ) {
C_SUM_FIA( t_14, l_i, INTOBJ_INT(6) )
CHECK_INT_POS( t_14 );
C_ELM_LIST_FPL( t_13, l_imm, t_14 )
t_12 = (Obj)(UInt)(IN( t_13, l_tried ));
t_11 = (Obj)(UInt)( ! ((Int )t_12) );
t_9 = t_11;
}
if ( t_9 ) {
/* meth := IMMEDIATE_METHODS[imm[i + 6]]; */
t_10 = GC_IMMEDIATE__METHODS;
CHECK_BOUND( t_10, "IMMEDIATE_METHODS" );
C_SUM_FIA( t_12, l_i, INTOBJ_INT(6) )
CHECK_INT_POS( t_12 );
C_ELM_LIST_FPL( t_11, l_imm, t_12 )
CHECK_INT_POS( t_11 );
C_ELM_LIST_FPL( t_9, t_10, t_11 )
l_meth = t_9;
/* res := meth( obj ); */
if ( TNUM_OBJ( l_meth ) == T_FUNCTION ) {
t_9 = CALL_1ARGS( l_meth, a_obj );
}
else {
t_9 = DoOperation2Args( CallFuncListOper, l_meth, NewPlistFromArgs( a_obj ) );
}
CHECK_FUNC_RESULT( t_9 );
l_res = t_9;
/* ADD_LIST( tried, imm[i + 6] ); */
t_9 = GF_ADD__LIST;
C_SUM_FIA( t_11, l_i, INTOBJ_INT(6) )
CHECK_INT_POS( t_11 );
C_ELM_LIST_FPL( t_10, l_imm, t_11 )
if ( TNUM_OBJ( t_9 ) == T_FUNCTION ) {
CALL_2ARGS( t_9, l_tried, t_10 );
}
else {
DoOperation2Args( CallFuncListOper, t_9, NewPlistFromArgs( l_tried, t_10 ) );
}
/* RUN_IMMEDIATE_METHODS_CHECKS := RUN_IMMEDIATE_METHODS_CHECKS + 1; */
t_10 = GC_RUN__IMMEDIATE__METHODS__CHECKS;
CHECK_BOUND( t_10, "RUN_IMMEDIATE_METHODS_CHECKS" );
C_SUM_FIA( t_9, t_10, INTOBJ_INT(1) )
AssGVar( G_RUN__IMMEDIATE__METHODS__CHECKS, t_9 );
/* if TRACE_IMMEDIATE_METHODS then */
t_10 = GC_TRACE__IMMEDIATE__METHODS;
CHECK_BOUND( t_10, "TRACE_IMMEDIATE_METHODS" );
CHECK_BOOL( t_10 );
t_9 = (Obj)(UInt)(t_10 != False );
if ( t_9 ) {
/* Print( "#I immediate: ", NAME_FUNC( imm[i + 1] ) ); */
t_9 = GF_Print;
t_10 = MakeString( "#I immediate: " );
t_12 = GF_NAME__FUNC;
C_SUM_FIA( t_14, l_i, INTOBJ_INT(1) )
CHECK_INT_POS( t_14 );
C_ELM_LIST_FPL( t_13, l_imm, t_14 )
if ( TNUM_OBJ( t_12 ) == T_FUNCTION ) {
t_11 = CALL_1ARGS( t_12, t_13 );
}
else {
t_11 = DoOperation2Args( CallFuncListOper, t_12, NewPlistFromArgs( t_13 ) );
}
CHECK_FUNC_RESULT( t_11 );
if ( TNUM_OBJ( t_9 ) == T_FUNCTION ) {
CALL_2ARGS( t_9, t_10, t_11 );
}
else {
DoOperation2Args( CallFuncListOper, t_9, NewPlistFromArgs( t_10, t_11 ) );
}
/* if imm[i + 7] <> false then */
C_SUM_FIA( t_11, l_i, INTOBJ_INT(7) )
CHECK_INT_POS( t_11 );
C_ELM_LIST_FPL( t_10, l_imm, t_11 )
t_11 = False ;
t_9 = (Obj)(UInt)( ! EQ( t_10, t_11 ));
if ( t_9 ) {
/* Print( ": ", imm[i + 7] ); */
t_9 = GF_Print;
t_10 = MakeString( ": " );
C_SUM_FIA( t_12, l_i, INTOBJ_INT(7) )
CHECK_INT_POS( t_12 );
C_ELM_LIST_FPL( t_11, l_imm, t_12 )
if ( TNUM_OBJ( t_9 ) == T_FUNCTION ) {
CALL_2ARGS( t_9, t_10, t_11 );
}
else {
DoOperation2Args( CallFuncListOper, t_9, NewPlistFromArgs( t_10, t_11 ) );
}
}
/* fi */
/* Print( " at ", imm[i + 8][1], ":", imm[i + 8][2], "\n" ); */
t_9 = GF_Print;
t_10 = MakeString( " at " );
C_SUM_FIA( t_13, l_i, INTOBJ_INT(8) )
CHECK_INT_POS( t_13 );
C_ELM_LIST_FPL( t_12, l_imm, t_13 )
C_ELM_LIST_FPL( t_11, t_12, INTOBJ_INT(1) )
t_12 = MakeString( ":" );
C_SUM_FIA( t_15, l_i, INTOBJ_INT(8) )
CHECK_INT_POS( t_15 );
C_ELM_LIST_FPL( t_14, l_imm, t_15 )
C_ELM_LIST_FPL( t_13, t_14, INTOBJ_INT(2) )
t_14 = MakeString( "\n" );
if ( TNUM_OBJ( t_9 ) == T_FUNCTION ) {
CALL_5ARGS( t_9, t_10, t_11, t_12, t_13, t_14 );
}
else {
DoOperation2Args( CallFuncListOper, t_9, NewPlistFromArgs( t_10, t_11, t_12, t_13, t_14 ) );
}
}
/* fi */
/* if res <> TRY_NEXT_METHOD then */
t_10 = GC_TRY__NEXT__METHOD;
CHECK_BOUND( t_10, "TRY_NEXT_METHOD" );
t_9 = (Obj)(UInt)( ! EQ( l_res, t_10 ));
if ( t_9 ) {
/* IGNORE_IMMEDIATE_METHODS := true; */
t_9 = True ;
AssGVar( G_IGNORE__IMMEDIATE__METHODS, t_9 );
/* imm[i + 2]( obj, res ); */
C_SUM_FIA( t_10, l_i, INTOBJ_INT(2) )
CHECK_INT_POS( t_10 );
C_ELM_LIST_FPL( t_9, l_imm, t_10 )
if ( TNUM_OBJ( t_9 ) == T_FUNCTION ) {
CALL_2ARGS( t_9, a_obj, l_res );
}
else {
DoOperation2Args( CallFuncListOper, t_9, NewPlistFromArgs( a_obj, l_res ) );
}
/* IGNORE_IMMEDIATE_METHODS := false; */
t_9 = False ;
AssGVar( G_IGNORE__IMMEDIATE__METHODS, t_9 );
/* RUN_IMMEDIATE_METHODS_HITS := RUN_IMMEDIATE_METHODS_HITS + 1; */
t_10 = GC_RUN__IMMEDIATE__METHODS__HITS;
CHECK_BOUND( t_10, "RUN_IMMEDIATE_METHODS_HITS" );
C_SUM_FIA( t_9, t_10, INTOBJ_INT(1) )
AssGVar( G_RUN__IMMEDIATE__METHODS__HITS, t_9 );
/* if not IS_IDENTICAL_OBJ( TYPE_OBJ( obj ), type ) then */
t_12 = GF_IS__IDENTICAL__OBJ;
t_14 = GF_TYPE__OBJ;
if ( TNUM_OBJ( t_14 ) == T_FUNCTION ) {
t_13 = CALL_1ARGS( t_14, a_obj );
}
else {
t_13 = DoOperation2Args( CallFuncListOper, t_14, NewPlistFromArgs( a_obj ) );
}
CHECK_FUNC_RESULT( t_13 );
if ( TNUM_OBJ( t_12 ) == T_FUNCTION ) {
t_11 = CALL_2ARGS( t_12, t_13, l_type );
}
else {
t_11 = DoOperation2Args( CallFuncListOper, t_12, NewPlistFromArgs( t_13, l_type ) );
}
CHECK_FUNC_RESULT( t_11 );
CHECK_BOOL( t_11 );
t_10 = (Obj)(UInt)(t_11 != False );
t_9 = (Obj)(UInt)( ! ((Int )t_10) );
if ( t_9 ) {
/* type := TYPE_OBJ( obj ); */
t_10 = GF_TYPE__OBJ;
if ( TNUM_OBJ( t_10 ) == T_FUNCTION ) {
t_9 = CALL_1ARGS( t_10, a_obj );
}
else {
t_9 = DoOperation2Args( CallFuncListOper, t_10, NewPlistFromArgs( a_obj ) );
}
CHECK_FUNC_RESULT( t_9 );
l_type = t_9;
/* newflags := SUB_FLAGS( type![2], IMM_FLAGS ); */
t_10 = GF_SUB__FLAGS;
t_11 = ElmPosObj( l_type, 2 );
t_12 = GC_IMM__FLAGS;
CHECK_BOUND( t_12, "IMM_FLAGS" );
if ( TNUM_OBJ( t_10 ) == T_FUNCTION ) {
t_9 = CALL_2ARGS( t_10, t_11, t_12 );
}
else {
t_9 = DoOperation2Args( CallFuncListOper, t_10, NewPlistFromArgs( t_11, t_12 ) );
}
CHECK_FUNC_RESULT( t_9 );
l_newflags = t_9;
/* newflags := SUB_FLAGS( newflags, flags ); */
t_10 = GF_SUB__FLAGS;
if ( TNUM_OBJ( t_10 ) == T_FUNCTION ) {
t_9 = CALL_2ARGS( t_10, l_newflags, a_flags );
}
else {
t_9 = DoOperation2Args( CallFuncListOper, t_10, NewPlistFromArgs( l_newflags, a_flags ) );
}
CHECK_FUNC_RESULT( t_9 );
l_newflags = t_9;
/* APPEND_LIST_INTR( flagspos, TRUES_FLAGS( newflags ) ); */
t_9 = GF_APPEND__LIST__INTR;
t_11 = GF_TRUES__FLAGS;
if ( TNUM_OBJ( t_11 ) == T_FUNCTION ) {
t_10 = CALL_1ARGS( t_11, l_newflags );
}
else {
t_10 = DoOperation2Args( CallFuncListOper, t_11, NewPlistFromArgs( l_newflags ) );
}
CHECK_FUNC_RESULT( t_10 );
if ( TNUM_OBJ( t_9 ) == T_FUNCTION ) {
CALL_2ARGS( t_9, l_flagspos, t_10 );
}
else {
DoOperation2Args( CallFuncListOper, t_9, NewPlistFromArgs( l_flagspos, t_10 ) );
}
/* flags := type![2]; */
t_9 = ElmPosObj( l_type, 2 );
a_flags = t_9;
}
/* fi */
}
/* fi */
}
/* fi */
}
/* od */
}
/* fi */
}
/* od */
/* return; */
SWITCH_TO_OLD_FRAME(oldFrame);
return 0;
}
/* handler for function 3 */
static Obj HdlrFunc3 (
Obj self,
Obj a_opr,
Obj a_info,
Obj a_rel,
Obj a_flags,
Obj a_baserank,
Obj a_method )
{
Obj l_methods = 0;
Obj l_narg = 0;
Obj l_i = 0;
Obj l_k = 0;
Obj l_tmp = 0;
Obj l_replace = 0;
Obj l_match = 0;
Obj l_j = 0;
Obj l_lk = 0;
Obj l_rank = 0;
Obj t_1 = 0;
Obj t_2 = 0;
Obj t_3 = 0;
Obj t_4 = 0;
Obj t_5 = 0;
Obj t_6 = 0;
Obj t_7 = 0;
Obj t_8 = 0;
(void )l_methods;
(void )l_narg;
(void )l_i;
(void )l_k;
(void )l_tmp;
(void )l_replace;
(void )l_match;
(void )l_j;
(void )l_lk;
(void )l_rank;
Bag oldFrame;
/* allocate new stack frame */
SWITCH_TO_NEW_FRAME(self,0,0,oldFrame);
/* if IS_IDENTICAL_OBJ( opr, method ) then */
t_3 = GF_IS__IDENTICAL__OBJ;
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_2ARGS( t_3, a_opr, a_method );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( a_opr, a_method ) );
}
CHECK_FUNC_RESULT( t_2 );
CHECK_BOOL( t_2 );
t_1 = (Obj)(UInt)(t_2 != False );
if ( t_1 ) {
/* Error( "Cannot install an operation as a method for itself" ); */
t_1 = GF_Error;
t_2 = MakeString( "Cannot install an operation as a method for itself" );
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_1ARGS( t_1, t_2 );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2 ) );
}
}
/* fi */
/* if IS_FUNCTION( baserank ) then */
t_3 = GF_IS__FUNCTION;
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_1ARGS( t_3, a_baserank );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( a_baserank ) );
}
CHECK_FUNC_RESULT( t_2 );
CHECK_BOOL( t_2 );
t_1 = (Obj)(UInt)(t_2 != False );
if ( t_1 ) {
/* rank := baserank( ); */
if ( TNUM_OBJ( a_baserank ) == T_FUNCTION ) {
t_1 = CALL_0ARGS( a_baserank );
}
else {
t_1 = DoOperation2Args( CallFuncListOper, a_baserank, NewPlistFromArgs( ) );
}
CHECK_FUNC_RESULT( t_1 );
l_rank = t_1;
}
/* else */
else {
/* rank := baserank; */
l_rank = a_baserank;
}
/* fi */
/* if IS_CONSTRUCTOR( opr ) then */
t_3 = GF_IS__CONSTRUCTOR;
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_1ARGS( t_3, a_opr );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( a_opr ) );
}
CHECK_FUNC_RESULT( t_2 );
CHECK_BOOL( t_2 );
t_1 = (Obj)(UInt)(t_2 != False );
if ( t_1 ) {
/* if 0 = LEN_LIST( flags ) then */
t_3 = GF_LEN__LIST;
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_1ARGS( t_3, a_flags );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( a_flags ) );
}
CHECK_FUNC_RESULT( t_2 );
t_1 = (Obj)(UInt)(EQ( INTOBJ_INT(0), t_2 ));
if ( t_1 ) {
/* Error( NAME_FUNC( opr ), ": constructors must have at least one argument" ); */
t_1 = GF_Error;
t_3 = GF_NAME__FUNC;
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_1ARGS( t_3, a_opr );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( a_opr ) );
}
CHECK_FUNC_RESULT( t_2 );
t_3 = MakeString( ": constructors must have at least one argument" );
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_2ARGS( t_1, t_2, t_3 );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2, t_3 ) );
}
}
/* fi */
/* flags[1] := WITH_IMPS_FLAGS( flags[1] ); */
t_2 = GF_WITH__IMPS__FLAGS;
C_ELM_LIST_FPL( t_3, a_flags, INTOBJ_INT(1) )
if ( TNUM_OBJ( t_2 ) == T_FUNCTION ) {
t_1 = CALL_1ARGS( t_2, t_3 );
}
else {
t_1 = DoOperation2Args( CallFuncListOper, t_2, NewPlistFromArgs( t_3 ) );
}
CHECK_FUNC_RESULT( t_1 );
C_ASS_LIST_FPL( a_flags, INTOBJ_INT(1), t_1 )
/* rank := rank - RankFilter( flags[1] ); */
t_3 = GF_RankFilter;
C_ELM_LIST_FPL( t_4, a_flags, INTOBJ_INT(1) )
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_1ARGS( t_3, t_4 );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( t_4 ) );
}
CHECK_FUNC_RESULT( t_2 );
C_DIFF_FIA( t_1, l_rank, t_2 )
l_rank = t_1;
}
/* else */
else {
/* for i in flags do */
t_4 = a_flags;
if ( IS_SMALL_LIST(t_4) ) {
t_3 = (Obj)(UInt)1;
t_1 = INTOBJ_INT(1);
}
else {
t_3 = (Obj)(UInt)0;
t_1 = CALL_1ARGS( GF_ITERATOR, t_4 );
}
while ( 1 ) {
if ( t_3 ) {
if ( LEN_LIST(t_4) < Int_ObjInt(t_1) ) break ;
t_2 = ELMV0_LIST( t_4, Int_ObjInt(t_1) );
t_1 = (Obj)(((UInt)t_1)+4);
if ( t_2 == 0 ) continue ;
}
else {
if ( CALL_1ARGS( GF_IS_DONE_ITER, t_1 ) != False ) break ;
t_2 = CALL_1ARGS( GF_NEXT_ITER, t_1 );
}
l_i = t_2;
/* rank := rank + RankFilter( i ); */
t_7 = GF_RankFilter;
if ( TNUM_OBJ( t_7 ) == T_FUNCTION ) {
t_6 = CALL_1ARGS( t_7, l_i );
}
else {
t_6 = DoOperation2Args( CallFuncListOper, t_7, NewPlistFromArgs( l_i ) );
}
CHECK_FUNC_RESULT( t_6 );
C_SUM_FIA( t_5, l_rank, t_6 )
l_rank = t_5;
}
/* od */
}
/* fi */
/* narg := LEN_LIST( flags ); */
t_2 = GF_LEN__LIST;
if ( TNUM_OBJ( t_2 ) == T_FUNCTION ) {
t_1 = CALL_1ARGS( t_2, a_flags );
}
else {
t_1 = DoOperation2Args( CallFuncListOper, t_2, NewPlistFromArgs( a_flags ) );
}
CHECK_FUNC_RESULT( t_1 );
l_narg = t_1;
/* methods := METHODS_OPERATION( opr, narg ); */
t_2 = GF_METHODS__OPERATION;
if ( TNUM_OBJ( t_2 ) == T_FUNCTION ) {
t_1 = CALL_2ARGS( t_2, a_opr, l_narg );
}
else {
t_1 = DoOperation2Args( CallFuncListOper, t_2, NewPlistFromArgs( a_opr, l_narg ) );
}
CHECK_FUNC_RESULT( t_1 );
l_methods = t_1;
/* if info = false then */
t_2 = False ;
t_1 = (Obj)(UInt)(EQ( a_info, t_2 ));
if ( t_1 ) {
/* info := NAME_FUNC( opr ); */
t_2 = GF_NAME__FUNC;
if ( TNUM_OBJ( t_2 ) == T_FUNCTION ) {
t_1 = CALL_1ARGS( t_2, a_opr );
}
else {
t_1 = DoOperation2Args( CallFuncListOper, t_2, NewPlistFromArgs( a_opr ) );
}
CHECK_FUNC_RESULT( t_1 );
a_info = t_1;
}
/* else */
else {
/* k := SHALLOW_COPY_OBJ( NAME_FUNC( opr ) ); */
t_2 = GF_SHALLOW__COPY__OBJ;
t_4 = GF_NAME__FUNC;
if ( TNUM_OBJ( t_4 ) == T_FUNCTION ) {
t_3 = CALL_1ARGS( t_4, a_opr );
}
else {
t_3 = DoOperation2Args( CallFuncListOper, t_4, NewPlistFromArgs( a_opr ) );
}
CHECK_FUNC_RESULT( t_3 );
if ( TNUM_OBJ( t_2 ) == T_FUNCTION ) {
t_1 = CALL_1ARGS( t_2, t_3 );
}
else {
t_1 = DoOperation2Args( CallFuncListOper, t_2, NewPlistFromArgs( t_3 ) );
}
CHECK_FUNC_RESULT( t_1 );
l_k = t_1;
/* APPEND_LIST_INTR( k, ": " ); */
t_1 = GF_APPEND__LIST__INTR;
t_2 = MakeString( ": " );
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_2ARGS( t_1, l_k, t_2 );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( l_k, t_2 ) );
}
/* APPEND_LIST_INTR( k, info ); */
t_1 = GF_APPEND__LIST__INTR;
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_2ARGS( t_1, l_k, a_info );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( l_k, a_info ) );
}
/* info := k; */
a_info = l_k;
/* CONV_STRING( info ); */
t_1 = GF_CONV__STRING;
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_1ARGS( t_1, a_info );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( a_info ) );
}
}
/* fi */
/* i := 0; */
l_i = INTOBJ_INT(0);
/* while i < LEN_LIST( methods ) and rank < methods[i + (narg + 3)] do */
while ( 1 ) {
t_4 = GF_LEN__LIST;
if ( TNUM_OBJ( t_4 ) == T_FUNCTION ) {
t_3 = CALL_1ARGS( t_4, l_methods );
}
else {
t_3 = DoOperation2Args( CallFuncListOper, t_4, NewPlistFromArgs( l_methods ) );
}
CHECK_FUNC_RESULT( t_3 );
t_2 = (Obj)(UInt)(LT( l_i, t_3 ));
t_1 = t_2;
if ( t_1 ) {
C_SUM_FIA( t_6, l_narg, INTOBJ_INT(3) )
C_SUM_FIA( t_5, l_i, t_6 )
CHECK_INT_POS( t_5 );
C_ELM_LIST_FPL( t_4, l_methods, t_5 )
t_3 = (Obj)(UInt)(LT( l_rank, t_4 ));
t_1 = t_3;
}
if ( ! t_1 ) break ;
/* i := i + (narg + 6); */
C_SUM_FIA( t_2, l_narg, INTOBJ_INT(6) )
C_SUM_FIA( t_1, l_i, t_2 )
l_i = t_1;
}
/* od */
/* replace := false; */
t_1 = False ;
l_replace = t_1;
/* if REREADING then */
t_2 = GC_REREADING;
CHECK_BOUND( t_2, "REREADING" );
CHECK_BOOL( t_2 );
t_1 = (Obj)(UInt)(t_2 != False );
if ( t_1 ) {
/* k := i; */
l_k = l_i;
/* while k < LEN_LIST( methods ) and rank = methods[k + narg + 3] do */
while ( 1 ) {
t_4 = GF_LEN__LIST;
if ( TNUM_OBJ( t_4 ) == T_FUNCTION ) {
t_3 = CALL_1ARGS( t_4, l_methods );
}
else {
t_3 = DoOperation2Args( CallFuncListOper, t_4, NewPlistFromArgs( l_methods ) );
}
CHECK_FUNC_RESULT( t_3 );
t_2 = (Obj)(UInt)(LT( l_k, t_3 ));
t_1 = t_2;
if ( t_1 ) {
C_SUM_FIA( t_6, l_k, l_narg )
C_SUM_FIA( t_5, t_6, INTOBJ_INT(3) )
CHECK_INT_POS( t_5 );
C_ELM_LIST_FPL( t_4, l_methods, t_5 )
t_3 = (Obj)(UInt)(EQ( l_rank, t_4 ));
t_1 = t_3;
}
if ( ! t_1 ) break ;
/* if info = methods[k + narg + 4] then */
C_SUM_FIA( t_4, l_k, l_narg )
C_SUM_FIA( t_3, t_4, INTOBJ_INT(4) )
CHECK_INT_POS( t_3 );
C_ELM_LIST_FPL( t_2, l_methods, t_3 )
t_1 = (Obj)(UInt)(EQ( a_info, t_2 ));
if ( t_1 ) {
/* match := true; */
t_1 = True ;
l_match = t_1;
/* for j in [ 1 .. narg ] do */
CHECK_INT_SMALL( l_narg );
t_2 = l_narg;
for ( t_1 = INTOBJ_INT(1);
((Int )t_1) <= ((Int )t_2);
t_1 = (Obj)(((UInt)t_1)+4) ) {
l_j = t_1;
/* match := match and methods[k + j + 1] = flags[j]; */
if ( l_match == False ) {
t_3 = l_match;
}
else if ( l_match == True ) {
C_SUM_FIA( t_7, l_k, l_j )
C_SUM_FIA( t_6, t_7, INTOBJ_INT(1) )
CHECK_INT_POS( t_6 );
C_ELM_LIST_FPL( t_5, l_methods, t_6 )
C_ELM_LIST_FPL( t_6, a_flags, l_j )
t_4 = (EQ( t_5, t_6 ) ? True : False );
t_3 = t_4;
}
else if (IS_FILTER( l_match ) ) {
C_SUM_FIA( t_8, l_k, l_j )
C_SUM_FIA( t_7, t_8, INTOBJ_INT(1) )
CHECK_INT_POS( t_7 );
C_ELM_LIST_FPL( t_6, l_methods, t_7 )
C_ELM_LIST_FPL( t_7, a_flags, l_j )
t_5 = (EQ( t_6, t_7 ) ? True : False );
t_3 = NewAndFilter( l_match, t_5 );
}
else {
RequireArgumentEx(0, l_match, "" ,
"must be 'true' or 'false' or a filter" );
}
l_match = t_3;
}
/* od */
/* if match then */
CHECK_BOOL( l_match );
t_1 = (Obj)(UInt)(l_match != False );
if ( t_1 ) {
/* replace := true; */
t_1 = True ;
l_replace = t_1;
/* i := k; */
l_i = l_k;
/* break; */
break ;
}
/* fi */
}
/* fi */
/* k := k + narg + 6; */
C_SUM_FIA( t_2, l_k, l_narg )
C_SUM_FIA( t_1, t_2, INTOBJ_INT(6) )
l_k = t_1;
}
/* od */
}
/* fi */
/* if not REREADING or not replace then */
t_4 = GC_REREADING;
CHECK_BOUND( t_4, "REREADING" );
CHECK_BOOL( t_4 );
t_3 = (Obj)(UInt)(t_4 != False );
t_2 = (Obj)(UInt)( ! ((Int )t_3) );
t_1 = t_2;
if ( ! t_1 ) {
t_4 = (Obj)(UInt)(l_replace != False );
t_3 = (Obj)(UInt)( ! ((Int )t_4) );
t_1 = t_3;
}
if ( t_1 ) {
/* COPY_LIST_ENTRIES( methods, i + 1, 1, methods, narg + 6 + i + 1, 1, LEN_LIST( methods ) - i ); */
t_1 = GF_COPY__LIST__ENTRIES;
t_2 = NEW_PLIST( T_PLIST, 7 );
SET_LEN_PLIST( t_2, 7 );
SET_ELM_PLIST( t_2, 1, l_methods );
CHANGED_BAG( t_2 );
C_SUM_FIA( t_3, l_i, INTOBJ_INT(1) )
SET_ELM_PLIST( t_2, 2, t_3 );
CHANGED_BAG( t_2 );
SET_ELM_PLIST( t_2, 3, INTOBJ_INT(1) );
SET_ELM_PLIST( t_2, 4, l_methods );
CHANGED_BAG( t_2 );
C_SUM_FIA( t_5, l_narg, INTOBJ_INT(6) )
C_SUM_FIA( t_4, t_5, l_i )
C_SUM_FIA( t_3, t_4, INTOBJ_INT(1) )
SET_ELM_PLIST( t_2, 5, t_3 );
CHANGED_BAG( t_2 );
SET_ELM_PLIST( t_2, 6, INTOBJ_INT(1) );
t_5 = GF_LEN__LIST;
if ( TNUM_OBJ( t_5 ) == T_FUNCTION ) {
t_4 = CALL_1ARGS( t_5, l_methods );
}
else {
t_4 = DoOperation2Args( CallFuncListOper, t_5, NewPlistFromArgs( l_methods ) );
}
CHECK_FUNC_RESULT( t_4 );
C_DIFF_FIA( t_3, t_4, l_i )
SET_ELM_PLIST( t_2, 7, t_3 );
CHANGED_BAG( t_2 );
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_XARGS( t_1, t_2 );
}
else {
DoOperation2Args( CallFuncListOper, t_1, t_2 );
}
}
/* fi */
/* if rel = true then */
t_2 = True ;
t_1 = (Obj)(UInt)(EQ( a_rel, t_2 ));
if ( t_1 ) {
/* rel := RETURN_TRUE; */
t_1 = GC_RETURN__TRUE;
CHECK_BOUND( t_1, "RETURN_TRUE" );
a_rel = t_1;
}
/* elif rel = false then */
else {
t_2 = False ;
t_1 = (Obj)(UInt)(EQ( a_rel, t_2 ));
if ( t_1 ) {
/* rel := RETURN_FALSE; */
t_1 = GC_RETURN__FALSE;
CHECK_BOUND( t_1, "RETURN_FALSE" );
a_rel = t_1;
}
/* elif IS_FUNCTION( rel ) then */
else {
t_3 = GF_IS__FUNCTION;
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_1ARGS( t_3, a_rel );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( a_rel ) );
}
CHECK_FUNC_RESULT( t_2 );
CHECK_BOOL( t_2 );
t_1 = (Obj)(UInt)(t_2 != False );
if ( t_1 ) {
/* if CHECK_INSTALL_METHOD then */
t_2 = GC_CHECK__INSTALL__METHOD;
CHECK_BOUND( t_2, "CHECK_INSTALL_METHOD" );
CHECK_BOOL( t_2 );
t_1 = (Obj)(UInt)(t_2 != False );
if ( t_1 ) {
/* tmp := NARG_FUNC( rel ); */
t_2 = GF_NARG__FUNC;
if ( TNUM_OBJ( t_2 ) == T_FUNCTION ) {
t_1 = CALL_1ARGS( t_2, a_rel );
}
else {
t_1 = DoOperation2Args( CallFuncListOper, t_2, NewPlistFromArgs( a_rel ) );
}
CHECK_FUNC_RESULT( t_1 );
l_tmp = t_1;
/* if tmp < - narg - 1 or tmp >= 0 and tmp <> narg then */
C_AINV_FIA( t_4, l_narg )
C_DIFF_FIA( t_3, t_4, INTOBJ_INT(1) )
t_2 = (Obj)(UInt)(LT( l_tmp, t_3 ));
t_1 = t_2;
if ( ! t_1 ) {
t_4 = (Obj)(UInt)(! LT( l_tmp, INTOBJ_INT(0) ));
t_3 = t_4;
if ( t_3 ) {
t_5 = (Obj)(UInt)( ! EQ( l_tmp, l_narg ));
t_3 = t_5;
}
t_1 = t_3;
}
if ( t_1 ) {
/* Error( NAME_FUNC( opr ), ": <famrel> must accept ", narg, " arguments" ); */
t_1 = GF_Error;
t_3 = GF_NAME__FUNC;
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_1ARGS( t_3, a_opr );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( a_opr ) );
}
CHECK_FUNC_RESULT( t_2 );
t_3 = MakeString( ": must accept " );
t_4 = MakeString( " arguments" );
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_4ARGS( t_1, t_2, t_3, l_narg, t_4 );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2, t_3, l_narg, t_4 ) );
}
}
/* fi */
}
/* fi */
}
/* else */
else {
/* Error( NAME_FUNC( opr ), ": <famrel> must be a function, `true', or `false'" ); */
t_1 = GF_Error;
t_3 = GF_NAME__FUNC;
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_1ARGS( t_3, a_opr );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( a_opr ) );
}
CHECK_FUNC_RESULT( t_2 );
t_3 = MakeString( ": must be a function, `true', or `false'" );
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_2ARGS( t_1, t_2, t_3 );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2, t_3 ) );
}
}
}
}
/* fi */
/* if method = true then */
t_2 = True ;
t_1 = (Obj)(UInt)(EQ( a_method, t_2 ));
if ( t_1 ) {
/* method := RETURN_TRUE; */
t_1 = GC_RETURN__TRUE;
CHECK_BOUND( t_1, "RETURN_TRUE" );
a_method = t_1;
}
/* elif method = false then */
else {
t_2 = False ;
t_1 = (Obj)(UInt)(EQ( a_method, t_2 ));
if ( t_1 ) {
/* method := RETURN_FALSE; */
t_1 = GC_RETURN__FALSE;
CHECK_BOUND( t_1, "RETURN_FALSE" );
a_method = t_1;
}
/* elif IS_FUNCTION( method ) then */
else {
t_3 = GF_IS__FUNCTION;
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_1ARGS( t_3, a_method );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( a_method ) );
}
CHECK_FUNC_RESULT( t_2 );
CHECK_BOOL( t_2 );
t_1 = (Obj)(UInt)(t_2 != False );
if ( t_1 ) {
/* if CHECK_INSTALL_METHOD and not IS_OPERATION( method ) then */
t_3 = GC_CHECK__INSTALL__METHOD;
CHECK_BOUND( t_3, "CHECK_INSTALL_METHOD" );
CHECK_BOOL( t_3 );
t_2 = (Obj)(UInt)(t_3 != False );
t_1 = t_2;
if ( t_1 ) {
t_6 = GF_IS__OPERATION;
if ( TNUM_OBJ( t_6 ) == T_FUNCTION ) {
t_5 = CALL_1ARGS( t_6, a_method );
}
else {
t_5 = DoOperation2Args( CallFuncListOper, t_6, NewPlistFromArgs( a_method ) );
}
CHECK_FUNC_RESULT( t_5 );
CHECK_BOOL( t_5 );
t_4 = (Obj)(UInt)(t_5 != False );
t_3 = (Obj)(UInt)( ! ((Int )t_4) );
t_1 = t_3;
}
if ( t_1 ) {
/* tmp := NARG_FUNC( method ); */
t_2 = GF_NARG__FUNC;
if ( TNUM_OBJ( t_2 ) == T_FUNCTION ) {
t_1 = CALL_1ARGS( t_2, a_method );
}
else {
t_1 = DoOperation2Args( CallFuncListOper, t_2, NewPlistFromArgs( a_method ) );
}
CHECK_FUNC_RESULT( t_1 );
l_tmp = t_1;
/* if tmp < - narg - 1 or tmp >= 0 and tmp <> narg then */
C_AINV_FIA( t_4, l_narg )
C_DIFF_FIA( t_3, t_4, INTOBJ_INT(1) )
t_2 = (Obj)(UInt)(LT( l_tmp, t_3 ));
t_1 = t_2;
if ( ! t_1 ) {
t_4 = (Obj)(UInt)(! LT( l_tmp, INTOBJ_INT(0) ));
t_3 = t_4;
if ( t_3 ) {
t_5 = (Obj)(UInt)( ! EQ( l_tmp, l_narg ));
t_3 = t_5;
}
t_1 = t_3;
}
if ( t_1 ) {
/* Error( NAME_FUNC( opr ), ": <method> must accept ", narg, " arguments" ); */
t_1 = GF_Error;
t_3 = GF_NAME__FUNC;
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_1ARGS( t_3, a_opr );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( a_opr ) );
}
CHECK_FUNC_RESULT( t_2 );
t_3 = MakeString( ": must accept " );
t_4 = MakeString( " arguments" );
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_4ARGS( t_1, t_2, t_3, l_narg, t_4 );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2, t_3, l_narg, t_4 ) );
}
}
/* fi */
}
/* fi */
}
/* else */
else {
/* Error( NAME_FUNC( opr ), ": <method> must be a function, `true', or `false'" ); */
t_1 = GF_Error;
t_3 = GF_NAME__FUNC;
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_1ARGS( t_3, a_opr );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( a_opr ) );
}
CHECK_FUNC_RESULT( t_2 );
t_3 = MakeString( ": must be a function, `true', or `false'" );
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_2ARGS( t_1, t_2, t_3 );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2, t_3 ) );
}
}
}
}
/* fi */
/* methods[i + 1] := rel; */
C_SUM_FIA( t_1, l_i, INTOBJ_INT(1) )
CHECK_INT_POS( t_1 );
C_ASS_LIST_FPL( l_methods, t_1, a_rel )
/* for k in [ 1 .. narg ] do */
CHECK_INT_SMALL( l_narg );
t_2 = l_narg;
for ( t_1 = INTOBJ_INT(1);
((Int )t_1) <= ((Int )t_2);
t_1 = (Obj)(((UInt)t_1)+4) ) {
l_k = t_1;
/* methods[i + k + 1] := flags[k]; */
C_SUM_FIA( t_4, l_i, l_k )
C_SUM_FIA( t_3, t_4, INTOBJ_INT(1) )
CHECK_INT_POS( t_3 );
C_ELM_LIST_FPL( t_4, a_flags, l_k )
C_ASS_LIST_FPL( l_methods, t_3, t_4 )
}
/* od */
/* methods[i + (narg + 2)] := method; */
C_SUM_INTOBJS( t_2, l_narg, INTOBJ_INT(2) )
C_SUM_FIA( t_1, l_i, t_2 )
CHECK_INT_POS( t_1 );
C_ASS_LIST_FPL( l_methods, t_1, a_method )
/* methods[i + (narg + 3)] := rank; */
C_SUM_INTOBJS( t_2, l_narg, INTOBJ_INT(3) )
C_SUM_FIA( t_1, l_i, t_2 )
CHECK_INT_POS( t_1 );
C_ASS_LIST_FPL( l_methods, t_1, l_rank )
/* methods[i + (narg + 4)] := IMMUTABLE_COPY_OBJ( info ); */
C_SUM_INTOBJS( t_2, l_narg, INTOBJ_INT(4) )
C_SUM_FIA( t_1, l_i, t_2 )
CHECK_INT_POS( t_1 );
t_3 = GF_IMMUTABLE__COPY__OBJ;
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_1ARGS( t_3, a_info );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( a_info ) );
}
CHECK_FUNC_RESULT( t_2 );
C_ASS_LIST_FPL( l_methods, t_1, t_2 )
/* methods[i + (narg + 5)] := MakeImmutable( [ INPUT_FILENAME( ), READEVALCOMMAND_LINENUMBER, INPUT_LINENUMBER( ) ] ); */
C_SUM_INTOBJS( t_2, l_narg, INTOBJ_INT(5) )
C_SUM_FIA( t_1, l_i, t_2 )
CHECK_INT_POS( t_1 );
t_3 = GF_MakeImmutable;
t_4 = NEW_PLIST( T_PLIST, 3 );
SET_LEN_PLIST( t_4, 3 );
t_6 = GF_INPUT__FILENAME;
if ( TNUM_OBJ( t_6 ) == T_FUNCTION ) {
t_5 = CALL_0ARGS( t_6 );
}
else {
t_5 = DoOperation2Args( CallFuncListOper, t_6, NewPlistFromArgs( ) );
}
CHECK_FUNC_RESULT( t_5 );
SET_ELM_PLIST( t_4, 1, t_5 );
CHANGED_BAG( t_4 );
t_5 = GC_READEVALCOMMAND__LINENUMBER;
CHECK_BOUND( t_5, "READEVALCOMMAND_LINENUMBER" );
SET_ELM_PLIST( t_4, 2, t_5 );
CHANGED_BAG( t_4 );
t_6 = GF_INPUT__LINENUMBER;
if ( TNUM_OBJ( t_6 ) == T_FUNCTION ) {
t_5 = CALL_0ARGS( t_6 );
}
else {
t_5 = DoOperation2Args( CallFuncListOper, t_6, NewPlistFromArgs( ) );
}
CHECK_FUNC_RESULT( t_5 );
SET_ELM_PLIST( t_4, 3, t_5 );
CHANGED_BAG( t_4 );
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_1ARGS( t_3, t_4 );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( t_4 ) );
}
CHECK_FUNC_RESULT( t_2 );
C_ASS_LIST_FPL( l_methods, t_1, t_2 )
/* methods[i + (narg + 6)] := baserank; */
C_SUM_INTOBJS( t_2, l_narg, INTOBJ_INT(6) )
C_SUM_FIA( t_1, l_i, t_2 )
CHECK_INT_POS( t_1 );
C_ASS_LIST_FPL( l_methods, t_1, a_baserank )
/* CHANGED_METHODS_OPERATION( opr, narg ); */
t_1 = GF_CHANGED__METHODS__OPERATION;
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_2ARGS( t_1, a_opr, l_narg );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( a_opr, l_narg ) );
}
/* return; */
SWITCH_TO_OLD_FRAME(oldFrame);
return 0;
}
/* handler for function 4 */
static Obj HdlrFunc4 (
Obj self,
Obj a_arg )
{
Obj t_1 = 0;
Obj t_2 = 0;
Bag oldFrame;
/* allocate new stack frame */
SWITCH_TO_NEW_FRAME(self,0,0,oldFrame);
/* INSTALL_METHOD( arg, true ); */
t_1 = GF_INSTALL__METHOD;
t_2 = True ;
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_2ARGS( t_1, a_arg, t_2 );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( a_arg, t_2 ) );
}
/* return; */
SWITCH_TO_OLD_FRAME(oldFrame);
return 0;
}
/* handler for function 5 */
static Obj HdlrFunc5 (
Obj self,
Obj a_arg )
{
Obj t_1 = 0;
Obj t_2 = 0;
Bag oldFrame;
/* allocate new stack frame */
SWITCH_TO_NEW_FRAME(self,0,0,oldFrame);
/* INSTALL_METHOD( arg, false ); */
t_1 = GF_INSTALL__METHOD;
t_2 = False ;
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_2ARGS( t_1, a_arg, t_2 );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( a_arg, t_2 ) );
}
/* return; */
SWITCH_TO_OLD_FRAME(oldFrame);
return 0;
}
/* handler for function 6 */
static Obj HdlrFunc6 (
Obj self,
Obj a_arglist,
Obj a_check )
{
Obj l_len = 0;
Obj l_opr = 0;
Obj l_info = 0;
Obj l_pos = 0;
Obj l_rel = 0;
Obj l_filters = 0;
Obj l_info1 = 0;
Obj l_isstr = 0;
Obj l_flags = 0;
Obj l_i = 0;
Obj l_rank = 0;
Obj l_method = 0;
Obj l_oreqs = 0;
Obj l_req = 0;
Obj l_reqs = 0;
Obj l_match = 0;
Obj l_j = 0;
Obj l_k = 0;
Obj l_imp = 0;
Obj l_notmatch = 0;
Obj l_lk = 0;
Obj l_funcname = 0;
Obj l_alt__rank = 0;
Obj t_1 = 0;
Obj t_2 = 0;
Obj t_3 = 0;
Obj t_4 = 0;
Obj t_5 = 0;
Obj t_6 = 0;
Obj t_7 = 0;
Obj t_8 = 0;
Obj t_9 = 0;
Obj t_10 = 0;
Obj t_11 = 0;
(void )l_len;
(void )l_opr;
(void )l_info;
(void )l_pos;
(void )l_rel;
(void )l_filters;
(void )l_info1;
(void )l_isstr;
(void )l_flags;
(void )l_i;
(void )l_rank;
(void )l_method;
(void )l_oreqs;
(void )l_req;
(void )l_reqs;
(void )l_match;
(void )l_j;
(void )l_k;
(void )l_imp;
(void )l_notmatch;
(void )l_lk;
(void )l_funcname;
(void )l_alt__rank;
Bag oldFrame;
/* allocate new stack frame */
SWITCH_TO_NEW_FRAME(self,0,0,oldFrame);
/* len := LEN_LIST( arglist ); */
t_2 = GF_LEN__LIST;
if ( TNUM_OBJ( t_2 ) == T_FUNCTION ) {
t_1 = CALL_1ARGS( t_2, a_arglist );
}
else {
t_1 = DoOperation2Args( CallFuncListOper, t_2, NewPlistFromArgs( a_arglist ) );
}
CHECK_FUNC_RESULT( t_1 );
l_len = t_1;
/* if len < 3 then */
t_1 = (Obj)(UInt)(LT( l_len, INTOBJ_INT(3) ));
if ( t_1 ) {
/* Error( "too few arguments given in <arglist>" ); */
t_1 = GF_Error;
t_2 = MakeString( "too few arguments given in " );
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_1ARGS( t_1, t_2 );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2 ) );
}
}
/* fi */
/* opr := arglist[1]; */
C_ELM_LIST_FPL( t_1, a_arglist, INTOBJ_INT(1) )
l_opr = t_1;
/* if not IS_OPERATION( opr ) then */
t_4 = GF_IS__OPERATION;
if ( TNUM_OBJ( t_4 ) == T_FUNCTION ) {
t_3 = CALL_1ARGS( t_4, l_opr );
}
else {
t_3 = DoOperation2Args( CallFuncListOper, t_4, NewPlistFromArgs( l_opr ) );
}
CHECK_FUNC_RESULT( t_3 );
CHECK_BOOL( t_3 );
t_2 = (Obj)(UInt)(t_3 != False );
t_1 = (Obj)(UInt)( ! ((Int )t_2) );
if ( t_1 ) {
/* Error( "<opr> is not an operation" ); */
t_1 = GF_Error;
t_2 = MakeString( " is not an operation" );
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_1ARGS( t_1, t_2 );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2 ) );
}
}
/* fi */
/* if IS_STRING_REP( arglist[2] ) or arglist[2] = false then */
t_4 = GF_IS__STRING__REP;
C_ELM_LIST_FPL( t_5, a_arglist, INTOBJ_INT(2) )
if ( TNUM_OBJ( t_4 ) == T_FUNCTION ) {
t_3 = CALL_1ARGS( t_4, t_5 );
}
else {
t_3 = DoOperation2Args( CallFuncListOper, t_4, NewPlistFromArgs( t_5 ) );
}
CHECK_FUNC_RESULT( t_3 );
CHECK_BOOL( t_3 );
t_2 = (Obj)(UInt)(t_3 != False );
t_1 = t_2;
if ( ! t_1 ) {
C_ELM_LIST_FPL( t_4, a_arglist, INTOBJ_INT(2) )
t_5 = False ;
t_3 = (Obj)(UInt)(EQ( t_4, t_5 ));
t_1 = t_3;
}
if ( t_1 ) {
/* info := arglist[2]; */
C_ELM_LIST_FPL( t_1, a_arglist, INTOBJ_INT(2) )
l_info = t_1;
/* pos := 3; */
l_pos = INTOBJ_INT(3);
}
/* else */
else {
/* info := false; */
t_1 = False ;
l_info = t_1;
/* pos := 2; */
l_pos = INTOBJ_INT(2);
}
/* fi */
/* if arglist[pos] = true or IS_FUNCTION( arglist[pos] ) then */
C_ELM_LIST_FPL( t_3, a_arglist, l_pos )
t_4 = True ;
t_2 = (Obj)(UInt)(EQ( t_3, t_4 ));
t_1 = t_2;
if ( ! t_1 ) {
t_5 = GF_IS__FUNCTION;
C_ELM_LIST_FPL( t_6, a_arglist, l_pos )
if ( TNUM_OBJ( t_5 ) == T_FUNCTION ) {
t_4 = CALL_1ARGS( t_5, t_6 );
}
else {
t_4 = DoOperation2Args( CallFuncListOper, t_5, NewPlistFromArgs( t_6 ) );
}
CHECK_FUNC_RESULT( t_4 );
CHECK_BOOL( t_4 );
t_3 = (Obj)(UInt)(t_4 != False );
t_1 = t_3;
}
if ( t_1 ) {
/* rel := arglist[pos]; */
C_ELM_LIST_FPL( t_1, a_arglist, l_pos )
l_rel = t_1;
/* pos := pos + 1; */
C_SUM_INTOBJS( t_1, l_pos, INTOBJ_INT(1) )
l_pos = t_1;
}
/* else */
else {
/* rel := true; */
t_1 = True ;
l_rel = t_1;
}
/* fi */
/* if not IsBound( arglist[pos] ) or not IS_LIST( arglist[pos] ) then */
CHECK_INT_POS( l_pos );
t_4 = C_ISB_LIST( a_arglist, l_pos );
t_3 = (Obj)(UInt)(t_4 != False );
t_2 = (Obj)(UInt)( ! ((Int )t_3) );
t_1 = t_2;
if ( ! t_1 ) {
t_6 = GF_IS__LIST;
C_ELM_LIST_FPL( t_7, a_arglist, l_pos )
if ( TNUM_OBJ( t_6 ) == T_FUNCTION ) {
t_5 = CALL_1ARGS( t_6, t_7 );
}
else {
t_5 = DoOperation2Args( CallFuncListOper, t_6, NewPlistFromArgs( t_7 ) );
}
CHECK_FUNC_RESULT( t_5 );
CHECK_BOOL( t_5 );
t_4 = (Obj)(UInt)(t_5 != False );
t_3 = (Obj)(UInt)( ! ((Int )t_4) );
t_1 = t_3;
}
if ( t_1 ) {
/* Error( "<arglist>[", pos, "] must be a list of filters" ); */
t_1 = GF_Error;
t_2 = MakeString( "[" );
t_3 = MakeString( "] must be a list of filters" );
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_3ARGS( t_1, t_2, l_pos, t_3 );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2, l_pos, t_3 ) );
}
}
/* fi */
/* filters := arglist[pos]; */
C_ELM_LIST_FPL( t_1, a_arglist, l_pos )
l_filters = t_1;
/* if GAPInfo.MaxNrArgsMethod < LEN_LIST( filters ) then */
t_3 = GC_GAPInfo;
CHECK_BOUND( t_3, "GAPInfo" );
t_2 = ELM_REC( t_3, R_MaxNrArgsMethod );
t_4 = GF_LEN__LIST;
if ( TNUM_OBJ( t_4 ) == T_FUNCTION ) {
t_3 = CALL_1ARGS( t_4, l_filters );
}
else {
t_3 = DoOperation2Args( CallFuncListOper, t_4, NewPlistFromArgs( l_filters ) );
}
CHECK_FUNC_RESULT( t_3 );
t_1 = (Obj)(UInt)(LT( t_2, t_3 ));
if ( t_1 ) {
/* Error( "methods can have at most ", GAPInfo.MaxNrArgsMethod, " arguments" ); */
t_1 = GF_Error;
t_2 = MakeString( "methods can have at most " );
t_4 = GC_GAPInfo;
CHECK_BOUND( t_4, "GAPInfo" );
t_3 = ELM_REC( t_4, R_MaxNrArgsMethod );
t_4 = MakeString( " arguments" );
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_3ARGS( t_1, t_2, t_3, t_4 );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2, t_3, t_4 ) );
}
}
/* fi */
/* if 0 < LEN_LIST( filters ) then */
t_3 = GF_LEN__LIST;
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_1ARGS( t_3, l_filters );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( l_filters ) );
}
CHECK_FUNC_RESULT( t_2 );
t_1 = (Obj)(UInt)(LT( INTOBJ_INT(0), t_2 ));
if ( t_1 ) {
/* info1 := "[ "; */
t_1 = MakeString( "[ " );
l_info1 = t_1;
/* isstr := true; */
t_1 = True ;
l_isstr = t_1;
/* for i in [ 1 .. LEN_LIST( filters ) ] do */
t_3 = GF_LEN__LIST;
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_1ARGS( t_3, l_filters );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( l_filters ) );
}
CHECK_FUNC_RESULT( t_2 );
CHECK_INT_SMALL( t_2 );
for ( t_1 = INTOBJ_INT(1);
((Int )t_1) <= ((Int )t_2);
t_1 = (Obj)(((UInt)t_1)+4) ) {
l_i = t_1;
/* if IS_STRING_REP( filters[i] ) then */
t_5 = GF_IS__STRING__REP;
C_ELM_LIST_FPL( t_6, l_filters, l_i )
if ( TNUM_OBJ( t_5 ) == T_FUNCTION ) {
t_4 = CALL_1ARGS( t_5, t_6 );
}
else {
t_4 = DoOperation2Args( CallFuncListOper, t_5, NewPlistFromArgs( t_6 ) );
}
CHECK_FUNC_RESULT( t_4 );
CHECK_BOOL( t_4 );
t_3 = (Obj)(UInt)(t_4 != False );
if ( t_3 ) {
/* APPEND_LIST_INTR( info1, filters[i] ); */
t_3 = GF_APPEND__LIST__INTR;
C_ELM_LIST_FPL( t_4, l_filters, l_i )
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
CALL_2ARGS( t_3, l_info1, t_4 );
}
else {
DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( l_info1, t_4 ) );
}
/* APPEND_LIST_INTR( info1, ", " ); */
t_3 = GF_APPEND__LIST__INTR;
t_4 = MakeString( ", " );
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
CALL_2ARGS( t_3, l_info1, t_4 );
}
else {
DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( l_info1, t_4 ) );
}
/* filters[i] := EvalString( filters[i] ); */
t_4 = GF_EvalString;
C_ELM_LIST_FPL( t_5, l_filters, l_i )
if ( TNUM_OBJ( t_4 ) == T_FUNCTION ) {
t_3 = CALL_1ARGS( t_4, t_5 );
}
else {
t_3 = DoOperation2Args( CallFuncListOper, t_4, NewPlistFromArgs( t_5 ) );
}
CHECK_FUNC_RESULT( t_3 );
C_ASS_LIST_FPL( l_filters, l_i, t_3 )
/* if not IS_FUNCTION( filters[i] ) then */
t_6 = GF_IS__FUNCTION;
C_ELM_LIST_FPL( t_7, l_filters, l_i )
if ( TNUM_OBJ( t_6 ) == T_FUNCTION ) {
t_5 = CALL_1ARGS( t_6, t_7 );
}
else {
t_5 = DoOperation2Args( CallFuncListOper, t_6, NewPlistFromArgs( t_7 ) );
}
CHECK_FUNC_RESULT( t_5 );
CHECK_BOOL( t_5 );
t_4 = (Obj)(UInt)(t_5 != False );
t_3 = (Obj)(UInt)( ! ((Int )t_4) );
if ( t_3 ) {
/* Error( "string does not evaluate to a function" ); */
t_3 = GF_Error;
t_4 = MakeString( "string does not evaluate to a function" );
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
CALL_1ARGS( t_3, t_4 );
}
else {
DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( t_4 ) );
}
}
/* fi */
}
/* else */
else {
/* isstr := false; */
t_3 = False ;
l_isstr = t_3;
/* break; */
break ;
}
/* fi */
}
/* od */
/* if isstr and info = false then */
t_2 = (Obj)(UInt)(l_isstr != False );
t_1 = t_2;
if ( t_1 ) {
t_4 = False ;
t_3 = (Obj)(UInt)(EQ( l_info, t_4 ));
t_1 = t_3;
}
if ( t_1 ) {
/* info1[LEN_LIST( info1 ) - 1] := ' '; */
t_3 = GF_LEN__LIST;
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_1ARGS( t_3, l_info1 );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( l_info1 ) );
}
CHECK_FUNC_RESULT( t_2 );
C_DIFF_FIA( t_1, t_2, INTOBJ_INT(1) )
CHECK_INT_POS( t_1 );
t_2 = ObjsChar[32];
C_ASS_LIST_FPL( l_info1, t_1, t_2 )
/* info1[LEN_LIST( info1 )] := ']'; */
t_2 = GF_LEN__LIST;
if ( TNUM_OBJ( t_2 ) == T_FUNCTION ) {
t_1 = CALL_1ARGS( t_2, l_info1 );
}
else {
t_1 = DoOperation2Args( CallFuncListOper, t_2, NewPlistFromArgs( l_info1 ) );
}
CHECK_FUNC_RESULT( t_1 );
CHECK_INT_POS( t_1 );
t_2 = ObjsChar[93];
C_ASS_LIST_FPL( l_info1, t_1, t_2 )
/* info := info1; */
l_info = l_info1;
}
/* fi */
}
/* fi */
/* pos := pos + 1; */
C_SUM_FIA( t_1, l_pos, INTOBJ_INT(1) )
l_pos = t_1;
/* flags := [ ]; */
t_1 = NEW_PLIST( T_PLIST, 0 );
SET_LEN_PLIST( t_1, 0 );
l_flags = t_1;
/* for i in filters do */
t_4 = l_filters;
if ( IS_SMALL_LIST(t_4) ) {
t_3 = (Obj)(UInt)1;
t_1 = INTOBJ_INT(1);
}
else {
t_3 = (Obj)(UInt)0;
t_1 = CALL_1ARGS( GF_ITERATOR, t_4 );
}
while ( 1 ) {
if ( t_3 ) {
if ( LEN_LIST(t_4) < Int_ObjInt(t_1) ) break ;
t_2 = ELMV0_LIST( t_4, Int_ObjInt(t_1) );
t_1 = (Obj)(((UInt)t_1)+4);
if ( t_2 == 0 ) continue ;
}
else {
if ( CALL_1ARGS( GF_IS_DONE_ITER, t_1 ) != False ) break ;
t_2 = CALL_1ARGS( GF_NEXT_ITER, t_1 );
}
l_i = t_2;
/* ADD_LIST( flags, FLAGS_FILTER( i ) ); */
t_5 = GF_ADD__LIST;
t_7 = GF_FLAGS__FILTER;
if ( TNUM_OBJ( t_7 ) == T_FUNCTION ) {
t_6 = CALL_1ARGS( t_7, l_i );
}
else {
t_6 = DoOperation2Args( CallFuncListOper, t_7, NewPlistFromArgs( l_i ) );
}
CHECK_FUNC_RESULT( t_6 );
if ( TNUM_OBJ( t_5 ) == T_FUNCTION ) {
CALL_2ARGS( t_5, l_flags, t_6 );
}
else {
DoOperation2Args( CallFuncListOper, t_5, NewPlistFromArgs( l_flags, t_6 ) );
}
}
/* od */
/* if not IsBound( arglist[pos] ) then */
CHECK_INT_POS( l_pos );
t_3 = C_ISB_LIST( a_arglist, l_pos );
t_2 = (Obj)(UInt)(t_3 != False );
t_1 = (Obj)(UInt)( ! ((Int )t_2) );
if ( t_1 ) {
/* Error( "the method is missing in <arglist>" ); */
t_1 = GF_Error;
t_2 = MakeString( "the method is missing in " );
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_1ARGS( t_1, t_2 );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2 ) );
}
}
/* elif IS_INT( arglist[pos] ) or IS_FUNCTION( arglist[pos] ) and NARG_FUNC( arglist[pos] ) = 0 and pos < LEN_LIST( arglist ) then */
else {
t_4 = GF_IS__INT;
C_ELM_LIST_FPL( t_5, a_arglist, l_pos )
if ( TNUM_OBJ( t_4 ) == T_FUNCTION ) {
t_3 = CALL_1ARGS( t_4, t_5 );
}
else {
t_3 = DoOperation2Args( CallFuncListOper, t_4, NewPlistFromArgs( t_5 ) );
}
CHECK_FUNC_RESULT( t_3 );
CHECK_BOOL( t_3 );
t_2 = (Obj)(UInt)(t_3 != False );
t_1 = t_2;
if ( ! t_1 ) {
t_7 = GF_IS__FUNCTION;
C_ELM_LIST_FPL( t_8, a_arglist, l_pos )
if ( TNUM_OBJ( t_7 ) == T_FUNCTION ) {
t_6 = CALL_1ARGS( t_7, t_8 );
}
else {
t_6 = DoOperation2Args( CallFuncListOper, t_7, NewPlistFromArgs( t_8 ) );
}
CHECK_FUNC_RESULT( t_6 );
CHECK_BOOL( t_6 );
t_5 = (Obj)(UInt)(t_6 != False );
t_4 = t_5;
if ( t_4 ) {
t_8 = GF_NARG__FUNC;
C_ELM_LIST_FPL( t_9, a_arglist, l_pos )
if ( TNUM_OBJ( t_8 ) == T_FUNCTION ) {
t_7 = CALL_1ARGS( t_8, t_9 );
}
else {
t_7 = DoOperation2Args( CallFuncListOper, t_8, NewPlistFromArgs( t_9 ) );
}
CHECK_FUNC_RESULT( t_7 );
t_6 = (Obj)(UInt)(EQ( t_7, INTOBJ_INT(0) ));
t_4 = t_6;
}
t_3 = t_4;
if ( t_3 ) {
t_7 = GF_LEN__LIST;
if ( TNUM_OBJ( t_7 ) == T_FUNCTION ) {
t_6 = CALL_1ARGS( t_7, a_arglist );
}
else {
t_6 = DoOperation2Args( CallFuncListOper, t_7, NewPlistFromArgs( a_arglist ) );
}
CHECK_FUNC_RESULT( t_6 );
t_5 = (Obj)(UInt)(LT( l_pos, t_6 ));
t_3 = t_5;
}
t_1 = t_3;
}
if ( t_1 ) {
/* rank := arglist[pos]; */
C_ELM_LIST_FPL( t_1, a_arglist, l_pos )
l_rank = t_1;
/* pos := pos + 1; */
C_SUM_FIA( t_1, l_pos, INTOBJ_INT(1) )
l_pos = t_1;
}
/* elif IS_LIST( arglist[pos] ) and LEN_LIST( arglist[pos] ) <= 2 and LEN_LIST( arglist[pos] ) >= 1 and IS_LIST( arglist[pos][1] ) and (LEN_LIST( arglist[pos] ) = 1 or IS_INT( arglist[pos][2] )) then */
else {
t_7 = GF_IS__LIST;
C_ELM_LIST_FPL( t_8, a_arglist, l_pos )
if ( TNUM_OBJ( t_7 ) == T_FUNCTION ) {
t_6 = CALL_1ARGS( t_7, t_8 );
}
else {
t_6 = DoOperation2Args( CallFuncListOper, t_7, NewPlistFromArgs( t_8 ) );
}
CHECK_FUNC_RESULT( t_6 );
CHECK_BOOL( t_6 );
t_5 = (Obj)(UInt)(t_6 != False );
t_4 = t_5;
if ( t_4 ) {
t_8 = GF_LEN__LIST;
C_ELM_LIST_FPL( t_9, a_arglist, l_pos )
if ( TNUM_OBJ( t_8 ) == T_FUNCTION ) {
t_7 = CALL_1ARGS( t_8, t_9 );
}
else {
t_7 = DoOperation2Args( CallFuncListOper, t_8, NewPlistFromArgs( t_9 ) );
}
CHECK_FUNC_RESULT( t_7 );
t_6 = (Obj)(UInt)(! LT( INTOBJ_INT(2), t_7 ));
t_4 = t_6;
}
t_3 = t_4;
if ( t_3 ) {
t_7 = GF_LEN__LIST;
C_ELM_LIST_FPL( t_8, a_arglist, l_pos )
if ( TNUM_OBJ( t_7 ) == T_FUNCTION ) {
t_6 = CALL_1ARGS( t_7, t_8 );
}
else {
t_6 = DoOperation2Args( CallFuncListOper, t_7, NewPlistFromArgs( t_8 ) );
}
CHECK_FUNC_RESULT( t_6 );
t_5 = (Obj)(UInt)(! LT( t_6, INTOBJ_INT(1) ));
t_3 = t_5;
}
t_2 = t_3;
if ( t_2 ) {
t_6 = GF_IS__LIST;
C_ELM_LIST_FPL( t_8, a_arglist, l_pos )
C_ELM_LIST_FPL( t_7, t_8, INTOBJ_INT(1) )
if ( TNUM_OBJ( t_6 ) == T_FUNCTION ) {
t_5 = CALL_1ARGS( t_6, t_7 );
}
else {
t_5 = DoOperation2Args( CallFuncListOper, t_6, NewPlistFromArgs( t_7 ) );
}
CHECK_FUNC_RESULT( t_5 );
CHECK_BOOL( t_5 );
t_4 = (Obj)(UInt)(t_5 != False );
t_2 = t_4;
}
t_1 = t_2;
if ( t_1 ) {
t_6 = GF_LEN__LIST;
C_ELM_LIST_FPL( t_7, a_arglist, l_pos )
if ( TNUM_OBJ( t_6 ) == T_FUNCTION ) {
t_5 = CALL_1ARGS( t_6, t_7 );
}
else {
t_5 = DoOperation2Args( CallFuncListOper, t_6, NewPlistFromArgs( t_7 ) );
}
CHECK_FUNC_RESULT( t_5 );
t_4 = (Obj)(UInt)(EQ( t_5, INTOBJ_INT(1) ));
t_3 = t_4;
if ( ! t_3 ) {
t_7 = GF_IS__INT;
C_ELM_LIST_FPL( t_9, a_arglist, l_pos )
C_ELM_LIST_FPL( t_8, t_9, INTOBJ_INT(2) )
if ( TNUM_OBJ( t_7 ) == T_FUNCTION ) {
t_6 = CALL_1ARGS( t_7, t_8 );
}
else {
t_6 = DoOperation2Args( CallFuncListOper, t_7, NewPlistFromArgs( t_8 ) );
}
CHECK_FUNC_RESULT( t_6 );
CHECK_BOOL( t_6 );
t_5 = (Obj)(UInt)(t_6 != False );
t_3 = t_5;
}
t_1 = t_3;
}
if ( t_1 ) {
/* alt_rank := arglist[pos]; */
C_ELM_LIST_FPL( t_1, a_arglist, l_pos )
l_alt__rank = t_1;
/* for i in [ 1 .. LEN_LIST( alt_rank[1] ) ] do */
t_3 = GF_LEN__LIST;
C_ELM_LIST_FPL( t_4, l_alt__rank, INTOBJ_INT(1) )
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_1ARGS( t_3, t_4 );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( t_4 ) );
}
CHECK_FUNC_RESULT( t_2 );
CHECK_INT_SMALL( t_2 );
for ( t_1 = INTOBJ_INT(1);
((Int )t_1) <= ((Int )t_2);
t_1 = (Obj)(((UInt)t_1)+4) ) {
l_i = t_1;
/* if IS_STRING_REP( alt_rank[1][i] ) then */
t_5 = GF_IS__STRING__REP;
C_ELM_LIST_FPL( t_7, l_alt__rank, INTOBJ_INT(1) )
C_ELM_LIST_FPL( t_6, t_7, l_i )
if ( TNUM_OBJ( t_5 ) == T_FUNCTION ) {
t_4 = CALL_1ARGS( t_5, t_6 );
}
else {
t_4 = DoOperation2Args( CallFuncListOper, t_5, NewPlistFromArgs( t_6 ) );
}
CHECK_FUNC_RESULT( t_4 );
CHECK_BOOL( t_4 );
t_3 = (Obj)(UInt)(t_4 != False );
if ( t_3 ) {
/* alt_rank[1][i] := EvalString( alt_rank[1][i] ); */
C_ELM_LIST_FPL( t_3, l_alt__rank, INTOBJ_INT(1) )
t_5 = GF_EvalString;
C_ELM_LIST_FPL( t_7, l_alt__rank, INTOBJ_INT(1) )
C_ELM_LIST_FPL( t_6, t_7, l_i )
if ( TNUM_OBJ( t_5 ) == T_FUNCTION ) {
t_4 = CALL_1ARGS( t_5, t_6 );
}
else {
t_4 = DoOperation2Args( CallFuncListOper, t_5, NewPlistFromArgs( t_6 ) );
}
CHECK_FUNC_RESULT( t_4 );
C_ASS_LIST_FPL( t_3, l_i, t_4 )
/* if not IS_FUNCTION( alt_rank[1][i] ) then */
t_6 = GF_IS__FUNCTION;
C_ELM_LIST_FPL( t_8, l_alt__rank, INTOBJ_INT(1) )
C_ELM_LIST_FPL( t_7, t_8, l_i )
if ( TNUM_OBJ( t_6 ) == T_FUNCTION ) {
t_5 = CALL_1ARGS( t_6, t_7 );
}
else {
t_5 = DoOperation2Args( CallFuncListOper, t_6, NewPlistFromArgs( t_7 ) );
}
CHECK_FUNC_RESULT( t_5 );
CHECK_BOOL( t_5 );
t_4 = (Obj)(UInt)(t_5 != False );
t_3 = (Obj)(UInt)( ! ((Int )t_4) );
if ( t_3 ) {
/* Error( "string does not evaluate to a function" ); */
t_3 = GF_Error;
t_4 = MakeString( "string does not evaluate to a function" );
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
CALL_1ARGS( t_3, t_4 );
}
else {
DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( t_4 ) );
}
}
/* fi */
}
/* fi */
}
/* od */
/* if LEN_LIST( alt_rank ) = 1 then */
t_3 = GF_LEN__LIST;
if ( TNUM_OBJ( t_3 ) == T_FUNCTION ) {
t_2 = CALL_1ARGS( t_3, l_alt__rank );
}
else {
t_2 = DoOperation2Args( CallFuncListOper, t_3, NewPlistFromArgs( l_alt__rank ) );
}
CHECK_FUNC_RESULT( t_2 );
t_1 = (Obj)(UInt)(EQ( t_2, INTOBJ_INT(1) ));
if ( t_1 ) {
/* rank := RANK_SHIFT_FUNCTION( filters, alt_rank[1], 0 ); */
t_2 = GF_RANK__SHIFT__FUNCTION;
C_ELM_LIST_FPL( t_3, l_alt__rank, INTOBJ_INT(1) )
if ( TNUM_OBJ( t_2 ) == T_FUNCTION ) {
t_1 = CALL_3ARGS( t_2, l_filters, t_3, INTOBJ_INT(0) );
}
else {
t_1 = DoOperation2Args( CallFuncListOper, t_2, NewPlistFromArgs( l_filters, t_3, INTOBJ_INT(0) ) );
}
CHECK_FUNC_RESULT( t_1 );
l_rank = t_1;
}
/* else */
else {
/* rank := RANK_SHIFT_FUNCTION( filters, alt_rank[1], alt_rank[2] ); */
t_2 = GF_RANK__SHIFT__FUNCTION;
C_ELM_LIST_FPL( t_3, l_alt__rank, INTOBJ_INT(1) )
C_ELM_LIST_FPL( t_4, l_alt__rank, INTOBJ_INT(2) )
if ( TNUM_OBJ( t_2 ) == T_FUNCTION ) {
t_1 = CALL_3ARGS( t_2, l_filters, t_3, t_4 );
}
else {
t_1 = DoOperation2Args( CallFuncListOper, t_2, NewPlistFromArgs( l_filters, t_3, t_4 ) );
}
CHECK_FUNC_RESULT( t_1 );
l_rank = t_1;
}
/* fi */
/* pos := pos + 1; */
C_SUM_FIA( t_1, l_pos, INTOBJ_INT(1) )
l_pos = t_1;
}
/* else */
else {
/* rank := 0; */
l_rank = INTOBJ_INT(0);
}
}
}
/* fi */
/* if not IsBound( arglist[pos] ) then */
CHECK_INT_POS( l_pos );
t_3 = C_ISB_LIST( a_arglist, l_pos );
t_2 = (Obj)(UInt)(t_3 != False );
t_1 = (Obj)(UInt)( ! ((Int )t_2) );
if ( t_1 ) {
/* Error( "the method is missing in <arglist>" ); */
t_1 = GF_Error;
t_2 = MakeString( "the method is missing in " );
if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
CALL_1ARGS( t_1, t_2 );
}
else {
DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2 ) );
}
}
/* fi */
/* method := arglist[pos]; */
C_ELM_LIST_FPL( t_1, a_arglist, l_pos )
l_method = t_1;
/* if FLAG1_FILTER( opr ) <> 0 and (rel = true or rel = RETURN_TRUE) and LEN_LIST( filters ) = 1 and (method = true or method = RETURN_TRUE) then */
t_6 = GF_FLAG1__FILTER;
if ( TNUM_OBJ( t_6 ) == T_FUNCTION ) {
t_5 = CALL_1ARGS( t_6, l_opr );
}
else {
t_5 = DoOperation2Args( CallFuncListOper, t_6, NewPlistFromArgs( l_opr ) );
}
CHECK_FUNC_RESULT( t_5 );
t_4 = (Obj)(UInt)( ! EQ( t_5, INTOBJ_INT(0) ));
t_3 = t_4;
if ( t_3 ) {
t_7 = True ;
t_6 = (Obj)(UInt)(EQ( l_rel, t_7 ));
t_5 = t_6;
if ( ! t_5 ) {
t_8 = GC_RETURN__TRUE;
CHECK_BOUND( t_8, "RETURN_TRUE" );
t_7 = (Obj)(UInt)(EQ( l_rel, t_8 ));
t_5 = t_7;
}
t_3 = t_5;
}
t_2 = t_3;
if ( t_2 ) {
t_6 = GF_LEN__LIST;
--> --------------------
--> maximum size reached
--> --------------------
quality 98%
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.60Angebot
Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können
¤
*Eine klare Vorstellung vom Zielzustand