
| Current Path : /usr/include/gap/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : //usr/include/gap/stats.h |
/****************************************************************************
**
*W stats.h GAP source Martin Schönert
**
**
*Y Copyright (C) 1996, Lehrstuhl D für Mathematik, RWTH Aachen, Germany
*Y (C) 1998 School Math and Comp. Sci., University of St Andrews, Scotland
*Y Copyright (C) 2002 The GAP Group
**
** This file declares the functions of the statements package.
**
** The statements package is the part of the interpreter that executes
** statements for their effects and prints statements.
*/
#ifndef GAP_STATS_H
#define GAP_STATS_H
#include "gapstate.h"
/****************************************************************************
**
*V ExecStatFuncs[<type>] . . . . . . executor for statements of type <type>
**
** 'ExecStatFuncs' is the dispatch table that contains for every type of
** statements a pointer to the executor for statements of this type, i.e.,
** the function that should be called if a statement of that type is
** executed.
*/
extern UInt (* ExecStatFuncs[256]) ( Stat stat );
/****************************************************************************
**
*F EXEC_STAT(<stat>) . . . . . . . . . . . . . . . . . . execute a statement
**
** 'EXEC_STAT' executes the statement <stat>.
**
** If this causes the execution of a return-value-statement, then
** 'EXEC_STAT' returns 1, and the return value is stored in 'ReturnObjStat'.
** If this causes the execution of a return-void-statement, then 'EXEC_STAT'
** returns 2. If this causes execution of a break-statement (which cannot
** happen if <stat> is the body of a function), then 'EXEC_STAT' returns 4.
** Otherwise 'EXEC_STAT' returns 0.
**
** 'EXEC_STAT' causes the execution of <stat> by dispatching to the
** executor, i.e., to the function that executes statements of the type of
** <stat>.
*/
extern UInt EXEC_STAT(Stat stat);
/****************************************************************************
**
*V IntrExecStatFuncs[<type>] . . . . pseudo executor to handle interrupts
**
** 'IntrExecStatFuncs' is a dispatch table that dispatches to an interrupt
** function for every single entry; it is used in lieu of 'ExecStatFuncs'
** when the normal control flow needs to be interrupted by an external
** event.
*/
extern UInt (* IntrExecStatFuncs[256]) ( Stat stat );
/****************************************************************************
**
*V CurrStat . . . . . . . . . . . . . . . . . currently executed statement
**
** 'CurrStat' is the statement that is currently being executed. The sole
** purpose of 'CurrStat' is to make it possible to point to the location in
** case an error is signalled.
*/
/* TL: extern Stat CurrStat; */
/****************************************************************************
**
*F SET_BRK_CURR_STAT(<stat>) . . . . . . . set currently executing statement
*F OLD_BRK_CURR_STAT . . . . . . . . . define variable to remember CurrStat
*F REM_BRK_CURR_STAT() . . . . . . . remember currently executing statement
*F RES_BRK_CURR_STAT() . . . . . . . . restore currently executing statement
*/
#ifndef NO_BRK_CURR_STAT
#define SET_BRK_CURR_STAT(stat) (STATE(CurrStat) = (stat))
#define OLD_BRK_CURR_STAT Stat oldStat;
#define REM_BRK_CURR_STAT() (oldStat = STATE(CurrStat))
#define RES_BRK_CURR_STAT() (STATE(CurrStat) = oldStat)
#endif
#ifdef NO_BRK_CURR_STAT
#define SET_BRK_CURR_STAT(stat) /* do nothing */
#define OLD_BRK_CURR_STAT /* do nothing */
#define REM_BRK_CURR_STAT() /* do nothing */
#define RES_BRK_CURR_STAT() /* do nothing */
#endif
/****************************************************************************
**
*V ReturnObjStat . . . . . . . . . . . . . . . . result of return-statement
**
** '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.
*/
/* TL: extern Obj ReturnObjStat; */
extern UInt TakeInterrupt();
/****************************************************************************
**
*F InterruptExecStat() . . . . . . . . interrupt the execution of statements
**
** 'InterruptExecStat' interrupts the execution of statements at the next
** possible moment. It is called from 'SyAnsIntr' if an interrupt signal is
** received. It is never called on systems that do not support signals. On
** those systems the executors test 'SyIsIntr' at regular intervals.
*/
extern void InterruptExecStat ( );
/****************************************************************************
**
*F PrintStat(<stat>) . . . . . . . . . . . . . . . . . . . print a statement
**
** 'PrintStat' prints the statements <stat>.
**
** 'PrintStat' simply dispatches through the table 'PrintStatFuncs' to the
** appropriate printer.
*/
extern void PrintStat (
Stat stat );
/****************************************************************************
**
*V PrintStatFuncs[<type>] . . print function for statements of type <type>
**
** 'PrintStatFuncs' is the dispatching table that contains for every type of
** statements a pointer to the printer for statements of this type, i.e.,
** the function that should be called to print statements of this type.
*/
extern void (* PrintStatFuncs[256] ) ( Stat stat );
/****************************************************************************
**
*F ClearError() . . . . . . . . . . . . . . reset execution and error flag
*
* FIXME: This function accesses NrError which is state of the scanner, so
* scanner should have an API for this.
*
*/
extern void ClearError ( void );
/****************************************************************************
**
*F * * * * * * * * * * * * * initialize module * * * * * * * * * * * * * * *
*/
/****************************************************************************
**
*F InitInfoStats() . . . . . . . . . . . . . . . . . table of init functions
*/
StructInitInfo * InitInfoStats ( void );
#endif // GAP_STATS_H