Index: generic/nsf.c =================================================================== diff -u -N -r84ebec01747d68ec9ab8310c0aba7dfd6a2af522 -rf0f87b41b6bb57a518fc1bc52fd2f3422d7a9b07 --- generic/nsf.c (.../nsf.c) (revision 84ebec01747d68ec9ab8310c0aba7dfd6a2af522) +++ generic/nsf.c (.../nsf.c) (revision f0f87b41b6bb57a518fc1bc52fd2f3422d7a9b07) @@ -27015,7 +27015,9 @@ */ static int ListDefinedMethods(Tcl_Interp *interp, NsfObject *object, const char *pattern, - bool withPer_object, MethodtypeIdx_t methodType, CallprotectionIdx_t withCallprotection, + bool withPer_object, + MethodtypeIdx_t methodType, + CallprotectionIdx_t withCallprotection, bool withPath) { Tcl_HashTable *cmdTablePtr; Tcl_DString ds, *dsPtr = NULL; @@ -28044,12 +28046,12 @@ */ static int NsfConfigureCmd(Tcl_Interp *interp, ConfigureoptionIdx_t option, Tcl_Obj *valueObj) { - int boolVal; + int boolVal = 0; nonnull_assert(interp != NULL); #if defined(NSF_DTRACE) if (NSF_DTRACE_CONFIGURE_PROBE_ENABLED()) { - NSF_DTRACE_CONFIGURE_PROBE((char *)Nsf_Configureoption[option-1], + NSF_DTRACE_CONFIGURE_PROBE(Nsf_Configureoption[option-1].key, (valueObj != NULL) ? ObjStr(valueObj) : NULL); } #endif @@ -29351,8 +29353,8 @@ case MethodpropertyDeprecatedIdx: NSF_FALL_THROUGH; /* fall through */ case MethodpropertyRedefine_protectedIdx: { - int impliedSetFlag = 0, impliedClearFlag = 0; - unsigned int flag; + int impliedSetFlag = 0, impliedClearFlag = 0; + unsigned int flag = 0u; switch (methodProperty) { case MethodpropertyClass_onlyIdx: @@ -32632,10 +32634,10 @@ */ static int NsfOResidualargsMethod(Tcl_Interp *interp, NsfObject *object, int objc, Tcl_Obj *const objv[]) { - int i, start = 1, argc, nextArgc, normalArgs, result = TCL_OK; + int i, start = 1, argc = 0, nextArgc = 0, normalArgs, result = TCL_OK; dashArgType isdasharg = NO_DASH; - const char *methodName, *nextMethodName, *initString = NULL; - Tcl_Obj **argv = NULL, **nextArgv; + const char *methodName, *nextMethodName = NULL, *initString = NULL; + Tcl_Obj **argv = NULL, **nextArgv = NULL; nonnull_assert(interp != NULL); nonnull_assert(object != NULL); @@ -32672,7 +32674,7 @@ } - for( ; i < objc; argc = nextArgc, argv = nextArgv, methodName = nextMethodName) { + for( ; i < objc; argc = nextArgc, argv = nextArgv, methodName = nextMethodName) { Tcl_ResetResult(interp); @@ -33679,36 +33681,17 @@ static MethodtypeIdx_t AggregatedMethodType(MethodtypeIdx_t methodType) { - switch (methodType) { - case MethodtypeNULL: NSF_FALL_THROUGH; /* fall through */ - case MethodtypeAllIdx: - methodType = NSF_METHODTYPE_ALL; - break; - case MethodtypeScriptedIdx: - /*methodType = NSF_METHODTYPE_SCRIPTED|NSF_METHODTYPE_ALIAS;*/ - methodType = NSF_METHODTYPE_SCRIPTED; - break; - case MethodtypeBuiltinIdx: - methodType = NSF_METHODTYPE_BUILTIN|NSF_METHODTYPE_OBJECT; - break; - case MethodtypeForwarderIdx: - methodType = NSF_METHODTYPE_FORWARDER; - break; - case MethodtypeAliasIdx: - methodType = NSF_METHODTYPE_ALIAS; - break; - case MethodtypeSetterIdx: - methodType = NSF_METHODTYPE_SETTER; - break; - case MethodtypeObjectIdx: - methodType = NSF_METHODTYPE_OBJECT; - break; - case MethodtypeNsfprocIdx: - methodType = NSF_METHODTYPE_NSFPROC; - break; - } + MethodtypeIdx_t result; - return methodType; + if (methodType == MethodtypeNULL) { + result = MethodtypeAllIdx; + } else if (methodType == MethodtypeBuiltinIdx) { + result = NSF_METHODTYPE_BUILTIN|NSF_METHODTYPE_OBJECT; + } else { + result = methodType; + } + //fprintf(stderr, "AggregatedMethodType input %.4x output %.4x\n", methodType, result); + return result; } /*********************************************************************** Index: generic/nsf.h =================================================================== diff -u -N -r65d1c0f8d783d97a78b93f14871045fa9d4e5a41 -rf0f87b41b6bb57a518fc1bc52fd2f3422d7a9b07 --- generic/nsf.h (.../nsf.h) (revision 65d1c0f8d783d97a78b93f14871045fa9d4e5a41) +++ generic/nsf.h (.../nsf.h) (revision f0f87b41b6bb57a518fc1bc52fd2f3422d7a9b07) @@ -304,6 +304,12 @@ const char *domain; } Nsf_EnumeratorConverterEntry; +typedef struct Nsf_ObjvTable { + const char *key; + unsigned int value; +} Nsf_ObjvTable; + + EXTERN Nsf_TypeConverter Nsf_ConvertToBoolean, Nsf_ConvertToClass, Nsf_ConvertToInteger, Nsf_ConvertToInt32, Nsf_ConvertToObject, Nsf_ConvertToParameter, Index: generic/nsfAPI.decls =================================================================== diff -u -N -ra963e8896fd07c345ccfa034cbd043344edbf083 -rf0f87b41b6bb57a518fc1bc52fd2f3422d7a9b07 --- generic/nsfAPI.decls (.../nsfAPI.decls) (revision a963e8896fd07c345ccfa034cbd043344edbf083) +++ generic/nsfAPI.decls (.../nsfAPI.decls) (revision f0f87b41b6bb57a518fc1bc52fd2f3422d7a9b07) @@ -506,10 +506,13 @@ objectInfoMethod lookupmethod NsfObjInfoLookupMethodMethod { {-argName "name" -required 1 -type tclobj} } + +set methodType "all=NSF_METHODTYPE_ALL|scripted=NSF_METHODTYPE_SCRIPTED|builtin=NSF_METHODTYPE_BUILTIN|alias=NSF_METHODTYPE_ALIAS|forwarder=NSF_METHODTYPE_FORWARDER|object=NSF_METHODTYPE_OBJECT|setter=NSF_METHODTYPE_SETTER|nsfproc=NSF_METHODTYPE_NSFPROC" + objectInfoMethod lookupmethods NsfObjInfoLookupMethodsMethod { {-argName "-callprotection" -typeName "callprotection" -type "all|public|protected|private" -default all} {-argName "-incontext" -nrargs 0 -type switch} - {-argName "-type" -typeName "methodtype" -type "all|scripted|builtin|alias|forwarder|object|setter|nsfproc"} + {-argName "-type" -typeName "methodtype" -type $::methodType} {-argName "-nomixins" -nrargs 0 -type switch} {-argName "-path" -nrargs 0 -type switch} {-argName "-source" -typeName "definitionsource" -type "all|application|system" -default all} @@ -530,7 +533,7 @@ } objectInfoMethod methods NsfObjInfoMethodsMethod { {-argName "-callprotection" -typeName "callprotection" -type "all|public|protected|private" -default all} - {-argName "-type" -typeName "methodtype" -type "all|scripted|builtin|alias|forwarder|object|setter|nsfproc"} + {-argName "-type" -typeName "methodtype" -type $::methodType} {-argName "-path" -nrargs 0 -type switch} {-argName "pattern" -required 0} } @@ -588,7 +591,7 @@ classInfoMethod methods NsfClassInfoMethodsMethod { {-argName "-callprotection" -typeName "callprotection" -type "all|public|protected|private" -default all} {-argName "-closure" -nrargs 0 -type switch} - {-argName "-type" -nrargs 1 -typeName "methodtype" -type "all|scripted|builtin|alias|forwarder|object|setter|nsfproc"} + {-argName "-type" -nrargs 1 -typeName "methodtype" -type $::methodType} {-argName "-path" -nrargs 0 -type switch} {-argName "-source" -nrargs 1 -typeName "definitionsource" -type "all|application|system" -default all} {-argName "pattern"} Index: generic/nsfAPI.h =================================================================== diff -u -N -rdeed56d52d49cdd2116a6cdd6b7c8b9b6c19f14e -rf0f87b41b6bb57a518fc1bc52fd2f3422d7a9b07 --- generic/nsfAPI.h (.../nsfAPI.h) (revision deed56d52d49cdd2116a6cdd6b7c8b9b6c19f14e) +++ generic/nsfAPI.h (.../nsfAPI.h) (revision f0f87b41b6bb57a518fc1bc52fd2f3422d7a9b07) @@ -6,35 +6,35 @@ #if defined(USE_NSF_STUBS) int Nsf_ConvertTo_Boolean(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { + ClientData *clientData, Tcl_Obj **outObjPtr) { return Nsf_ConvertToBoolean(interp, objPtr, pPtr, clientData, outObjPtr); } int Nsf_ConvertTo_Class(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { + ClientData *clientData, Tcl_Obj **outObjPtr) { return Nsf_ConvertToClass(interp, objPtr, pPtr, clientData, outObjPtr); } int Nsf_ConvertTo_Int32(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { + ClientData *clientData, Tcl_Obj **outObjPtr) { return Nsf_ConvertToInt32(interp, objPtr, pPtr, clientData, outObjPtr); } int Nsf_ConvertTo_Integer(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { + ClientData *clientData, Tcl_Obj **outObjPtr) { return Nsf_ConvertToInteger(interp, objPtr, pPtr, clientData, outObjPtr); } int Nsf_ConvertTo_Object(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { + ClientData *clientData, Tcl_Obj **outObjPtr) { return Nsf_ConvertToObject(interp, objPtr, pPtr, clientData, outObjPtr); } int Nsf_ConvertTo_Pointer(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { + ClientData *clientData, Tcl_Obj **outObjPtr) { return Nsf_ConvertToPointer(interp, objPtr, pPtr, clientData, outObjPtr); } int Nsf_ConvertTo_String(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { + ClientData *clientData, Tcl_Obj **outObjPtr) { return Nsf_ConvertToString(interp, objPtr, pPtr, clientData, outObjPtr); } int Nsf_ConvertTo_Tclobj(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { + ClientData *clientData, Tcl_Obj **outObjPtr) { return Nsf_ConvertToTclobj(interp, objPtr, pPtr, clientData, outObjPtr); } #else @@ -64,197 +64,330 @@ -typedef enum {InfomethodsubcmdNULL, InfomethodsubcmdArgsIdx, InfomethodsubcmdBodyIdx, InfomethodsubcmdDefinitionIdx, InfomethodsubcmdExistsIdx, InfomethodsubcmdRegistrationhandleIdx, InfomethodsubcmdDefinitionhandleIdx, InfomethodsubcmdOriginIdx, InfomethodsubcmdParameterIdx, InfomethodsubcmdSyntaxIdx, InfomethodsubcmdTypeIdx, InfomethodsubcmdPreconditionIdx, InfomethodsubcmdPostconditionIdx, InfomethodsubcmdSubmethodsIdx, InfomethodsubcmdReturnsIdx, InfomethodsubcmdDisassembleIdx} InfomethodsubcmdIdx_t; +typedef enum {InfomethodsubcmdNULL=0x0u, InfomethodsubcmdArgsIdx=1, InfomethodsubcmdBodyIdx=2, InfomethodsubcmdDefinitionIdx=3, InfomethodsubcmdExistsIdx=4, InfomethodsubcmdRegistrationhandleIdx=5, InfomethodsubcmdDefinitionhandleIdx=6, InfomethodsubcmdOriginIdx=7, InfomethodsubcmdParameterIdx=8, InfomethodsubcmdSyntaxIdx=9, InfomethodsubcmdTypeIdx=10, InfomethodsubcmdPreconditionIdx=11, InfomethodsubcmdPostconditionIdx=12, InfomethodsubcmdSubmethodsIdx=13, InfomethodsubcmdReturnsIdx=14, InfomethodsubcmdDisassembleIdx=15} InfomethodsubcmdIdx_t; static int ConvertToInfomethodsubcmd(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { - int pos, result; - static const char *opts[] = {"args", "body", "definition", "exists", "registrationhandle", "definitionhandle", "origin", "parameter", "syntax", "type", "precondition", "postcondition", "submethods", "returns", "disassemble", NULL}; + ClientData *clientData, Tcl_Obj **outObjPtr) { + int pos=0, result; + static const Nsf_ObjvTable opts[] = { + {"args", 1}, + {"body", 2}, + {"definition", 3}, + {"exists", 4}, + {"registrationhandle", 5}, + {"definitionhandle", 6}, + {"origin", 7}, + {"parameter", 8}, + {"syntax", 9}, + {"type", 10}, + {"precondition", 11}, + {"postcondition", 12}, + {"submethods", 13}, + {"returns", 14}, + {"disassemble", 15}, + {NULL, 0u} + }; (void)pPtr; - result = Tcl_GetIndexFromObj(interp, objPtr, opts, "infomethodsubcmd", 0, &pos); - *clientData = (ClientData) INT2PTR(pos + 1); + result = Tcl_GetIndexFromObjStruct(interp, objPtr, opts, sizeof(Nsf_ObjvTable), "infomethodsubcmd", 0, &pos); + *clientData = (ClientData) INT2PTR(opts[pos].value); *outObjPtr = objPtr; return result; } -typedef enum {CallprotectionNULL, CallprotectionAllIdx, CallprotectionPublicIdx, CallprotectionProtectedIdx, CallprotectionPrivateIdx} CallprotectionIdx_t; +typedef enum {CallprotectionNULL=0x0u, CallprotectionAllIdx=1, CallprotectionPublicIdx=2, CallprotectionProtectedIdx=3, CallprotectionPrivateIdx=4} CallprotectionIdx_t; static int ConvertToCallprotection(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { - int pos, result; - static const char *opts[] = {"all", "public", "protected", "private", NULL}; + ClientData *clientData, Tcl_Obj **outObjPtr) { + int pos=0, result; + static const Nsf_ObjvTable opts[] = { + {"all", 1}, + {"public", 2}, + {"protected", 3}, + {"private", 4}, + {NULL, 0u} + }; (void)pPtr; - result = Tcl_GetIndexFromObj(interp, objPtr, opts, "callprotection", 0, &pos); - *clientData = (ClientData) INT2PTR(pos + 1); + result = Tcl_GetIndexFromObjStruct(interp, objPtr, opts, sizeof(Nsf_ObjvTable), "callprotection", 0, &pos); + *clientData = (ClientData) INT2PTR(opts[pos].value); *outObjPtr = objPtr; return result; } -typedef enum {MethodtypeNULL, MethodtypeAllIdx, MethodtypeScriptedIdx, MethodtypeBuiltinIdx, MethodtypeAliasIdx, MethodtypeForwarderIdx, MethodtypeObjectIdx, MethodtypeSetterIdx, MethodtypeNsfprocIdx} MethodtypeIdx_t; +typedef enum {MethodtypeNULL=0x0u, MethodtypeAllIdx=NSF_METHODTYPE_ALL, MethodtypeScriptedIdx=NSF_METHODTYPE_SCRIPTED, MethodtypeBuiltinIdx=NSF_METHODTYPE_BUILTIN, MethodtypeAliasIdx=NSF_METHODTYPE_ALIAS, MethodtypeForwarderIdx=NSF_METHODTYPE_FORWARDER, MethodtypeObjectIdx=NSF_METHODTYPE_OBJECT, MethodtypeSetterIdx=NSF_METHODTYPE_SETTER, MethodtypeNsfprocIdx=NSF_METHODTYPE_NSFPROC} MethodtypeIdx_t; static int ConvertToMethodtype(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { - int pos, result; - static const char *opts[] = {"all", "scripted", "builtin", "alias", "forwarder", "object", "setter", "nsfproc", NULL}; + ClientData *clientData, Tcl_Obj **outObjPtr) { + int pos=0, result; + static const Nsf_ObjvTable opts[] = { + {"all", NSF_METHODTYPE_ALL}, + {"scripted", NSF_METHODTYPE_SCRIPTED}, + {"builtin", NSF_METHODTYPE_BUILTIN}, + {"alias", NSF_METHODTYPE_ALIAS}, + {"forwarder", NSF_METHODTYPE_FORWARDER}, + {"object", NSF_METHODTYPE_OBJECT}, + {"setter", NSF_METHODTYPE_SETTER}, + {"nsfproc", NSF_METHODTYPE_NSFPROC}, + {NULL, 0u} + }; (void)pPtr; - result = Tcl_GetIndexFromObj(interp, objPtr, opts, "methodtype", 0, &pos); - *clientData = (ClientData) INT2PTR(pos + 1); + result = Tcl_GetIndexFromObjStruct(interp, objPtr, opts, sizeof(Nsf_ObjvTable), "methodtype", 0, &pos); + *clientData = (ClientData) INT2PTR(opts[pos].value); *outObjPtr = objPtr; return result; } -typedef enum {DefinitionsourceNULL, DefinitionsourceAllIdx, DefinitionsourceApplicationIdx, DefinitionsourceSystemIdx} DefinitionsourceIdx_t; +typedef enum {DefinitionsourceNULL=0x0u, DefinitionsourceAllIdx=1, DefinitionsourceApplicationIdx=2, DefinitionsourceSystemIdx=3} DefinitionsourceIdx_t; static int ConvertToDefinitionsource(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { - int pos, result; - static const char *opts[] = {"all", "application", "system", NULL}; + ClientData *clientData, Tcl_Obj **outObjPtr) { + int pos=0, result; + static const Nsf_ObjvTable opts[] = { + {"all", 1}, + {"application", 2}, + {"system", 3}, + {NULL, 0u} + }; (void)pPtr; - result = Tcl_GetIndexFromObj(interp, objPtr, opts, "definitionsource", 0, &pos); - *clientData = (ClientData) INT2PTR(pos + 1); + result = Tcl_GetIndexFromObjStruct(interp, objPtr, opts, sizeof(Nsf_ObjvTable), "definitionsource", 0, &pos); + *clientData = (ClientData) INT2PTR(opts[pos].value); *outObjPtr = objPtr; return result; } -typedef enum {MixinscopeNULL, MixinscopeAllIdx, MixinscopeClassIdx, MixinscopeObjectIdx} MixinscopeIdx_t; +typedef enum {MixinscopeNULL=0x0u, MixinscopeAllIdx=1, MixinscopeClassIdx=2, MixinscopeObjectIdx=3} MixinscopeIdx_t; static int ConvertToMixinscope(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { - int pos, result; - static const char *opts[] = {"all", "class", "object", NULL}; + ClientData *clientData, Tcl_Obj **outObjPtr) { + int pos=0, result; + static const Nsf_ObjvTable opts[] = { + {"all", 1}, + {"class", 2}, + {"object", 3}, + {NULL, 0u} + }; (void)pPtr; - result = Tcl_GetIndexFromObj(interp, objPtr, opts, "mixinscope", 0, &pos); - *clientData = (ClientData) INT2PTR(pos + 1); + result = Tcl_GetIndexFromObjStruct(interp, objPtr, opts, sizeof(Nsf_ObjvTable), "mixinscope", 0, &pos); + *clientData = (ClientData) INT2PTR(opts[pos].value); *outObjPtr = objPtr; return result; } -typedef enum {ConfigureoptionNULL, ConfigureoptionDebugIdx, ConfigureoptionDtraceIdx, ConfigureoptionFilterIdx, ConfigureoptionSoftrecreateIdx, ConfigureoptionObjectsystemsIdx, ConfigureoptionKeepcmdsIdx, ConfigureoptionCheckresultsIdx, ConfigureoptionCheckargumentsIdx} ConfigureoptionIdx_t; -const char *Nsf_Configureoption[] = {"debug", "dtrace", "filter", "softrecreate", "objectsystems", "keepcmds", "checkresults", "checkarguments", NULL}; +typedef enum {ConfigureoptionNULL=0x0u, ConfigureoptionDebugIdx=1, ConfigureoptionDtraceIdx=2, ConfigureoptionFilterIdx=3, ConfigureoptionSoftrecreateIdx=4, ConfigureoptionObjectsystemsIdx=5, ConfigureoptionKeepcmdsIdx=6, ConfigureoptionCheckresultsIdx=7, ConfigureoptionCheckargumentsIdx=8} ConfigureoptionIdx_t; +const Nsf_ObjvTable Nsf_Configureoption[] = { + {"debug", 1}, + {"dtrace", 2}, + {"filter", 3}, + {"softrecreate", 4}, + {"objectsystems", 5}, + {"keepcmds", 6}, + {"checkresults", 7}, + {"checkarguments", 8}, + {NULL, 0u} + }; static int ConvertToConfigureoption(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { - int pos, result; + ClientData *clientData, Tcl_Obj **outObjPtr) { + int pos=0, result; (void)pPtr; - result = Tcl_GetIndexFromObj(interp, objPtr, Nsf_Configureoption, "configureoption", 0, &pos); - *clientData = (ClientData) INT2PTR(pos + 1); + result = Tcl_GetIndexFromObjStruct(interp, objPtr, Nsf_Configureoption, sizeof(Nsf_ObjvTable), "configureoption", 0, &pos); + *clientData = (ClientData) INT2PTR(Nsf_Configureoption[pos].value); *outObjPtr = objPtr; return result; } -typedef enum {CurrentoptionNULL, CurrentoptionActivelevelIdx, CurrentoptionActivemixinIdx, CurrentoptionArgsIdx, CurrentoptionCalledclassIdx, CurrentoptionCalledmethodIdx, CurrentoptionCalledprocIdx, CurrentoptionCallingclassIdx, CurrentoptionCallinglevelIdx, CurrentoptionCallingmethodIdx, CurrentoptionCallingobjectIdx, CurrentoptionCallingprocIdx, CurrentoptionClassIdx, CurrentoptionFilterregIdx, CurrentoptionIsnextcallIdx, CurrentoptionLevelIdx, CurrentoptionMethodpathIdx, CurrentoptionMethodIdx, CurrentoptionNextmethodIdx, CurrentoptionObjectIdx, CurrentoptionProcIdx} CurrentoptionIdx_t; +typedef enum {CurrentoptionNULL=0x0u, CurrentoptionActivelevelIdx=1, CurrentoptionActivemixinIdx=2, CurrentoptionArgsIdx=3, CurrentoptionCalledclassIdx=4, CurrentoptionCalledmethodIdx=5, CurrentoptionCalledprocIdx=6, CurrentoptionCallingclassIdx=7, CurrentoptionCallinglevelIdx=8, CurrentoptionCallingmethodIdx=9, CurrentoptionCallingobjectIdx=10, CurrentoptionCallingprocIdx=11, CurrentoptionClassIdx=12, CurrentoptionFilterregIdx=13, CurrentoptionIsnextcallIdx=14, CurrentoptionLevelIdx=15, CurrentoptionMethodpathIdx=16, CurrentoptionMethodIdx=17, CurrentoptionNextmethodIdx=18, CurrentoptionObjectIdx=19, CurrentoptionProcIdx=20} CurrentoptionIdx_t; static int ConvertToCurrentoption(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { - int pos, result; - static const char *opts[] = {"activelevel", "activemixin", "args", "calledclass", "calledmethod", "calledproc", "callingclass", "callinglevel", "callingmethod", "callingobject", "callingproc", "class", "filterreg", "isnextcall", "level", "methodpath", "method", "nextmethod", "object", "proc", NULL}; + ClientData *clientData, Tcl_Obj **outObjPtr) { + int pos=0, result; + static const Nsf_ObjvTable opts[] = { + {"activelevel", 1}, + {"activemixin", 2}, + {"args", 3}, + {"calledclass", 4}, + {"calledmethod", 5}, + {"calledproc", 6}, + {"callingclass", 7}, + {"callinglevel", 8}, + {"callingmethod", 9}, + {"callingobject", 10}, + {"callingproc", 11}, + {"class", 12}, + {"filterreg", 13}, + {"isnextcall", 14}, + {"level", 15}, + {"methodpath", 16}, + {"method", 17}, + {"nextmethod", 18}, + {"object", 19}, + {"proc", 20}, + {NULL, 0u} + }; (void)pPtr; - result = Tcl_GetIndexFromObj(interp, objPtr, opts, "currentoption", 0, &pos); - *clientData = (ClientData) INT2PTR(pos + 1); + result = Tcl_GetIndexFromObjStruct(interp, objPtr, opts, sizeof(Nsf_ObjvTable), "currentoption", 0, &pos); + *clientData = (ClientData) INT2PTR(opts[pos].value); *outObjPtr = objPtr; return result; } -typedef enum {FrameNULL, FrameMethodIdx, FrameObjectIdx, FrameDefaultIdx} FrameIdx_t; +typedef enum {FrameNULL=0x0u, FrameMethodIdx=1, FrameObjectIdx=2, FrameDefaultIdx=3} FrameIdx_t; static int ConvertToFrame(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { - int pos, result; - static const char *opts[] = {"method", "object", "default", NULL}; + ClientData *clientData, Tcl_Obj **outObjPtr) { + int pos=0, result; + static const Nsf_ObjvTable opts[] = { + {"method", 1}, + {"object", 2}, + {"default", 3}, + {NULL, 0u} + }; (void)pPtr; - result = Tcl_GetIndexFromObj(interp, objPtr, opts, "frame", 0, &pos); - *clientData = (ClientData) INT2PTR(pos + 1); + result = Tcl_GetIndexFromObjStruct(interp, objPtr, opts, sizeof(Nsf_ObjvTable), "frame", 0, &pos); + *clientData = (ClientData) INT2PTR(opts[pos].value); *outObjPtr = objPtr; return result; } -typedef enum {ForwardpropertyNULL, ForwardpropertyPrefixIdx, ForwardpropertyTargetIdx, ForwardpropertyVerboseIdx} ForwardpropertyIdx_t; +typedef enum {ForwardpropertyNULL=0x0u, ForwardpropertyPrefixIdx=1, ForwardpropertyTargetIdx=2, ForwardpropertyVerboseIdx=3} ForwardpropertyIdx_t; static int ConvertToForwardproperty(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { - int pos, result; - static const char *opts[] = {"prefix", "target", "verbose", NULL}; + ClientData *clientData, Tcl_Obj **outObjPtr) { + int pos=0, result; + static const Nsf_ObjvTable opts[] = { + {"prefix", 1}, + {"target", 2}, + {"verbose", 3}, + {NULL, 0u} + }; (void)pPtr; - result = Tcl_GetIndexFromObj(interp, objPtr, opts, "forwardProperty", 0, &pos); - *clientData = (ClientData) INT2PTR(pos + 1); + result = Tcl_GetIndexFromObjStruct(interp, objPtr, opts, sizeof(Nsf_ObjvTable), "forwardProperty", 0, &pos); + *clientData = (ClientData) INT2PTR(opts[pos].value); *outObjPtr = objPtr; return result; } -typedef enum {ProtectionNULL, ProtectionCall_protectedIdx, ProtectionRedefine_protectedIdx, ProtectionNoneIdx} ProtectionIdx_t; +typedef enum {ProtectionNULL=0x0u, ProtectionCall_protectedIdx=1, ProtectionRedefine_protectedIdx=2, ProtectionNoneIdx=3} ProtectionIdx_t; static int ConvertToProtection(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { - int pos, result; - static const char *opts[] = {"call-protected", "redefine-protected", "none", NULL}; + ClientData *clientData, Tcl_Obj **outObjPtr) { + int pos=0, result; + static const Nsf_ObjvTable opts[] = { + {"call-protected", 1}, + {"redefine-protected", 2}, + {"none", 3}, + {NULL, 0u} + }; (void)pPtr; - result = Tcl_GetIndexFromObj(interp, objPtr, opts, "protection", 0, &pos); - *clientData = (ClientData) INT2PTR(pos + 1); + result = Tcl_GetIndexFromObjStruct(interp, objPtr, opts, sizeof(Nsf_ObjvTable), "protection", 0, &pos); + *clientData = (ClientData) INT2PTR(opts[pos].value); *outObjPtr = objPtr; return result; } -typedef enum {AssertionsubcmdNULL, AssertionsubcmdCheckIdx, AssertionsubcmdObject_invarIdx, AssertionsubcmdClass_invarIdx} AssertionsubcmdIdx_t; +typedef enum {AssertionsubcmdNULL=0x0u, AssertionsubcmdCheckIdx=1, AssertionsubcmdObject_invarIdx=2, AssertionsubcmdClass_invarIdx=3} AssertionsubcmdIdx_t; static int ConvertToAssertionsubcmd(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { - int pos, result; - static const char *opts[] = {"check", "object-invar", "class-invar", NULL}; + ClientData *clientData, Tcl_Obj **outObjPtr) { + int pos=0, result; + static const Nsf_ObjvTable opts[] = { + {"check", 1}, + {"object-invar", 2}, + {"class-invar", 3}, + {NULL, 0u} + }; (void)pPtr; - result = Tcl_GetIndexFromObj(interp, objPtr, opts, "assertionsubcmd", 0, &pos); - *clientData = (ClientData) INT2PTR(pos + 1); + result = Tcl_GetIndexFromObjStruct(interp, objPtr, opts, sizeof(Nsf_ObjvTable), "assertionsubcmd", 0, &pos); + *clientData = (ClientData) INT2PTR(opts[pos].value); *outObjPtr = objPtr; return result; } -typedef enum {MethodpropertyNULL, MethodpropertyClass_onlyIdx, MethodpropertyCall_privateIdx, MethodpropertyCall_protectedIdx, MethodpropertyDebugIdx, MethodpropertyDeprecatedIdx, MethodpropertyExistsIdx, MethodpropertyRedefine_protectedIdx, MethodpropertyReturnsIdx} MethodpropertyIdx_t; +typedef enum {MethodpropertyNULL=0x0u, MethodpropertyClass_onlyIdx=1, MethodpropertyCall_privateIdx=2, MethodpropertyCall_protectedIdx=3, MethodpropertyDebugIdx=4, MethodpropertyDeprecatedIdx=5, MethodpropertyExistsIdx=6, MethodpropertyRedefine_protectedIdx=7, MethodpropertyReturnsIdx=8} MethodpropertyIdx_t; static int ConvertToMethodproperty(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { - int pos, result; - static const char *opts[] = {"class-only", "call-private", "call-protected", "debug", "deprecated", "exists", "redefine-protected", "returns", NULL}; + ClientData *clientData, Tcl_Obj **outObjPtr) { + int pos=0, result; + static const Nsf_ObjvTable opts[] = { + {"class-only", 1}, + {"call-private", 2}, + {"call-protected", 3}, + {"debug", 4}, + {"deprecated", 5}, + {"exists", 6}, + {"redefine-protected", 7}, + {"returns", 8}, + {NULL, 0u} + }; (void)pPtr; - result = Tcl_GetIndexFromObj(interp, objPtr, opts, "methodProperty", 0, &pos); - *clientData = (ClientData) INT2PTR(pos + 1); + result = Tcl_GetIndexFromObjStruct(interp, objPtr, opts, sizeof(Nsf_ObjvTable), "methodProperty", 0, &pos); + *clientData = (ClientData) INT2PTR(opts[pos].value); *outObjPtr = objPtr; return result; } -typedef enum {ObjectpropertyNULL, ObjectpropertyInitializedIdx, ObjectpropertyClassIdx, ObjectpropertyRootmetaclassIdx, ObjectpropertyRootclassIdx, ObjectpropertyVolatileIdx, ObjectpropertyAutonamedIdx, ObjectpropertySlotcontainerIdx, ObjectpropertyHasperobjectslotsIdx, ObjectpropertyKeepcallerselfIdx, ObjectpropertyPerobjectdispatchIdx} ObjectpropertyIdx_t; +typedef enum {ObjectpropertyNULL=0x0u, ObjectpropertyInitializedIdx=1, ObjectpropertyClassIdx=2, ObjectpropertyRootmetaclassIdx=3, ObjectpropertyRootclassIdx=4, ObjectpropertyVolatileIdx=5, ObjectpropertyAutonamedIdx=6, ObjectpropertySlotcontainerIdx=7, ObjectpropertyHasperobjectslotsIdx=8, ObjectpropertyKeepcallerselfIdx=9, ObjectpropertyPerobjectdispatchIdx=10} ObjectpropertyIdx_t; static int ConvertToObjectproperty(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { - int pos, result; - static const char *opts[] = {"initialized", "class", "rootmetaclass", "rootclass", "volatile", "autonamed", "slotcontainer", "hasperobjectslots", "keepcallerself", "perobjectdispatch", NULL}; + ClientData *clientData, Tcl_Obj **outObjPtr) { + int pos=0, result; + static const Nsf_ObjvTable opts[] = { + {"initialized", 1}, + {"class", 2}, + {"rootmetaclass", 3}, + {"rootclass", 4}, + {"volatile", 5}, + {"autonamed", 6}, + {"slotcontainer", 7}, + {"hasperobjectslots", 8}, + {"keepcallerself", 9}, + {"perobjectdispatch", 10}, + {NULL, 0u} + }; (void)pPtr; - result = Tcl_GetIndexFromObj(interp, objPtr, opts, "objectProperty", 0, &pos); - *clientData = (ClientData) INT2PTR(pos + 1); + result = Tcl_GetIndexFromObjStruct(interp, objPtr, opts, sizeof(Nsf_ObjvTable), "objectProperty", 0, &pos); + *clientData = (ClientData) INT2PTR(opts[pos].value); *outObjPtr = objPtr; return result; } -typedef enum {ParametersubcmdNULL, ParametersubcmdDefaultIdx, ParametersubcmdListIdx, ParametersubcmdNameIdx, ParametersubcmdSyntaxIdx, ParametersubcmdTypeIdx} ParametersubcmdIdx_t; +typedef enum {ParametersubcmdNULL=0x0u, ParametersubcmdDefaultIdx=1, ParametersubcmdListIdx=2, ParametersubcmdNameIdx=3, ParametersubcmdSyntaxIdx=4, ParametersubcmdTypeIdx=5} ParametersubcmdIdx_t; static int ConvertToParametersubcmd(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { - int pos, result; - static const char *opts[] = {"default", "list", "name", "syntax", "type", NULL}; + ClientData *clientData, Tcl_Obj **outObjPtr) { + int pos=0, result; + static const Nsf_ObjvTable opts[] = { + {"default", 1}, + {"list", 2}, + {"name", 3}, + {"syntax", 4}, + {"type", 5}, + {NULL, 0u} + }; (void)pPtr; - result = Tcl_GetIndexFromObj(interp, objPtr, opts, "parametersubcmd", 0, &pos); - *clientData = (ClientData) INT2PTR(pos + 1); + result = Tcl_GetIndexFromObjStruct(interp, objPtr, opts, sizeof(Nsf_ObjvTable), "parametersubcmd", 0, &pos); + *clientData = (ClientData) INT2PTR(opts[pos].value); *outObjPtr = objPtr; return result; } -typedef enum {RelationtypeNULL, RelationtypeObject_mixinIdx, RelationtypeClass_mixinIdx, RelationtypeObject_filterIdx, RelationtypeClass_filterIdx, RelationtypeClassIdx, RelationtypeSuperclassIdx, RelationtypeRootclassIdx} RelationtypeIdx_t; +typedef enum {RelationtypeNULL=0x0u, RelationtypeObject_mixinIdx=1, RelationtypeClass_mixinIdx=2, RelationtypeObject_filterIdx=3, RelationtypeClass_filterIdx=4, RelationtypeClassIdx=5, RelationtypeSuperclassIdx=6, RelationtypeRootclassIdx=7} RelationtypeIdx_t; static int ConvertToRelationtype(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { - int pos, result; - static const char *opts[] = {"object-mixin", "class-mixin", "object-filter", "class-filter", "class", "superclass", "rootclass", NULL}; + ClientData *clientData, Tcl_Obj **outObjPtr) { + int pos=0, result; + static const Nsf_ObjvTable opts[] = { + {"object-mixin", 1}, + {"class-mixin", 2}, + {"object-filter", 3}, + {"class-filter", 4}, + {"class", 5}, + {"superclass", 6}, + {"rootclass", 7}, + {NULL, 0u} + }; (void)pPtr; - result = Tcl_GetIndexFromObj(interp, objPtr, opts, "relationtype", 0, &pos); - *clientData = (ClientData) INT2PTR(pos + 1); + result = Tcl_GetIndexFromObjStruct(interp, objPtr, opts, sizeof(Nsf_ObjvTable), "relationtype", 0, &pos); + *clientData = (ClientData) INT2PTR(opts[pos].value); *outObjPtr = objPtr; return result; } @@ -910,9 +1043,9 @@ if (objc != 2) { - return NsfArgumentError(interp, "wrong # of arguments:", - method_definitions[NsfCAllocMethodIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "wrong # of arguments:", + method_definitions[NsfCAllocMethodIdx].paramDefs, + NULL, objv[0]); } return NsfCAllocMethod(interp, class, objv[1]); @@ -962,9 +1095,9 @@ if (objc != 2) { - return NsfArgumentError(interp, "wrong # of arguments:", - method_definitions[NsfCDeallocMethodIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "wrong # of arguments:", + method_definitions[NsfCDeallocMethodIdx].paramDefs, + NULL, objv[0]); } return NsfCDeallocMethod(interp, class, objv[1]); @@ -1015,9 +1148,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfCGetCachendParametersMethodIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfCGetCachendParametersMethodIdx].paramDefs, + NULL, objv[0]); } return NsfCGetCachendParametersMethod(interp, class); @@ -1124,9 +1257,9 @@ if (objc < 1 || objc > 2) { - return NsfArgumentError(interp, "wrong # of arguments:", - method_definitions[NsfCSuperclassMethodIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "wrong # of arguments:", + method_definitions[NsfCSuperclassMethodIdx].paramDefs, + NULL, objv[0]); } return NsfCSuperclassMethod(interp, class, objc == 2 ? objv[1] : NULL); @@ -1671,9 +1804,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfCallgrindStartInstrumentationCmdIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfCallgrindStartInstrumentationCmdIdx].paramDefs, + NULL, objv[0]); } return NsfCallgrindStartInstrumentationCmd(interp); @@ -1687,9 +1820,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfCallgrindStopInstrumentationCmdIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfCallgrindStopInstrumentationCmdIdx].paramDefs, + NULL, objv[0]); } return NsfCallgrindStopInstrumentationCmd(interp); @@ -1703,9 +1836,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfCallgrindToggleCollectCmdIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfCallgrindToggleCollectCmdIdx].paramDefs, + NULL, objv[0]); } return NsfCallgrindToggleCollectCmd(interp); @@ -1719,9 +1852,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfCallgrindZeroStatsCmdIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfCallgrindZeroStatsCmdIdx].paramDefs, + NULL, objv[0]); } return NsfCallgrindZeroStatsCmd(interp); @@ -1809,9 +1942,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfDebugCompileEpochIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfDebugCompileEpochIdx].paramDefs, + NULL, objv[0]); } return NsfDebugCompileEpoch(interp); @@ -1825,9 +1958,9 @@ if (objc != 2) { - return NsfArgumentError(interp, "wrong # of arguments:", - method_definitions[NsfDebugGetDictIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "wrong # of arguments:", + method_definitions[NsfDebugGetDictIdx].paramDefs, + NULL, objv[0]); } return NsfDebugGetDict(interp, objv[1]); @@ -1841,9 +1974,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfDebugRunAssertionsCmdIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfDebugRunAssertionsCmdIdx].paramDefs, + NULL, objv[0]); } return NsfDebugRunAssertionsCmd(interp); @@ -1857,9 +1990,9 @@ if (objc != 2) { - return NsfArgumentError(interp, "wrong # of arguments:", - method_definitions[NsfDebugShowObjIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "wrong # of arguments:", + method_definitions[NsfDebugShowObjIdx].paramDefs, + NULL, objv[0]); } return NsfDebugShowObj(interp, objv[1]); @@ -1873,9 +2006,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfDefinitionNamespaceCmdIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfDefinitionNamespaceCmdIdx].paramDefs, + NULL, objv[0]); } return NsfDefinitionNamespaceCmd(interp); @@ -2173,9 +2306,9 @@ if (objc != 2) { - return NsfArgumentError(interp, "wrong # of arguments:", - method_definitions[NsfMethodRegisteredCmdIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "wrong # of arguments:", + method_definitions[NsfMethodRegisteredCmdIdx].paramDefs, + NULL, objv[0]); } return NsfMethodRegisteredCmd(interp, objv[1]); @@ -2255,9 +2388,9 @@ if (objc < 1 || objc > 2) { - return NsfArgumentError(interp, "wrong # of arguments:", - method_definitions[NsfNextCmdIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "wrong # of arguments:", + method_definitions[NsfNextCmdIdx].paramDefs, + NULL, objv[0]); } return NsfNextCmd(interp, objc == 2 ? objv[1] : NULL); @@ -2293,9 +2426,9 @@ if (objc != 2) { - return NsfArgumentError(interp, "wrong # of arguments:", - method_definitions[NsfObjectExistsCmdIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "wrong # of arguments:", + method_definitions[NsfObjectExistsCmdIdx].paramDefs, + NULL, objv[0]); } return NsfObjectExistsCmd(interp, objv[1]); @@ -2331,9 +2464,9 @@ if (objc != 2) { - return NsfArgumentError(interp, "wrong # of arguments:", - method_definitions[NsfObjectQualifyCmdIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "wrong # of arguments:", + method_definitions[NsfObjectQualifyCmdIdx].paramDefs, + NULL, objv[0]); } return NsfObjectQualifyCmd(interp, objv[1]); @@ -2500,9 +2633,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfProfileClearDataStubIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfProfileClearDataStubIdx].paramDefs, + NULL, objv[0]); } return NsfProfileClearDataStub(interp); @@ -2516,9 +2649,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfProfileGetDataStubIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfProfileGetDataStubIdx].paramDefs, + NULL, objv[0]); } return NsfProfileGetDataStub(interp); @@ -2598,9 +2731,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfSelfCmdIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfSelfCmdIdx].paramDefs, + NULL, objv[0]); } return NsfSelfCmd(interp); @@ -2614,9 +2747,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfShowStackCmdIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfShowStackCmdIdx].paramDefs, + NULL, objv[0]); } return NsfShowStackCmd(interp); @@ -2630,9 +2763,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfUnsetUnknownArgsCmdIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfUnsetUnknownArgsCmdIdx].paramDefs, + NULL, objv[0]); } return NsfUnsetUnknownArgsCmd(interp); @@ -2787,9 +2920,9 @@ if (objc != 2) { - return NsfArgumentError(interp, "wrong # of arguments:", - method_definitions[NsfOCgetMethodIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "wrong # of arguments:", + method_definitions[NsfOCgetMethodIdx].paramDefs, + NULL, objv[0]); } return NsfOCgetMethod(interp, object, objv[1]); @@ -2807,9 +2940,9 @@ if (objc < 1 || objc > 2) { - return NsfArgumentError(interp, "wrong # of arguments:", - method_definitions[NsfOClassMethodIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "wrong # of arguments:", + method_definitions[NsfOClassMethodIdx].paramDefs, + NULL, objv[0]); } return NsfOClassMethod(interp, object, objc == 2 ? objv[1] : NULL); @@ -2827,9 +2960,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfOCleanupMethodIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfOCleanupMethodIdx].paramDefs, + NULL, objv[0]); } return NsfOCleanupMethod(interp, object); @@ -2871,9 +3004,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfODestroyMethodIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfODestroyMethodIdx].paramDefs, + NULL, objv[0]); } return NsfODestroyMethod(interp, object); @@ -2989,9 +3122,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfONoinitMethodIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfONoinitMethodIdx].paramDefs, + NULL, objv[0]); } return NsfONoinitMethod(interp, object); @@ -3009,9 +3142,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfORequireNamespaceMethodIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfORequireNamespaceMethodIdx].paramDefs, + NULL, objv[0]); } return NsfORequireNamespaceMethod(interp, object); @@ -3101,9 +3234,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfOVolatile1MethodIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfOVolatile1MethodIdx].paramDefs, + NULL, objv[0]); } return NsfOVolatile1Method(interp, object); @@ -3121,9 +3254,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfOVolatileMethodIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfOVolatileMethodIdx].paramDefs, + NULL, objv[0]); } return NsfOVolatileMethod(interp, object); @@ -3141,9 +3274,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfObjInfoBaseclassMethodIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfObjInfoBaseclassMethodIdx].paramDefs, + NULL, objv[0]); } return NsfObjInfoBaseclassMethod(interp, object); @@ -3186,9 +3319,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfObjInfoClassMethodIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfObjInfoClassMethodIdx].paramDefs, + NULL, objv[0]); } return NsfObjInfoClassMethod(interp, object); @@ -3328,9 +3461,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfObjInfoHasnamespaceMethodIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfObjInfoHasnamespaceMethodIdx].paramDefs, + NULL, objv[0]); } return NsfObjInfoHasnamespaceMethod(interp, object); @@ -3397,9 +3530,9 @@ if (objc != 2) { - return NsfArgumentError(interp, "wrong # of arguments:", - method_definitions[NsfObjInfoLookupMethodMethodIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "wrong # of arguments:", + method_definitions[NsfObjInfoLookupMethodMethodIdx].paramDefs, + NULL, objv[0]); } return NsfObjInfoLookupMethodMethod(interp, object, objv[1]); @@ -3637,9 +3770,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfObjInfoNameMethodIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfObjInfoNameMethodIdx].paramDefs, + NULL, objv[0]); } return NsfObjInfoNameMethod(interp, object); @@ -3657,9 +3790,9 @@ if (unlikely(objc != 1)) { - return NsfArgumentError(interp, "too many arguments:", - method_definitions[NsfObjInfoParentMethodIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "too many arguments:", + method_definitions[NsfObjInfoParentMethodIdx].paramDefs, + NULL, objv[0]); } return NsfObjInfoParentMethod(interp, object); Index: generic/nsfInt.h =================================================================== diff -u -N -r65d1c0f8d783d97a78b93f14871045fa9d4e5a41 -rf0f87b41b6bb57a518fc1bc52fd2f3422d7a9b07 --- generic/nsfInt.h (.../nsfInt.h) (revision 65d1c0f8d783d97a78b93f14871045fa9d4e5a41) +++ generic/nsfInt.h (.../nsfInt.h) (revision f0f87b41b6bb57a518fc1bc52fd2f3422d7a9b07) @@ -1392,5 +1392,5 @@ #define NsfCallStackFindLastInvocation(interp, offset, framePtrPtr) \ NsfCallStackFindCallingContext((interp), (offset), (framePtrPtr), NULL) -EXTERN const char *Nsf_Configureoption[]; +EXTERN const Nsf_ObjvTable Nsf_Configureoption[]; #endif /* NSF_INCLUDE_nsf_int_h_ */ Index: library/mongodb/mongoAPI.h =================================================================== diff -u -N -r37833d2979f789fc14627e6c1f38ca3cb0ceac01 -rf0f87b41b6bb57a518fc1bc52fd2f3422d7a9b07 --- library/mongodb/mongoAPI.h (.../mongoAPI.h) (revision 37833d2979f789fc14627e6c1f38ca3cb0ceac01) +++ library/mongodb/mongoAPI.h (.../mongoAPI.h) (revision f0f87b41b6bb57a518fc1bc52fd2f3422d7a9b07) @@ -6,35 +6,35 @@ #if defined(USE_NSF_STUBS) int Nsf_ConvertTo_Boolean(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { + ClientData *clientData, Tcl_Obj **outObjPtr) { return Nsf_ConvertToBoolean(interp, objPtr, pPtr, clientData, outObjPtr); } int Nsf_ConvertTo_Class(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { + ClientData *clientData, Tcl_Obj **outObjPtr) { return Nsf_ConvertToClass(interp, objPtr, pPtr, clientData, outObjPtr); } int Nsf_ConvertTo_Int32(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { + ClientData *clientData, Tcl_Obj **outObjPtr) { return Nsf_ConvertToInt32(interp, objPtr, pPtr, clientData, outObjPtr); } int Nsf_ConvertTo_Integer(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { + ClientData *clientData, Tcl_Obj **outObjPtr) { return Nsf_ConvertToInteger(interp, objPtr, pPtr, clientData, outObjPtr); } int Nsf_ConvertTo_Object(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { + ClientData *clientData, Tcl_Obj **outObjPtr) { return Nsf_ConvertToObject(interp, objPtr, pPtr, clientData, outObjPtr); } int Nsf_ConvertTo_Pointer(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { + ClientData *clientData, Tcl_Obj **outObjPtr) { return Nsf_ConvertToPointer(interp, objPtr, pPtr, clientData, outObjPtr); } int Nsf_ConvertTo_String(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { + ClientData *clientData, Tcl_Obj **outObjPtr) { return Nsf_ConvertToString(interp, objPtr, pPtr, clientData, outObjPtr); } int Nsf_ConvertTo_Tclobj(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { + ClientData *clientData, Tcl_Obj **outObjPtr) { return Nsf_ConvertToTclobj(interp, objPtr, pPtr, clientData, outObjPtr); } #else @@ -64,15 +64,19 @@ -typedef enum {GridfilesourceNULL, GridfilesourceFileIdx, GridfilesourceStringIdx} GridfilesourceIdx_t; +typedef enum {GridfilesourceNULL=0x0u, GridfilesourceFileIdx=1, GridfilesourceStringIdx=2} GridfilesourceIdx_t; static int ConvertToGridfilesource(Tcl_Interp *interp, Tcl_Obj *objPtr, Nsf_Param const *pPtr, - ClientData *clientData, Tcl_Obj **outObjPtr) { - int pos, result; - static const char *opts[] = {"file", "string", NULL}; + ClientData *clientData, Tcl_Obj **outObjPtr) { + int pos=0, result; + static const Nsf_ObjvTable opts[] = { + {"file", 1}, + {"string", 2}, + {NULL, 0u} + }; (void)pPtr; - result = Tcl_GetIndexFromObj(interp, objPtr, opts, "gridfilesource", 0, &pos); - *clientData = (ClientData) INT2PTR(pos + 1); + result = Tcl_GetIndexFromObjStruct(interp, objPtr, opts, sizeof(Nsf_ObjvTable), "gridfilesource", 0, &pos); + *clientData = (ClientData) INT2PTR(opts[pos].value); *outObjPtr = objPtr; return result; } @@ -642,7 +646,7 @@ method_definitions[NsfMongoGridFileCreateIdx].paramDefs, method_definitions[NsfMongoGridFileCreateIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { - GridfilesourceIdx_t withSource = (GridfilesourceIdx_t )pc.clientData[0]; + GridfilesourceIdx_t withSource = (GridfilesourceIdx_t )PTR2INT(pc.clientData[0]); mongoc_gridfs_t *gfsPtr = (mongoc_gridfs_t *)pc.clientData[1]; const char *value = (const char *)pc.clientData[2]; const char *name = (const char *)pc.clientData[3]; @@ -809,9 +813,9 @@ if (objc != 2) { - return NsfArgumentError(interp, "wrong # of arguments:", - method_definitions[NsfMongoJsonGenerateIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "wrong # of arguments:", + method_definitions[NsfMongoJsonGenerateIdx].paramDefs, + NULL, objv[0]); } return NsfMongoJsonGenerate(interp, objv[1]); @@ -825,9 +829,9 @@ if (objc != 2) { - return NsfArgumentError(interp, "wrong # of arguments:", - method_definitions[NsfMongoJsonParseIdx].paramDefs, - NULL, objv[0]); + return NsfArgumentError(interp, "wrong # of arguments:", + method_definitions[NsfMongoJsonParseIdx].paramDefs, + NULL, objv[0]); } return NsfMongoJsonParse(interp, objv[1]);