/*
 * itclIntDecls.h --
 *
 *	This file contains the declarations for all unsupported
 *	functions that are exported by the Tcl library.  These
 *	interfaces are not guaranteed to remain the same between
 *	versions.  Use at your own risk.
 *
 * Copyright (c) 1998-1999 by XXXX
 *
 * See the file "license.terms" for information on usage and redistribution
 * of this file, and for a DISCLAIMER OF ALL WARRANTIES.
 *
 * RCS: $Id: itclIntDecls.h,v 1.3 2001/05/22 01:35:38 davygrvy Exp $
 */

#ifndef _ITCLINTDECLS
#define _ITCLINTDECLS

/*
 * WARNING: This file is automatically generated by the tools/genStubs.tcl
 * script.  Any modifications to the function declarations below should be made
 * in the itcl/generic/tclInt.decls script.
 */

/* !BEGIN!: Do not edit below this line. */

/*
 * Exported function declarations:
 */

/* 0 */
EXTERN int		Itcl_IsClassNamespace _ANSI_ARGS_((
				Tcl_Namespace * namesp));
/* 1 */
EXTERN int		Itcl_IsClass _ANSI_ARGS_((Tcl_Command cmd));
/* 2 */
EXTERN ItclClass*	Itcl_FindClass _ANSI_ARGS_((Tcl_Interp* interp, 
				char* path, int autoload));
/* 3 */
EXTERN int		Itcl_FindObject _ANSI_ARGS_((Tcl_Interp * interp, 
				char * name, ItclObject ** roPtr));
/* 4 */
EXTERN int		Itcl_IsObject _ANSI_ARGS_((Tcl_Command cmd));
/* 5 */
EXTERN int		Itcl_ObjectIsa _ANSI_ARGS_((ItclObject * contextObj, 
				ItclClass * cdefn));
/* 6 */
EXTERN int		Itcl_Protection _ANSI_ARGS_((Tcl_Interp * interp, 
				int newLevel));
/* 7 */
EXTERN char*		Itcl_ProtectionStr _ANSI_ARGS_((int pLevel));
/* 8 */
EXTERN int		Itcl_CanAccess _ANSI_ARGS_((ItclMember* memberPtr, 
				Tcl_Namespace* fromNsPtr));
/* 9 */
EXTERN int		Itcl_CanAccessFunc _ANSI_ARGS_((
				ItclMemberFunc* mfunc, 
				Tcl_Namespace* fromNsPtr));
/* 10 */
EXTERN Tcl_Namespace*	Itcl_GetTrueNamespace _ANSI_ARGS_((
				Tcl_Interp * interp, ItclObjectInfo * info));
/* 11 */
EXTERN void		Itcl_ParseNamespPath _ANSI_ARGS_((char * name, 
				Tcl_DString * buffer, char ** head, 
				char ** tail));
/* 12 */
EXTERN int		Itcl_DecodeScopedCommand _ANSI_ARGS_((
				Tcl_Interp * interp, char * name, 
				Tcl_Namespace ** rNsPtr, char ** rCmdPtr));
/* 13 */
EXTERN int		Itcl_EvalArgs _ANSI_ARGS_((Tcl_Interp * interp, 
				int objc, Tcl_Obj *CONST objv[]));
/* 14 */
EXTERN Tcl_Obj*		Itcl_CreateArgs _ANSI_ARGS_((Tcl_Interp * interp, 
				char * string, int objc, 
				Tcl_Obj *CONST objv[]));
/* 15 */
EXTERN int		Itcl_PushContext _ANSI_ARGS_((Tcl_Interp * interp, 
				ItclMember * member, 
				ItclClass * contextClass, 
				ItclObject * contextObj, 
				ItclContext * contextPtr));
/* 16 */
EXTERN void		Itcl_PopContext _ANSI_ARGS_((Tcl_Interp * interp, 
				ItclContext * contextPtr));
/* 17 */
EXTERN int		Itcl_GetContext _ANSI_ARGS_((Tcl_Interp * interp, 
				ItclClass ** cdefnPtr, 
				ItclObject ** odefnPtr));
/* 18 */
EXTERN void		Itcl_InitHierIter _ANSI_ARGS_((ItclHierIter * iter, 
				ItclClass * cdefn));
/* 19 */
EXTERN void		Itcl_DeleteHierIter _ANSI_ARGS_((ItclHierIter * iter));
/* 20 */
EXTERN ItclClass*	Itcl_AdvanceHierIter _ANSI_ARGS_((
				ItclHierIter * iter));
/* 21 */
EXTERN int		Itcl_FindClassesCmd _ANSI_ARGS_((
				ClientData clientData, Tcl_Interp * interp, 
				int objc, Tcl_Obj *CONST objv[]));
/* 22 */
EXTERN int		Itcl_FindObjectsCmd _ANSI_ARGS_((
				ClientData clientData, Tcl_Interp * interp, 
				int objc, Tcl_Obj *CONST objv[]));
/* 23 */
EXTERN int		Itcl_ProtectionCmd _ANSI_ARGS_((
				ClientData clientData, Tcl_Interp * interp, 
				int objc, Tcl_Obj *CONST objv[]));
