⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tclint.h

📁 tcl是工具命令语言
💻 H
📖 第 1 页 / 共 5 页
字号:
    struct Command *selfPtr;	/* Pointer to this imported command. Needed				 * only when deleting it in order to remove				 * it from the real command's linked list of				 * imported commands that refer to it. */} ImportedCmdData;/* * A Command structure exists for each command in a namespace. The * Tcl_Command opaque type actually refers to these structures. */typedef struct Command {    Tcl_HashEntry *hPtr;	/* Pointer to the hash table entry that				 * refers to this command. The hash table is				 * either a namespace's command table or an				 * interpreter's hidden command table. This				 * pointer is used to get a command's name				 * from its Tcl_Command handle. NULL means				 * that the hash table entry has been				 * removed already (this can happen if				 * deleteProc causes the command to be				 * deleted or recreated). */    Namespace *nsPtr;		/* Points to the namespace containing this				 * command. */    int refCount;		/* 1 if in command hashtable plus 1 for each				 * reference from a CmdName Tcl object				 * representing a command's name in a				 * ByteCode instruction sequence. This				 * structure can be freed when refCount				 * becomes zero. */    int cmdEpoch;		/* Incremented to invalidate any references				 * that point to this command when it is				 * renamed, deleted, hidden, or exposed. */    CompileProc *compileProc;	/* Procedure called to compile command. NULL				 * if no compile proc exists for command. */    Tcl_ObjCmdProc *objProc;	/* Object-based command procedure. */    ClientData objClientData;	/* Arbitrary value passed to object proc. */    Tcl_CmdProc *proc;		/* String-based command procedure. */    ClientData clientData;	/* Arbitrary value passed to string proc. */    Tcl_CmdDeleteProc *deleteProc;				/* Procedure invoked when deleting command				 * to, e.g., free all client data. */    ClientData deleteData;	/* Arbitrary value passed to deleteProc. */    int flags;			/* Miscellaneous bits of information about				 * command. See below for definitions. */    ImportRef *importRefPtr;	/* List of each imported Command created in				 * another namespace when this command is				 * imported. These imported commands				 * redirect invocations back to this				 * command. The list is used to remove all				 * those imported commands when deleting				 * this "real" command. */    CommandTrace *tracePtr;	/* First in list of all traces set for this				 * command. */} Command;/* * Flag bits for commands.  * * CMD_IS_DELETED -		Means that the command is in the process *                              of being deleted (its deleteProc is *                              currently executing). Other attempts to *                              delete the command should be ignored. * CMD_TRACE_ACTIVE -		1 means that trace processing is currently *				underway for a rename/delete change. *				See the two flags below for which is *				currently being processed. * CMD_HAS_EXEC_TRACES -	1 means that this command has at least *                              one execution trace (as opposed to simple *                              delete/rename traces) in its tracePtr list. * TCL_TRACE_RENAME -           A rename trace is in progress. Further *                              recursive renames will not be traced. * TCL_TRACE_DELETE -           A delete trace is in progress. Further  *                              recursive deletes will not be traced. * (these last two flags are defined in tcl.h) */#define CMD_IS_DELETED		0x1#define CMD_TRACE_ACTIVE	0x2#define CMD_HAS_EXEC_TRACES	0x4/* *---------------------------------------------------------------- * Data structures related to name resolution procedures. *---------------------------------------------------------------- *//* * The interpreter keeps a linked list of name resolution schemes. * The scheme for a namespace is consulted first, followed by the * list of schemes in an interpreter, followed by the default * name resolution in Tcl.  Schemes are added/removed from the * interpreter's list by calling Tcl_AddInterpResolver and * Tcl_RemoveInterpResolver. */typedef struct ResolverScheme {    char *name;			/* Name identifying this scheme. */    Tcl_ResolveCmdProc *cmdResProc;				/* Procedure handling command name				 * resolution. */    Tcl_ResolveVarProc *varResProc;				/* Procedure handling variable name				 * resolution for variables that				 * can only be handled at runtime. */    Tcl_ResolveCompiledVarProc *compiledVarResProc;				/* Procedure handling variable name				 * resolution at compile time. */    struct ResolverScheme *nextPtr;				/* Pointer to next record in linked list. */} ResolverScheme;/* *---------------------------------------------------------------- * This structure defines an interpreter, which is a collection of * commands plus other state information related to interpreting * commands, such as variable storage. Primary responsibility for * this data structure is in tclBasic.c, but almost every Tcl * source file uses something in here. *---------------------------------------------------------------- */typedef struct Interp {    /*     * Note:  the first three fields must match exactly the fields in     * a Tcl_Interp struct (see tcl.h).	 If you change one, be sure to     * change the other.     *     * The interpreter's result is held in both the string and the     * objResultPtr fields. These fields hold, respectively, the result's     * string or object value. The interpreter's result is always in the     * result field if that is non-empty, otherwise it is in objResultPtr.     * The two fields are kept consistent unless some C code sets     * interp->result directly. Programs should not access result and     * objResultPtr directly; instead, they should always get and set the     * result using procedures such as Tcl_SetObjResult, Tcl_GetObjResult,     * and Tcl_GetStringResult. See the SetResult man page for details.     */    char *result;		/* If the last command returned a string				 * result, this points to it. Should not be				 * accessed directly; see comment above. */    Tcl_FreeProc *freeProc;	/* Zero means a string result is statically				 * allocated. TCL_DYNAMIC means string				 * result was allocated with ckalloc and				 * should be freed with ckfree. Other values				 * give address of procedure to invoke to				 * free the string result. Tcl_Eval must				 * free it before executing next command. */    int errorLine;		/* When TCL_ERROR is returned, this gives				 * the line number in the command where the				 * error occurred (1 means first line). */    struct TclStubs *stubTable;				/* Pointer to the exported Tcl stub table.				 * On previous versions of Tcl this is a				 * pointer to the objResultPtr or a pointer				 * to a buckets array in a hash table. We				 * therefore have to do some careful checking				 * before we can use this. */    TclHandle handle;		/* Handle used to keep track of when this				 * interp is deleted. */    Namespace *globalNsPtr;	/* The interpreter's global namespace. */    Tcl_HashTable *hiddenCmdTablePtr;				/* Hash table used by tclBasic.c to keep				 * track of hidden commands on a per-interp				 * basis. */    ClientData interpInfo;	/* Information used by tclInterp.c to keep				 * track of master/slave interps on				 * a per-interp basis. */    Tcl_HashTable mathFuncTable;/* Contains all the math functions currently				 * defined for the interpreter.	 Indexed by				 * strings (function names); values have				 * type (MathFunc *). */    /*     * Information related to procedures and variables. See tclProc.c     * and tclVar.c for usage.     */    int numLevels;		/* Keeps track of how many nested calls to				 * Tcl_Eval are in progress for this				 * interpreter.	 It's used to delay deletion				 * of the table until all Tcl_Eval				 * invocations are completed. */    int maxNestingDepth;	/* If numLevels exceeds this value then Tcl				 * assumes that infinite recursion has				 * occurred and it generates an error. */    CallFrame *framePtr;	/* Points to top-most in stack of all nested				 * procedure invocations.  NULL means there				 * are no active procedures. */    CallFrame *varFramePtr;	/* Points to the call frame whose variables				 * are currently in use (same as framePtr				 * unless an "uplevel" command is				 * executing). NULL means no procedure is				 * active or "uplevel 0" is executing. */    ActiveVarTrace *activeVarTracePtr;				/* First in list of active traces for				 * interp, or NULL if no active traces. */    int returnCode;		/* Completion code to return if current				 * procedure exits with TCL_RETURN code. */    char *errorInfo;		/* Value to store in errorInfo if returnCode				 * is TCL_ERROR.  Malloc'ed, may be NULL */    char *errorCode;		/* Value to store in errorCode if returnCode				 * is TCL_ERROR.  Malloc'ed, may be NULL */    /*     * Information used by Tcl_AppendResult to keep track of partial     * results.	 See Tcl_AppendResult code for details.     */    char *appendResult;		/* Storage space for results generated				 * by Tcl_AppendResult.	 Malloc-ed.  NULL				 * means not yet allocated. */    int appendAvl;		/* Total amount of space available at				 * partialResult. */    int appendUsed;		/* Number of non-null bytes currently				 * stored at partialResult. */    /*     * Information about packages.  Used only in tclPkg.c.     */    Tcl_HashTable packageTable;	/* Describes all of the packages loaded				 * in or available to this interpreter.				 * Keys are package names, values are				 * (Package *) pointers. */    char *packageUnknown;	/* Command to invoke during "package				 * require" commands for packages that				 * aren't described in packageTable. 				 * Malloc'ed, may be NULL. */    /*     * Miscellaneous information:     */    int cmdCount;		/* Total number of times a command procedure				 * has been called for this interpreter. */    int evalFlags;		/* Flags to control next call to Tcl_Eval.				 * Normally zero, but may be set before				 * calling Tcl_Eval.  See below for valid				 * values. */    int termOffset;		/* Offset of character just after last one				 * compiled or executed by Tcl_EvalObj. */    LiteralTable literalTable;	/* Contains LiteralEntry's describing all				 * Tcl objects holding literals of scripts				 * compiled by the interpreter. Indexed by				 * the string representations of literals.				 * Used to avoid creating duplicate				 * objects. */    int compileEpoch;		/* Holds the current "compilation epoch"				 * for this interpreter. This is				 * incremented to invalidate existing				 * ByteCodes when, e.g., a command with a				 * compile procedure is redefined. */    Proc *compiledProcPtr;	/* If a procedure is being compiled, a				 * pointer to its Proc structure; otherwise,				 * this is NULL. Set by ObjInterpProc in				 * tclProc.c and used by tclCompile.c to				 * process local variables appropriately. */    ResolverScheme *resolverPtr;				/* Linked list of name resolution schemes				 * added to this interpreter.  Schemes				 * are added/removed by calling				 * Tcl_AddInterpResolvers and				 * Tcl_RemoveInterpResolver. */    Tcl_Obj *scriptFile;	/* NULL means there is no nested source				 * command active;  otherwise this points to				 * pathPtr of the file being sourced. */    int flags;			/* Various flag bits.  See below. */    long randSeed;		/* Seed used for rand() function. */    Trace *tracePtr;		/* List of traces for this interpreter. */    Tcl_HashTable *assocData;	/* Hash table for associating data with				 * this interpreter. Cleaned up when				 * this interpreter is deleted. */    struct ExecEnv *execEnvPtr;	/* Execution environment for Tcl bytecode				 * execution. Contains a pointer to the				 * Tcl evaluation stack. */    Tcl_Obj *emptyObjPtr;	/* Points to an object holding an empty				 * string. Returned by Tcl_ObjSetVar2 when				 * variable traces change a variable in a				 * gross way. */    char resultSpace[TCL_RESULT_SIZE+1];				/* Static space holding small results. */    Tcl_Obj *objResultPtr;	/* If the last command returned an object				 * result, this points to it. Should not be				 * accessed directly; see comment above. */    Tcl_ThreadId threadId;	/* ID of thread that owns the interpreter */    ActiveCommandTrace *activeCmdTracePtr;				/* First in list of active command traces for				 * interp, or NULL if no active traces. */    ActiveInterpTrace *activeInterpTracePtr;				/* First in list of active traces for				 * interp, or NULL if no active traces. */    int tracesForbiddingInline; /* Count of traces (in the list headed by				 * tracePtr) that forbid inline bytecode				 * compilation */    /*     * Statistical information about the bytecode compiler and interpreter's     * operation.     */#ifdef TCL_COMPILE_STATS    ByteCodeStats stats;	/* Holds compilation and execution				 * statistics for this interpreter. */#endif /* TCL_COMPILE_STATS */	  } Interp;/* * EvalFlag bits for Interp structures: * * TCL_BRACKET_TERM	1 means that the current script is terminated by *			a close bracket rather than the end of the string. * TCL_ALLOW_EXCEPTIONS	1 means it's OK for the script to terminate with *			a code other than TCL_OK or TCL_ERROR;	0 means *			codes other than these should be turned into errors. */#define TCL_BRACKET_TERM	  1#define TCL_ALLOW_EXCEPTIONS	  4/* * Flag bits for Interp structures: * * DELETED:		Non-zero means the interpreter has been deleted: *			don't process any more commands for it, and destroy *			the structure as soon as all nested invocations of *			Tcl_Eval are done. * ERR_IN_PROGRESS:	Non-zero means an error unwind is already in

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -