Index: generic/nsf.c =================================================================== diff -u -r618e2ee5017eb139591870f9f521b971bb16bbc2 -r7352c1e6b67222b5868f761f5e471a38ca92bc4b --- generic/nsf.c (.../nsf.c) (revision 618e2ee5017eb139591870f9f521b971bb16bbc2) +++ generic/nsf.c (.../nsf.c) (revision 7352c1e6b67222b5868f761f5e471a38ca92bc4b) @@ -2964,6 +2964,7 @@ static void MakeObjNamespace(Tcl_Interp *interp, NsfObject *object) { + fprintf(stderr, "+++ MakeObjNamespace for %p %s\n", object, ObjectName(object)); #ifdef NAMESPACE_TRACE fprintf(stderr, "+++ MakeObjNamespace for %s\n", ObjectName(object)); #endif @@ -4203,8 +4204,8 @@ assert(object); - /*fprintf(stderr, "namespacedeleteproc obj=%p ns=%p\n", - clientData, object ? object->nsPtr : NULL);*/ + fprintf(stderr, "namespacedeleteproc obj=%p ns=%p\n", + clientData, object ? object->nsPtr : NULL); MEM_COUNT_FREE("NSNamespace", object->nsPtr); object->nsPtr = NULL; @@ -23073,7 +23074,7 @@ Tcl_HashEntry *hPtr; Tcl_HashSearch hSrch; Tcl_HashTable *cmdTablePtr = Tcl_Namespace_cmdTablePtr(ns); - + fprintf(stderr, "--- ObjectHasChildren: obj %p ns %p\n", object, ns); for (hPtr = Tcl_FirstHashEntry(cmdTablePtr, &hSrch); hPtr; hPtr = Tcl_NextHashEntry(&hSrch)) { Tcl_Command cmd = Tcl_GetHashValue(hPtr); @@ -23144,7 +23145,7 @@ for (entry = *instances; entry; entry = entry->nextPtr) { NsfObject *object = (NsfObject *)entry->clorobj; - + fprintf(stderr, "--- FreeAllNsfObjectsAndClasses: %p %s hasNS %d '%s'\n", object, ObjectName(object), object->nsPtr != NULL, object->nsPtr ? object->nsPtr->fullName : "n/a"); /* delete per-object methods */ if (object && object->nsPtr) { Tcl_HashEntry *hPtr; Index: generic/nsfDecls.h =================================================================== diff -u -ra09faeafaaacd8dcd4c52cdb86653993e8dc499a -r7352c1e6b67222b5868f761f5e471a38ca92bc4b --- generic/nsfDecls.h (.../nsfDecls.h) (revision a09faeafaaacd8dcd4c52cdb86653993e8dc499a) +++ generic/nsfDecls.h (.../nsfDecls.h) (revision 7352c1e6b67222b5868f761f5e471a38ca92bc4b) @@ -28,167 +28,95 @@ * Exported function declarations: */ -#ifndef Nsf_Init_TCL_DECLARED -#define Nsf_Init_TCL_DECLARED /* 0 */ EXTERN int Nsf_Init(Tcl_Interp *interp); -#endif /* Slot 1 is reserved */ -#ifndef NsfIsClass_TCL_DECLARED -#define NsfIsClass_TCL_DECLARED /* 2 */ EXTERN struct Nsf_Class * NsfIsClass(Tcl_Interp *interp, ClientData cd); -#endif -#ifndef NsfGetObject_TCL_DECLARED -#define NsfGetObject_TCL_DECLARED /* 3 */ EXTERN struct Nsf_Object * NsfGetObject(Tcl_Interp *interp, CONST char *name); -#endif -#ifndef NsfGetClass_TCL_DECLARED -#define NsfGetClass_TCL_DECLARED /* 4 */ EXTERN struct Nsf_Class * NsfGetClass(Tcl_Interp *interp, CONST char *name); -#endif -#ifndef NsfDeleteObject_TCL_DECLARED -#define NsfDeleteObject_TCL_DECLARED /* 5 */ EXTERN int NsfDeleteObject(Tcl_Interp *interp, struct Nsf_Object *object); -#endif -#ifndef NsfRemoveObjectMethod_TCL_DECLARED -#define NsfRemoveObjectMethod_TCL_DECLARED /* 6 */ EXTERN int NsfRemoveObjectMethod(Tcl_Interp *interp, struct Nsf_Object *object, CONST char *nm); -#endif -#ifndef NsfRemoveClassMethod_TCL_DECLARED -#define NsfRemoveClassMethod_TCL_DECLARED /* 7 */ EXTERN int NsfRemoveClassMethod(Tcl_Interp *interp, struct Nsf_Class *cl, CONST char *nm); -#endif -#ifndef Nsf_ObjSetVar2_TCL_DECLARED -#define Nsf_ObjSetVar2_TCL_DECLARED /* 8 */ EXTERN Tcl_Obj * Nsf_ObjSetVar2(struct Nsf_Object *object, Tcl_Interp *interp, Tcl_Obj *name1, Tcl_Obj *name2, Tcl_Obj *value, int flgs); -#endif -#ifndef Nsf_ObjGetVar2_TCL_DECLARED -#define Nsf_ObjGetVar2_TCL_DECLARED /* 9 */ EXTERN Tcl_Obj * Nsf_ObjGetVar2(struct Nsf_Object *object, Tcl_Interp *interp, Tcl_Obj *name1, Tcl_Obj *name2, int flgs); -#endif -#ifndef Nsf_UnsetVar2_TCL_DECLARED -#define Nsf_UnsetVar2_TCL_DECLARED /* 10 */ EXTERN int Nsf_UnsetVar2(struct Nsf_Object *object, Tcl_Interp *interp, CONST char *name1, CONST char *name2, int flgs); -#endif -#ifndef NsfDStringPrintf_TCL_DECLARED -#define NsfDStringPrintf_TCL_DECLARED /* 11 */ EXTERN void NsfDStringPrintf(Tcl_DString *dsPtr, CONST char *fmt, va_list apSrc); -#endif -#ifndef NsfPrintError_TCL_DECLARED -#define NsfPrintError_TCL_DECLARED /* 12 */ EXTERN int NsfPrintError(Tcl_Interp *interp, CONST char *fmt, ...); -#endif -#ifndef NsfErrInProc_TCL_DECLARED -#define NsfErrInProc_TCL_DECLARED /* 13 */ EXTERN int NsfErrInProc(Tcl_Interp *interp, Tcl_Obj *objName, Tcl_Obj *clName, CONST char *procName); -#endif -#ifndef NsfObjErrType_TCL_DECLARED -#define NsfObjErrType_TCL_DECLARED /* 14 */ EXTERN int NsfObjErrType(Tcl_Interp *interp, CONST char *context, Tcl_Obj *value, CONST char *type, Nsf_Param CONST *pPtr); -#endif -#ifndef NsfStackDump_TCL_DECLARED -#define NsfStackDump_TCL_DECLARED /* 15 */ EXTERN void NsfStackDump(Tcl_Interp *interp); -#endif -#ifndef NsfSetObjClientData_TCL_DECLARED -#define NsfSetObjClientData_TCL_DECLARED /* 16 */ EXTERN void NsfSetObjClientData(Tcl_Interp *interp, Nsf_Object *object, ClientData data); -#endif -#ifndef NsfGetObjClientData_TCL_DECLARED -#define NsfGetObjClientData_TCL_DECLARED /* 17 */ EXTERN ClientData NsfGetObjClientData(Tcl_Interp *interp, Nsf_Object *object); -#endif -#ifndef NsfSetClassClientData_TCL_DECLARED -#define NsfSetClassClientData_TCL_DECLARED /* 18 */ EXTERN void NsfSetClassClientData(Tcl_Interp *interp, Nsf_Class *cl, ClientData data); -#endif -#ifndef NsfGetClassClientData_TCL_DECLARED -#define NsfGetClassClientData_TCL_DECLARED /* 19 */ EXTERN ClientData NsfGetClassClientData(Tcl_Interp *interp, Nsf_Class *cl); -#endif -#ifndef NsfRequireObjNamespace_TCL_DECLARED -#define NsfRequireObjNamespace_TCL_DECLARED /* 20 */ EXTERN void NsfRequireObjNamespace(Tcl_Interp *interp, Nsf_Object *object); -#endif -#ifndef NsfCallMethodWithArgs_TCL_DECLARED -#define NsfCallMethodWithArgs_TCL_DECLARED /* 21 */ EXTERN int NsfCallMethodWithArgs(Tcl_Interp *interp, Nsf_Object *object, Tcl_Obj *method, Tcl_Obj *arg, int objc, Tcl_Obj *CONST objv[], int flags); -#endif -#ifndef NsfAddObjectMethod_TCL_DECLARED -#define NsfAddObjectMethod_TCL_DECLARED /* 22 */ EXTERN int NsfAddObjectMethod(Tcl_Interp *interp, struct Nsf_Object *object, CONST char *nm, Tcl_ObjCmdProc *proc, ClientData cd, Tcl_CmdDeleteProc *dp, int flags); -#endif -#ifndef NsfAddClassMethod_TCL_DECLARED -#define NsfAddClassMethod_TCL_DECLARED /* 23 */ EXTERN int NsfAddClassMethod(Tcl_Interp *interp, struct Nsf_Class *cl, CONST char *nm, Tcl_ObjCmdProc *proc, ClientData cd, Tcl_CmdDeleteProc *dp, int flags); -#endif -#ifndef NsfCreate_TCL_DECLARED -#define NsfCreate_TCL_DECLARED /* 24 */ EXTERN int NsfCreate(Tcl_Interp *in, Nsf_Class *class, Tcl_Obj *name, int objc, Tcl_Obj *CONST objv[]); -#endif typedef struct NsfStubHooks { - struct NsfIntStubs *nsfIntStubs; + const struct NsfIntStubs *nsfIntStubs; } NsfStubHooks; typedef struct NsfStubs { int magic; - struct NsfStubHooks *hooks; + const struct NsfStubHooks *hooks; int (*nsf_Init) (Tcl_Interp *interp); /* 0 */ - VOID *reserved1; + void (*reserved1)(void); struct Nsf_Class * (*nsfIsClass) (Tcl_Interp *interp, ClientData cd); /* 2 */ struct Nsf_Object * (*nsfGetObject) (Tcl_Interp *interp, CONST char *name); /* 3 */ struct Nsf_Class * (*nsfGetClass) (Tcl_Interp *interp, CONST char *name); /* 4 */ @@ -217,116 +145,68 @@ #ifdef __cplusplus extern "C" { #endif -extern NsfStubs *nsfStubsPtr; +extern const NsfStubs *nsfStubsPtr; #ifdef __cplusplus } #endif -#if defined(USE_NSF_STUBS) && !defined(USE_NSF_STUB_PROCS) +#if defined(USE_NSF_STUBS) /* * Inline function declarations: */ -#ifndef Nsf_Init #define Nsf_Init \ (nsfStubsPtr->nsf_Init) /* 0 */ -#endif /* Slot 1 is reserved */ -#ifndef NsfIsClass #define NsfIsClass \ (nsfStubsPtr->nsfIsClass) /* 2 */ -#endif -#ifndef NsfGetObject #define NsfGetObject \ (nsfStubsPtr->nsfGetObject) /* 3 */ -#endif -#ifndef NsfGetClass #define NsfGetClass \ (nsfStubsPtr->nsfGetClass) /* 4 */ -#endif -#ifndef NsfDeleteObject #define NsfDeleteObject \ (nsfStubsPtr->nsfDeleteObject) /* 5 */ -#endif -#ifndef NsfRemoveObjectMethod #define NsfRemoveObjectMethod \ (nsfStubsPtr->nsfRemoveObjectMethod) /* 6 */ -#endif -#ifndef NsfRemoveClassMethod #define NsfRemoveClassMethod \ (nsfStubsPtr->nsfRemoveClassMethod) /* 7 */ -#endif -#ifndef Nsf_ObjSetVar2 #define Nsf_ObjSetVar2 \ (nsfStubsPtr->nsf_ObjSetVar2) /* 8 */ -#endif -#ifndef Nsf_ObjGetVar2 #define Nsf_ObjGetVar2 \ (nsfStubsPtr->nsf_ObjGetVar2) /* 9 */ -#endif -#ifndef Nsf_UnsetVar2 #define Nsf_UnsetVar2 \ (nsfStubsPtr->nsf_UnsetVar2) /* 10 */ -#endif -#ifndef NsfDStringPrintf #define NsfDStringPrintf \ (nsfStubsPtr->nsfDStringPrintf) /* 11 */ -#endif -#ifndef NsfPrintError #define NsfPrintError \ (nsfStubsPtr->nsfPrintError) /* 12 */ -#endif -#ifndef NsfErrInProc #define NsfErrInProc \ (nsfStubsPtr->nsfErrInProc) /* 13 */ -#endif -#ifndef NsfObjErrType #define NsfObjErrType \ (nsfStubsPtr->nsfObjErrType) /* 14 */ -#endif -#ifndef NsfStackDump #define NsfStackDump \ (nsfStubsPtr->nsfStackDump) /* 15 */ -#endif -#ifndef NsfSetObjClientData #define NsfSetObjClientData \ (nsfStubsPtr->nsfSetObjClientData) /* 16 */ -#endif -#ifndef NsfGetObjClientData #define NsfGetObjClientData \ (nsfStubsPtr->nsfGetObjClientData) /* 17 */ -#endif -#ifndef NsfSetClassClientData #define NsfSetClassClientData \ (nsfStubsPtr->nsfSetClassClientData) /* 18 */ -#endif -#ifndef NsfGetClassClientData #define NsfGetClassClientData \ (nsfStubsPtr->nsfGetClassClientData) /* 19 */ -#endif -#ifndef NsfRequireObjNamespace #define NsfRequireObjNamespace \ (nsfStubsPtr->nsfRequireObjNamespace) /* 20 */ -#endif -#ifndef NsfCallMethodWithArgs #define NsfCallMethodWithArgs \ (nsfStubsPtr->nsfCallMethodWithArgs) /* 21 */ -#endif -#ifndef NsfAddObjectMethod #define NsfAddObjectMethod \ (nsfStubsPtr->nsfAddObjectMethod) /* 22 */ -#endif -#ifndef NsfAddClassMethod #define NsfAddClassMethod \ (nsfStubsPtr->nsfAddClassMethod) /* 23 */ -#endif -#ifndef NsfCreate #define NsfCreate \ (nsfStubsPtr->nsfCreate) /* 24 */ -#endif -#endif /* defined(USE_NSF_STUBS) && !defined(USE_NSF_STUB_PROCS) */ +#endif /* defined(USE_NSF_STUBS) */ /* !END!: Do not edit above this line. */ Index: generic/nsfIntDecls.h =================================================================== diff -u -r2ce5a2cab4731930a5b26455c56806fc201de23c -r7352c1e6b67222b5868f761f5e471a38ca92bc4b --- generic/nsfIntDecls.h (.../nsfIntDecls.h) (revision 2ce5a2cab4731930a5b26455c56806fc201de23c) +++ generic/nsfIntDecls.h (.../nsfIntDecls.h) (revision 7352c1e6b67222b5868f761f5e471a38ca92bc4b) @@ -31,26 +31,26 @@ typedef struct NsfIntStubs { int magic; - struct NsfIntStubHooks *hooks; + const struct NsfIntStubHooks *hooks; } NsfIntStubs; #ifdef __cplusplus extern "C" { #endif -extern NsfIntStubs *nsfIntStubsPtr; +extern const NsfIntStubs *nsfIntStubsPtr; #ifdef __cplusplus } #endif -#if defined(USE_NSF_STUBS) && !defined(USE_NSF_STUB_PROCS) +#if defined(USE_NSF_STUBS) /* * Inline function declarations: */ -#endif /* defined(USE_NSF_STUBS) && !defined(USE_NSF_STUB_PROCS) */ +#endif /* defined(USE_NSF_STUBS) */ /* !END!: Do not edit above this line. */ Index: generic/nsfStubInit.c =================================================================== diff -u -ra09faeafaaacd8dcd4c52cdb86653993e8dc499a -r7352c1e6b67222b5868f761f5e471a38ca92bc4b --- generic/nsfStubInit.c (.../nsfStubInit.c) (revision a09faeafaaacd8dcd4c52cdb86653993e8dc499a) +++ generic/nsfStubInit.c (.../nsfStubInit.c) (revision 7352c1e6b67222b5868f761f5e471a38ca92bc4b) @@ -25,20 +25,20 @@ /* !BEGIN!: Do not edit below this line. */ -NsfIntStubs nsfIntStubs = { +static const NsfIntStubs nsfIntStubs = { TCL_STUB_MAGIC, - NULL, + 0, }; -static NsfStubHooks nsfStubHooks = { +static const NsfStubHooks nsfStubHooks = { &nsfIntStubs }; -NsfStubs nsfStubs = { +const NsfStubs nsfStubs = { TCL_STUB_MAGIC, &nsfStubHooks, Nsf_Init, /* 0 */ - NULL, /* 1 */ + 0, /* 1 */ NsfIsClass, /* 2 */ NsfGetObject, /* 3 */ NsfGetClass, /* 4 */ Index: library/xotcl/tests/testx.xotcl =================================================================== diff -u -r9a0b8bb0992be0561d8187c275fc1d9b7e0bbcd0 -r7352c1e6b67222b5868f761f5e471a38ca92bc4b --- library/xotcl/tests/testx.xotcl (.../testx.xotcl) (revision 9a0b8bb0992be0561d8187c275fc1d9b7e0bbcd0) +++ library/xotcl/tests/testx.xotcl (.../testx.xotcl) (revision 7352c1e6b67222b5868f761f5e471a38ca92bc4b) @@ -4401,3 +4401,5 @@ o test puts "PASSED ::topLevelCommands" + +puts stderr "=======ALLINSTANCES: [::xotcl::Object allinstances]"