アットウィキロゴ

tcl > generic > tclEvent.c

概要


inlude

"tclInt.h"

変数宣言



 /*
  * The data structure below is used to report background errors. One such
  * structure is allocated for each error; it holds information about the
  * interpreter and the error until an idle handler command can be invoked.
  */
 
 typedef struct BgError {
     [[Tcl_Obj]] *errorMsg;		/* Copy of the error message (the interp's
 				 * result when the error occurred). */
     Tcl_Obj *returnOpts;	/* Active return options when the error
 				 * occurred */
     struct BgError *nextPtr;	/* Next in list of all pending error reports
 				 * for this interpreter, or NULL for end of
 				 * list. */
 } BgError;
 
 /*
  * One of the structures below is associated with the "tclBgError" assoc data
  * for each interpreter. It keeps track of the head and tail of the list of
  * pending background errors for the interpreter.
  */
 
 typedef struct ErrAssocData {
     [[Tcl_Interp]] *interp;		/* Interpreter in which error occurred. */
     Tcl_Obj *cmdPrefix;		/* First word(s) of the handler command */
     BgError *firstBgPtr;	/* First in list of all background errors
 				 * waiting to be processed for this
 				 * interpreter (NULL if none). */
     BgError *lastBgPtr;		/* Last in list of all background errors
 				 * waiting to be processed for this
 				 * interpreter (NULL if none). */
 } ErrAssocData;
 
 /*
  * For each exit handler created with a call to Tcl_Create(Late)ExitHandler there is
  * a structure of the following type:
  */
 
 typedef struct ExitHandler {
     Tcl_ExitProc *proc;		/* Function to call when process exits. */
     [[ClientData]] clientData;	/* One word of information to pass to proc. */
     struct ExitHandler *nextPtr;/* Next in list of all exit handlers for this
 				 * application, or NULL for end of list. */
 } ExitHandler;
 
 /*
  * There is both per-process and per-thread exit handlers. The first list is
  * controlled by a mutex. The other is in thread local storage.
  */
 
 static ExitHandler *firstExitPtr = NULL;
 				/* First in list of all exit handlers for
 				 * application. */
 static ExitHandler *firstLateExitPtr = NULL;
 				/* First in list of all late exit handlers for
 				 * application. */
 TCL_DECLARE_MUTEX(exitMutex)
 
 /*
  * This variable is set to 1 when Tcl_Finalize is called, and at the end of
  * its work, it is reset to 0. The variable is checked by TclInExit() to allow
  * different behavior for exit-time processing, e.g. in closing of files and
  * pipes.
  */
 
 static int inFinalize = 0;
 static int subsystemsInitialized = 0;
 
 /*
  * This variable contains the application wide exit handler. It will be
  * called by Tcl_Exit instead of the C-runtime exit if this variable is set
  * to a non-NULL value.
  */
 
 static Tcl_ExitProc *appExitPtr = NULL;
 
 typedef struct ThreadSpecificData {
     ExitHandler *firstExitPtr;	/* First in list of all exit handlers for this
 				 * thread. */
     int inExit;			/* True when this thread is exiting. This is
 				 * used as a hack to decide to close the
 				 * standard channels. */
 } ThreadSpecificData;
 static Tcl_ThreadDataKey dataKey;
 
 #ifdef TCL_THREADS
 typedef struct {
     Tcl_ThreadCreateProc *proc;	/* Main() function of the thread */
     ClientData clientData;	/* The one argument to Main() */
 } ThreadClientData;
 static Tcl_ThreadCreateType NewThreadProc(ClientData clientData);
 #endif /* TCL_THREADS */

関数

最終更新:2011年11月10日 21:36