📄 tclint.h
字号:
* progress. Zero means a command proc has been * invoked since last error occured. * ERR_ALREADY_LOGGED: Non-zero means information has already been logged * in $errorInfo for the current Tcl_Eval instance, * so Tcl_Eval needn't log it (used to implement the * "error message log" command). * ERROR_CODE_SET: Non-zero means that Tcl_SetErrorCode has been * called to record information for the current * error. Zero means Tcl_Eval must clear the * errorCode variable if an error is returned. * EXPR_INITIALIZED: Non-zero means initialization specific to * expressions has been carried out. * DONT_COMPILE_CMDS_INLINE: Non-zero means that the bytecode compiler * should not compile any commands into an inline * sequence of instructions. This is set 1, for * example, when command traces are requested. * RAND_SEED_INITIALIZED: Non-zero means that the randSeed value of the * interp has not be initialized. This is set 1 * when we first use the rand() or srand() functions. * SAFE_INTERP: Non zero means that the current interp is a * safe interp (ie it has only the safe commands * installed, less priviledge than a regular interp). * USE_EVAL_DIRECT: Non-zero means don't use the compiler or byte-code * interpreter; instead, have Tcl_EvalObj call * Tcl_EvalEx. Used primarily for testing the * new parser. * INTERP_TRACE_IN_PROGRESS: Non-zero means that an interp trace is currently * active; so no further trace callbacks should be * invoked. */#define DELETED 1#define ERR_IN_PROGRESS 2#define ERR_ALREADY_LOGGED 4#define ERROR_CODE_SET 8#define EXPR_INITIALIZED 0x10#define DONT_COMPILE_CMDS_INLINE 0x20#define RAND_SEED_INITIALIZED 0x40#define SAFE_INTERP 0x80#define USE_EVAL_DIRECT 0x100#define INTERP_TRACE_IN_PROGRESS 0x200/* *---------------------------------------------------------------- * Data structures related to command parsing. These are used in * tclParse.c and its clients. *---------------------------------------------------------------- *//* * The following data structure is used by various parsing procedures * to hold information about where to store the results of parsing * (e.g. the substituted contents of a quoted argument, or the result * of a nested command). At any given time, the space available * for output is fixed, but a procedure may be called to expand the * space available if the current space runs out. */typedef struct ParseValue { char *buffer; /* Address of first character in * output buffer. */ char *next; /* Place to store next character in * output buffer. */ char *end; /* Address of the last usable character * in the buffer. */ void (*expandProc) _ANSI_ARGS_((struct ParseValue *pvPtr, int needed)); /* Procedure to call when space runs out; * it will make more space. */ ClientData clientData; /* Arbitrary information for use of * expandProc. */} ParseValue;/* * Maximum number of levels of nesting permitted in Tcl commands (used * to catch infinite recursion). */#define MAX_NESTING_DEPTH 1000/* * The macro below is used to modify a "char" value (e.g. by casting * it to an unsigned character) so that it can be used safely with * macros such as isspace. */#define UCHAR(c) ((unsigned char) (c))/* * This macro is used to determine the offset needed to safely allocate any * data structure in memory. Given a starting offset or size, it "rounds up" * or "aligns" the offset to the next 8-byte boundary so that any data * structure can be placed at the resulting offset without fear of an * alignment error. * * WARNING!! DO NOT USE THIS MACRO TO ALIGN POINTERS: it will produce * the wrong result on platforms that allocate addresses that are divisible * by 4 or 2. Only use it for offsets or sizes. */#define TCL_ALIGN(x) (((int)(x) + 7) & ~7)/* * The following enum values are used to specify the runtime platform * setting of the tclPlatform variable. */typedef enum { TCL_PLATFORM_UNIX, /* Any Unix-like OS. */ TCL_PLATFORM_MAC, /* MacOS. */ TCL_PLATFORM_WINDOWS /* Any Microsoft Windows OS. */} TclPlatformType;/* * The following enum values are used to indicate the translation * of a Tcl channel. Declared here so that each platform can define * TCL_PLATFORM_TRANSLATION to the native translation on that platform */typedef enum TclEolTranslation { TCL_TRANSLATE_AUTO, /* Eol == \r, \n and \r\n. */ TCL_TRANSLATE_CR, /* Eol == \r. */ TCL_TRANSLATE_LF, /* Eol == \n. */ TCL_TRANSLATE_CRLF /* Eol == \r\n. */} TclEolTranslation;/* * Flags for TclInvoke: * * TCL_INVOKE_HIDDEN Invoke a hidden command; if not set, * invokes an exposed command. * TCL_INVOKE_NO_UNKNOWN If set, "unknown" is not invoked if * the command to be invoked is not found. * Only has an effect if invoking an exposed * command, i.e. if TCL_INVOKE_HIDDEN is not * also set. * TCL_INVOKE_NO_TRACEBACK Does not record traceback information if * the invoked command returns an error. Used * if the caller plans on recording its own * traceback information. */#define TCL_INVOKE_HIDDEN (1<<0)#define TCL_INVOKE_NO_UNKNOWN (1<<1)#define TCL_INVOKE_NO_TRACEBACK (1<<2)/* * The structure used as the internal representation of Tcl list * objects. This is an array of pointers to the element objects. This array * is grown (reallocated and copied) as necessary to hold all the list's * element pointers. The array might contain more slots than currently used * to hold all element pointers. This is done to make append operations * faster. */typedef struct List { int maxElemCount; /* Total number of element array slots. */ int elemCount; /* Current number of list elements. */ Tcl_Obj **elements; /* Array of pointers to element objects. */} List;/* * The following types are used for getting and storing platform-specific * file attributes in tclFCmd.c and the various platform-versions of * that file. This is done to have as much common code as possible * in the file attributes code. For more information about the callbacks, * see TclFileAttrsCmd in tclFCmd.c. */typedef int (TclGetFileAttrProc) _ANSI_ARGS_((Tcl_Interp *interp, int objIndex, Tcl_Obj *fileName, Tcl_Obj **attrObjPtrPtr));typedef int (TclSetFileAttrProc) _ANSI_ARGS_((Tcl_Interp *interp, int objIndex, Tcl_Obj *fileName, Tcl_Obj *attrObjPtr));typedef struct TclFileAttrProcs { TclGetFileAttrProc *getProc; /* The procedure for getting attrs. */ TclSetFileAttrProc *setProc; /* The procedure for setting attrs. */} TclFileAttrProcs;/* * Opaque handle used in pipeline routines to encapsulate platform-dependent * state. */typedef struct TclFile_ *TclFile; /* * Opaque names for platform specific types. */typedef struct TclpTime_t_ *TclpTime_t;/* * The "globParameters" argument of the function TclGlob is an * or'ed combination of the following values: */#define TCL_GLOBMODE_NO_COMPLAIN 1#define TCL_GLOBMODE_JOIN 2#define TCL_GLOBMODE_DIR 4#define TCL_GLOBMODE_TAILS 8/* *---------------------------------------------------------------- * Data structures related to obsolete filesystem hooks *---------------------------------------------------------------- */typedef int (TclStatProc_) _ANSI_ARGS_((CONST char *path, struct stat *buf));typedef int (TclAccessProc_) _ANSI_ARGS_((CONST char *path, int mode));typedef Tcl_Channel (TclOpenFileChannelProc_) _ANSI_ARGS_((Tcl_Interp *interp, CONST char *fileName, CONST char *modeString, int permissions));/* *---------------------------------------------------------------- * Data structures related to procedures *---------------------------------------------------------------- */typedef Tcl_CmdProc *TclCmdProcType;typedef Tcl_ObjCmdProc *TclObjCmdProcType;/* *---------------------------------------------------------------- * Variables shared among Tcl modules but not used by the outside world. *---------------------------------------------------------------- */extern Tcl_Time tclBlockTime;extern int tclBlockTimeSet;extern char * tclExecutableName;extern char * tclNativeExecutableName;extern char * tclDefaultEncodingDir;extern Tcl_ChannelType tclFileChannelType;extern char * tclMemDumpFileName;extern TclPlatformType tclPlatform;/* * Variables denoting the Tcl object types defined in the core. */extern Tcl_ObjType tclBooleanType;extern Tcl_ObjType tclByteArrayType;extern Tcl_ObjType tclByteCodeType;extern Tcl_ObjType tclDoubleType;extern Tcl_ObjType tclEndOffsetType;extern Tcl_ObjType tclIntType;extern Tcl_ObjType tclListType;extern Tcl_ObjType tclProcBodyType;extern Tcl_ObjType tclStringType;extern Tcl_ObjType tclArraySearchType;extern Tcl_ObjType tclIndexType;extern Tcl_ObjType tclNsNameType;#ifndef TCL_WIDE_INT_IS_LONGextern Tcl_ObjType tclWideIntType;#endif/* * Variables denoting the hash key types defined in the core. */extern Tcl_HashKeyType tclArrayHashKeyType;extern Tcl_HashKeyType tclOneWordHashKeyType;extern Tcl_HashKeyType tclStringHashKeyType;extern Tcl_HashKeyType tclObjHashKeyType;/* * The head of the list of free Tcl objects, and the total number of Tcl * objects ever allocated and freed. */extern Tcl_Obj * tclFreeObjList;#ifdef TCL_COMPILE_STATSextern long tclObjsAlloced;extern long tclObjsFreed;#define TCL_MAX_SHARED_OBJ_STATS 5extern long tclObjsShared[TCL_MAX_SHARED_OBJ_STATS];#endif /* TCL_COMPILE_STATS *//* * Pointer to a heap-allocated string of length zero that the Tcl core uses * as the value of an empty string representation for an object. This value * is shared by all new objects allocated by Tcl_NewObj. */extern char * tclEmptyStringRep;extern char tclEmptyString;/* *---------------------------------------------------------------- * Procedures shared among Tcl modules but not used by the outside * world: *---------------------------------------------------------------- */EXTERN int TclArraySet _ANSI_ARGS_((Tcl_Interp *interp, Tcl_Obj *arrayNameObj, Tcl_Obj *arrayElemObj));EXTERN int TclCheckBadOctal _ANSI_ARGS_((Tcl_Interp *interp, CONST char *value));EXTERN void TclExpandTokenArray _ANSI_ARGS_(( Tcl_Parse *parsePtr));EXTERN int TclFileAttrsCmd _ANSI_ARGS_((Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));EXTERN int TclFileCopyCmd _ANSI_ARGS_((Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])) ;EXTERN int TclFileDeleteCmd _ANSI_ARGS_((Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]));EXTERN int TclFileMakeDirsCmd _ANSI_ARGS_((Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])) ;EXTERN int TclFileRenameCmd _ANSI_ARGS_((Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])) ;EXTERN void TclFinalizeAllocSubsystem _ANSI_ARGS_((void));EXTERN void TclFinalizeCompExecEnv _ANSI_ARGS_((void));EXTERN void TclFinalizeCompilation _ANSI_ARGS_((void));EXTERN void TclFinalizeEncodingSubsystem _ANSI_ARGS_((void));EXTERN void TclFinalizeEnvironment _ANSI_ARGS_((void));EXTERN void TclFinalizeExecution _ANSI_ARGS_((void));EXTERN void TclFinalizeIOSubsystem _ANSI_ARGS_((void));EXTERN void TclFinalizeFilesystem _ANSI_ARGS_((void));EXTERN void TclResetFilesystem _ANSI_ARGS_((void));EXTERN void TclFinalizeLoad _ANSI_ARGS_((void));EXTERN void TclFinalizeMemorySubsystem _ANSI_ARGS_((void));EXTERN void TclFinalizeNotifier _ANSI_ARGS_((void));EXTERN void TclFinalizeAsync _ANSI_ARGS_((void));EXTERN void TclFinalizeSynchronization _ANSI_ARGS_((void));EXTERN void TclFinalizeThreadData _ANSI_ARGS_((void));EXTERN void TclFindEncodings _ANSI_ARGS_((CONST char *argv0));EXTERN int TclGlob _ANSI_ARGS_((Tcl_Interp *interp, char *pattern, Tcl_Obj *unquotedPrefix,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -