/**************************************************************************** ** *F InitKernel( <module> ) . . . . . . . . initialise kernel data structures */ static Int InitKernel ( StructInitInfo * module ) { /* install the marking and sweeping methods */ InfoBags[ T_WPOBJ ].name = "object (weakptr)"; InfoBags[ T_WPOBJ +COPYING ].name = "object (weakptr, copied)"; InitMarkFuncBags ( T_WPOBJ, MarkWeakPointerObj ); InitSweepFuncBags( T_WPOBJ, SweepWeakPointerObj ); InitMarkFuncBags ( T_WPOBJ +COPYING, MarkWeakPointerObj ); InitSweepFuncBags( T_WPOBJ +COPYING, SweepWeakPointerObj ); /* typing method */ TypeObjFuncs[ T_WPOBJ ] = TypeWPObj; ImportGVarFromLibrary( "TYPE_WPOBJ", &TYPE_WPOBJ ); /* init filters and functions */ InitHdlrFiltsFromTable( GVarFilts ); InitHdlrFuncsFromTable( GVarFuncs ); /* saving function */ SaveObjFuncs[ T_WPOBJ ] = SaveWPObj; LoadObjFuncs[ T_WPOBJ ] = LoadWPObj; /* copying functions */ CopyObjFuncs[ T_WPOBJ ] = CopyObjWPObj; CopyObjFuncs[ T_WPOBJ + COPYING ] = CopyObjWPObjCopy; CleanObjFuncs[ T_WPOBJ ] = CleanObjWPObj; CleanObjFuncs[ T_WPOBJ + COPYING ] = CleanObjWPObjCopy; MakeImmutableObjFuncs[ T_WPOBJ ] = MakeImmutableWPObj; /* return success */ return 0; }
/**************************************************************************** ** *F InitKernel( <module> ) . . . . . . . . initialise kernel data structures */ static Int InitKernel ( StructInitInfo * module ) { UInt type; /* loop variable */ /* make the list of names of record names */ InitGlobalBag( &NamesRNam, "src/records.c:NamesRNam" ); /* make the hash list of record names */ InitGlobalBag( &HashRNam, "src/records.c:HashRNam" ); /* init filters and functions */ InitHdlrFiltsFromTable( GVarFilts ); InitHdlrOpersFromTable( GVarOpers ); InitHdlrFuncsFromTable( GVarFuncs ); /* make and install the 'IS_REC' filter */ for ( type = FIRST_REAL_TNUM; type <= LAST_REAL_TNUM; type++ ) { assert(IsRecFuncs[ type ] == 0); IsRecFuncs[ type ] = AlwaysNo; } for ( type = FIRST_RECORD_TNUM; type <= LAST_RECORD_TNUM; type++ ) { IsRecFuncs[ type ] = AlwaysYes; } for ( type = FIRST_EXTERNAL_TNUM; type <= LAST_EXTERNAL_TNUM; type++ ) { IsRecFuncs[ type ] = IsRecObject; } /* make and install the 'ELM_REC' operations */ for ( type = FIRST_REAL_TNUM; type <= LAST_REAL_TNUM; type++ ) { assert(ElmRecFuncs[ type ] == 0); ElmRecFuncs[ type ] = ElmRecError; } for ( type = FIRST_EXTERNAL_TNUM; type <= LAST_EXTERNAL_TNUM; type++ ) { ElmRecFuncs[ type ] = ElmRecObject; } /* make and install the 'ISB_REC' operation */ for ( type = FIRST_REAL_TNUM; type <= LAST_REAL_TNUM; type++ ) { assert(IsbRecFuncs[ type ] == 0); IsbRecFuncs[ type ] = IsbRecError; } for ( type = FIRST_EXTERNAL_TNUM; type <= LAST_EXTERNAL_TNUM; type++ ) { IsbRecFuncs[ type ] = IsbRecObject; } /* make and install the 'ASS_REC' operation */ for ( type = FIRST_REAL_TNUM; type <= LAST_REAL_TNUM; type++ ) { assert(AssRecFuncs[ type ] == 0); AssRecFuncs[ type ] = AssRecError; } for ( type = FIRST_EXTERNAL_TNUM; type <= LAST_EXTERNAL_TNUM; type++ ) { AssRecFuncs[ type ] = AssRecObject; } /* make and install the 'UNB_REC' operation */ for ( type = FIRST_REAL_TNUM; type <= LAST_REAL_TNUM; type++ ) { assert(UnbRecFuncs[ type ] == 0); UnbRecFuncs[ type ] = UnbRecError; } for ( type = FIRST_EXTERNAL_TNUM; type <= LAST_EXTERNAL_TNUM; type++ ) { UnbRecFuncs[ type ] = UnbRecObject; } /* return success */ return 0; }