/* 24 */
EXTERN int		Itcl_DelClassCmd _ANSI_ARGS_((ClientData clientData, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 25 */
EXTERN int		Itcl_DelObjectCmd _ANSI_ARGS_((ClientData clientData, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 26 */
EXTERN int		Itcl_ScopeCmd _ANSI_ARGS_((ClientData clientData, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 27 */
EXTERN int		Itcl_CodeCmd _ANSI_ARGS_((ClientData clientData, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 28 */
EXTERN int		Itcl_StubCreateCmd _ANSI_ARGS_((
				ClientData clientData, Tcl_Interp * interp, 
				int objc, Tcl_Obj *CONST objv[]));
/* 29 */
EXTERN int		Itcl_StubExistsCmd _ANSI_ARGS_((
				ClientData clientData, Tcl_Interp * interp, 
				int objc, Tcl_Obj *CONST objv[]));
/* 30 */
EXTERN int		Itcl_IsStub _ANSI_ARGS_((Tcl_Command cmd));
/* 31 */
EXTERN int		Itcl_CreateClass _ANSI_ARGS_((Tcl_Interp* interp, 
				char* path, ItclObjectInfo * info, 
				ItclClass ** rPtr));
/* 32 */
EXTERN int		Itcl_DeleteClass _ANSI_ARGS_((Tcl_Interp * interp, 
				ItclClass * cdefnPtr));
/* 33 */
EXTERN Tcl_Namespace*	Itcl_FindClassNamespace _ANSI_ARGS_((
				Tcl_Interp* interp, char* path));
/* 34 */
EXTERN int		Itcl_HandleClass _ANSI_ARGS_((ClientData clientData, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 35 */
EXTERN int		Itcl_ClassCmdResolver _ANSI_ARGS_((
				Tcl_Interp * interp, CONST char* name, 
				Tcl_Namespace * context, int flags, 
				Tcl_Command * rPtr));
/* 36 */
EXTERN int		Itcl_ClassVarResolver _ANSI_ARGS_((
				Tcl_Interp * interp, char* name, 
				Tcl_Namespace * context, int flags, 
				Tcl_Var * rPtr));
/* 37 */
EXTERN int		Itcl_ClassCompiledVarResolver _ANSI_ARGS_((
				Tcl_Interp * interp, char* name, int length, 
				Tcl_Namespace * context, 
				Tcl_ResolvedVarInfo ** rPtr));
/* 38 */
EXTERN void		Itcl_BuildVirtualTables _ANSI_ARGS_((
				ItclClass* cdefnPtr));
/* 39 */
EXTERN int		Itcl_CreateVarDefn _ANSI_ARGS_((Tcl_Interp * interp, 
				ItclClass* cdefn, char* name, char* init, 
				char* config, ItclVarDefn** vdefnPtr));
/* 40 */
EXTERN void		Itcl_DeleteVarDefn _ANSI_ARGS_((ItclVarDefn * vdefn));
/* 41 */
EXTERN char*		Itcl_GetCommonVar _ANSI_ARGS_((Tcl_Interp * interp, 
				char * name, ItclClass * contextClass));
/* 42 */
EXTERN ItclMember*	Itcl_CreateMember _ANSI_ARGS_((Tcl_Interp* interp, 
				ItclClass * cdefn, char* name));
/* 43 */
EXTERN void		Itcl_DeleteMember _ANSI_ARGS_((ItclMember * memPtr));
/* 44 */
EXTERN int		Itcl_CreateObject _ANSI_ARGS_((Tcl_Interp * interp, 
				char* name, ItclClass * cdefn, int objc, 
				Tcl_Obj *CONST objv[], ItclObject ** roPtr));
/* 45 */
EXTERN int		Itcl_DeleteObject _ANSI_ARGS_((Tcl_Interp * interp, 
				ItclObject * contextObj));
/* 46 */
EXTERN int		Itcl_DestructObject _ANSI_ARGS_((Tcl_Interp * interp, 
				ItclObject * contextObj, int flags));
/* 47 */
EXTERN int		Itcl_HandleInstance _ANSI_ARGS_((
				ClientData clientData, Tcl_Interp * interp, 
				int objc, Tcl_Obj *CONST objv[]));
/* 48 */
EXTERN char*		Itcl_GetInstanceVar _ANSI_ARGS_((Tcl_Interp * interp, 
				char * name, ItclObject * contextObj, 
				ItclClass * contextClass));
/* 49 */
EXTERN int		Itcl_ScopedVarResolver _ANSI_ARGS_((
				Tcl_Interp * interp, char * name, 
				Tcl_Namespace * contextNs, int flags, 
				Tcl_Var * rPtr));
/* 50 */
EXTERN int		Itcl_BodyCmd _ANSI_ARGS_((ClientData dummy, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 51 */
EXTERN int		Itcl_ConfigBodyCmd _ANSI_ARGS_((ClientData dummy, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 52 */
EXTERN int		Itcl_CreateMethod _ANSI_ARGS_((Tcl_Interp* interp, 
				ItclClass * cdefn, char* name, char* arglist, 
				char* body));
/* 53 */
EXTERN int		Itcl_CreateProc _ANSI_ARGS_((Tcl_Interp* interp, 
				ItclClass * cdefn, char* name, char* arglist, 
				char* body));
/* 54 */
EXTERN int		Itcl_CreateMemberFunc _ANSI_ARGS_((
				Tcl_Interp* interp, ItclClass * cdefn, 
				char* name, char* arglist, char* body, 
				ItclMemberFunc** mfuncPtr));
/* 55 */
EXTERN int		Itcl_ChangeMemberFunc _ANSI_ARGS_((
				Tcl_Interp* interp, ItclMemberFunc* mfunc, 
				char* arglist, char* body));
/* 56 */
EXTERN void		Itcl_DeleteMemberFunc _ANSI_ARGS_((char* cdata));
/* 57 */
EXTERN int		Itcl_CreateMemberCode _ANSI_ARGS_((
				Tcl_Interp* interp, ItclClass * cdefn, 
				char* arglist, char* body, 
				ItclMemberCode** mcodePtr));
/* 58 */
EXTERN void		Itcl_DeleteMemberCode _ANSI_ARGS_((char* cdata));
/* 59 */
EXTERN int		Itcl_GetMemberCode _ANSI_ARGS_((Tcl_Interp* interp, 
				ItclMember* member));
/* Slot 60 is reserved */
/* 61 */
EXTERN int		Itcl_EvalMemberCode _ANSI_ARGS_((Tcl_Interp * interp, 
				ItclMemberFunc * mfunc, ItclMember * member, 
				ItclObject * contextObj, int objc, 
				Tcl_Obj *CONST objv[]));
/* 62 */
EXTERN int		Itcl_CreateArgList _ANSI_ARGS_((Tcl_Interp* interp, 
				char* decl, int* argcPtr, 
				CompiledLocal** argPtr));
/* 63 */
EXTERN CompiledLocal*	Itcl_CreateArg _ANSI_ARGS_((char* name, char* init));
/* 64 */
EXTERN void		Itcl_DeleteArgList _ANSI_ARGS_((
				CompiledLocal * arglist));
/* 65 */
EXTERN Tcl_Obj*		Itcl_ArgList _ANSI_ARGS_((int argc, 
				CompiledLocal* arglist));
/* 66 */
EXTERN int		Itcl_EquivArgLists _ANSI_ARGS_((CompiledLocal* arg1, 
				int arg1c, CompiledLocal* arg2, int arg2c));
/* 67 */
EXTERN void		Itcl_GetMemberFuncUsage _ANSI_ARGS_((
				ItclMemberFunc * mfunc, 
				ItclObject * contextObj, Tcl_Obj * objPtr));
/* 68 */
EXTERN int		Itcl_ExecMethod _ANSI_ARGS_((ClientData clientData, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 69 */
EXTERN int		Itcl_ExecProc _ANSI_ARGS_((ClientData clientData, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 70 */
EXTERN int		Itcl_AssignArgs _ANSI_ARGS_((Tcl_Interp * interp, 
				int objc, Tcl_Obj *CONST objv[], 
				ItclMemberFunc * mfunc));
/* 71 */
EXTERN int		Itcl_ConstructBase _ANSI_ARGS_((Tcl_Interp * interp, 
				ItclObject * contextObj, 
				ItclClass * contextClass));
/* 72 */
EXTERN int		Itcl_InvokeMethodIfExists _ANSI_ARGS_((
				Tcl_Interp * interp, char * name, 
				ItclClass * contextClass, 
				ItclObject * contextObj, int objc, 
				Tcl_Obj *CONST objv[]));
/* Slot 73 is reserved */
/* 74 */
EXTERN int		Itcl_ReportFuncErrors _ANSI_ARGS_((
				Tcl_Interp* interp, ItclMemberFunc * mfunc, 
				ItclObject * contextObj, int result));
/* 75 */
EXTERN int		Itcl_ParseInit _ANSI_ARGS_((Tcl_Interp * interp, 
				ItclObjectInfo * info));
/* 76 */
EXTERN int		Itcl_ClassCmd _ANSI_ARGS_((ClientData clientData, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 77 */
EXTERN int		Itcl_ClassInheritCmd _ANSI_ARGS_((
				ClientData clientData, Tcl_Interp * interp, 
				int objc, Tcl_Obj *CONST objv[]));
/* 78 */
EXTERN int		Itcl_ClassProtectionCmd _ANSI_ARGS_((
				ClientData clientData, Tcl_Interp * interp, 
				int objc, Tcl_Obj *CONST objv[]));
/* 79 */
EXTERN int		Itcl_ClassConstructorCmd _ANSI_ARGS_((
				ClientData clientData, Tcl_Interp * interp, 
				int objc, Tcl_Obj *CONST objv[]));
/* 80 */
EXTERN int		Itcl_ClassDestructorCmd _ANSI_ARGS_((
				ClientData clientData, Tcl_Interp * interp, 
				int objc, Tcl_Obj *CONST objv[]));
/* 81 */
EXTERN int		Itcl_ClassMethodCmd _ANSI_ARGS_((
				ClientData clientData, Tcl_Interp * interp, 
				int objc, Tcl_Obj *CONST objv[]));
/* 82 */
EXTERN int		Itcl_ClassProcCmd _ANSI_ARGS_((ClientData clientData, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 83 */
EXTERN int		Itcl_ClassVariableCmd _ANSI_ARGS_((
				ClientData clientData, Tcl_Interp * interp, 
				int objc, Tcl_Obj *CONST objv[]));
/* 84 */
EXTERN int		Itcl_ClassCommonCmd _ANSI_ARGS_((
				ClientData clientData, Tcl_Interp * interp, 
				int objc, Tcl_Obj *CONST objv[]));
/* 85 */
EXTERN int		Itcl_ParseVarResolver _ANSI_ARGS_((
				Tcl_Interp * interp, char* name, 
				Tcl_Namespace * contextNs, int flags, 
				Tcl_Var* rPtr));
/* 86 */
EXTERN int		Itcl_BiInit _ANSI_ARGS_((Tcl_Interp * interp));
/* 87 */
EXTERN int		Itcl_InstallBiMethods _ANSI_ARGS_((
				Tcl_Interp * interp, ItclClass * cdefn));
/* 88 */
EXTERN int		Itcl_BiIsaCmd _ANSI_ARGS_((ClientData clientData, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 89 */
EXTERN int		Itcl_BiConfigureCmd _ANSI_ARGS_((
				ClientData clientData, Tcl_Interp * interp, 
				int objc, Tcl_Obj *CONST objv[]));
/* 90 */
EXTERN int		Itcl_BiCgetCmd _ANSI_ARGS_((ClientData clientData, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 91 */
EXTERN int		Itcl_BiChainCmd _ANSI_ARGS_((ClientData dummy, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 92 */
EXTERN int		Itcl_BiInfoClassCmd _ANSI_ARGS_((ClientData dummy, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 93 */
EXTERN int		Itcl_BiInfoInheritCmd _ANSI_ARGS_((ClientData dummy, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 94 */
EXTERN int		Itcl_BiInfoHeritageCmd _ANSI_ARGS_((ClientData dummy, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 95 */
EXTERN int		Itcl_BiInfoFunctionCmd _ANSI_ARGS_((ClientData dummy, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 96 */
EXTERN int		Itcl_BiInfoVariableCmd _ANSI_ARGS_((ClientData dummy, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 97 */
EXTERN int		Itcl_BiInfoBodyCmd _ANSI_ARGS_((ClientData dummy, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 98 */
EXTERN int		Itcl_BiInfoArgsCmd _ANSI_ARGS_((ClientData dummy, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 99 */
EXTERN int		Itcl_DefaultInfoCmd _ANSI_ARGS_((ClientData dummy, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 100 */
EXTERN int		Itcl_EnsembleInit _ANSI_ARGS_((Tcl_Interp * interp));
/* 101 */
EXTERN int		Itcl_CreateEnsemble _ANSI_ARGS_((Tcl_Interp * interp, 
				char* ensName));
/* 102 */
EXTERN int		Itcl_AddEnsemblePart _ANSI_ARGS_((
				Tcl_Interp * interp, char* ensName, 
				char* partName, char* usageInfo, 
				Tcl_ObjCmdProc * objProc, 
				ClientData clientData, 
				Tcl_CmdDeleteProc * deleteProc));
/* 103 */
EXTERN int		Itcl_GetEnsemblePart _ANSI_ARGS_((
				Tcl_Interp * interp, char * ensName, 
				char * partName, Tcl_CmdInfo * infoPtr));
/* 104 */
EXTERN int		Itcl_IsEnsemble _ANSI_ARGS_((Tcl_CmdInfo* infoPtr));
/* 105 */
EXTERN int		Itcl_GetEnsembleUsage _ANSI_ARGS_((
				Tcl_Interp * interp, char * ensName, 
				Tcl_Obj * objPtr));
/* 106 */
EXTERN int		Itcl_GetEnsembleUsageForObj _ANSI_ARGS_((
				Tcl_Interp * interp, Tcl_Obj * ensObjPtr, 
				Tcl_Obj * objPtr));
/* 107 */
EXTERN int		Itcl_EnsembleCmd _ANSI_ARGS_((ClientData clientData, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 108 */
EXTERN int		Itcl_EnsPartCmd _ANSI_ARGS_((ClientData clientData, 
				Tcl_Interp * interp, int objc, 
				Tcl_Obj *CONST objv[]));
/* 109 */
EXTERN int		Itcl_EnsembleErrorCmd _ANSI_ARGS_((
				ClientData clientData, Tcl_Interp * interp, 
				int objc, Tcl_Obj *CONST objv[]));
/* 110 */
EXTERN int		Itcl_OldInit _ANSI_ARGS_((Tcl_Interp* interp, 
				ItclObjectInfo* info));
/* 111 */
EXTERN int		Itcl_InstallOldBiMethods _ANSI_ARGS_((
				Tcl_Interp * interp, ItclClass * cdefn));
/* 112 */
EXTERN Tcl_CallFrame*	_Tcl_GetCallFrame _ANSI_ARGS_((Tcl_Interp * interp, 
				int level));
/* 113 */
EXTERN Tcl_CallFrame*	_Tcl_ActivateCallFrame _ANSI_ARGS_((
				Tcl_Interp * interp, 
				Tcl_CallFrame * framePtr));
/* 114 */
EXTERN Var*		_TclNewVar _ANSI_ARGS_((void));
/* 115 */
EXTERN void		Itcl_Assert _ANSI_ARGS_((char * testExpr, 
				char * fileName, int lineNum));

typedef struct ItclIntStubs {
    int magic;
    struct ItclIntStubHooks *hooks;

    int (*itcl_IsClassNamespace) _ANSI_ARGS_((Tcl_Namespace * namesp)); /* 0 */
    int (*itcl_IsClass) _ANSI_ARGS_((Tcl_Command cmd)); /* 1 */
    ItclClass* (*itcl_FindClass) _ANSI_ARGS_((Tcl_Interp* interp, char* path, int autoload)); /* 2 */
    int (*itcl_FindObject) _ANSI_ARGS_((Tcl_Interp * interp, char * name, ItclObject ** roPtr)); /* 3 */
    int (*itcl_IsObject) _ANSI_ARGS_((Tcl_Command cmd)); /* 4 */
    int (*itcl_ObjectIsa) _ANSI_ARGS_((ItclObject * contextObj, ItclClass * cdefn)); /* 5 */
    int (*itcl_Protection) _ANSI_ARGS_((Tcl_Interp * interp, int newLevel)); /* 6 */
    char* (*itcl_ProtectionStr) _ANSI_ARGS_((int pLevel)); /* 7 */
    int (*itcl_CanAccess) _ANSI_ARGS_((ItclMember* memberPtr, Tcl_Namespace* fromNsPtr)); /* 8 */
    int (*itcl_CanAccessFunc) _ANSI_ARGS_((ItclMemberFunc* mfunc, Tcl_Namespace* fromNsPtr)); /* 9 */
    Tcl_Namespace* (*itcl_GetTrueNamespace) _ANSI_ARGS_((Tcl_Interp * interp, ItclObjectInfo * info)); /* 10 */
    void (*itcl_ParseNamespPath) _ANSI_ARGS_((char * name, Tcl_DString * buffer, char ** head, char ** tail)); /* 11 */
    int (*itcl_DecodeScopedCommand) _ANSI_ARGS_((Tcl_Interp * interp, char * name, Tcl_Namespace ** rNsPtr, char ** rCmdPtr)); /* 12 */
    int (*itcl_EvalArgs) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 13 */
    Tcl_Obj* (*itcl_CreateArgs) _ANSI_ARGS_((Tcl_Interp * interp, char * string, int objc, Tcl_Obj *CONST objv[])); /* 14 */
    int (*itcl_PushContext) _ANSI_ARGS_((Tcl_Interp * interp, ItclMember * member, ItclClass * contextClass, ItclObject * contextObj, ItclContext * contextPtr)); /* 15 */
    void (*itcl_PopContext) _ANSI_ARGS_((Tcl_Interp * interp, ItclContext * contextPtr)); /* 16 */
    int (*itcl_GetContext) _ANSI_ARGS_((Tcl_Interp * interp, ItclClass ** cdefnPtr, ItclObject ** odefnPtr)); /* 17 */
    void (*itcl_InitHierIter) _ANSI_ARGS_((ItclHierIter * iter, ItclClass * cdefn)); /* 18 */
    void (*itcl_DeleteHierIter) _ANSI_ARGS_((ItclHierIter * iter)); /* 19 */
    ItclClass* (*itcl_AdvanceHierIter) _ANSI_ARGS_((ItclHierIter * iter)); /* 20 */
    int (*itcl_FindClassesCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 21 */
    int (*itcl_FindObjectsCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 22 */
    int (*itcl_ProtectionCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 23 */
    int (*itcl_DelClassCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 24 */
    int (*itcl_DelObjectCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 25 */
    int (*itcl_ScopeCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 26 */
    int (*itcl_CodeCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 27 */
    int (*itcl_StubCreateCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 28 */
    int (*itcl_StubExistsCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 29 */
    int (*itcl_IsStub) _ANSI_ARGS_((Tcl_Command cmd)); /* 30 */
    int (*itcl_CreateClass) _ANSI_ARGS_((Tcl_Interp* interp, char* path, ItclObjectInfo * info, ItclClass ** rPtr)); /* 31 */
    int (*itcl_DeleteClass) _ANSI_ARGS_((Tcl_Interp * interp, ItclClass * cdefnPtr)); /* 32 */
    Tcl_Namespace* (*itcl_FindClassNamespace) _ANSI_ARGS_((Tcl_Interp* interp, char* path)); /* 33 */
    int (*itcl_HandleClass) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 34 */
    int (*itcl_ClassCmdResolver) _ANSI_ARGS_((Tcl_Interp * interp, CONST char* name, Tcl_Namespace * context, int flags, Tcl_Command * rPtr)); /* 35 */
    int (*itcl_ClassVarResolver) _ANSI_ARGS_((Tcl_Interp * interp, char* name, Tcl_Namespace * context, int flags, Tcl_Var * rPtr)); /* 36 */
    int (*itcl_ClassCompiledVarResolver) _ANSI_ARGS_((Tcl_Interp * interp, char* name, int length, Tcl_Namespace * context, Tcl_ResolvedVarInfo ** rPtr)); /* 37 */
    void (*itcl_BuildVirtualTables) _ANSI_ARGS_((ItclClass* cdefnPtr)); /* 38 */
    int (*itcl_CreateVarDefn) _ANSI_ARGS_((Tcl_Interp * interp, ItclClass* cdefn, char* name, char* init, char* config, ItclVarDefn** vdefnPtr)); /* 39 */
    void (*itcl_DeleteVarDefn) _ANSI_ARGS_((ItclVarDefn * vdefn)); /* 40 */
    char* (*itcl_GetCommonVar) _ANSI_ARGS_((Tcl_Interp * interp, char * name, ItclClass * contextClass)); /* 41 */
    ItclMember* (*itcl_CreateMember) _ANSI_ARGS_((Tcl_Interp* interp, ItclClass * cdefn, char* name)); /* 42 */
    void (*itcl_DeleteMember) _ANSI_ARGS_((ItclMember * memPtr)); /* 43 */
    int (*itcl_CreateObject) _ANSI_ARGS_((Tcl_Interp * interp, char* name, ItclClass * cdefn, int objc, Tcl_Obj *CONST objv[], ItclObject ** roPtr)); /* 44 */
    int (*itcl_DeleteObject) _ANSI_ARGS_((Tcl_Interp * interp, ItclObject * contextObj)); /* 45 */
    int (*itcl_DestructObject) _ANSI_ARGS_((Tcl_Interp * interp, ItclObject * contextObj, int flags)); /* 46 */
    int (*itcl_HandleInstance) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 47 */
    char* (*itcl_GetInstanceVar) _ANSI_ARGS_((Tcl_Interp * interp, char * name, ItclObject * contextObj, ItclClass * contextClass)); /* 48 */
    int (*itcl_ScopedVarResolver) _ANSI_ARGS_((Tcl_Interp * interp, char * name, Tcl_Namespace * contextNs, int flags, Tcl_Var * rPtr)); /* 49 */
    int (*itcl_BodyCmd) _ANSI_ARGS_((ClientData dummy, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 50 */
    int (*itcl_ConfigBodyCmd) _ANSI_ARGS_((ClientData dummy, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 51 */
    int (*itcl_CreateMethod) _ANSI_ARGS_((Tcl_Interp* interp, ItclClass * cdefn, char* name, char* arglist, char* body)); /* 52 */
    int (*itcl_CreateProc) _ANSI_ARGS_((Tcl_Interp* interp, ItclClass * cdefn, char* name, char* arglist, char* body)); /* 53 */
    int (*itcl_CreateMemberFunc) _ANSI_ARGS_((Tcl_Interp* interp, ItclClass * cdefn, char* name, char* arglist, char* body, ItclMemberFunc** mfuncPtr)); /* 54 */
    int (*itcl_ChangeMemberFunc) _ANSI_ARGS_((Tcl_Interp* interp, ItclMemberFunc* mfunc, char* arglist, char* body)); /* 55 */
    void (*itcl_DeleteMemberFunc) _ANSI_ARGS_((char* cdata)); /* 56 */
    int (*itcl_CreateMemberCode) _ANSI_ARGS_((Tcl_Interp* interp, ItclClass * cdefn, char* arglist, char* body, ItclMemberCode** mcodePtr)); /* 57 */
    void (*itcl_DeleteMemberCode) _ANSI_ARGS_((char* cdata)); /* 58 */
    int (*itcl_GetMemberCode) _ANSI_ARGS_((Tcl_Interp* interp, ItclMember* member)); /* 59 */
    void *reserved60;
    int (*itcl_EvalMemberCode) _ANSI_ARGS_((Tcl_Interp * interp, ItclMemberFunc * mfunc, ItclMember * member, ItclObject * contextObj, int objc, Tcl_Obj *CONST objv[])); /* 61 */
    int (*itcl_CreateArgList) _ANSI_ARGS_((Tcl_Interp* interp, char* decl, int* argcPtr, CompiledLocal** argPtr)); /* 62 */
    CompiledLocal* (*itcl_CreateArg) _ANSI_ARGS_((char* name, char* init)); /* 63 */
    void (*itcl_DeleteArgList) _ANSI_ARGS_((CompiledLocal * arglist)); /* 64 */
    Tcl_Obj* (*itcl_ArgList) _ANSI_ARGS_((int argc, CompiledLocal* arglist)); /* 65 */
    int (*itcl_EquivArgLists) _ANSI_ARGS_((CompiledLocal* arg1, int arg1c, CompiledLocal* arg2, int arg2c)); /* 66 */
    void (*itcl_GetMemberFuncUsage) _ANSI_ARGS_((ItclMemberFunc * mfunc, ItclObject * contextObj, Tcl_Obj * objPtr)); /* 67 */
    int (*itcl_ExecMethod) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 68 */
    int (*itcl_ExecProc) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 69 */
    int (*itcl_AssignArgs) _ANSI_ARGS_((Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[], ItclMemberFunc * mfunc)); /* 70 */
    int (*itcl_ConstructBase) _ANSI_ARGS_((Tcl_Interp * interp, ItclObject * contextObj, ItclClass * contextClass)); /* 71 */
    int (*itcl_InvokeMethodIfExists) _ANSI_ARGS_((Tcl_Interp * interp, char * name, ItclClass * contextClass, ItclObject * contextObj, int objc, Tcl_Obj *CONST objv[])); /* 72 */
    void *reserved73;
    int (*itcl_ReportFuncErrors) _ANSI_ARGS_((Tcl_Interp* interp, ItclMemberFunc * mfunc, ItclObject * contextObj, int result)); /* 74 */
    int (*itcl_ParseInit) _ANSI_ARGS_((Tcl_Interp * interp, ItclObjectInfo * info)); /* 75 */
    int (*itcl_ClassCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 76 */
    int (*itcl_ClassInheritCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 77 */
    int (*itcl_ClassProtectionCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 78 */
    int (*itcl_ClassConstructorCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 79 */
    int (*itcl_ClassDestructorCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 80 */
    int (*itcl_ClassMethodCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 81 */
    int (*itcl_ClassProcCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 82 */
    int (*itcl_ClassVariableCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 83 */
    int (*itcl_ClassCommonCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 84 */
    int (*itcl_ParseVarResolver) _ANSI_ARGS_((Tcl_Interp * interp, char* name, Tcl_Namespace * contextNs, int flags, Tcl_Var* rPtr)); /* 85 */
    int (*itcl_BiInit) _ANSI_ARGS_((Tcl_Interp * interp)); /* 86 */
    int (*itcl_InstallBiMethods) _ANSI_ARGS_((Tcl_Interp * interp, ItclClass * cdefn)); /* 87 */
    int (*itcl_BiIsaCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 88 */
    int (*itcl_BiConfigureCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 89 */
    int (*itcl_BiCgetCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 90 */
    int (*itcl_BiChainCmd) _ANSI_ARGS_((ClientData dummy, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 91 */
    int (*itcl_BiInfoClassCmd) _ANSI_ARGS_((ClientData dummy, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 92 */
    int (*itcl_BiInfoInheritCmd) _ANSI_ARGS_((ClientData dummy, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 93 */
    int (*itcl_BiInfoHeritageCmd) _ANSI_ARGS_((ClientData dummy, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 94 */
    int (*itcl_BiInfoFunctionCmd) _ANSI_ARGS_((ClientData dummy, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 95 */
    int (*itcl_BiInfoVariableCmd) _ANSI_ARGS_((ClientData dummy, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 96 */
    int (*itcl_BiInfoBodyCmd) _ANSI_ARGS_((ClientData dummy, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 97 */
    int (*itcl_BiInfoArgsCmd) _ANSI_ARGS_((ClientData dummy, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 98 */
    int (*itcl_DefaultInfoCmd) _ANSI_ARGS_((ClientData dummy, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 99 */
    int (*itcl_EnsembleInit) _ANSI_ARGS_((Tcl_Interp * interp)); /* 100 */
    int (*itcl_CreateEnsemble) _ANSI_ARGS_((Tcl_Interp * interp, char* ensName)); /* 101 */
    int (*itcl_AddEnsemblePart) _ANSI_ARGS_((Tcl_Interp * interp, char* ensName, char* partName, char* usageInfo, Tcl_ObjCmdProc * objProc, ClientData clientData, Tcl_CmdDeleteProc * deleteProc)); /* 102 */
    int (*itcl_GetEnsemblePart) _ANSI_ARGS_((Tcl_Interp * interp, char * ensName, char * partName, Tcl_CmdInfo * infoPtr)); /* 103 */
    int (*itcl_IsEnsemble) _ANSI_ARGS_((Tcl_CmdInfo* infoPtr)); /* 104 */
    int (*itcl_GetEnsembleUsage) _ANSI_ARGS_((Tcl_Interp * interp, char * ensName, Tcl_Obj * objPtr)); /* 105 */
    int (*itcl_GetEnsembleUsageForObj) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_Obj * ensObjPtr, Tcl_Obj * objPtr)); /* 106 */
    int (*itcl_EnsembleCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 107 */
    int (*itcl_EnsPartCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 108 */
    int (*itcl_EnsembleErrorCmd) _ANSI_ARGS_((ClientData clientData, Tcl_Interp * interp, int objc, Tcl_Obj *CONST objv[])); /* 109 */
    int (*itcl_OldInit) _ANSI_ARGS_((Tcl_Interp* interp, ItclObjectInfo* info)); /* 110 */
    int (*itcl_InstallOldBiMethods) _ANSI_ARGS_((Tcl_Interp * interp, ItclClass * cdefn)); /* 111 */
    Tcl_CallFrame* (*_Tcl_GetCallFrame) _ANSI_ARGS_((Tcl_Interp * interp, int level)); /* 112 */
    Tcl_CallFrame* (*_Tcl_ActivateCallFrame) _ANSI_ARGS_((Tcl_Interp * interp, Tcl_CallFrame * framePtr)); /* 113 */
    Var* (*_TclNewVar) _ANSI_ARGS_((void)); /* 114 */
    void (*itcl_Assert) _ANSI_ARGS_((char * testExpr, char * fileName, int lineNum)); /* 115 */
} ItclIntStubs;

#ifdef __cplusplus
extern "C" {
#endif
extern ItclIntStubs *itclIntStubsPtr;
#ifdef __cplusplus
}
#endif

#if defined(USE_ITCL_STUBS) && !defined(USE_ITCL_STUB_PROCS)

/*
 * Inline function declarations:
 */

#ifndef Itcl_IsClassNamespace
#define Itcl_IsClassNamespace \
	(itclIntStubsPtr->itcl_IsClassNamespace) /* 0 */
#endif
#ifndef Itcl_IsClass
#define Itcl_IsClass \
	(itclIntStubsPtr->itcl_IsClass) /* 1 */
#endif
#ifndef Itcl_FindClass
#define Itcl_FindClass \
	(itclIntStubsPtr->itcl_FindClass) /* 2 */
#endif
#ifndef Itcl_FindObject
#define Itcl_FindObject \
	(itclIntStubsPtr->itcl_FindObject) /* 3 */
#endif
#ifndef Itcl_IsObject
#define Itcl_IsObject \
	(itclIntStubsPtr->itcl_IsObject) /* 4 */
#endif
#ifndef Itcl_ObjectIsa
#define Itcl_ObjectIsa \
	(itclIntStubsPtr->itcl_ObjectIsa) /* 5 */
#endif
#ifndef Itcl_Protection
#define Itcl_Protection \
	(itclIntStubsPtr->itcl_Protection) /* 6 */
#endif
#ifndef Itcl_ProtectionStr
#define Itcl_ProtectionStr \
	(itclIntStubsPtr->itcl_ProtectionStr) /* 7 */
#endif
#ifndef Itcl_CanAccess
#define Itcl_CanAccess \
	(itclIntStubsPtr->itcl_CanAccess) /* 8 */
#endif
#ifndef Itcl_CanAccessFunc
#define Itcl_CanAccessFunc \
	(itclIntStubsPtr->itcl_CanAccessFunc) /* 9 */
#endif
#ifndef Itcl_GetTrueNamespace
#define Itcl_GetTrueNamespace \
	(itclIntStubsPtr->itcl_GetTrueNamespace) /* 10 */
#endif
#ifndef Itcl_ParseNamespPath
#define Itcl_ParseNamespPath \
	(itclIntStubsPtr->itcl_ParseNamespPath) /* 11 */
#endif
#ifndef Itcl_DecodeScopedCommand
#define Itcl_DecodeScopedCommand \
	(itclIntStubsPtr->itcl_DecodeScopedCommand) /* 12 */
#endif
#ifndef Itcl_EvalArgs
#define Itcl_EvalArgs \
	(itclIntStubsPtr->itcl_EvalArgs) /* 13 */
#endif
#ifndef Itcl_CreateArgs
#define Itcl_CreateArgs \
	(itclIntStubsPtr->itcl_CreateArgs) /* 14 */
#endif
#ifndef Itcl_PushContext
#define Itcl_PushContext \
	(itclIntStubsPtr->itcl_PushContext) /* 15 */
#endif
#ifndef Itcl_PopContext
#define Itcl_PopContext \
	(itclIntStubsPtr->itcl_PopContext) /* 16 */
#endif
#ifndef Itcl_GetContext
#define Itcl_GetContext \
	(itclIntStubsPtr->itcl_GetContext) /* 17 */
#endif
#ifndef Itcl_InitHierIter
#define Itcl_InitHierIter \
	(itclIntStubsPtr->itcl_InitHierIter) /* 18 */
#endif
#ifndef Itcl_DeleteHierIter
#define Itcl_DeleteHierIter \
	(itclIntStubsPtr->itcl_DeleteHierIter) /* 19 */
#endif
#ifndef Itcl_AdvanceHierIter
#define Itcl_AdvanceHierIter \
	(itclIntStubsPtr->itcl_AdvanceHierIter) /* 20 */
#endif
#ifndef Itcl_FindClassesCmd
#define Itcl_FindClassesCmd \
	(itclIntStubsPtr->itcl_FindClassesCmd) /* 21 */
#endif
#ifndef Itcl_FindObjectsCmd
#define Itcl_FindObjectsCmd \
	(itclIntStubsPtr->itcl_FindObjectsCmd) /* 22 */
#endif
#ifndef Itcl_ProtectionCmd
#define Itcl_ProtectionCmd \
	(itclIntStubsPtr->itcl_ProtectionCmd) /* 23 */
#endif
#ifndef Itcl_DelClassCmd
#define Itcl_DelClassCmd \
	(itclIntStubsPtr->itcl_DelClassCmd) /* 24 */
#endif
#ifndef Itcl_DelObjectCmd
#define Itcl_DelObjectCmd \
	(itclIntStubsPtr->itcl_DelObjectCmd) /* 25 */
#endif
#ifndef Itcl_ScopeCmd
#define Itcl_ScopeCmd \
	(itclIntStubsPtr->itcl_ScopeCmd) /* 26 */
#endif
#ifndef Itcl_CodeCmd
#define Itcl_CodeCmd \
	(itclIntStubsPtr->itcl_CodeCmd) /* 27 */
#endif
#ifndef Itcl_StubCreateCmd
#define Itcl_StubCreateCmd \
	(itclIntStubsPtr->itcl_StubCreateCmd) /* 28 */
#endif
#ifndef Itcl_StubExistsCmd
#define Itcl_StubExistsCmd \
	(itclIntStubsPtr->itcl_StubExistsCmd) /* 29 */
#endif
#ifndef Itcl_IsStub
#define Itcl_IsStub \
	(itclIntStubsPtr->itcl_IsStub) /* 30 */
#endif
#ifndef Itcl_CreateClass
#define Itcl_CreateClass \
	(itclIntStubsPtr->itcl_CreateClass) /* 31 */
#endif
#ifndef Itcl_DeleteClass
#define Itcl_DeleteClass \
	(itclIntStubsPtr->itcl_DeleteClass) /* 32 */
#endif
#ifndef Itcl_FindClassNamespace
#define Itcl_FindClassNamespace \
	(itclIntStubsPtr->itcl_FindClassNamespace) /* 33 */
#endif
#ifndef Itcl_HandleClass
#define Itcl_HandleClass \
	(itclIntStubsPtr->itcl_HandleClass) /* 34 */
#endif
#ifndef Itcl_ClassCmdResolver
#define Itcl_ClassCmdResolver \
	(itclIntStubsPtr->itcl_ClassCmdResolver) /* 35 */
#endif
#ifndef Itcl_ClassVarResolver
#define Itcl_ClassVarResolver \
	(itclIntStubsPtr->itcl_ClassVarResolver) /* 36 */
#endif
#ifndef Itcl_ClassCompiledVarResolver
#define Itcl_ClassCompiledVarResolver \
	(itclIntStubsPtr->itcl_ClassCompiledVarResolver) /* 37 */
#endif
#ifndef Itcl_BuildVirtualTables
#define Itcl_BuildVirtualTables \
	(itclIntStubsPtr->itcl_BuildVirtualTables) /* 38 */
#endif
#ifndef Itcl_CreateVarDefn
#define Itcl_CreateVarDefn \
	(itclIntStubsPtr->itcl_CreateVarDefn) /* 39 */
#endif
#ifndef Itcl_DeleteVarDefn
#define Itcl_DeleteVarDefn \
	(itclIntStubsPtr->itcl_DeleteVarDefn) /* 40 */
#endif
#ifndef Itcl_GetCommonVar
#define Itcl_GetCommonVar \
	(itclIntStubsPtr->itcl_GetCommonVar) /* 41 */
#endif
#ifndef Itcl_CreateMember
#define Itcl_CreateMember \
	(itclIntStubsPtr->itcl_CreateMember) /* 42 */
#endif
#ifndef Itcl_DeleteMember
#define Itcl_DeleteMember \
	(itclIntStubsPtr->itcl_DeleteMember) /* 43 */
#endif
#ifndef Itcl_CreateObject
#define Itcl_CreateObject \
	(itclIntStubsPtr->itcl_CreateObject) /* 44 */
#endif
#ifndef Itcl_DeleteObject
#define Itcl_DeleteObject \
	(itclIntStubsPtr->itcl_DeleteObject) /* 45 */
#endif
#ifndef Itcl_DestructObject
#define Itcl_DestructObject \
	(itclIntStubsPtr->itcl_DestructObject) /* 46 */
#endif
#ifndef Itcl_HandleInstance
#define Itcl_HandleInstance \
	(itclIntStubsPtr->itcl_HandleInstance) /* 47 */
#endif
#ifndef Itcl_GetInstanceVar
#define Itcl_GetInstanceVar \
	(itclIntStubsPtr->itcl_GetInstanceVar) /* 48 */
#endif
#ifndef Itcl_ScopedVarResolver
#define Itcl_ScopedVarResolver \
	(itclIntStubsPtr->itcl_ScopedVarResolver) /* 49 */
#endif
#ifndef Itcl_BodyCmd
#define Itcl_BodyCmd \
	(itclIntStubsPtr->itcl_BodyCmd) /* 50 */
#endif
#ifndef Itcl_ConfigBodyCmd
#define Itcl_ConfigBodyCmd \
	(itclIntStubsPtr->itcl_ConfigBodyCmd) /* 51 */
#endif
#ifndef Itcl_CreateMethod
#define Itcl_CreateMethod \
	(itclIntStubsPtr->itcl_CreateMethod) /* 52 */
#endif
#ifndef Itcl_CreateProc
#define Itcl_CreateProc \
	(itclIntStubsPtr->itcl_CreateProc) /* 53 */
#endif
#ifndef Itcl_CreateMemberFunc
#define Itcl_CreateMemberFunc \
	(itclIntStubsPtr->itcl_CreateMemberFunc) /* 54 */
#endif
#ifndef Itcl_ChangeMemberFunc
#define Itcl_ChangeMemberFunc \
	(itclIntStubsPtr->itcl_ChangeMemberFunc) /* 55 */
#endif
#ifndef Itcl_DeleteMemberFunc
#define Itcl_DeleteMemberFunc \
	(itclIntStubsPtr->itcl_DeleteMemberFunc) /* 56 */
#endif
#ifndef Itcl_CreateMemberCode
#define Itcl_CreateMemberCode \
	(itclIntStubsPtr->itcl_CreateMemberCode) /* 57 */
#endif
#ifndef Itcl_DeleteMemberCode
#define Itcl_DeleteMemberCode \
	(itclIntStubsPtr->itcl_DeleteMemberCode) /* 58 */
#endif
#ifndef Itcl_GetMemberCode
#define Itcl_GetMemberCode \
	(itclIntStubsPtr->itcl_GetMemberCode) /* 59 */
#endif
/* Slot 60 is reserved */
#ifndef Itcl_EvalMemberCode
#define Itcl_EvalMemberCode \
	(itclIntStubsPtr->itcl_EvalMemberCode) /* 61 */
#endif
#ifndef Itcl_CreateArgList
#define Itcl_CreateArgList \
	(itclIntStubsPtr->itcl_CreateArgList) /* 62 */
#endif
#ifndef Itcl_CreateArg
#define Itcl_CreateArg \
	(itclIntStubsPtr->itcl_CreateArg) /* 63 */
#endif
#ifndef Itcl_DeleteArgList
#define Itcl_DeleteArgList \
	(itclIntStubsPtr->itcl_DeleteArgList) /* 64 */
#endif
#ifndef Itcl_ArgList
#define Itcl_ArgList \
	(itclIntStubsPtr->itcl_ArgList) /* 65 */
#endif
#ifndef Itcl_EquivArgLists
#define Itcl_EquivArgLists \
	(itclIntStubsPtr->itcl_EquivArgLists) /* 66 */
#endif
#ifndef Itcl_GetMemberFuncUsage
#define Itcl_GetMemberFuncUsage \
	(itclIntStubsPtr->itcl_GetMemberFuncUsage) /* 67 */
#endif
#ifndef Itcl_ExecMethod
#define Itcl_ExecMethod \
	(itclIntStubsPtr->itcl_ExecMethod) /* 68 */
#endif
#ifndef Itcl_ExecProc
#define Itcl_ExecProc \
	(itclIntStubsPtr->itcl_ExecProc) /* 69 */
#endif
#ifndef Itcl_AssignArgs
#define Itcl_AssignArgs \
	(itclIntStubsPtr->itcl_AssignArgs) /* 70 */
#endif
#ifndef Itcl_ConstructBase
#define Itcl_ConstructBase \
	(itclIntStubsPtr->itcl_ConstructBase) /* 71 */
#endif
#ifndef Itcl_InvokeMethodIfExists
#define Itcl_InvokeMethodIfExists \
	(itclIntStubsPtr->itcl_InvokeMethodIfExists) /* 72 */
#endif
/* Slot 73 is reserved */
#ifndef Itcl_ReportFuncErrors
#define Itcl_ReportFuncErrors \
	(itclIntStubsPtr->itcl_ReportFuncErrors) /* 74 */
#endif
#ifndef Itcl_ParseInit
#define Itcl_ParseInit \
	(itclIntStubsPtr->itcl_ParseInit) /* 75 */
#endif
#ifndef Itcl_ClassCmd
#define Itcl_ClassCmd \
	(itclIntStubsPtr->itcl_ClassCmd) /* 76 */
#endif
#ifndef Itcl_ClassInheritCmd
#define Itcl_ClassInheritCmd \
	(itclIntStubsPtr->itcl_ClassInheritCmd) /* 77 */
#endif
#ifndef Itcl_ClassProtectionCmd
#define Itcl_ClassProtectionCmd \
	(itclIntStubsPtr->itcl_ClassProtectionCmd) /* 78 */
#endif
#ifndef Itcl_ClassConstructorCmd
#define Itcl_ClassConstructorCmd \
	(itclIntStubsPtr->itcl_ClassConstructorCmd) /* 79 */
#endif
#ifndef Itcl_ClassDestructorCmd
#define Itcl_ClassDestructorCmd \
	(itclIntStubsPtr->itcl_ClassDestructorCmd) /* 80 */
#endif
#ifndef Itcl_ClassMethodCmd
#define Itcl_ClassMethodCmd \
	(itclIntStubsPtr->itcl_ClassMethodCmd) /* 81 */
#endif
#ifndef Itcl_ClassProcCmd
#define Itcl_ClassProcCmd \
	(itclIntStubsPtr->itcl_ClassProcCmd) /* 82 */
#endif
#ifndef Itcl_ClassVariableCmd
#define Itcl_ClassVariableCmd \
	(itclIntStubsPtr->itcl_ClassVariableCmd) /* 83 */
#endif
#ifndef Itcl_ClassCommonCmd
#define Itcl_ClassCommonCmd \
	(itclIntStubsPtr->itcl_ClassCommonCmd) /* 84 */
#endif
#ifndef Itcl_ParseVarResolver
#define Itcl_ParseVarResolver \
	(itclIntStubsPtr->itcl_ParseVarResolver) /* 85 */
#endif
#ifndef Itcl_BiInit
#define Itcl_BiInit \
	(itclIntStubsPtr->itcl_BiInit) /* 86 */
#endif
#ifndef Itcl_InstallBiMethods
#define Itcl_InstallBiMethods \
	(itclIntStubsPtr->itcl_InstallBiMethods) /* 87 */
#endif
#ifndef Itcl_BiIsaCmd
#define Itcl_BiIsaCmd \
	(itclIntStubsPtr->itcl_BiIsaCmd) /* 88 */
#endif
#ifndef Itcl_BiConfigureCmd
#define Itcl_BiConfigureCmd \
	(itclIntStubsPtr->itcl_BiConfigureCmd) /* 89 */
#endif
#ifndef Itcl_BiCgetCmd
#define Itcl_BiCgetCmd \
	(itclIntStubsPtr->itcl_BiCgetCmd) /* 90 */
#endif
#ifndef Itcl_BiChainCmd
#define Itcl_BiChainCmd \
	(itclIntStubsPtr->itcl_BiChainCmd) /* 91 */
#endif
#ifndef Itcl_BiInfoClassCmd
#define Itcl_BiInfoClassCmd \
	(itclIntStubsPtr->itcl_BiInfoClassCmd) /* 92 */
#endif
#ifndef Itcl_BiInfoInheritCmd
#define Itcl_BiInfoInheritCmd \
	(itclIntStubsPtr->itcl_BiInfoInheritCmd) /* 93 */
#endif
#ifndef Itcl_BiInfoHeritageCmd
#define Itcl_BiInfoHeritageCmd \
	(itclIntStubsPtr->itcl_BiInfoHeritageCmd) /* 94 */
#endif
#ifndef Itcl_BiInfoFunctionCmd
#define Itcl_BiInfoFunctionCmd \
	(itclIntStubsPtr->itcl_BiInfoFunctionCmd) /* 95 */
#endif
#ifndef Itcl_BiInfoVariableCmd
#define Itcl_BiInfoVariableCmd \
	(itclIntStubsPtr->itcl_BiInfoVariableCmd) /* 96 */
#endif
#ifndef Itcl_BiInfoBodyCmd
#define Itcl_BiInfoBodyCmd \
	(itclIntStubsPtr->itcl_BiInfoBodyCmd) /* 97 */
#endif
#ifndef Itcl_BiInfoArgsCmd
#define Itcl_BiInfoArgsCmd \
	(itclIntStubsPtr->itcl_BiInfoArgsCmd) /* 98 */
#endif
#ifndef Itcl_DefaultInfoCmd
#define Itcl_DefaultInfoCmd \
	(itclIntStubsPtr->itcl_DefaultInfoCmd) /* 99 */
#endif
#ifndef Itcl_EnsembleInit
#define Itcl_EnsembleInit \
	(itclIntStubsPtr->itcl_EnsembleInit) /* 100 */
#endif
#ifndef Itcl_CreateEnsemble
#define Itcl_CreateEnsemble \
	(itclIntStubsPtr->itcl_CreateEnsemble) /* 101 */
#endif
#ifndef Itcl_AddEnsemblePart
#define Itcl_AddEnsemblePart \
	(itclIntStubsPtr->itcl_AddEnsemblePart) /* 102 */
#endif
#ifndef Itcl_GetEnsemblePart
#define Itcl_GetEnsemblePart \
	(itclIntStubsPtr->itcl_GetEnsemblePart) /* 103 */
#endif
#ifndef Itcl_IsEnsemble
#define Itcl_IsEnsemble \
	(itclIntStubsPtr->itcl_IsEnsemble) /* 104 */
#endif
#ifndef Itcl_GetEnsembleUsage
#define Itcl_GetEnsembleUsage \
	(itclIntStubsPtr->itcl_GetEnsembleUsage) /* 105 */
#endif
#ifndef Itcl_GetEnsembleUsageForObj
#define Itcl_GetEnsembleUsageForObj \
	(itclIntStubsPtr->itcl_GetEnsembleUsageForObj) /* 106 */
#endif
#ifndef Itcl_EnsembleCmd
#define Itcl_EnsembleCmd \
	(itclIntStubsPtr->itcl_EnsembleCmd) /* 107 */
#endif
#ifndef Itcl_EnsPartCmd
#define Itcl_EnsPartCmd \
	(itclIntStubsPtr->itcl_EnsPartCmd) /* 108 */
#endif
#ifndef Itcl_EnsembleErrorCmd
#define Itcl_EnsembleErrorCmd \
	(itclIntStubsPtr->itcl_EnsembleErrorCmd) /* 109 */
#endif
#ifndef Itcl_OldInit
#define Itcl_OldInit \
	(itclIntStubsPtr->itcl_OldInit) /* 110 */
#endif
#ifndef Itcl_InstallOldBiMethods
#define Itcl_InstallOldBiMethods \
	(itclIntStubsPtr->itcl_InstallOldBiMethods) /* 111 */
#endif
#ifndef _Tcl_GetCallFrame
#define _Tcl_GetCallFrame \
	(itclIntStubsPtr->_Tcl_GetCallFrame) /* 112 */
#endif
#ifndef _Tcl_ActivateCallFrame
#define _Tcl_ActivateCallFrame \
	(itclIntStubsPtr->_Tcl_ActivateCallFrame) /* 113 */
#endif
#ifndef _TclNewVar
#define _TclNewVar \
	(itclIntStubsPtr->_TclNewVar) /* 114 */
#endif
#ifndef Itcl_Assert
#define Itcl_Assert \
	(itclIntStubsPtr->itcl_Assert) /* 115 */
#endif

#endif /* defined(USE_ITCL_STUBS) && !defined(USE_ITCL_STUB_PROCS) */

/* !END!: Do not edit above this line. */

#endif /* _ITCLINTDECLS */
