jpayne@69: #ifndef ITCL_USE_MODIFIED_TCL_H jpayne@69: /* this is just to provide the definition. This struct is only used if jpayne@69: * infoPtr->useOldResolvers == 0 which is not the default jpayne@69: */ jpayne@69: #define FRAME_HAS_RESOLVER 0x100 jpayne@69: typedef Tcl_Command (Tcl_CmdAliasProc)(Tcl_Interp *interp, jpayne@69: Tcl_Namespace *nsPtr, const char *cmdName, jpayne@69: void *clientData); jpayne@69: typedef Tcl_Var (Tcl_VarAliasProc)(Tcl_Interp *interp, jpayne@69: Tcl_Namespace *nsPtr, const char *varName, jpayne@69: void *clientData); jpayne@69: jpayne@69: #ifndef _TCL_RESOLVE_DEFINED jpayne@69: typedef struct Tcl_Resolve { jpayne@69: Tcl_VarAliasProc *varProcPtr; jpayne@69: Tcl_CmdAliasProc *cmdProcPtr; jpayne@69: void *clientData; jpayne@69: } Tcl_Resolve; jpayne@69: #define _TCL_RESOLVE_DEFINED 1 jpayne@69: #endif jpayne@69: #endif jpayne@69: jpayne@69: #ifndef _TCLINT jpayne@69: struct Tcl_ResolvedVarInfo; jpayne@69: jpayne@69: typedef Tcl_Var (Tcl_ResolveRuntimeVarProc)(Tcl_Interp *interp, jpayne@69: struct Tcl_ResolvedVarInfo *vinfoPtr); jpayne@69: jpayne@69: typedef void (Tcl_ResolveVarDeleteProc)(struct Tcl_ResolvedVarInfo *vinfoPtr); jpayne@69: jpayne@69: /* jpayne@69: * The following structure encapsulates the routines needed to resolve a jpayne@69: * variable reference at runtime. Any variable specific state will typically jpayne@69: * be appended to this structure. jpayne@69: */ jpayne@69: jpayne@69: typedef struct Tcl_ResolvedVarInfo { jpayne@69: Tcl_ResolveRuntimeVarProc *fetchProc; jpayne@69: Tcl_ResolveVarDeleteProc *deleteProc; jpayne@69: } Tcl_ResolvedVarInfo; jpayne@69: jpayne@69: typedef int (Tcl_ResolveCompiledVarProc) (Tcl_Interp *interp, jpayne@69: const char *name, Tcl_Size length, Tcl_Namespace *context, jpayne@69: Tcl_ResolvedVarInfo **rPtr); jpayne@69: jpayne@69: typedef int (Tcl_ResolveVarProc) (Tcl_Interp *interp, const char *name, jpayne@69: Tcl_Namespace *context, int flags, Tcl_Var *rPtr); jpayne@69: jpayne@69: typedef int (Tcl_ResolveCmdProc) (Tcl_Interp *interp, const char *name, jpayne@69: Tcl_Namespace *context, int flags, Tcl_Command *rPtr); jpayne@69: jpayne@69: typedef struct Tcl_ResolverInfo { jpayne@69: Tcl_ResolveCmdProc *cmdResProc; jpayne@69: /* Procedure handling command name jpayne@69: * resolution. */ jpayne@69: Tcl_ResolveVarProc *varResProc; jpayne@69: /* Procedure handling variable name resolution jpayne@69: * for variables that can only be handled at jpayne@69: * runtime. */ jpayne@69: Tcl_ResolveCompiledVarProc *compiledVarResProc; jpayne@69: /* Procedure handling variable name resolution jpayne@69: * at compile time. */ jpayne@69: } Tcl_ResolverInfo; jpayne@69: #endif jpayne@69: jpayne@69: jpayne@69: /* here come the definitions for code which should be migrated to Tcl core */ jpayne@69: /* these functions DO NOT exist and are not published */ jpayne@69: #ifndef _TCL_PROC_DEFINED jpayne@69: typedef struct Tcl_Proc_ *Tcl_Proc; jpayne@69: #define _TCL_PROC_DEFINED 1 jpayne@69: #endif jpayne@69: jpayne@69: MODULE_SCOPE Tcl_Var Tcl_NewNamespaceVar(Tcl_Interp *interp, Tcl_Namespace *nsPtr, jpayne@69: const char *varName); jpayne@69: MODULE_SCOPE void Itcl_PreserveVar(Tcl_Var var); jpayne@69: MODULE_SCOPE void Itcl_ReleaseVar(Tcl_Var var); jpayne@69: MODULE_SCOPE int Itcl_IsCallFrameArgument(Tcl_Interp *interp, const char *name); jpayne@69: MODULE_SCOPE size_t Itcl_GetCallVarFrameObjc(Tcl_Interp *interp); jpayne@69: MODULE_SCOPE Tcl_Obj *const * Itcl_GetCallVarFrameObjv(Tcl_Interp *interp); jpayne@69: #define Tcl_SetNamespaceResolver _Tcl_SetNamespaceResolver jpayne@69: MODULE_SCOPE int _Tcl_SetNamespaceResolver(Tcl_Namespace *nsPtr, jpayne@69: struct Tcl_Resolve *resolvePtr);