typedefstruct GAPState { #ifdef HPCGAP // TLS data -- this *must* come first, so that we can safely // cast a GAPState pointer into a ThreadLocalStorage pointer
ThreadLocalStorage tls; #endif
// The current assertion level for use in Assert Int CurrentAssertionLevel;
// From gvar.c
Obj CurrNamespace;
// From vars.c
// 'CurrLVars' is the bag containing the values of the local variables of // the currently executing interpreted function. // // Assignments to the local variables change this bag. We do not call // 'CHANGED_BAG' for each of such change. Instead we wait until a garbage // collection begins and then call 'CHANGED_BAG' in 'BeginCollectBags'.
Bag CurrLVars;
// 'PtrLVars' is a pointer to the 'STATE(CurrLVars)' bag. This makes it // faster to access local variables. // // Since a garbage collection may move this bag around, the pointer // 'PtrLVars' must be recalculated afterwards in 'VarsAfterCollectBags'.
Obj * PtrLVars;
Bag LVarsPool[16];
// From read.c
jmp_buf ReadJmpError;
// 'Prompt' holds the string that is to be printed if a new line is read // from the interactive files '*stdin*' or '*errin*'. // // It is set to 'gap> ' or 'brk> ' in the read-eval-print loops and // changed to the partial prompt '> ' in 'Read' after the first symbol is // read. char Prompt[80];
// From stats.c
// `ReturnObjStat` is the result of the return-statement that was last // executed. It is set in `ExecReturnObj` and used in the handlers that // interpret functions.
Obj ReturnObjStat;
// for use by GAP_TRY / GAP_CATCH and related code int TryCatchDepth;
// Set by `FuncJUMP_TO_CATCH` to the value of its second argument, and // and then later extracted by `CALL_WITH_CATCH`. Not currently used by // the GAP kernel itself, as far as I can tell.
Obj ThrownObject;
// Set to TRUE when a read-eval-loop encounters a `quit` statement. BOOL UserHasQuit;
// Set to TRUE when a read-eval-loop encounters a `QUIT` statement. BOOL UserHasQUIT;
// Set by the primary read-eval loop in `FuncSHELL`, based on the value of // `ErrorLLevel`. Also, `ReadEvalCommand` saves and restores this value // before executing code.
Obj ErrorLVars;
// Records where on the stack `ErrorLVars` is relative to the top; this is // modified by `FuncDownEnv` / `FuncUpEnv`, and ultimately used and // controlled by the primary read-eval loop in `FuncSHELL`. Int ErrorLLevel;
// This callback is called in FuncJUMP_TO_CATCH, this is not used by GAP // itself but by programs that use GAP as a library to handle errors void (*JumpToCatchCallback)(void);
// From info.c Int ShowUsedInfoClassesActive;
UInt1 StateSlots[STATE_SLOTS_SIZE];
} GAPState;
// for performance reasons, we strive to keep the GAPState size small enough // so that all its members can be access with a 16 bit signed offset
GAP_STATIC_ASSERT(sizeof(GAPState) < 32768, "GAPState is too big");
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.