Index: generic/nsf.c =================================================================== diff -u -rd9c458b8e9f74e94829dec92c814894e8cff0577 -r42d2240c0949a258303e3213574aa96fd0ef4e1a --- generic/nsf.c (.../nsf.c) (revision d9c458b8e9f74e94829dec92c814894e8cff0577) +++ generic/nsf.c (.../nsf.c) (revision 42d2240c0949a258303e3213574aa96fd0ef4e1a) @@ -550,6 +550,9 @@ * *---------------------------------------------------------------------- */ +static void NsfDeprecatedCmd(Tcl_Interp *interp, CONST char *what, CONST char *oldCmd, CONST char *newCmd) + nonnull(1) nonnull(2) nonnull(3) nonnull(4); + static void NsfDeprecatedCmd(Tcl_Interp *interp, CONST char *what, CONST char *oldCmd, CONST char *newCmd) { Tcl_DString ds, *dsPtr = &ds; @@ -1227,14 +1230,14 @@ void ObjTrace(char *string, NsfObject *object) { - if (object) { - fprintf(stderr, "--- %s tcl %p %s (%d %p) nsf %p (%d) %s \n", string, - object->cmdName, object->cmdName->typePtr ? object->cmdName->typePtr->name : "NULL", - object->cmdName->refCount, object->cmdName->internalRep.twoPtrValue.ptr1, - object, object->refCount, ObjectName(object)); - } else { - fprintf(stderr, "--- No object: %s\n", string); - } + + assert(string); + assert(object); + + fprintf(stderr, "--- %s tcl %p %s (%d %p) nsf %p (%d) %s \n", string, + object->cmdName, object->cmdName->typePtr ? object->cmdName->typePtr->name : "NULL", + object->cmdName->refCount, object->cmdName->internalRep.twoPtrValue.ptr1, + object, object->refCount, ObjectName(object)); } #else # define ObjTrace(a, b) @@ -1302,35 +1305,8 @@ return 0; } -#if 0 /* *---------------------------------------------------------------------- - * NSCutNsfClasses -- - * - * Removes preceding ::nsf::classes from a string - * - * Currently not used; either make it public or remove it. - * - * Results: - * NsfObject and *fromClasses - * - * Side effects: - * None. - * - *---------------------------------------------------------------------- - */ -NSF_INLINE static CONST char * NSCutNsfClasses(CONST char *string) nonnull(1); - -NSF_INLINE static CONST char * -NSCutNsfClasses(CONST char *string) { - assert(string); - assert(strncmp((string), "::nsf::classes", 14) == 0); - return string+14; -} -#endif - -/* - *---------------------------------------------------------------------- * GetObjectFromNsName -- * * Get object or class from a fully qualified cmd name, such as @@ -1344,11 +1320,9 @@ * *---------------------------------------------------------------------- */ -NSF_INLINE static NsfObject *GetObjectFromNsName(Tcl_Interp *interp, CONST char *string, int *fromClassNS) +NSF_INLINE static NsfObject * GetObjectFromNsName(Tcl_Interp *interp, CONST char *string, int *fromClassNS) nonnull(1) nonnull(2) nonnull(3); -NSF_INLINE static NsfObject * GetObjectFromNsName(Tcl_Interp *interp, CONST char *string, int *fromClassNS) nonnull(1) nonnull(2) nonnull(3); - NSF_INLINE static NsfObject * GetObjectFromNsName(Tcl_Interp *interp, CONST char *string, int *fromClassNS) { CONST char *className; @@ -1589,7 +1563,7 @@ return result; } -#if 0 +#if defined(NSF_EXPERIMENTAL) static int NsfCallArgumentUnknownHandler(Tcl_Interp *interp, Tcl_Obj *methodObj, Tcl_Obj *argumentObj, @@ -1604,6 +1578,11 @@ Tcl_Obj *ov[4]; int result, oc = 3; + assert(interp); + assert(methodObj); + assert(argumentObj); + assert(object); + /*fprintf(stderr, "try ::nsf::argument::unknown for '%s'\n", ObjStr(nameObj));*/ ov[0] = NsfGlobalObjs[NSF_ARGUMENT_UNKNOWN_HANDLER]; @@ -3349,7 +3328,7 @@ * *---------------------------------------------------------------------- */ -// why not found? +static Proc * FindProcMethod(Tcl_Namespace *nsPtr, CONST char *methodName) nonnull(1) nonnull(2); static Proc * FindProcMethod(Tcl_Namespace *nsPtr, CONST char *methodName) { @@ -3447,6 +3426,8 @@ * *---------------------------------------------------------------------- */ +static NsfClass * SearchCMethod(/*@notnull@*/ NsfClass *cl, CONST char *methodName, Tcl_Command *cmdPtr) nonnull(1) nonnull(2) nonnull(3); + static NsfClass * SearchCMethod(/*@notnull@*/ NsfClass *cl, CONST char *methodName, Tcl_Command *cmdPtr) { assert(cl); @@ -3470,6 +3451,9 @@ * *---------------------------------------------------------------------- */ +static NsfClass * SearchSimpleCMethod(Tcl_Interp *interp, /*@notnull@*/ NsfClass *cl, + Tcl_Obj *methodObj, Tcl_Command *cmdPtr) nonnull(1) nonnull(2) nonnull(3) nonnull(4); + static NsfClass * SearchSimpleCMethod(Tcl_Interp *interp, /*@notnull@*/ NsfClass *cl, Tcl_Obj *methodObj, Tcl_Command *cmdPtr) { @@ -3494,6 +3478,9 @@ * *---------------------------------------------------------------------- */ +static NsfClass * SearchComplexCMethod(Tcl_Interp *interp, /*@notnull@*/ NsfClass *cl, + Tcl_Obj *methodObj, Tcl_Command *cmdPtr) nonnull(1) nonnull(2) nonnull(3) nonnull(4); + static NsfClass * SearchComplexCMethod(Tcl_Interp *interp, /*@notnull@*/ NsfClass *cl, Tcl_Obj *methodObj, Tcl_Command *cmdPtr) { @@ -3532,6 +3519,8 @@ *---------------------------------------------------------------------- */ +static Tcl_Command ObjectFindMethod(Tcl_Interp *interp, NsfObject *object, Tcl_Obj *methodObj, NsfClass **pcl) nonnull(1) nonnull(2) nonnull(3) nonnull(4); + static Tcl_Command ObjectFindMethod(Tcl_Interp *interp, NsfObject *object, Tcl_Obj *methodObj, NsfClass **pcl) { Tcl_Command cmd = NULL; @@ -3683,6 +3672,8 @@ * *---------------------------------------------------------------------- */ +static void ObjectSystemsCheckSystemMethod(Tcl_Interp *interp, CONST char *methodName, NsfObject *object) nonnull(1) nonnull(2) nonnull(3); + static void ObjectSystemsCheckSystemMethod(Tcl_Interp *interp, CONST char *methodName, NsfObject *object) { NsfObjectSystem *osPtr, *defOsPtr = GetObjectSystem(object); @@ -3981,6 +3972,9 @@ Tcl_Obj * NsfMethodObj(NsfObject *object, int methodIdx) { + + assert(object); // autoadded + NsfObjectSystem *osPtr = GetObjectSystem(object); /* fprintf(stderr, "NsfMethodObj object %s os %p idx %d %s methodObj %p\n", @@ -4646,6 +4640,8 @@ InterpGetFrameAndFlags(Tcl_Interp *interp, CallFrame **framePtr) { int frameFlags; + assert(interp); // autoadded + assert(framePtr); *framePtr = Tcl_Interp_varFramePtr(interp); frameFlags = Tcl_CallFrame_isProcCallFrame(*framePtr); @@ -5536,6 +5532,9 @@ NSF_INLINE static int NSCheckColons(CONST char *name, size_t l) { + + assert(name); // autoadded + register CONST char *n = name; if (*n == '\0') return 0; /* empty name */ if (l == 0) l = strlen(name); @@ -5684,6 +5683,9 @@ Tcl_DString ds, *dsPtr = &ds; int parentNameLength; + assert(interp); // autoadded + assert(nameString); // autoadded + /*fprintf(stderr, "NSCheckNamespace %s parentNsPtr %p\n", nameString, parentNsPtr);*/ /* @@ -5787,6 +5789,8 @@ NSFindCommand(Tcl_Interp *interp, CONST char *name) { Tcl_Command cmd; + assert(interp); // autoadded + assert(name); assert(*name == ':' && *(name + 1) == ':'); @@ -5860,6 +5864,8 @@ *---------------------------------------------------------------------- */ +static NsfObject * GetHiddenObjectFromCmd(Tcl_Interp *interp, Tcl_Command cmdPtr) nonnull(1); + static NsfObject * GetHiddenObjectFromCmd(Tcl_Interp *interp, Tcl_Command cmdPtr) { Interp *iPtr = (Interp *) interp; @@ -5976,6 +5982,8 @@ * *---------------------------------------------------------------------- */ +static int CanRedefineCmd(Tcl_Interp *interp, Tcl_Namespace *nsPtr, NsfObject *object, CONST char *methodName) nonnull(1) nonnull(2) nonnull(3) nonnull(4); + static int CanRedefineCmd(Tcl_Interp *interp, Tcl_Namespace *nsPtr, NsfObject *object, CONST char *methodName) { int result, ok; @@ -6036,6 +6044,10 @@ * *---------------------------------------------------------------------- */ +int NsfAddObjectMethod(Tcl_Interp *interp, Nsf_Object *object1, CONST char *methodName, + Tcl_ObjCmdProc *proc, ClientData clientData, Tcl_CmdDeleteProc *dp, + int flags) nonnull(1) nonnull(2) nonnull(3) nonnull(4) nonnull(6); + int NsfAddObjectMethod(Tcl_Interp *interp, Nsf_Object *object1, CONST char *methodName, Tcl_ObjCmdProc *proc, ClientData clientData, Tcl_CmdDeleteProc *dp, @@ -6083,6 +6095,10 @@ * *---------------------------------------------------------------------- */ +int NsfAddClassMethod(Tcl_Interp *interp, Nsf_Class *class, CONST char *methodName, + Tcl_ObjCmdProc *proc, ClientData clientData, Tcl_CmdDeleteProc *dp, + int flags) nonnull(1) nonnull(2) nonnull(3) nonnull(4) nonnull(6); + int NsfAddClassMethod(Tcl_Interp *interp, Nsf_Class *class, CONST char *methodName, Tcl_ObjCmdProc *proc, ClientData clientData, Tcl_CmdDeleteProc *dp, @@ -6248,6 +6264,9 @@ CallStackDoDestroy(Tcl_Interp *interp, NsfObject *object) { Tcl_Command oid; + assert(interp); // autoadded + assert(object); // autoadded + /*fprintf(stderr, "CallStackDoDestroy %p flags %.6x\n", object, object->flags);*/ PRINTOBJ("CallStackDoDestroy", object); @@ -6469,6 +6488,8 @@ return new; } +static void CmdListReplaceCmd(NsfCmdList *replace, Tcl_Command cmd, NsfClass *clorobj) nonnull(1) nonnull(3); + static void CmdListReplaceCmd(NsfCmdList *replace, Tcl_Command cmd, NsfClass *clorobj) { Tcl_Command del = replace->cmdPtr; @@ -6478,12 +6499,17 @@ NsfCommandRelease(del); } -#if 0 +#if NSF_DEBUGGING /** for debug purposes only */ static void CmdListPrint(Tcl_Interp *interp, CONST char *title, NsfCmdList *cmdList) nonnull(1) nonnull(2) nonnull(3); static void CmdListPrint(Tcl_Interp *interp, CONST char *title, NsfCmdList *cmdList) { + + assert(interp); // autoadded + assert(title); // autoadded + assert(cmdList); // autoadded + if (title) { fprintf(stderr, "%s %p:\n", title, cmdList); } @@ -6872,6 +6898,8 @@ Tcl_Obj **ov; int oc; NsfTclObjList *last = NULL; + assert(interp); // autoadded + if (aObj && Tcl_ListObjGetElements(interp, aObj, &oc, &ov) == TCL_OK) { if (oc > 0) { int i; @@ -6904,6 +6932,9 @@ NsfObjectOpt *opt = object->opt; Tcl_Obj *resultObj; + assert(interp); // autoadded + assert(object); // autoadded + if (!opt) return TCL_OK; resultObj = Tcl_GetObjResult(interp); @@ -7196,6 +7227,10 @@ Tcl_Obj **ovArgs; opt->checkoptions = CHECK_NONE; + assert(interp); // autoadded + assert(object); // autoadded + assert(arg); // autoadded + if (Tcl_ListObjGetElements(interp, arg, &ocArgs, &ovArgs) == TCL_OK && ocArgs > 0) { int i; @@ -7241,6 +7276,11 @@ static void AssertionSetInvariants(Tcl_Interp *interp, NsfAssertionStore **assertions, Tcl_Obj *arg) { + + assert(interp); // autoadded + assert(assertions); // autoadded + assert(arg); // autoadded + if (*assertions) { TclObjListFreeList((*assertions)->invariants); } else { @@ -8617,6 +8657,8 @@ static NsfCmdList * SeekCurrent(Tcl_Command cmd, register NsfCmdList *cmdListPtr) { + assert(cmdListPtr); // autoadded + if (cmd) { for (; cmdListPtr; cmdListPtr = cmdListPtr->nextPtr) { if (cmdListPtr->cmdPtr == cmd) { @@ -8643,6 +8685,8 @@ *---------------------------------------------------------------------- */ +static int CanInvokeMixinMethod(Tcl_Interp *interp, NsfObject *object, Tcl_Command cmd, NsfCmdList *cmdList) nonnull(1) nonnull(2) nonnull(4); + static int CanInvokeMixinMethod(Tcl_Interp *interp, NsfObject *object, Tcl_Command cmd, NsfCmdList *cmdList) { int result = TCL_OK; @@ -11015,6 +11059,8 @@ Tcl_Obj *argStringObj = Tcl_NewObj(); Nsf_Param CONST *pPtr; + assert(paramsPtr); // autoadded + INCR_REF_COUNT2("paramDefsObj", argStringObj); for (pPtr = paramsPtr; pPtr->name; pPtr++) { @@ -11771,6 +11817,10 @@ int somevar; NsfRuntimeState *rst = RUNTIME_STATE(interp); + assert(interp); // autoadded + assert(prefix); // autoadded + assert(fullMethodName); // autoadded + if (rst->exitHandlerDestroyRound == NSF_EXITHANDLER_OFF) { # if TCL_STACK_GROWS_UP if ((void *)&somevar < rst->bottomOfStack) { @@ -12090,6 +12140,8 @@ NsfObject *object; int flags; + assert(interp); // autoadded + assert(cscPtr); object = cscPtr->self; flags = cscPtr->flags; @@ -12158,6 +12210,8 @@ /*#define INHERIT_CLASS_METHODS 1*/ #if defined(INHERIT_CLASS_METHODS) +static Tcl_Command NsfFindClassMethod(Tcl_Interp *interp, NsfClass *cl, CONST char *methodName) nonnull(1) nonnull(2) nonnull(3); + static Tcl_Command NsfFindClassMethod(Tcl_Interp *interp, NsfClass *cl, CONST char *methodName) { Tcl_Command cmd; @@ -12219,6 +12273,9 @@ int validCscPtr = 1; NsfRuntimeState *rst = RUNTIME_STATE(interp); + assert(interp); // autoadded + assert(objv); // autoadded + /* none of the higher copy-flags must be passed */ assert((flags & (NSF_CSC_COPY_FLAGS & 0xFFF000)) == 0); @@ -12821,10 +12878,13 @@ * *---------------------------------------------------------------------- */ +static int DispatchInitMethod(Tcl_Interp *interp, NsfObject *object, + int objc, Tcl_Obj *CONST objv[], int flags) + nonnull(1) nonnull(2); + static int DispatchInitMethod(Tcl_Interp *interp, NsfObject *object, - int objc, Tcl_Obj *CONST objv[], - int flags) { + int objc, Tcl_Obj *CONST objv[], int flags) { int result; Tcl_Obj *methodObj; @@ -13633,6 +13693,9 @@ *---------------------------------------------------------------------- */ +static int ConvertViaCmd(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param CONST *pPtr, + ClientData *clientData, Tcl_Obj **outObjPtr) nonnull(1) nonnull(2) nonnull(3) nonnull(4) nonnull(5); + static int ConvertViaCmd(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param CONST *pPtr, ClientData *clientData, Tcl_Obj **outObjPtr) { @@ -14937,6 +15000,11 @@ return result; } +static int MakeMethod(Tcl_Interp *interp, NsfObject *defObject, NsfObject *regObject, + NsfClass *cl, Tcl_Obj *nameObj, Tcl_Obj *args, Tcl_Obj *body, + Tcl_Obj *precondition, Tcl_Obj *postcondition, + int withInner_namespace, int checkAlwaysFlag) nonnull(1) nonnull(2) nonnull(3) nonnull(4) nonnull(5) nonnull(6) nonnull(7) nonnull(8) nonnull(9); + static int MakeMethod(Tcl_Interp *interp, NsfObject *defObject, NsfObject *regObject, NsfClass *cl, Tcl_Obj *nameObj, Tcl_Obj *args, Tcl_Obj *body, @@ -16020,6 +16088,11 @@ /* * Next Primitive Handling */ +NSF_INLINE static int NextSearchMethod(NsfObject *object, Tcl_Interp *interp, NsfCallStackContent *cscPtr, + NsfClass **clPtr, CONST char **methodNamePtr, Tcl_Command *cmdPtr, + int *isMixinEntry, int *isFilterEntry, + int *endOfFilterChain, Tcl_Command *currentCmdPtr) nonnull(1) nonnull(2) nonnull(3) nonnull(4) nonnull(5) nonnull(6) nonnull(7) nonnull(8) nonnull(9) nonnull(10); + NSF_INLINE static int NextSearchMethod(NsfObject *object, Tcl_Interp *interp, NsfCallStackContent *cscPtr, NsfClass **clPtr, CONST char **methodNamePtr, Tcl_Command *cmdPtr, @@ -16316,6 +16389,9 @@ Tcl_Obj **nobjv = data[0]; NsfCallStackContent *cscPtr = data[1]; + assert(data); // autoadded + assert(interp); // autoadded + /*fprintf(stderr, "***** NextInvokeFinalize cscPtr %p flags %.6x is next %d result %d unk %d\n", cscPtr, cscPtr->flags, cscPtr->flags & NSF_CSC_CALL_IS_NEXT, result, RUNTIME_STATE(interp)->unknown);*/ @@ -17733,6 +17809,9 @@ ChangeClass(Tcl_Interp *interp, NsfObject *object, NsfClass *cl) { assert(object); + assert(interp); // autoadded + assert(cl); // autoadded + NsfInstanceMethodEpochIncr("ChangeClass"); /*fprintf(stderr, "changing %s to class %s ismeta %d\n", @@ -18127,6 +18206,10 @@ ClientData NsfGetObjClientData(Tcl_Interp *interp, Nsf_Object *object1) { + + assert(interp); // autoadded + assert(object1); // autoadded + NsfObject *object = (NsfObject *) object1; return (object && object->opt) ? object->opt->clientData : NULL; } @@ -18148,6 +18231,10 @@ ClientData NsfGetClassClientData(Tcl_Interp *interp, Nsf_Class *cli) { + + assert(interp); // autoadded + assert(cli); // autoadded + NsfClass *cl = (NsfClass *) cli; return (cl && cl->opt) ? cl->opt->clientData : NULL; } @@ -18304,6 +18391,8 @@ * *---------------------------------------------------------------------- */ +static int NsfSetterMethod(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) nonnull(2) nonnull(4); + static int NsfSetterMethod(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { SetterCmdClientData *cd = (SetterCmdClientData *)clientData; @@ -18682,6 +18771,9 @@ *---------------------------------------------------------------------- */ +static int NsfForwardMethod(ClientData clientData, Tcl_Interp *interp, + int objc, Tcl_Obj *CONST objv[]) nonnull(2) nonnull(4); + static int NsfForwardMethod(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { @@ -18896,6 +18988,10 @@ *---------------------------------------------------------------------- */ +static int NsfProcAliasMethod(ClientData clientData, + Tcl_Interp *interp, int objc, + Tcl_Obj *CONST objv[]) nonnull(2) nonnull(4); + static int NsfProcAliasMethod(ClientData clientData, Tcl_Interp *interp, int objc, @@ -18923,6 +19019,8 @@ *---------------------------------------------------------------------- */ +static int NsfObjscopedMethod(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) nonnull(2) nonnull(4); + static int NsfObjscopedMethod(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { AliasCmdClientData *tcd = (AliasCmdClientData *)clientData; @@ -19024,6 +19122,10 @@ * *---------------------------------------------------------------------- */ +static int CallConfigureMethod(Tcl_Interp *interp, NsfObject *object, CONST char *initString, + CONST char *methodName, + int argc, Tcl_Obj *CONST argv[]) nonnull(1) nonnull(2) nonnull(3) nonnull(4) nonnull(6); + static int CallConfigureMethod(Tcl_Interp *interp, NsfObject *object, CONST char *initString, CONST char *methodName, @@ -20334,6 +20436,12 @@ } } +static int ListMethod(Tcl_Interp *interp, + NsfObject *regObject, + NsfObject *defObject, + CONST char *methodName, Tcl_Command cmd, + int subcmd, int withPer_object) nonnull(1) nonnull(2) nonnull(3) nonnull(4); + static int ListMethod(Tcl_Interp *interp, NsfObject *regObject, @@ -21515,6 +21623,10 @@ NSF_INLINE static Tcl_Command AliasDereference(Tcl_Interp *interp, NsfObject *object, CONST char *methodName, Tcl_Command cmd) { + assert(interp); // autoadded + assert(object); // autoadded + assert(methodName); // autoadded + if (unlikely(Tcl_Command_objProc(cmd) == NsfProcAliasMethod)) { AliasCmdClientData *tcd = (AliasCmdClientData *)Tcl_Command_objClientData(cmd); @@ -21543,6 +21655,13 @@ int with_checkAlways, int withInner_namespace, int withPer_object, NsfObject *regObject, Tcl_Obj *nameObj, Tcl_Obj *argumentsObj, Tcl_Obj *bodyObj) { + + assert(interp); // autoadded + assert(defObject); // autoadded + assert(nameObj); // autoadded + assert(argumentsObj); // autoadded + assert(bodyObj); // autoadded + /* * Dummy stub; used, when compiled without NSF_ASSEMBLE */ @@ -21651,6 +21770,9 @@ */ static int NsfShowStackCmd(Tcl_Interp *interp) { + + assert(interp); // autoadded + NsfShowStack(interp); return TCL_OK; } @@ -21663,6 +21785,8 @@ NsfObjectSystem *osPtr; NsfCmdList *instances = NULL, *entry; + assert(interp); // autoadded + /* * Collect all instances from all object systems. */ @@ -21779,6 +21903,8 @@ CallFrame *varFramePtr = Tcl_Interp_varFramePtr(interp); Proc *proc = Tcl_CallFrame_procPtr(varFramePtr); + assert(interp); // autoadded + if (likely(proc != NULL)) { CompiledLocal *ap; Var *varPtr; @@ -21811,6 +21937,12 @@ #if !defined(NSF_ASSEMBLE) static int NsfAsmProcCmd(Tcl_Interp *interp, int with_ad, int with_checkAlways, Tcl_Obj *nameObj, Tcl_Obj *arguments, Tcl_Obj *body) { + + assert(interp); // autoadded + assert(nameObj); // autoadded + assert(arguments); // autoadded + assert(body); // autoadded + return TCL_OK; } #else @@ -21829,6 +21961,11 @@ return result; } + assert(interp); // autoadded + assert(nameObj); // autoadded + assert(arguments); // autoadded + assert(body); // autoadded + if (parsedParam.paramDefs) { /* * We need parameter handling. @@ -21856,6 +21993,8 @@ NsfConfigureCmd(Tcl_Interp *interp, int configureoption, Tcl_Obj *valueObj) { int bool; + assert(interp); // autoadded + #if defined(NSF_DTRACE) if (NSF_DTRACE_CONFIGURE_PROBE_ENABLED()) { /* TODO: opts copied from tclAPI.h; maybe make global value? */ @@ -21987,6 +22126,8 @@ CONST char *methodName = ObjStr(nobjv[0]); NsfObject *self = GetSelfObj(interp); + assert(interp); // autoadded + if (unlikely(self == NULL)) { return NsfNoCurrentObjectError(interp, methodName); } @@ -22070,6 +22211,10 @@ int flags = 0; int useCmdDispatch = 1; + assert(interp); // autoadded + assert(object); // autoadded + assert(commandObj); // autoadded + /*fprintf(stderr, "NsfDirectDispatchCmd obj=%s, cmd m='%s'\n", ObjectName(object), methodName);*/ if (unlikely(*methodName != ':')) { @@ -22175,6 +22320,10 @@ Tcl_Obj *commandObj, int nobjc, Tcl_Obj *CONST nobjv[]) { int flags = NSF_CM_NO_UNKNOWN|NSF_CSC_IMMEDIATE|NSF_CM_IGNORE_PERMISSIONS|NSF_CM_NO_SHIFT; + assert(interp); // autoadded + assert(object); // autoadded + assert(commandObj); // autoadded + /*fprintf(stderr, "NsfDispatchCmd obj=%s, cmd m='%s' nobjc %d\n", ObjectName(object), ObjStr(commandObj), nobjc);*/ @@ -22208,6 +22357,8 @@ NsfFinalizeCmd(Tcl_Interp *interp, int withKeepvars) { int result; + assert(interp); // autoadded + #if defined(NSF_STACKCHECK) {NsfRuntimeState *rst = RUNTIME_STATE(interp); @@ -22264,6 +22415,9 @@ static int NsfInterpObjCmd(Tcl_Interp *interp, CONST char *name, int objc, Tcl_Obj *CONST objv[]) { + assert(interp); // autoadded + assert(name); // autoadded + /* create a fresh Tcl interpreter, or pass command to an existing one */ if (NsfCallCommand(interp, NSF_INTERP, objc, objv) != TCL_OK) { return TCL_ERROR; @@ -22315,6 +22469,10 @@ Nsf_Param *paramPtr = NULL; int result; + assert(interp); // autoadded + assert(constraintObj); // autoadded + assert(valueObj); // autoadded + result = ParameterCheck(interp, constraintObj, valueObj, name ? name : "value:", 1, (name != NULL), doConfigureParameter, @@ -22365,6 +22523,8 @@ NsfClass *cl = (withPer_object || ! NsfObjectIsClass(object)) ? NULL : (NsfClass *)object; NsfObject *oldTargetObject, *newTargetObject; + assert(cmdName); // autoadded + assert(interp); // autoadded assert(object); // autoadded assert(methodName); // autoadded @@ -22562,6 +22722,9 @@ #if defined(NSF_WITH_ASSERTIONS) NsfClass *class; + assert(interp); // autoadded + assert(object); // autoadded + switch (subcmd) { case AssertionsubcmdCheckIdx: if (arg) { @@ -22626,6 +22789,12 @@ (withPer_object || ! NsfObjectIsClass(defObject)) ? NULL : (NsfClass *)defObject; + assert(interp); // autoadded + assert(defObject); // autoadded + assert(nameObj); // autoadded + assert(arguments); // autoadded + assert(body); // autoadded + if (cl == 0) { RequireObjNamespace(interp, defObject); } @@ -22646,6 +22815,10 @@ NsfMethodDeleteCmd(Tcl_Interp *interp, NsfObject *object, int withPer_object, Tcl_Obj *methodNameObj) { + assert(interp); // autoadded + assert(object); // autoadded + assert(methodNameObj); // autoadded + NsfObject *regObject, *defObject; CONST char *methodName1 = NULL; NsfClass *cl = withPer_object == 0 && NsfObjectIsClass(object) ? (NsfClass *)object : NULL; @@ -22714,6 +22887,10 @@ ForwardCmdClientData *tcd = NULL; int result; + assert(interp); // autoadded + assert(object); // autoadded + assert(methodObj); // autoadded + result = ForwardProcessOptions(interp, methodObj, withDefault, withEarlybinding, withMethodprefix, withFrame, withVerbose, @@ -22765,6 +22942,10 @@ NsfClass *cl = withPer_object == 0 && NsfObjectIsClass(object) ? (NsfClass *)object : NULL; int flag, fromClassNS = cl != NULL; + assert(interp); // autoadded + assert(object); // autoadded + assert(methodObj); // autoadded + cmd = ResolveMethodName(interp, cl ? cl->nsPtr : object->nsPtr, methodObj, NULL, NULL, &defObject, NULL, &fromClassNS); /*fprintf(stderr, "methodProperty for method '%s' prop %d value %s => cl %p cmd %p\n", @@ -22908,6 +23089,9 @@ int fromClassNS = 0; Tcl_Command cmd; + assert(interp); // autoadded + assert(methodNameObj); // autoadded + cmd = ResolveMethodName(interp, NULL, methodNameObj, NULL, ®Object, NULL, NULL, &fromClassNS); @@ -22936,6 +23120,10 @@ size_t j, length; int result; + assert(interp); // autoadded + assert(object); // autoadded + assert(parameter); // autoadded + if (unlikely(*methodName == '-' || *methodName == ':')) { return NsfPrintError(interp, "invalid setter name \"%s\" (must not start with a dash or colon)", methodName); @@ -22999,6 +23187,10 @@ Tcl_Obj *newNameObj = NULL; int result; + assert(interp); // autoadded + assert(class); // autoadded + assert(nameObj); // autoadded + /* * If the provided name is empty, make a new symbol */ @@ -23056,6 +23248,9 @@ NsfObjectExistsCmd(Tcl_Interp *interp, Tcl_Obj *valueObj) { NsfObject *object; + assert(interp); // autoadded + assert(valueObj); // autoadded + /* * Pass the object as Tcl_Obj, since we do not want to raise an error in * case the object does not exist. @@ -23076,6 +23271,9 @@ NsfObjectPropertyCmd(Tcl_Interp *interp, NsfObject *object, int objectproperty, Tcl_Obj *valueObj) { int flags = 0, allowSet = 0; + assert(interp); // autoadded + assert(object); // autoadded + switch (objectproperty) { case ObjectpropertyInitializedIdx: flags = NSF_INIT_CALLED; allowSet = 1; break; case ObjectpropertyClassIdx: flags = NSF_IS_CLASS; break; @@ -23141,6 +23339,9 @@ NsfObjectQualifyCmd(Tcl_Interp *interp, Tcl_Obj *nameObj) { CONST char *nameString = ObjStr(nameObj); + assert(interp); // autoadded + assert(nameObj); // autoadded + if (isAbsolutePath(nameString)) { Tcl_SetObjResult(interp, nameObj); } else { @@ -23164,6 +23365,10 @@ char *className = ObjStr(Class); NsfObjectSystem *osPtr = NEW(NsfObjectSystem); + assert(interp); // autoadded + assert(Object); // autoadded + assert(Class); // autoadded + memset(osPtr, 0, sizeof(NsfObjectSystem)); object = isAbsolutePath(objectName) ? Object : @@ -23282,6 +23487,9 @@ NsfObject *self = GetSelfObj(interp); int flags, result; + assert(interp); // autoadded + assert(methodObj); // autoadded + if (unlikely(self == NULL)) { return NsfNoCurrentObjectError(interp, method_definitions[NsfMyCmdIdx].methodName); } @@ -23347,6 +23555,8 @@ CONST char *methodName = NULL; Tcl_Obj **nobjv = NULL, **ov; + assert(interp); // autoadded + if (arguments) { /* Arguments were provided. */ int result = Tcl_ListObjGetElements(interp, arguments, &oc, &ov); @@ -23384,6 +23594,10 @@ Tcl_CallFrame frame, *framePtr = &frame; Tcl_Obj *varNameObj = NULL; + assert(interp); // autoadded + assert(fromNs); // autoadded + assert(toNs); // autoadded + TclGetNamespaceFromObj(interp, fromNs, &fromNsPtr); if (fromNsPtr) { @@ -23492,6 +23706,9 @@ Nsf_Param *paramsPtr; int result; + assert(interp); // autoadded + assert(parameterspec); // autoadded + if (parametersubcmd != ParametersubcmdDefaultIdx && varname != NULL) { return NsfPrintError(interp, "parameter::get: provided third arguement is only valid for querying defaults"); } @@ -23689,6 +23906,9 @@ Tcl_Obj **objv, *resultObj; int result = TCL_OK, i, objc; + assert(interp); // autoadded + assert(slotListObj); // autoadded + if (Tcl_ListObjGetElements(interp, slotListObj, &objc, &objv) != TCL_OK) { return NsfPrintError(interp, "NsfParameterSpecsCmd: invalid slot object list"); } @@ -23798,6 +24018,11 @@ return result; } + assert(interp); // autoadded + assert(nameObj); // autoadded + assert(arguments); // autoadded + assert(body); // autoadded + if (parsedParam.paramDefs) { /* * We need parameter handling. In such cases, a thin C-based layer @@ -23839,6 +24064,9 @@ NsfClassOpt *clopt = NULL, *nclopt = NULL; int i; + assert(interp); // autoadded + assert(object); // autoadded + /*fprintf(stderr, "NsfRelationCmd %s rel=%d val='%s'\n", ObjectName(object), relationtype, valueObj ? ObjStr(valueObj) : "NULL");*/ @@ -24125,6 +24353,8 @@ Tcl_CallFrame *framePtr; int result = TCL_OK; + assert(interp); // autoadded + if (selfoption == 0 || selfoption == CurrentoptionObjectIdx) { if (likely(object != NULL)) { Tcl_SetObjResult(interp, object->cmdName); @@ -24283,6 +24513,8 @@ NsfSelfCmd(Tcl_Interp *interp) { NsfObject *object = GetSelfObj(interp); + assert(interp); // autoadded + if (likely(object != NULL)) { Tcl_SetObjResult(interp, object->cmdName); return TCL_OK; @@ -24304,6 +24536,10 @@ NSF_VAR_TRIGGER_TRACE|NSF_VAR_REQUIRE_DEFINED| (withArray ? NSF_VAR_ISARRAY : 0); + assert(interp); // autoadded + assert(object); // autoadded + assert(varName); // autoadded + if (CheckVarName(interp, varName) != TCL_OK) { return TCL_ERROR; } @@ -24355,6 +24591,10 @@ static int NsfVarImportCmd(Tcl_Interp *interp, NsfObject *object, int objc, Tcl_Obj *CONST objv[]) { + + assert(interp); // autoadded + assert(object); // autoadded + return NsfVarImport(interp, object, "importvar", objc, objv); } @@ -24370,6 +24610,10 @@ NsfVarSetCmd(Tcl_Interp *interp, int withArray, NsfObject *object, Tcl_Obj *varName, Tcl_Obj *valueObj) { + assert(interp); // autoadded + assert(object); // autoadded + assert(varName); // autoadded + if (CheckVarName(interp, ObjStr(varName)) != TCL_OK) { return TCL_ERROR; } @@ -24391,6 +24635,10 @@ NsfVarUnsetCmd(Tcl_Interp *interp, int withNocomplain, NsfObject *object, Tcl_Obj *varNameObj) { char *varName = ObjStr(varNameObj); + assert(interp); // autoadded + assert(object); // autoadded + assert(varNameObj); // autoadded + if (CheckVarName(interp, varName) != TCL_OK) { return TCL_ERROR; } @@ -24790,6 +25038,10 @@ Tcl_SetObjResult(interp, autoname); DECR_REF_COUNT2("autoname", autoname); + assert(interp); // autoadded + assert(object); // autoadded + assert(nameObj); // autoadded + return TCL_OK; } return NsfPrintError(interp, "autoname failed. Probably format string (with %%) was not well-formed"); @@ -24802,6 +25054,10 @@ */ static int NsfOClassMethod(Tcl_Interp *interp, NsfObject *object, Tcl_Obj *classObj) { + + assert(interp); // autoadded + assert(object); // autoadded + return NsfRelationCmd(interp, object, RelationtypeClassIdx, classObj); } @@ -25198,6 +25454,10 @@ CallFrame frame, *framePtr = &frame, *uplevelVarFramePtr; char *nameString = ObjStr(nameObj); + assert(interp); // autoadded + assert(object); // autoadded + assert(nameObj); // autoadded + /* * Get the object parameter definition */ @@ -25406,6 +25666,11 @@ */ static int NsfOExistsMethod(Tcl_Interp *interp, NsfObject *object, CONST char *var) { + + assert(interp); // autoadded + assert(object); // autoadded + assert(var); // autoadded + Tcl_SetIntObj(Tcl_GetObjResult(interp), VarExists(interp, object, var, NULL, NSF_VAR_TRIGGER_TRACE|NSF_VAR_REQUIRE_DEFINED)); @@ -25423,6 +25688,11 @@ NsfOFilterGuardMethod(Tcl_Interp *interp, NsfObject *object, CONST char *filter, Tcl_Obj *guardObj) { NsfObjectOpt *opt = object->opt; + assert(interp); // autoadded + assert(object); // autoadded + assert(filter); // autoadded + assert(guardObj); // autoadded + if (opt && opt->objFilters) { NsfCmdList *h = CmdListFindNameInList(interp, filter, opt->objFilters); if (h) { @@ -25450,6 +25720,9 @@ callFrameContext ctx = {0, NULL, NULL}; int result; + assert(interp); // autoadded + assert(object); // autoadded + if (object && (object->filterStack || object->mixinStack) ) { CallStackUseActiveFrame(interp, &ctx); } @@ -25476,6 +25749,11 @@ NsfOMixinGuardMethod(Tcl_Interp *interp, NsfObject *object, Tcl_Obj *mixin, Tcl_Obj *guardObj) { NsfObjectOpt *opt = object->opt; + assert(interp); // autoadded + assert(object); // autoadded + assert(mixin); // autoadded + assert(guardObj); // autoadded + if (opt && opt->objMixins) { Tcl_Command mixinCmd = Tcl_GetCommandFromObj(interp, mixin); if (mixinCmd) { @@ -25504,6 +25782,9 @@ */ static int NsfONoinitMethod(Tcl_Interp *UNUSED(interp), NsfObject *object) { + + assert(object); + object->flags |= NSF_INIT_CALLED; return TCL_OK; } @@ -25514,6 +25795,10 @@ */ static int NsfORequireNamespaceMethod(Tcl_Interp *interp, NsfObject *object) { + + assert(interp); // autoadded + assert(object); // autoadded + RequireObjNamespace(interp, object); return TCL_OK; } @@ -25529,6 +25814,9 @@ CONST char *methodName, *nextMethodName, *initString = NULL; Tcl_Obj **argv, **nextArgv; + assert(interp); // autoadded + assert(object); // autoadded + #if 0 fprintf(stderr, "NsfOResidualargsMethod %s %2d ", ObjectName(object), objc); for(i = 0; i < objc; i++) {fprintf(stderr, " [%d]=%s,", i, ObjStr(objv[i]));} @@ -25624,6 +25912,9 @@ int i, result = TCL_ERROR; Tcl_CallFrame *framePtr = NULL, *savedVarFramePtr; + assert(interp); // autoadded + assert(objv); // autoadded + /* * Find the level to use for executing the command. */ @@ -25698,6 +25989,9 @@ CONST char *frameInfo; callFrameContext ctx = {0, NULL, NULL}; + assert(interp); // autoadded + assert(object); // autoadded + if (objc % 2 == 0) { frameInfo = ObjStr(objv[1]); i = 2; @@ -25739,6 +26033,9 @@ CONST char *vn; callFrameContext ctx = {0, NULL, NULL}; + assert(interp); // autoadded + assert(object); // autoadded + if (unlikely(RUNTIME_STATE(interp)->exitHandlerDestroyRound != NSF_EXITHANDLER_OFF)) { return NsfPrintError(interp, "can't make objects volatile during shutdown"); } @@ -25836,6 +26133,8 @@ Tcl_Obj *tmpName; int result; + assert(nameObj); // autoadded + assert(interp); // autoadded assert(cl); // autoadded @@ -26049,6 +26348,8 @@ NsfCDeallocMethod(Tcl_Interp *interp, NsfClass *UNUSED(cl), Tcl_Obj *obj) { NsfObject *object; + assert(interp); // autoadded + if (GetObjectFromObj(interp, obj, &object) != TCL_OK) { return NsfPrintError(interp, "can't destroy object %s that does not exist", ObjStr(obj)); @@ -26069,6 +26370,11 @@ CONST char *filter, Tcl_Obj *guardObj) { NsfClassOpt *opt = cl->opt; + assert(interp); // autoadded + assert(cl); // autoadded + assert(filter); // autoadded + assert(guardObj); // autoadded + if (opt && opt->classFilters) { NsfCmdList *h = CmdListFindNameInList(interp, filter, opt->classFilters); @@ -26100,6 +26406,9 @@ static int NsfCGetCachendParametersMethod(Tcl_Interp *interp, NsfClass *class) { + assert(interp); // autoadded + assert(class); // autoadded + if (likely(class && class->parsedParamPtr && class->parsedParamPtr->paramDefs)) { Tcl_Obj *listObj; @@ -26120,6 +26429,11 @@ NsfCMixinGuardMethod(Tcl_Interp *interp, NsfClass *cl, Tcl_Obj *mixin, Tcl_Obj *guardObj) { NsfClassOpt *opt = cl->opt; + assert(interp); // autoadded + assert(cl); // autoadded + assert(mixin); // autoadded + assert(guardObj); // autoadded + if (opt && opt->classMixins) { Tcl_Command mixinCmd = Tcl_GetCommandFromObj(interp, mixin); @@ -26161,6 +26475,9 @@ Tcl_DString dFullname, *dsPtr = &dFullname; int result; + assert(interp); // autoadded + assert(cl); // autoadded + /*fprintf(stderr, "NsfCNewMethod objc %d\n", objc);*/ Tcl_DStringInit(dsPtr); @@ -26294,6 +26611,10 @@ int objc, Tcl_Obj *CONST objv[]) { NsfObject *object; + assert(interp); // autoadded + assert(cl); // autoadded + assert(nameObj); // autoadded + if (GetObjectFromObj(interp, nameObj, &object) != TCL_OK) { return NsfPrintError(interp, "can't recreate non existing object %s", ObjStr(nameObj)); } @@ -26307,6 +26628,10 @@ */ static int NsfCSuperclassMethod(Tcl_Interp *interp, NsfClass *cl, Tcl_Obj *superClassesObj) { + + assert(interp); // autoadded + assert(cl); // autoadded + return NsfRelationCmd(interp, &cl->object, RelationtypeSuperclassIdx, superClassesObj); } @@ -26362,6 +26687,10 @@ */ static int NsfObjInfoChildrenMethod(Tcl_Interp *interp, NsfObject *object, NsfClass *type, CONST char *pattern) { + + assert(interp); // autoadded + assert(object); // autoadded + return ListChildren(interp, object, pattern, 0, type); } @@ -26371,6 +26700,10 @@ */ static int NsfObjInfoClassMethod(Tcl_Interp *interp, NsfObject *object) { + + assert(interp); // autoadded + assert(object); // autoadded + Tcl_SetObjResult(interp, object->cl->object.cmdName); return TCL_OK; } @@ -26382,6 +26715,11 @@ */ static int NsfObjInfoFilterguardMethod(Tcl_Interp *interp, NsfObject *object, CONST char *filter) { + + assert(interp); // autoadded + assert(object); // autoadded + assert(filter); // autoadded + return object->opt ? GuardList(interp, object->opt->objFilters, filter) : TCL_OK; } @@ -26398,6 +26736,9 @@ CONST char *pattern) { NsfObjectOpt *opt = object->opt; + assert(interp); // autoadded + assert(object); // autoadded + if (withOrder) { if (!(object->flags & NSF_FILTER_ORDER_VALID)) { FilterComputeDefined(interp, object); @@ -26415,6 +26756,10 @@ */ static int NsfObjInfoForwardMethod(Tcl_Interp *interp, NsfObject *object, int withDefinition, CONST char *pattern) { + + assert(interp); // autoadded + assert(object); // autoadded + return object->nsPtr ? ListForward(interp, Tcl_Namespace_cmdTablePtr(object->nsPtr), pattern, withDefinition) : TCL_OK; @@ -26427,6 +26772,11 @@ */ static int NsfObjInfoHasMixinMethod(Tcl_Interp *interp, NsfObject *object, NsfClass *mixinClass) { + + assert(interp); // autoadded + assert(object); // autoadded + assert(mixinClass); // autoadded + Tcl_SetBooleanObj(Tcl_GetObjResult(interp), HasMixin(interp, object, mixinClass)); return TCL_OK; } @@ -26437,6 +26787,10 @@ */ static int NsfObjInfoHasnamespaceMethod(Tcl_Interp *interp, NsfObject *object) { + + assert(interp); // autoadded + assert(object); // autoadded + Tcl_SetBooleanObj(Tcl_GetObjResult(interp), object->nsPtr != NULL); return TCL_OK; } @@ -26448,6 +26802,11 @@ */ static int NsfObjInfoHasTypeMethod(Tcl_Interp *interp, NsfObject *object, NsfClass *typeClass) { + + assert(interp); // autoadded + assert(object); // autoadded + assert(typeClass); // autoadded + Tcl_SetBooleanObj(Tcl_GetObjResult(interp), IsSubType(object->cl, typeClass)); return TCL_OK; } @@ -26461,6 +26820,9 @@ NsfObjInfoIsMethod(Tcl_Interp *interp, NsfObject *object, int objectkind) { int success = 0; + assert(interp); // autoadded + assert(object); // autoadded + switch (objectkind) { case ObjectkindClassIdx: success = (NsfObjectIsClass(object) > 0); @@ -26489,6 +26851,10 @@ NsfCmdList *cmdList; NsfClass *fcl; + assert(interp); // autoadded + assert(object); // autoadded + assert(filter); // autoadded + /* * Searches for filter on [self] and returns fully qualified name if it is * not found it returns an empty string. @@ -26526,6 +26892,10 @@ NsfClass *pcl = NULL; Tcl_Command cmd = ObjectFindMethod(interp, object, methodObj, &pcl); + assert(interp); // autoadded + assert(object); // autoadded + assert(methodObj); // autoadded + if (cmd) { NsfObject *pobj = pcl ? &pcl->object : object; int perObject = (pcl == NULL); @@ -26594,6 +26964,9 @@ Tcl_HashTable dupsTable, *dups = &dupsTable; int result, methodType = AggregatedMethodType(withMethodtype); + assert(interp); // autoadded + assert(object); // autoadded + /* * TODO: we could make this faster for patterns without meta-chars * by letting ListMethodKeys() to signal us when an entry was found. @@ -26669,6 +27042,9 @@ NsfClasses *precendenceList, *clPtr; Tcl_HashTable slotTable; + assert(interp); // autoadded + assert(object); // autoadded + precendenceList = ComputePrecedenceList(interp, object, NULL /* pattern*/, 1, 1); assert(precendenceList); @@ -26719,6 +27095,10 @@ Tcl_DString ds, *dsPtr = &ds; Tcl_Command cmd; + assert(interp); // autoadded + assert(object); // autoadded + assert(methodNameObj); // autoadded + Tcl_DStringInit(dsPtr); cmd = ResolveMethodName(interp, object->nsPtr, methodNameObj, dsPtr, ®Object, &defObject, &methodName1, &fromClassNS); @@ -26748,6 +27128,10 @@ int withMethodtype, int withPath, CONST char *pattern) { + + assert(interp); // autoadded + assert(object); // autoadded + return ListDefinedMethods(interp, object, pattern, 1 /* per-object */, AggregatedMethodType(withMethodtype), withCallproctection, withPath); @@ -26766,6 +27150,9 @@ int withGuards, int withHeritage, CONST char *patternString, NsfObject *patternObj) { + assert(interp); // autoadded + assert(object); // autoadded + if (withHeritage) { if (!(object->flags & NSF_MIXIN_ORDER_VALID)) { MixinComputeDefined(interp, object); @@ -26784,6 +27171,11 @@ */ static int NsfObjInfoMixinguardMethod(Tcl_Interp *interp, NsfObject *object, CONST char *mixin) { + + assert(interp); // autoadded + assert(object); // autoadded + assert(mixin); // autoadded + return object->opt ? GuardList(interp, object->opt->objMixins, mixin) : TCL_OK; } @@ -26794,6 +27186,9 @@ static int NsfObjInfoNameMethod(Tcl_Interp *interp, NsfObject *object) { + assert(interp); // autoadded + assert(object); // autoadded + Tcl_SetObjResult(interp, Tcl_NewStringObj(Tcl_GetCommandName(interp, object->id), -1)); return TCL_OK; } @@ -26812,6 +27207,9 @@ Nsf_Param *paramList = NULL; int result; + assert(interp); // autoadded + assert(object); // autoadded + result = GetObjectParameterDefinition(interp, NsfGlobalObjs[NSF_EMPTY], object, &parsedParam); @@ -26889,6 +27287,10 @@ */ static int NsfObjInfoParentMethod(Tcl_Interp *interp, NsfObject *object) { + + assert(interp); // autoadded + assert(object); // autoadded + if (object->id) { Tcl_Namespace *nsPtr = Tcl_Command_nsPtr(object->id); Tcl_SetResult(interp, nsPtr ? nsPtr->fullName : "", TCL_VOLATILE); @@ -26908,6 +27310,9 @@ NsfClasses *precedenceList, *pl; Tcl_Obj *resultObj = Tcl_NewObj(); + assert(interp); // autoadded + assert(object); // autoadded + precedenceList = ComputePrecedenceList(interp, object, pattern, !withIntrinsicOnly, 1); for (pl = precedenceList; pl; pl = pl->nextPtr) { Tcl_ListObjAppendElement(interp, resultObj, pl->cl->object.cmdName); @@ -26929,6 +27334,9 @@ NsfClass *type, CONST char *pattern) { Tcl_Obj *listObj = Tcl_NewListObj(0, NULL); + assert(interp); // autoadded + assert(object); // autoadded + AddSlotObjects(interp, object, "::per-object-slot", NULL, SourceAllIdx, type, pattern, listObj); @@ -26950,6 +27358,9 @@ Tcl_Namespace_varTablePtr(object->nsPtr) : object->varTablePtr; + assert(interp); // autoadded + assert(object); // autoadded + ListVarKeys(interp, TclVarHashTablePtr(varTablePtr), pattern); varList = Tcl_GetObjResult(interp); @@ -26982,6 +27393,11 @@ */ static int NsfClassInfoFilterguardMethod(Tcl_Interp *interp, NsfClass *class, CONST char *filter) { + + assert(interp); // autoadded + assert(class); // autoadded + assert(filter); // autoadded + return class->opt ? GuardList(interp, class->opt->classFilters, filter) : TCL_OK; } @@ -26994,6 +27410,10 @@ static int NsfClassInfoFiltermethodsMethod(Tcl_Interp *interp, NsfClass *class, int withGuards, CONST char *pattern) { + + assert(interp); // autoadded + assert(class); // autoadded + return class->opt ? FilterInfo(interp, class->opt->classFilters, pattern, withGuards, 0) : TCL_OK; } @@ -27006,6 +27426,10 @@ static int NsfClassInfoForwardMethod(Tcl_Interp *interp, NsfClass *class, int withDefinition, CONST char *pattern) { + + assert(interp); // autoadded + assert(class); // autoadded + return ListForward(interp, Tcl_Namespace_cmdTablePtr(class->nsPtr), pattern, withDefinition); } @@ -27019,6 +27443,9 @@ NsfClasses *pl, *intrinsic, *checkList = NULL, *mixinClasses = NULL; Tcl_Obj *resultObj; + assert(interp); // autoadded + assert(cl); // autoadded + resultObj = Tcl_NewObj(); intrinsic = PrecedenceOrder(cl); @@ -27104,6 +27531,9 @@ int withClosure, CONST char *pattern, NsfObject *matchObject) { NsfClasses clElement, *subClasses; + assert(interp); // autoadded + assert(startCl); // autoadded + if (withClosure) { subClasses = TransitiveSubClasses(startCl); } else { @@ -27136,6 +27566,10 @@ Tcl_DString ds, *dsPtr = &ds; Tcl_Command cmd; + assert(interp); // autoadded + assert(class); // autoadded + assert(methodNameObj); // autoadded + Tcl_DStringInit(dsPtr); cmd = ResolveMethodName(interp, class->nsPtr, methodNameObj, dsPtr, ®Object, &defObject, &methodName1, &fromClassNS); @@ -27176,6 +27610,9 @@ Tcl_HashTable dupsTable, *dups = &dupsTable; int result; + assert(interp); // autoadded + assert(class); // autoadded + #if 0 if (withCallprotection == CallprotectionNULL) { withCallprotection = CallprotectionPublicIdx; @@ -27228,6 +27665,9 @@ Tcl_Obj *resultObj; int result = TCL_OK; + assert(interp); // autoadded + assert(class); // autoadded + Tcl_ResetResult(interp); resultObj = Tcl_GetObjResult(interp); @@ -27276,6 +27716,11 @@ */ static int NsfClassInfoMixinguardMethod(Tcl_Interp *interp, NsfClass *class, CONST char *mixin) { + + assert(interp); // autoadded + assert(class); // autoadded + assert(mixin); // autoadded + return class->opt ? GuardList(interp, class->opt->classMixins, mixin) : TCL_OK; } @@ -27293,6 +27738,9 @@ int perClass, perObject, rc = TCL_OK; Tcl_Obj *resultObj; + assert(interp); // autoadded + assert(class); // autoadded + Tcl_ResetResult(interp); resultObj = Tcl_GetObjResult(interp); @@ -27359,6 +27807,9 @@ Tcl_Obj *listObj = Tcl_NewListObj(0, NULL); Tcl_HashTable slotTable; + assert(interp); // autoadded + assert(class); // autoadded + Tcl_ResetResult(interp); intrinsicClasses = PrecedenceOrder(class); @@ -27432,6 +27883,9 @@ rc = AppendMatchingElementsFromClasses(interp, class->sub, patternString, patternObj); } + assert(interp); // autoadded + assert(class); // autoadded + if (patternObj) { Tcl_SetObjResult(interp, rc ? patternObj->cmdName : NsfGlobalObjs[NSF_EMPTY]); } @@ -27447,6 +27901,10 @@ */ static int NsfClassInfoSuperclassMethod(Tcl_Interp *interp, NsfClass *class, int withClosure, Tcl_Obj *pattern) { + + assert(interp); // autoadded + assert(class); // autoadded + return ListSuperClasses(interp, class, pattern, withClosure); } @@ -27470,6 +27928,8 @@ Var *varPtr; register Tcl_HashEntry *entryPtr; + assert(interp); // autoadded + assert(nsPtr); /* fprintf(stderr, "DeleteProcsAndVars in %s\n", nsPtr->fullName); */ @@ -27651,6 +28111,9 @@ static int ClassHasSubclasses(NsfClass *cl) { + + assert(cl); // autoadded + return (cl->sub != NULL); } @@ -27673,6 +28136,9 @@ static int ClassHasInstances(NsfClass *cl) { + + assert(cl); // autoadded + Tcl_HashSearch hSrch; return (Tcl_FirstHashEntry(&cl->instances, &hSrch) != NULL); } @@ -27699,6 +28165,8 @@ Tcl_Namespace *ns = object->nsPtr; int result = 0; + assert(object); // autoadded + if (ns) { Tcl_HashEntry *hPtr; Tcl_HashSearch hSrch; @@ -27725,6 +28193,9 @@ NsfCmdList *entry, *lastEntry; int deleted = 0; + assert(interp); // autoadded + assert(instances); // autoadded + /*fprintf(stderr, "FreeAllNsfObjectsAndClasses in %p\n", interp);*/ RUNTIME_STATE(interp)->exitHandlerDestroyRound = NSF_EXITHANDLER_ON_PHYSICAL_DESTROY;