Spaces:
Running
Running
/* | |
* itclInt.h -- | |
* | |
* This file contains internal definitions for the C-implemented part of a | |
* Itcl | |
* | |
* Copyright (c) 2007 by Arnulf P. Wiedemann | |
* | |
* See the file "license.terms" for information on usage and redistribution of | |
* this file, and for a DISCLAIMER OF ALL WARRANTIES. | |
*/ | |
/* | |
* Used to tag functions that are only to be visible within the module being | |
* built and not outside it (where this is supported by the linker). | |
*/ | |
/* | |
* Utility macros: STRINGIFY takes an argument and wraps it in "" (double | |
* quotation marks). | |
*/ | |
/* | |
* MSVC 8.0 started to mark many standard C library functions depreciated | |
* including the *printf family and others. Tell it to shut up. | |
* (_MSC_VER is 1200 for VC6, 1300 or 1310 for vc7.net, 1400 for 8.0) | |
*/ | |
/* | |
* Since the Tcl/Tk distribution doesn't perform any asserts, | |
* dynamic loading can fail to find the __assert function. | |
* As a workaround, we'll include our own. | |
*/ | |
/* | |
* Convenience macros for iterating through hash tables. FOREACH_HASH_DECLS | |
* sets up the declarations needed for the main macro, FOREACH_HASH, which | |
* does the actual iteration. FOREACH_HASH_VALUE is a restricted version that | |
* only iterates over values. | |
*/ | |
/* | |
* What sort of size of things we like to allocate. | |
*/ | |
typedef struct ItclFoundation { | |
Itcl_Stack methodCallStack; | |
Tcl_Command dispatchCommand; | |
} ItclFoundation; | |
typedef struct ItclArgList { | |
struct ItclArgList *nextPtr; /* pointer to next argument */ | |
Tcl_Obj *namePtr; /* name of the argument */ | |
Tcl_Obj *defaultValuePtr; /* default value or NULL if none */ | |
} ItclArgList; | |
/* | |
* Common info for managing all known objects. | |
* Each interpreter has one of these data structures stored as | |
* clientData in the "itcl" namespace. It is also accessible | |
* as associated data via the key ITCL_INTERP_DATA. | |
*/ | |
struct ItclClass; | |
struct ItclObject; | |
struct ItclMemberFunc; | |
struct EnsembleInfo; | |
struct ItclDelegatedOption; | |
struct ItclDelegatedFunction; | |
typedef struct ItclObjectInfo { | |
Tcl_Interp *interp; /* interpreter that manages this info */ | |
Tcl_HashTable objects; /* list of all known objects key is | |
* ioPtr */ | |
Tcl_HashTable objectCmds; /* list of known objects using accessCmd */ | |
Tcl_HashTable unused5; /* list of known objects using namePtr */ | |
Tcl_HashTable classes; /* list of all known classes, | |
* key is iclsPtr */ | |
Tcl_HashTable nameClasses; /* maps from fullNamePtr to iclsPtr */ | |
Tcl_HashTable namespaceClasses; /* maps from nsPtr to iclsPtr */ | |
Tcl_HashTable procMethods; /* maps from procPtr to mFunc */ | |
Tcl_HashTable instances; /* maps from instanceNumber to ioPtr */ | |
Tcl_HashTable unused8; /* maps from ioPtr to instanceNumber */ | |
Tcl_HashTable frameContext; /* maps frame to context stack */ | |
Tcl_HashTable classTypes; /* maps from class type i.e. "widget" | |
* to define value i.e. ITCL_WIDGET */ | |
int protection; /* protection level currently in effect */ | |
int useOldResolvers; /* whether to use the "old" style | |
* resolvers or the CallFrame resolvers */ | |
Itcl_Stack clsStack; /* stack of class definitions currently | |
* being parsed */ | |
Itcl_Stack unused; /* Removed */ | |
Itcl_Stack unused6; /* obsolete field */ | |
struct ItclObject *currIoPtr; /* object currently being constructed | |
* set only during calling of constructors | |
* otherwise NULL */ | |
Tcl_ObjectMetadataType *class_meta_type; | |
/* type for getting the Itcl class info | |
* from a TclOO Tcl_Object */ | |
const Tcl_ObjectMetadataType *object_meta_type; | |
/* type for getting the Itcl object info | |
* from a TclOO Tcl_Object */ | |
Tcl_Object clazzObjectPtr; /* the root object of Itcl */ | |
Tcl_Class clazzClassPtr; /* the root class of Itcl */ | |
struct EnsembleInfo *ensembleInfo; | |
struct ItclClass *currContextIclsPtr; | |
/* context class for delegated option | |
* handling */ | |
int currClassFlags; /* flags for the class just in creation */ | |
int buildingWidget; /* set if in construction of a widget */ | |
int unparsedObjc; /* number options not parsed by | |
ItclExtendedConfigure/-Cget function */ | |
Tcl_Obj **unparsedObjv; /* options not parsed by | |
ItclExtendedConfigure/-Cget function */ | |
int functionFlags; /* used for creating of ItclMemberCode */ | |
int unused7; | |
struct ItclDelegatedOption *currIdoPtr; | |
/* the current delegated option info */ | |
int inOptionHandling; /* used to indicate for type/widget ... | |
* that there is an option processing | |
* and methods are allowed to be called */ | |
/* these are the Tcl_Obj Ptrs for the clazz unknown procedure */ | |
/* need to store them to be able to free them at the end */ | |
int itclWidgetInitted; /* set to 1 if itclWidget.tcl has already | |
* been called | |
*/ | |
int itclHullCmdsInitted; /* set to 1 if itclHullCmds.tcl has already | |
* been called | |
*/ | |
Tcl_Obj *unused2; | |
Tcl_Obj *unused3; | |
Tcl_Obj *unused4; | |
Tcl_Obj *infoVarsPtr; | |
Tcl_Obj *unused9; | |
Tcl_Obj *infoVars4Ptr; | |
Tcl_Obj *typeDestructorArgumentPtr; | |
struct ItclObject *lastIoPtr; /* last object constructed */ | |
Tcl_Command infoCmd; | |
} ItclObjectInfo; | |
typedef struct EnsembleInfo { | |
Tcl_HashTable ensembles; /* list of all known ensembles */ | |
Tcl_HashTable subEnsembles; /* list of all known subensembles */ | |
int numEnsembles; | |
Tcl_Namespace *ensembleNsPtr; | |
} EnsembleInfo; | |
/* | |
* Representation for each [incr Tcl] class. | |
*/ | |
typedef struct ItclClass { | |
Tcl_Obj *namePtr; /* class name */ | |
Tcl_Obj *fullNamePtr; /* fully qualified class name */ | |
Tcl_Interp *interp; /* interpreter that manages this info */ | |
Tcl_Namespace *nsPtr; /* namespace representing class scope */ | |
Tcl_Command accessCmd; /* access command for creating instances */ | |
Tcl_Command thisCmd; /* needed for deletion of class */ | |
struct ItclObjectInfo *infoPtr; | |
/* info about all known objects | |
* and other stuff like stacks */ | |
Itcl_List bases; /* list of base classes */ | |
Itcl_List derived; /* list of all derived classes */ | |
Tcl_HashTable heritage; /* table of all base classes. Look up | |
* by pointer to class definition. This | |
* provides fast lookup for inheritance | |
* tests. */ | |
Tcl_Obj *initCode; /* initialization code for new objs */ | |
Tcl_HashTable variables; /* definitions for all data members | |
in this class. Look up simple string | |
names and get back ItclVariable* ptrs */ | |
Tcl_HashTable options; /* definitions for all option members | |
in this class. Look up simple string | |
names and get back ItclOption* ptrs */ | |
Tcl_HashTable components; /* definitions for all component members | |
in this class. Look up simple string | |
names and get back ItclComponent* ptrs */ | |
Tcl_HashTable functions; /* definitions for all member functions | |
in this class. Look up simple string | |
names and get back ItclMemberFunc* ptrs */ | |
Tcl_HashTable delegatedOptions; /* definitions for all delegated options | |
in this class. Look up simple string | |
names and get back | |
ItclDelegatedOption * ptrs */ | |
Tcl_HashTable delegatedFunctions; /* definitions for all delegated methods | |
or procs in this class. Look up simple | |
string names and get back | |
ItclDelegatedFunction * ptrs */ | |
Tcl_HashTable methodVariables; /* definitions for all methodvariable members | |
in this class. Look up simple string | |
names and get back | |
ItclMethodVariable* ptrs */ | |
int numInstanceVars; /* number of instance vars in variables | |
table */ | |
Tcl_HashTable classCommons; /* used for storing variable namespace | |
* string for Tcl_Resolve */ | |
Tcl_HashTable resolveVars; /* all possible names for variables in | |
* this class (e.g., x, foo::x, etc.) */ | |
Tcl_HashTable resolveCmds; /* all possible names for functions in | |
* this class (e.g., x, foo::x, etc.) */ | |
Tcl_HashTable contextCache; /* cache for function contexts */ | |
struct ItclMemberFunc *unused2; | |
/* the class constructor or NULL */ | |
struct ItclMemberFunc *unused3; | |
/* the class destructor or NULL */ | |
struct ItclMemberFunc *unused1; | |
Tcl_Resolve *resolvePtr; | |
Tcl_Obj *widgetClassPtr; /* class name for widget if class is a | |
* ::itcl::widget */ | |
Tcl_Obj *hullTypePtr; /* hulltype name for widget if class is a | |
* ::itcl::widget */ | |
Tcl_Object oPtr; /* TclOO class object */ | |
Tcl_Class clsPtr; /* TclOO class */ | |
int numCommons; /* number of commons in this class */ | |
int numVariables; /* number of variables in this class */ | |
int numOptions; /* number of options in this class */ | |
int unique; /* unique number for #auto generation */ | |
int flags; /* maintains class status */ | |
int callRefCount; /* prevent deleting of class if refcount>1 */ | |
Tcl_Obj *typeConstructorPtr; /* initialization for types */ | |
int destructorHasBeenCalled; /* prevent multiple invocations of destrcutor */ | |
int refCount; | |
} ItclClass; | |
typedef struct ItclHierIter { | |
ItclClass *current; /* current position in hierarchy */ | |
Itcl_Stack stack; /* stack used for traversal */ | |
} ItclHierIter; | |
/* | |
* Representation for each [incr Tcl] object. | |
*/ | |
typedef struct ItclObject { | |
ItclClass *iclsPtr; /* most-specific class */ | |
Tcl_Command accessCmd; /* object access command */ | |
Tcl_HashTable* constructed; /* temp storage used during construction */ | |
Tcl_HashTable* destructed; /* temp storage used during destruction */ | |
Tcl_HashTable objectVariables; | |
/* used for storing Tcl_Var entries for | |
* variable resolving, key is ivPtr of | |
* variable, value is varPtr */ | |
Tcl_HashTable objectOptions; /* definitions for all option members | |
in this object. Look up option namePtr | |
names and get back ItclOption* ptrs */ | |
Tcl_HashTable objectComponents; /* definitions for all component members | |
in this object. Look up component namePtr | |
names and get back ItclComponent* ptrs */ | |
Tcl_HashTable objectMethodVariables; | |
/* definitions for all methodvariable members | |
in this object. Look up methodvariable | |
namePtr names and get back | |
ItclMethodVariable* ptrs */ | |
Tcl_HashTable objectDelegatedOptions; | |
/* definitions for all delegated option | |
members in this object. Look up option | |
namePtr names and get back | |
ItclOption* ptrs */ | |
Tcl_HashTable objectDelegatedFunctions; | |
/* definitions for all delegated function | |
members in this object. Look up function | |
namePtr names and get back | |
ItclMemberFunc * ptrs */ | |
Tcl_HashTable contextCache; /* cache for function contexts */ | |
Tcl_Obj *namePtr; | |
Tcl_Obj *origNamePtr; /* the original name before any rename */ | |
Tcl_Obj *createNamePtr; /* the temp name before any rename | |
* mostly used for widgetadaptor | |
* because that hijackes the name | |
* often when installing the hull */ | |
Tcl_Interp *interp; | |
ItclObjectInfo *infoPtr; | |
Tcl_Obj *varNsNamePtr; | |
Tcl_Object oPtr; /* the TclOO object */ | |
Tcl_Resolve *resolvePtr; | |
int flags; | |
int callRefCount; /* prevent deleting of object if refcount > 1 */ | |
Tcl_Obj *hullWindowNamePtr; /* the window path name for the hull | |
* (before renaming in installhull) */ | |
int destructorHasBeenCalled; /* is set when the destructor is called | |
* to avoid callin destructor twice */ | |
int noComponentTrace; /* don't call component traces if | |
* setting components in DelegationInstall */ | |
int hadConstructorError; /* needed for multiple calls of CallItclObjectCmd */ | |
} ItclObject; | |
typedef struct ItclResolveInfo { | |
int flags; | |
ItclClass *iclsPtr; | |
ItclObject *ioPtr; | |
} ItclResolveInfo; | |
/* | |
* Implementation for any code body in an [incr Tcl] class. | |
*/ | |
typedef struct ItclMemberCode { | |
int flags; /* flags describing implementation */ | |
int argcount; /* number of args in arglist */ | |
int maxargcount; /* max number of args in arglist */ | |
Tcl_Obj *usagePtr; /* usage string for error messages */ | |
Tcl_Obj *argumentPtr; /* the function arguments */ | |
Tcl_Obj *bodyPtr; /* the function body */ | |
ItclArgList *argListPtr; /* the parsed arguments */ | |
union { | |
Tcl_CmdProc *argCmd; /* (argc,argv) C implementation */ | |
Tcl_ObjCmdProc *objCmd; /* (objc,objv) C implementation */ | |
} cfunc; | |
ClientData clientData; /* client data for C implementations */ | |
} ItclMemberCode; | |
/* | |
* Flag bits for ItclMemberCode: | |
*/ | |
/* | |
* Flag bits for ItclMember: functions and variables | |
*/ | |
/* | |
* Flag bits for ItclMember: functions | |
*/ | |
/* | |
* Flag bits for ItclMember: variables | |
*/ | |
/* no longer used ??? */ | |
/* | |
* Instance components. | |
*/ | |
struct ItclVariable; | |
typedef struct ItclComponent { | |
Tcl_Obj *namePtr; /* member name */ | |
struct ItclVariable *ivPtr; /* variable for this component */ | |
int flags; | |
int haveKeptOptions; | |
Tcl_HashTable keptOptions; /* table of options to keep */ | |
} ItclComponent; | |
typedef struct ItclDelegatedFunction { | |
Tcl_Obj *namePtr; | |
ItclComponent *icPtr; | |
Tcl_Obj *asPtr; | |
Tcl_Obj *usingPtr; | |
Tcl_HashTable exceptions; | |
int flags; | |
} ItclDelegatedFunction; | |
/* | |
* Representation of member functions in an [incr Tcl] class. | |
*/ | |
typedef struct ItclMemberFunc { | |
Tcl_Obj* namePtr; /* member name */ | |
Tcl_Obj* fullNamePtr; /* member name with "class::" qualifier */ | |
ItclClass* iclsPtr; /* class containing this member */ | |
int protection; /* protection level */ | |
int flags; /* flags describing member (see above) */ | |
ItclObjectInfo *infoPtr; | |
ItclMemberCode *codePtr; /* code associated with member */ | |
Tcl_Command accessCmd; /* Tcl command installed for this function */ | |
int argcount; /* number of args in arglist */ | |
int maxargcount; /* max number of args in arglist */ | |
Tcl_Obj *usagePtr; /* usage string for error messages */ | |
Tcl_Obj *argumentPtr; /* the function arguments */ | |
Tcl_Obj *builtinArgumentPtr; /* the function arguments for builtin functions */ | |
Tcl_Obj *origArgsPtr; /* the argument string of the original definition */ | |
Tcl_Obj *bodyPtr; /* the function body */ | |
ItclArgList *argListPtr; /* the parsed arguments */ | |
ItclClass *declaringClassPtr; /* the class which declared the method/proc */ | |
ClientData tmPtr; /* TclOO methodPtr */ | |
ItclDelegatedFunction *idmPtr; | |
/* if the function is delegated != NULL */ | |
} ItclMemberFunc; | |
/* | |
* Instance variables. | |
*/ | |
typedef struct ItclVariable { | |
Tcl_Obj *namePtr; /* member name */ | |
Tcl_Obj *fullNamePtr; /* member name with "class::" qualifier */ | |
ItclClass *iclsPtr; /* class containing this member */ | |
ItclObjectInfo *infoPtr; | |
ItclMemberCode *codePtr; /* code associated with member */ | |
Tcl_Obj *init; /* initial value */ | |
Tcl_Obj *arrayInitPtr; /* initial value if variable should be array */ | |
int protection; /* protection level */ | |
int flags; /* flags describing member (see below) */ | |
int initted; /* is set when first time initted, to check | |
* for example itcl_hull var, which can be only | |
* initialized once */ | |
} ItclVariable; | |
struct ItclOption; | |
typedef struct ItclDelegatedOption { | |
Tcl_Obj *namePtr; | |
Tcl_Obj *resourceNamePtr; | |
Tcl_Obj *classNamePtr; | |
struct ItclOption *ioptPtr; /* the option name or null for "*" */ | |
ItclComponent *icPtr; /* the component where the delegation goes | |
* to */ | |
Tcl_Obj *asPtr; | |
Tcl_HashTable exceptions; /* exceptions from delegation */ | |
} ItclDelegatedOption; | |
/* | |
* Instance options. | |
*/ | |
typedef struct ItclOption { | |
/* within a class hierarchy there must be only | |
* one option with the same name !! */ | |
Tcl_Obj *namePtr; /* member name */ | |
Tcl_Obj *fullNamePtr; /* member name with "class::" qualifier */ | |
Tcl_Obj *resourceNamePtr; | |
Tcl_Obj *classNamePtr; | |
ItclClass *iclsPtr; /* class containing this member */ | |
int protection; /* protection level */ | |
int flags; /* flags describing member (see below) */ | |
ItclMemberCode *codePtr; /* code associated with member */ | |
Tcl_Obj *defaultValuePtr; /* initial value */ | |
Tcl_Obj *cgetMethodPtr; | |
Tcl_Obj *cgetMethodVarPtr; | |
Tcl_Obj *configureMethodPtr; | |
Tcl_Obj *configureMethodVarPtr; | |
Tcl_Obj *validateMethodPtr; | |
Tcl_Obj *validateMethodVarPtr; | |
ItclDelegatedOption *idoPtr; | |
/* if the option is delegated != NULL */ | |
} ItclOption; | |
/* | |
* Instance methodvariables. | |
*/ | |
typedef struct ItclMethodVariable { | |
Tcl_Obj *namePtr; /* member name */ | |
Tcl_Obj *fullNamePtr; /* member name with "class::" qualifier */ | |
ItclClass *iclsPtr; /* class containing this member */ | |
int protection; /* protection level */ | |
int flags; /* flags describing member (see below) */ | |
Tcl_Obj *defaultValuePtr; | |
Tcl_Obj *callbackPtr; | |
} ItclMethodVariable; | |
typedef struct ItclClassCmdInfo { | |
int type; | |
int protection; | |
int cmdNum; | |
Tcl_Namespace *nsPtr; | |
Tcl_Namespace *declaringNsPtr; | |
} ItclClassCmdInfo; | |
/* | |
* Instance variable lookup entry. | |
*/ | |
typedef struct ItclVarLookup { | |
ItclVariable* ivPtr; /* variable definition */ | |
int usage; /* number of uses for this record */ | |
int accessible; /* non-zero => accessible from class with | |
* this lookup record in its resolveVars */ | |
char *leastQualName; /* simplist name for this variable, with | |
* the fewest qualifiers. This string is | |
* taken from the resolveVars table, so | |
* it shouldn't be freed. */ | |
int varNum; | |
Tcl_Var varPtr; | |
} ItclVarLookup; | |
/* | |
* Instance command lookup entry. | |
*/ | |
typedef struct ItclCmdLookup { | |
ItclMemberFunc* imPtr; /* function definition */ | |
int cmdNum; | |
ItclClassCmdInfo *classCmdInfoPtr; | |
Tcl_Command cmdPtr; | |
} ItclCmdLookup; | |
typedef struct ItclCallContext { | |
int objectFlags; | |
Tcl_Namespace *nsPtr; | |
ItclObject *ioPtr; | |
ItclMemberFunc *imPtr; | |
int refCount; | |
} ItclCallContext; | |
/* | |
* 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. | |
*/ | |
/* | |
* Macros used to cast between pointers and integers (e.g. when storing an int | |
* in ClientData), on 64-bit architectures they avoid gcc warning about "cast | |
* to/from pointer from/to integer of different size". | |
*/ | |
MODULE_SCOPE int _itcl_debug_level; | |
MODULE_SCOPE void ItclShowArgs(int level, const char *str, int objc, | |
Tcl_Obj * const* objv); | |
MODULE_SCOPE Tcl_ObjCmdProc ItclCallCCommand; | |
MODULE_SCOPE Tcl_ObjCmdProc ItclObjectUnknownCommand; | |
MODULE_SCOPE int ItclCheckCallProc(ClientData clientData, Tcl_Interp *interp, | |
Tcl_ObjectContext contextPtr, Tcl_CallFrame *framePtr, int *isFinished); | |
MODULE_SCOPE void ItclPreserveClass(ItclClass *iclsPtr); | |
MODULE_SCOPE void ItclReleaseClass(ClientData iclsPtr); | |
MODULE_SCOPE ItclFoundation *ItclGetFoundation(Tcl_Interp *interp); | |
MODULE_SCOPE Tcl_ObjCmdProc ItclClassCommandDispatcher; | |
MODULE_SCOPE Tcl_Command Itcl_CmdAliasProc(Tcl_Interp *interp, | |
Tcl_Namespace *nsPtr, const char *cmdName, ClientData clientData); | |
MODULE_SCOPE Tcl_Var Itcl_VarAliasProc(Tcl_Interp *interp, | |
Tcl_Namespace *nsPtr, const char *VarName, ClientData clientData); | |
MODULE_SCOPE int ItclIsClass(Tcl_Interp *interp, Tcl_Command cmd); | |
MODULE_SCOPE int ItclCheckCallMethod(ClientData clientData, Tcl_Interp *interp, | |
Tcl_ObjectContext contextPtr, Tcl_CallFrame *framePtr, int *isFinished); | |
MODULE_SCOPE int ItclAfterCallMethod(ClientData clientData, Tcl_Interp *interp, | |
Tcl_ObjectContext contextPtr, Tcl_Namespace *nsPtr, int result); | |
MODULE_SCOPE void ItclReportObjectUsage(Tcl_Interp *interp, | |
ItclObject *contextIoPtr, Tcl_Namespace *callerNsPtr, | |
Tcl_Namespace *contextNsPtr); | |
MODULE_SCOPE int ItclMapMethodNameProc(Tcl_Interp *interp, Tcl_Object oPtr, | |
Tcl_Class *startClsPtr, Tcl_Obj *methodObj); | |
MODULE_SCOPE int ItclCreateArgList(Tcl_Interp *interp, const char *str, | |
int *argcPtr, int *maxArgcPtr, Tcl_Obj **usagePtr, | |
ItclArgList **arglistPtrPtr, ItclMemberFunc *imPtr, | |
const char *commandName); | |
MODULE_SCOPE int ItclObjectCmd(ClientData clientData, Tcl_Interp *interp, | |
Tcl_Object oPtr, Tcl_Class clsPtr, int objc, Tcl_Obj *const *objv); | |
MODULE_SCOPE int ItclCreateObject (Tcl_Interp *interp, const char* name, | |
ItclClass *iclsPtr, int objc, Tcl_Obj *const objv[]); | |
MODULE_SCOPE void ItclDeleteObjectVariablesNamespace(Tcl_Interp *interp, | |
ItclObject *ioPtr); | |
MODULE_SCOPE void ItclDeleteClassVariablesNamespace(Tcl_Interp *interp, | |
ItclClass *iclsPtr); | |
MODULE_SCOPE int ItclInfoInit(Tcl_Interp *interp, ItclObjectInfo *infoPtr); | |
MODULE_SCOPE Tcl_HashEntry *ItclResolveVarEntry( | |
ItclClass* iclsPtr, const char *varName); | |
struct Tcl_ResolvedVarInfo; | |
MODULE_SCOPE int Itcl_ClassCmdResolver(Tcl_Interp *interp, const char* name, | |
Tcl_Namespace *nsPtr, int flags, Tcl_Command *rPtr); | |
MODULE_SCOPE int Itcl_ClassVarResolver(Tcl_Interp *interp, const char* name, | |
Tcl_Namespace *nsPtr, int flags, Tcl_Var *rPtr); | |
MODULE_SCOPE int Itcl_ClassCompiledVarResolver(Tcl_Interp *interp, | |
const char* name, int length, Tcl_Namespace *nsPtr, | |
struct Tcl_ResolvedVarInfo **rPtr); | |
MODULE_SCOPE int Itcl_ClassCmdResolver2(Tcl_Interp *interp, const char* name, | |
Tcl_Namespace *nsPtr, int flags, Tcl_Command *rPtr); | |
MODULE_SCOPE int Itcl_ClassVarResolver2(Tcl_Interp *interp, const char* name, | |
Tcl_Namespace *nsPtr, int flags, Tcl_Var *rPtr); | |
MODULE_SCOPE int Itcl_ClassCompiledVarResolver2(Tcl_Interp *interp, | |
const char* name, int length, Tcl_Namespace *nsPtr, | |
struct Tcl_ResolvedVarInfo **rPtr); | |
MODULE_SCOPE int ItclSetParserResolver(Tcl_Namespace *nsPtr); | |
MODULE_SCOPE void ItclProcErrorProc(Tcl_Interp *interp, Tcl_Obj *procNameObj); | |
MODULE_SCOPE int Itcl_CreateOption (Tcl_Interp *interp, ItclClass *iclsPtr, | |
ItclOption *ioptPtr); | |
MODULE_SCOPE int ItclCreateMethodVariable(Tcl_Interp *interp, | |
ItclVariable *ivPtr, Tcl_Obj* defaultPtr, Tcl_Obj* callbackPtr, | |
ItclMethodVariable** imvPtrPtr); | |
MODULE_SCOPE int DelegationInstall(Tcl_Interp *interp, ItclObject *ioPtr, | |
ItclClass *iclsPtr); | |
MODULE_SCOPE ItclClass *ItclNamespace2Class(Tcl_Namespace *nsPtr); | |
MODULE_SCOPE const char* ItclGetCommonInstanceVar(Tcl_Interp *interp, | |
const char *name, const char *name2, ItclObject *contextIoPtr, | |
ItclClass *contextIclsPtr); | |
MODULE_SCOPE int ItclCreateMethod(Tcl_Interp* interp, ItclClass *iclsPtr, | |
Tcl_Obj *namePtr, const char* arglist, const char* body, | |
ItclMemberFunc **imPtrPtr); | |
MODULE_SCOPE int Itcl_WidgetParseInit(Tcl_Interp *interp, | |
ItclObjectInfo *infoPtr); | |
MODULE_SCOPE void ItclDeleteObjectMetadata(ClientData clientData); | |
MODULE_SCOPE void ItclDeleteClassMetadata(ClientData clientData); | |
MODULE_SCOPE void ItclDeleteArgList(ItclArgList *arglistPtr); | |
MODULE_SCOPE int Itcl_ClassOptionCmd(ClientData clientData, Tcl_Interp *interp, | |
int objc, Tcl_Obj *const objv[]); | |
MODULE_SCOPE int DelegatedOptionsInstall(Tcl_Interp *interp, | |
ItclClass *iclsPtr); | |
MODULE_SCOPE int Itcl_HandleDelegateOptionCmd(Tcl_Interp *interp, | |
ItclObject *ioPtr, ItclClass *iclsPtr, ItclDelegatedOption **idoPtrPtr, | |
int objc, Tcl_Obj *const objv[]); | |
MODULE_SCOPE int Itcl_HandleDelegateMethodCmd(Tcl_Interp *interp, | |
ItclObject *ioPtr, ItclClass *iclsPtr, | |
ItclDelegatedFunction **idmPtrPtr, int objc, Tcl_Obj *const objv[]); | |
MODULE_SCOPE int DelegateFunction(Tcl_Interp *interp, ItclObject *ioPtr, | |
ItclClass *iclsPtr, Tcl_Obj *componentNamePtr, | |
ItclDelegatedFunction *idmPtr); | |
MODULE_SCOPE int ItclInitObjectMethodVariables(Tcl_Interp *interp, | |
ItclObject *ioPtr, ItclClass *iclsPtr, const char *name); | |
MODULE_SCOPE int InitTclOOFunctionPointers(Tcl_Interp *interp); | |
MODULE_SCOPE ItclOption* ItclNewOption(Tcl_Interp *interp, ItclObject *ioPtr, | |
ItclClass *iclsPtr, Tcl_Obj *namePtr, const char *resourceName, | |
const char *className, char *init, ItclMemberCode *mCodePtr); | |
MODULE_SCOPE int ItclParseOption(ItclObjectInfo *infoPtr, Tcl_Interp *interp, | |
int objc, Tcl_Obj *const objv[], ItclClass *iclsPtr, | |
ItclObject *ioPtr, ItclOption **ioptPtrPtr); | |
MODULE_SCOPE void ItclDestroyClassNamesp(ClientData cdata); | |
MODULE_SCOPE int ExpandDelegateAs(Tcl_Interp *interp, ItclObject *ioPtr, | |
ItclClass *iclsPtr, ItclDelegatedFunction *idmPtr, | |
const char *funcName, Tcl_Obj *listPtr); | |
MODULE_SCOPE int ItclCheckForInitializedComponents(Tcl_Interp *interp, | |
ItclClass *iclsPtr, ItclObject *ioPtr); | |
MODULE_SCOPE int ItclCreateDelegatedFunction(Tcl_Interp *interp, | |
ItclClass *iclsPtr, Tcl_Obj *methodNamePtr, ItclComponent *icPtr, | |
Tcl_Obj *targetPtr, Tcl_Obj *usingPtr, Tcl_Obj *exceptionsPtr, | |
ItclDelegatedFunction **idmPtrPtr); | |
MODULE_SCOPE void ItclDeleteDelegatedOption(char *cdata); | |
MODULE_SCOPE void Itcl_FinishList(); | |
MODULE_SCOPE void ItclDeleteDelegatedFunction(ItclDelegatedFunction *idmPtr); | |
MODULE_SCOPE void ItclFinishEnsemble(ItclObjectInfo *infoPtr); | |
MODULE_SCOPE int Itcl_EnsembleDeleteCmd(ClientData clientData, | |
Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]); | |
MODULE_SCOPE int ItclAddClassesDictInfo(Tcl_Interp *interp, ItclClass *iclsPtr); | |
MODULE_SCOPE int ItclDeleteClassesDictInfo(Tcl_Interp *interp, | |
ItclClass *iclsPtr); | |
MODULE_SCOPE int ItclAddObjectsDictInfo(Tcl_Interp *interp, ItclObject *ioPtr); | |
MODULE_SCOPE int ItclDeleteObjectsDictInfo(Tcl_Interp *interp, | |
ItclObject *ioPtr); | |
MODULE_SCOPE int ItclAddOptionDictInfo(Tcl_Interp *interp, ItclClass *iclsPtr, | |
ItclOption *ioptPtr); | |
MODULE_SCOPE int ItclAddDelegatedOptionDictInfo(Tcl_Interp *interp, | |
ItclClass *iclsPtr, ItclDelegatedOption *idoPtr); | |
MODULE_SCOPE int ItclAddClassComponentDictInfo(Tcl_Interp *interp, | |
ItclClass *iclsPtr, ItclComponent *icPtr); | |
MODULE_SCOPE int ItclAddClassVariableDictInfo(Tcl_Interp *interp, | |
ItclClass *iclsPtr, ItclVariable *ivPtr); | |
MODULE_SCOPE int ItclAddClassFunctionDictInfo(Tcl_Interp *interp, | |
ItclClass *iclsPtr, ItclMemberFunc *imPtr); | |
MODULE_SCOPE int ItclAddClassDelegatedFunctionDictInfo(Tcl_Interp *interp, | |
ItclClass *iclsPtr, ItclDelegatedFunction *idmPtr); | |
MODULE_SCOPE int ItclClassCreateObject(ClientData clientData, Tcl_Interp *interp, | |
int objc, Tcl_Obj *const objv[]); | |
MODULE_SCOPE void ItclRestoreInfoVars(ClientData clientData); | |
MODULE_SCOPE Tcl_ObjCmdProc Itcl_BiMyProcCmd; | |
MODULE_SCOPE Tcl_ObjCmdProc Itcl_BiInstallComponentCmd; | |
MODULE_SCOPE Tcl_ObjCmdProc Itcl_BiCallInstanceCmd; | |
MODULE_SCOPE Tcl_ObjCmdProc Itcl_BiGetInstanceVarCmd; | |
MODULE_SCOPE Tcl_ObjCmdProc Itcl_BiMyTypeMethodCmd; | |
MODULE_SCOPE Tcl_ObjCmdProc Itcl_BiMyMethodCmd; | |
MODULE_SCOPE Tcl_ObjCmdProc Itcl_BiMyTypeVarCmd; | |
MODULE_SCOPE Tcl_ObjCmdProc Itcl_BiMyVarCmd; | |
MODULE_SCOPE Tcl_ObjCmdProc Itcl_BiItclHullCmd; | |
MODULE_SCOPE Tcl_ObjCmdProc Itcl_ThisCmd; | |
MODULE_SCOPE Tcl_ObjCmdProc Itcl_ExtendedClassCmd; | |
MODULE_SCOPE Tcl_ObjCmdProc Itcl_TypeClassCmd; | |
MODULE_SCOPE Tcl_ObjCmdProc Itcl_AddObjectOptionCmd; | |
MODULE_SCOPE Tcl_ObjCmdProc Itcl_AddDelegatedOptionCmd; | |
MODULE_SCOPE Tcl_ObjCmdProc Itcl_AddDelegatedFunctionCmd; | |
MODULE_SCOPE Tcl_ObjCmdProc Itcl_SetComponentCmd; | |
MODULE_SCOPE Tcl_ObjCmdProc Itcl_ClassHullTypeCmd; | |
MODULE_SCOPE Tcl_ObjCmdProc Itcl_ClassWidgetClassCmd; | |
typedef int (ItclRootMethodProc)(ItclObject *ioPtr, Tcl_Interp *interp, | |
int objc, Tcl_Obj *const objv[]); | |
MODULE_SCOPE const Tcl_MethodType itclRootMethodType; | |
MODULE_SCOPE ItclRootMethodProc ItclUnknownGuts; | |
MODULE_SCOPE ItclRootMethodProc ItclConstructGuts; | |
MODULE_SCOPE ItclRootMethodProc ItclInfoGuts; | |
/* | |
* Include all the private API, generated from itcl.decls. | |
*/ | |