Index: TODO =================================================================== diff -u -r1f666096846419774da5ef6c42150ae1388ba3cd -r9dadb4297ee2e6b648f14674b79f8ef678fbb8fb --- TODO (.../TODO) (revision 1f666096846419774da5ef6c42150ae1388ba3cd) +++ TODO (.../TODO) (revision 9dadb4297ee2e6b648f14674b79f8ef678fbb8fb) @@ -4049,10 +4049,21 @@ - added summary at the end of "make test" via log file - updated .gitignore -nx.tcl: +nsf.c - rename nx::Object.configure to nx::Object.__configure to free method name "configure" for an e.g. tk-like configure +- refactored code to allow to parameterize handling of required flag for parameters +- +doCheckArguments + +#define NSF_ARGPARSE_CHECK 0x0001 +#define NSF_ARGPARSE_FORCE_REQUIRED 0x0002 +#define NSF_ARGPARSE_METHOD_PUSH 0x0100 +#define NSF_ARGPARSE_BUILTIN (NSF_ARGPARSE_CHECK|NSF_ARGPARSE_FORCE_REQUIRED) + + + ======================================================================== TODO: Index: generic/gentclAPI.tcl =================================================================== diff -u -rc558f89e9d37ecf8bed1a65fe26ff620bc8b9c96 -r9dadb4297ee2e6b648f14674b79f8ef678fbb8fb --- generic/gentclAPI.tcl (.../gentclAPI.tcl) (revision c558f89e9d37ecf8bed1a65fe26ff620bc8b9c96) +++ generic/gentclAPI.tcl (.../gentclAPI.tcl) (revision 9dadb4297ee2e6b648f14674b79f8ef678fbb8fb) @@ -272,7 +272,7 @@ $intro if (likely(ArgumentParse(interp, objc, objv, $obj, objv[0], method_definitions[$idx].paramDefs, - method_definitions[$idx].nrParameters, 0, 1, + method_definitions[$idx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { $cDefs $pre Index: generic/nsf.c =================================================================== diff -u -rede10bf0265c3943458771665317aa0c12971900 -r9dadb4297ee2e6b648f14674b79f8ef678fbb8fb --- generic/nsf.c (.../nsf.c) (revision ede10bf0265c3943458771665317aa0c12971900) +++ generic/nsf.c (.../nsf.c) (revision 9dadb4297ee2e6b648f14674b79f8ef678fbb8fb) @@ -287,18 +287,18 @@ /* prototypes for parameter and argument management */ static int NsfInvalidateObjectParameterCmd(Tcl_Interp *interp, NsfClass *cl); static int ProcessMethodArguments(ParseContext *pcPtr, Tcl_Interp *interp, - NsfObject *object, int pushFrame, NsfParamDefs *paramDefs, + NsfObject *object, int processFlags, NsfParamDefs *paramDefs, Tcl_Obj *methodNameObj, int objc, Tcl_Obj *CONST objv[]); static int ParameterCheck(Tcl_Interp *interp, Tcl_Obj *paramObjPtr, Tcl_Obj *valueObj, - const char *argNamePrefix, int doCheck, Nsf_Param **paramPtrPtr); + const char *argNamePrefix, int doCheckArguments, Nsf_Param **paramPtrPtr); static void ParamDefsRefCountIncr(NsfParamDefs *paramDefs); static void ParamDefsRefCountDecr(NsfParamDefs *paramDefs); static int ParamSetFromAny(Tcl_Interp *interp, register Tcl_Obj *objPtr); static int ArgumentParse(Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[], NsfObject *obj, Tcl_Obj *procName, Nsf_Param CONST *paramPtr, int nrParameters, int serial, - int doCheck, ParseContext *pc); -static int ArgumentCheck(Tcl_Interp *interp, Tcl_Obj *objPtr, struct Nsf_Param CONST *pPtr, int doCheck, + int processFlags, ParseContext *pc); +static int ArgumentCheck(Tcl_Interp *interp, Tcl_Obj *objPtr, struct Nsf_Param CONST *pPtr, int doCheckArguments, int *flags, ClientData *clientData, Tcl_Obj **outObjPtr); static int GetMatchObject(Tcl_Interp *interp, Tcl_Obj *patternObj, Tcl_Obj *origObj, NsfObject **matchObject, CONST char **pattern); @@ -9439,7 +9439,9 @@ #if defined(NRE) pcPtr = (ParseContext *) NsfTclStackAlloc(interp, sizeof(ParseContext), "parse context"); #endif - result = ProcessMethodArguments(pcPtr, interp, object, 1, paramDefs, objv[0], objc, objv); + result = ProcessMethodArguments(pcPtr, interp, object, + NSF_ARGPARSE_METHOD_PUSH|NSF_ARGPARSE_FORCE_REQUIRED, + paramDefs, objv[0], objc, objv); cscPtr->objc = objc; cscPtr->objv = (Tcl_Obj **)objv; @@ -12775,7 +12777,8 @@ tov[0] = tcd->procName; /* If the argument parsing is ok, the shadowed proc will be called */ - result = ProcessMethodArguments(pcPtr, interp, NULL, 0, + result = ProcessMethodArguments(pcPtr, interp, NULL, + NSF_ARGPARSE_FORCE_REQUIRED, tcd->paramDefs, objv[0], objc, tov); @@ -12974,18 +12977,18 @@ static int ProcessMethodArguments(ParseContext *pcPtr, Tcl_Interp *interp, - NsfObject *object, int pushFrame, NsfParamDefs *paramDefs, + NsfObject *object, int processFlags, NsfParamDefs *paramDefs, Tcl_Obj *methodNameObj, int objc, Tcl_Obj *CONST objv[]) { int result; CallFrame frame, *framePtr = &frame; - if (object && pushFrame) { + if (object && (processFlags & NSF_ARGPARSE_METHOD_PUSH)) { Nsf_PushFrameObj(interp, object, framePtr); } result = ArgumentParse(interp, objc, objv, object, methodNameObj, paramDefs->paramsPtr, paramDefs->nrParams, paramDefs->serial, - RUNTIME_STATE(interp)->doCheckArguments, + processFlags|RUNTIME_STATE(interp)->doCheckArguments, pcPtr); #if 0 { @@ -12999,7 +13002,7 @@ } #endif - if (object && pushFrame) { + if (object && (processFlags & NSF_ARGPARSE_METHOD_PUSH)) { Nsf_PopFrameObj(interp, framePtr); } @@ -16402,7 +16405,8 @@ } static int -ArgumentCheck(Tcl_Interp *interp, Tcl_Obj *objPtr, struct Nsf_Param CONST *pPtr, int doCheck, +ArgumentCheck(Tcl_Interp *interp, Tcl_Obj *objPtr, struct Nsf_Param CONST *pPtr, + int doCheckArguments, int *flags, ClientData *clientData, Tcl_Obj **outObjPtr) { int result; @@ -16416,7 +16420,9 @@ * ... argument checking is turned off *and* no converter is specified, or * ... the ruling parameter option is 'initcmd' */ - if ((unlikely(doCheck == 0) && (pPtr->flags & (NSF_ARG_IS_CONVERTER)) == 0) || (pPtr->flags & (NSF_ARG_INITCMD))) { + if ((unlikely((doCheckArguments & NSF_ARGPARSE_CHECK) == 0) + && (pPtr->flags & (NSF_ARG_IS_CONVERTER)) == 0 + ) || (pPtr->flags & (NSF_ARG_INITCMD))) { /* fprintf(stderr, "*** omit argument check for arg %s flags %.6x\n", pPtr->name, pPtr->flags); */ *clientData = ObjStr(objPtr); return TCL_OK; @@ -16505,7 +16511,7 @@ static int ArgumentDefaults(ParseContext *pcPtr, Tcl_Interp *interp, - Nsf_Param CONST *ifd, int nrParams) { + Nsf_Param CONST *ifd, int nrParams, int processFlags) { Nsf_Param CONST *pPtr; int i; @@ -16617,7 +16623,8 @@ pPtr->name, ObjStr(pPtr->defaultValue), pPtr->type);*/ assert(pPtr->type ? pPtr->defaultValue == NULL : 1); } - } else if (unlikely(pPtr->flags & NSF_ARG_REQUIRED)) { + } else if (unlikely(pPtr->flags & NSF_ARG_REQUIRED) + && (processFlags & NSF_ARGPARSE_FORCE_REQUIRED)) { Tcl_Obj *paramDefsObj = NsfParamDefsSyntax(ifd); NsfPrintError(interp, "required argument '%s' is missing, should be:\n\t%s%s%s %s", @@ -16663,10 +16670,9 @@ Nsf_ArgumentParse(Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[], Nsf_Object *object, Tcl_Obj *procNameObj, Nsf_Param CONST *paramPtr, int nrParams, int serial, - int doCheck, - Nsf_ParseContext *pcPtr) { + int processFlags, Nsf_ParseContext *pcPtr) { return ArgumentParse(interp, objc, objv, (NsfObject *)object, procNameObj, - paramPtr, nrParams, serial, doCheck, + paramPtr, nrParams, serial, processFlags, (ParseContext *)pcPtr); } @@ -16683,7 +16689,7 @@ ArgumentParse(Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[], NsfObject *object, Tcl_Obj *procNameObj, Nsf_Param CONST *paramPtr, int nrParams, int serial, - int doCheck, ParseContext *pcPtr) { + int processFlags, ParseContext *pcPtr) { int o, dashdash = 0, j; Nsf_Param CONST *currentParamPtr = paramPtr; Nsf_Param CONST *lastParamPtr = paramPtr + nrParams - 1; @@ -16987,7 +16993,7 @@ */ assert(valueObj); - if (unlikely(ArgumentCheck(interp, valueObj, pPtr, doCheck, + if (unlikely(ArgumentCheck(interp, valueObj, pPtr, processFlags, &pcPtr->flags[j], &pcPtr->clientData[j], &pcPtr->objv[j]) != TCL_OK)) { @@ -17073,7 +17079,7 @@ o, pcPtr->lastObjc, nrParams, ovarArgs); #endif - return ArgumentDefaults(pcPtr, interp, paramPtr, nrParams); + return ArgumentDefaults(pcPtr, interp, paramPtr, nrParams, processFlags); } /*********************************** @@ -18896,9 +18902,9 @@ case ConfigureoptionCheckargumentsIdx: Tcl_SetBooleanObj(Tcl_GetObjResult(interp), - (RUNTIME_STATE(interp)->doCheckArguments)); + (RUNTIME_STATE(interp)->doCheckArguments) != 0); if (valueObj) { - RUNTIME_STATE(interp)->doCheckArguments = bool; + RUNTIME_STATE(interp)->doCheckArguments = bool ? NSF_ARGPARSE_CHECK : 0; } break; } @@ -18954,8 +18960,8 @@ if (ArgumentParse(interp, nobjc, nobjv, NULL, nobjv[0], method_definitions[NsfMyCmdIdx].paramDefs, - method_definitions[NsfMyCmdIdx].nrParameters, 0, 1, - &pc) != TCL_OK) { + method_definitions[NsfMyCmdIdx].nrParameters, + 0, NSF_ARGPARSE_BUILTIN, &pc) != TCL_OK) { return TCL_ERROR; } @@ -21371,7 +21377,7 @@ * ParameterCheck -- * * Check the provided valueObj against the parameter specification provided - * in the second argument (paramObjPtr), when doCheck is true. This + * in the second argument (paramObjPtr), when doCheckArguments is true. This * function is used e.g. by nsf::is, where only the right hand side of a * parameter specification (after the colon) is specified. The argument * Name (before the colon in a parameter spec) is provided via @@ -21389,7 +21395,7 @@ static int ParameterCheck(Tcl_Interp *interp, Tcl_Obj *paramObjPtr, Tcl_Obj *valueObj, - const char *argNamePrefix, int doCheck, Nsf_Param **paramPtrPtr) { + const char *argNamePrefix, int doCheckArguments, Nsf_Param **paramPtrPtr) { Nsf_Param *paramPtr; NsfParamWrapper *paramWrapperPtr; Tcl_Obj *outObjPtr = NULL; @@ -21417,7 +21423,7 @@ paramPtr = paramWrapperPtr->paramPtr; if (paramPtrPtr) *paramPtrPtr = paramPtr; - result = ArgumentCheck(interp, valueObj, paramPtr, doCheck, &flags, &checkedData, &outObjPtr); + result = ArgumentCheck(interp, valueObj, paramPtr, doCheckArguments, &flags, &checkedData, &outObjPtr); /*fprintf(stderr, "ParameterCheck paramPtr %p final refCount of wrapper %d can free %d flags %.6x\n", paramPtr, paramWrapperPtr->refCount, paramWrapperPtr->canFree, flags);*/ @@ -21603,25 +21609,24 @@ for (i = 1, paramPtr = paramDefs->paramsPtr; paramPtr->name; paramPtr++, i++) { /* - * Set the new value always when the object is not yet initialized and the - * new value was specified (was not taken from the default value - * definition). The second part of the test is needed to avoid - * overwriting with default values when e.g. "o configure" is called lated - * without arguments. + * Set the new value always when the new value was specified (was not + * taken from the default). When we take the default, we do not overwrite + * already existing values (which might have been set via parameter + * alias). */ /*fprintf(stderr, "[%d] param %s, object init called %d is default %d value = '%s' nrArgs %d\n", i, paramPtr->name, (object->flags & NSF_INIT_CALLED), (pc.flags[i-1] & NSF_PC_IS_DEFAULT), ObjStr(pc.full_objv[i]), paramPtr->nrArgs);*/ - if (/*(object->flags & NSF_INIT_CALLED) &&*/ (pc.flags[i-1] & NSF_PC_IS_DEFAULT)) { - Tcl_Obj *varObj; - + if ((pc.flags[i-1] & NSF_PC_IS_DEFAULT)) { /* * Object parameter method calls (when the flag * NSF_ARG_METHOD_INVOCATION is set) do not set instance variables, so * we do not have to check for existing variables. */ + Tcl_Obj *varObj; + if ((paramPtr->flags & NSF_ARG_METHOD_INVOCATION) == 0) { varObj = Tcl_ObjGetVar2(interp, paramPtr->nameObj, NULL, TCL_PARSE_PART1); if (varObj) { @@ -21634,6 +21639,32 @@ continue; } } + } else if (unlikely(paramPtr->flags & NSF_ARG_REQUIRED + && pc.full_objv[i] == NsfGlobalObjs[NSF___UNKNOWN__] + && (object->flags & NSF_INIT_CALLED) == 0) + ) { + /* + * The checking for required arguments happens only, when the actual + * value is not the default, but the magic __UNKNOWN Tcl_Obj, and the + * object is not jet initialized. Logic behind this: if the object is + * initialized, configure must have been called before, and the required + * action must have been already taken). We might change this to the + * overwriting logic like above, but we have as well to deal with + * aliases. + */ + Tcl_Obj *paramDefsObj = NsfParamDefsSyntax(paramDefs->paramsPtr); + + NsfPrintError(interp, "required argument '%s' is missing, should be:\n\t%s%s%s %s", + paramPtr->nameObj ? ObjStr(paramPtr->nameObj) : paramPtr->name, + pc.object ? ObjectName(pc.object) : "", + pc.object ? " " : "", + ObjStr(pc.full_objv[0]), + ObjStr(paramDefsObj)); + DECR_REF_COUNT2("paramDefsObj", paramDefsObj); + + Nsf_PopFrameObj(interp, framePtr); + result = TCL_ERROR; + goto configure_exit; } newValue = pc.full_objv[i]; @@ -24725,7 +24756,7 @@ rst = RUNTIME_STATE(interp); rst->doFilters = 1; rst->doCheckResults = 1; - rst->doCheckArguments = 1; + rst->doCheckArguments = NSF_ARGPARSE_CHECK; #if defined(NSF_STACKCHECK) { int someVar; Index: generic/nsfAPI.h =================================================================== diff -u -rb36642f41c9d2ff8035f9cce982789b16dd50385 -r9dadb4297ee2e6b648f14674b79f8ef678fbb8fb --- generic/nsfAPI.h (.../nsfAPI.h) (revision b36642f41c9d2ff8035f9cce982789b16dd50385) +++ generic/nsfAPI.h (.../nsfAPI.h) (revision 9dadb4297ee2e6b648f14674b79f8ef678fbb8fb) @@ -559,7 +559,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "create"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfCCreateMethodIdx].paramDefs, - method_definitions[NsfCCreateMethodIdx].nrParameters, 0, 1, + method_definitions[NsfCCreateMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { CONST char *objectName = (CONST char *)pc.clientData[0]; @@ -594,7 +594,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "filterguard"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfCFilterGuardMethodIdx].paramDefs, - method_definitions[NsfCFilterGuardMethodIdx].nrParameters, 0, 1, + method_definitions[NsfCFilterGuardMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { CONST char *filter = (CONST char *)pc.clientData[0]; Tcl_Obj *guard = (Tcl_Obj *)pc.clientData[1]; @@ -614,7 +614,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "mixinguard"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfCMixinGuardMethodIdx].paramDefs, - method_definitions[NsfCMixinGuardMethodIdx].nrParameters, 0, 1, + method_definitions[NsfCMixinGuardMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { Tcl_Obj *mixin = (Tcl_Obj *)pc.clientData[0]; Tcl_Obj *guard = (Tcl_Obj *)pc.clientData[1]; @@ -634,7 +634,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "new"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfCNewMethodIdx].paramDefs, - method_definitions[NsfCNewMethodIdx].nrParameters, 0, 1, + method_definitions[NsfCNewMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { Tcl_Obj *withChildof = (Tcl_Obj *)pc.clientData[0]; @@ -653,7 +653,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "recreate"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfCRecreateMethodIdx].paramDefs, - method_definitions[NsfCRecreateMethodIdx].nrParameters, 0, 1, + method_definitions[NsfCRecreateMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { Tcl_Obj *objectName = (Tcl_Obj *)pc.clientData[0]; @@ -688,7 +688,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "filterguard"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfClassInfoFilterguardMethodIdx].paramDefs, - method_definitions[NsfClassInfoFilterguardMethodIdx].nrParameters, 0, 1, + method_definitions[NsfClassInfoFilterguardMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { CONST char *filter = (CONST char *)pc.clientData[0]; @@ -707,7 +707,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "filtermethods"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfClassInfoFiltermethodsMethodIdx].paramDefs, - method_definitions[NsfClassInfoFiltermethodsMethodIdx].nrParameters, 0, 1, + method_definitions[NsfClassInfoFiltermethodsMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withGuards = (int )PTR2INT(pc.clientData[0]); CONST char *pattern = (CONST char *)pc.clientData[1]; @@ -727,7 +727,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "forward"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfClassInfoForwardMethodIdx].paramDefs, - method_definitions[NsfClassInfoForwardMethodIdx].nrParameters, 0, 1, + method_definitions[NsfClassInfoForwardMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withDefinition = (int )PTR2INT(pc.clientData[0]); CONST char *name = (CONST char *)pc.clientData[1]; @@ -747,7 +747,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "heritage"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfClassInfoHeritageMethodIdx].paramDefs, - method_definitions[NsfClassInfoHeritageMethodIdx].nrParameters, 0, 1, + method_definitions[NsfClassInfoHeritageMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { CONST char *pattern = (CONST char *)pc.clientData[0]; @@ -766,7 +766,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "instances"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfClassInfoInstancesMethodIdx].paramDefs, - method_definitions[NsfClassInfoInstancesMethodIdx].nrParameters, 0, 1, + method_definitions[NsfClassInfoInstancesMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withClosure = (int )PTR2INT(pc.clientData[0]); CONST char *patternString = NULL; @@ -800,7 +800,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "method"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfClassInfoMethodMethodIdx].paramDefs, - method_definitions[NsfClassInfoMethodMethodIdx].nrParameters, 0, 1, + method_definitions[NsfClassInfoMethodMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int infomethodsubcmd = (int )PTR2INT(pc.clientData[0]); Tcl_Obj *name = (Tcl_Obj *)pc.clientData[1]; @@ -820,7 +820,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "methods"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfClassInfoMethodsMethodIdx].paramDefs, - method_definitions[NsfClassInfoMethodsMethodIdx].nrParameters, 0, 1, + method_definitions[NsfClassInfoMethodsMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withCallprotection = (int )PTR2INT(pc.clientData[0]); int withClosure = (int )PTR2INT(pc.clientData[1]); @@ -844,7 +844,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "mixinof"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfClassInfoMixinOfMethodIdx].paramDefs, - method_definitions[NsfClassInfoMixinOfMethodIdx].nrParameters, 0, 1, + method_definitions[NsfClassInfoMixinOfMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withClosure = (int )PTR2INT(pc.clientData[0]); int withScope = (int )PTR2INT(pc.clientData[1]); @@ -879,7 +879,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "mixinclasses"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfClassInfoMixinclassesMethodIdx].paramDefs, - method_definitions[NsfClassInfoMixinclassesMethodIdx].nrParameters, 0, 1, + method_definitions[NsfClassInfoMixinclassesMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withClosure = (int )PTR2INT(pc.clientData[0]); int withGuards = (int )PTR2INT(pc.clientData[1]); @@ -915,7 +915,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "mixinguard"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfClassInfoMixinguardMethodIdx].paramDefs, - method_definitions[NsfClassInfoMixinguardMethodIdx].nrParameters, 0, 1, + method_definitions[NsfClassInfoMixinguardMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { CONST char *mixin = (CONST char *)pc.clientData[0]; @@ -934,7 +934,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "objectparameter"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfClassInfoObjectparameterMethodIdx].paramDefs, - method_definitions[NsfClassInfoObjectparameterMethodIdx].nrParameters, 0, 1, + method_definitions[NsfClassInfoObjectparameterMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int infoobjectparametersubcmd = (int )PTR2INT(pc.clientData[0]); CONST char *pattern = (CONST char *)pc.clientData[1]; @@ -954,7 +954,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "slotobjects"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfClassInfoSlotobjectsMethodIdx].paramDefs, - method_definitions[NsfClassInfoSlotobjectsMethodIdx].nrParameters, 0, 1, + method_definitions[NsfClassInfoSlotobjectsMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withClosure = (int )PTR2INT(pc.clientData[0]); int withSource = (int )PTR2INT(pc.clientData[1]); @@ -976,7 +976,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "subclass"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfClassInfoSubclassMethodIdx].paramDefs, - method_definitions[NsfClassInfoSubclassMethodIdx].nrParameters, 0, 1, + method_definitions[NsfClassInfoSubclassMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withClosure = (int )PTR2INT(pc.clientData[0]); CONST char *patternString = NULL; @@ -1010,7 +1010,7 @@ if (unlikely(cl == NULL)) return NsfDispatchClientDataError(interp, clientData, "class", "superclass"); if (likely(ArgumentParse(interp, objc, objv, (NsfObject *) cl, objv[0], method_definitions[NsfClassInfoSuperclassMethodIdx].paramDefs, - method_definitions[NsfClassInfoSuperclassMethodIdx].nrParameters, 0, 1, + method_definitions[NsfClassInfoSuperclassMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withClosure = (int )PTR2INT(pc.clientData[0]); Tcl_Obj *pattern = (Tcl_Obj *)pc.clientData[1]; @@ -1030,7 +1030,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfAsmMethodCreateCmdIdx].paramDefs, - method_definitions[NsfAsmMethodCreateCmdIdx].nrParameters, 0, 1, + method_definitions[NsfAsmMethodCreateCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfObject *object = (NsfObject *)pc.clientData[0]; int withInner_namespace = (int )PTR2INT(pc.clientData[1]); @@ -1055,7 +1055,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfAsmProcCmdIdx].paramDefs, - method_definitions[NsfAsmProcCmdIdx].nrParameters, 0, 1, + method_definitions[NsfAsmProcCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withAd = (int )PTR2INT(pc.clientData[0]); Tcl_Obj *procName = (Tcl_Obj *)pc.clientData[1]; @@ -1087,7 +1087,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfConfigureCmdIdx].paramDefs, - method_definitions[NsfConfigureCmdIdx].nrParameters, 0, 1, + method_definitions[NsfConfigureCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int configureoption = (int )PTR2INT(pc.clientData[0]); Tcl_Obj *value = (Tcl_Obj *)pc.clientData[1]; @@ -1107,7 +1107,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfCurrentCmdIdx].paramDefs, - method_definitions[NsfCurrentCmdIdx].nrParameters, 0, 1, + method_definitions[NsfCurrentCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int currentoption = (int )PTR2INT(pc.clientData[0]); @@ -1174,7 +1174,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfDirectDispatchCmdIdx].paramDefs, - method_definitions[NsfDirectDispatchCmdIdx].nrParameters, 0, 1, + method_definitions[NsfDirectDispatchCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfObject *object = (NsfObject *)pc.clientData[0]; int withFrame = (int )PTR2INT(pc.clientData[1]); @@ -1195,7 +1195,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfDispatchCmdIdx].paramDefs, - method_definitions[NsfDispatchCmdIdx].nrParameters, 0, 1, + method_definitions[NsfDispatchCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfObject *object = (NsfObject *)pc.clientData[0]; int withIntrinsic = (int )PTR2INT(pc.clientData[1]); @@ -1217,7 +1217,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfFinalizeCmdIdx].paramDefs, - method_definitions[NsfFinalizeCmdIdx].nrParameters, 0, 1, + method_definitions[NsfFinalizeCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withKeepvars = (int )PTR2INT(pc.clientData[0]); @@ -1236,7 +1236,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfInterpObjCmdIdx].paramDefs, - method_definitions[NsfInterpObjCmdIdx].nrParameters, 0, 1, + method_definitions[NsfInterpObjCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { CONST char *name = (CONST char *)pc.clientData[0]; @@ -1255,7 +1255,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfInvalidateObjectParameterCmdIdx].paramDefs, - method_definitions[NsfInvalidateObjectParameterCmdIdx].nrParameters, 0, 1, + method_definitions[NsfInvalidateObjectParameterCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfClass *class = (NsfClass *)pc.clientData[0]; @@ -1274,7 +1274,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfIsCmdIdx].paramDefs, - method_definitions[NsfIsCmdIdx].nrParameters, 0, 1, + method_definitions[NsfIsCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withComplain = (int )PTR2INT(pc.clientData[0]); Tcl_Obj *constraint = (Tcl_Obj *)pc.clientData[1]; @@ -1295,7 +1295,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfMethodAliasCmdIdx].paramDefs, - method_definitions[NsfMethodAliasCmdIdx].nrParameters, 0, 1, + method_definitions[NsfMethodAliasCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfObject *object = (NsfObject *)pc.clientData[0]; int withPer_object = (int )PTR2INT(pc.clientData[1]); @@ -1318,7 +1318,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfMethodAssertionCmdIdx].paramDefs, - method_definitions[NsfMethodAssertionCmdIdx].nrParameters, 0, 1, + method_definitions[NsfMethodAssertionCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfObject *object = (NsfObject *)pc.clientData[0]; int assertionsubcmd = (int )PTR2INT(pc.clientData[1]); @@ -1339,7 +1339,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfMethodCreateCmdIdx].paramDefs, - method_definitions[NsfMethodCreateCmdIdx].nrParameters, 0, 1, + method_definitions[NsfMethodCreateCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfObject *object = (NsfObject *)pc.clientData[0]; int withInner_namespace = (int )PTR2INT(pc.clientData[1]); @@ -1366,7 +1366,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfMethodDeleteCmdIdx].paramDefs, - method_definitions[NsfMethodDeleteCmdIdx].nrParameters, 0, 1, + method_definitions[NsfMethodDeleteCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfObject *object = (NsfObject *)pc.clientData[0]; int withPer_object = (int )PTR2INT(pc.clientData[1]); @@ -1387,7 +1387,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfMethodForwardCmdIdx].paramDefs, - method_definitions[NsfMethodForwardCmdIdx].nrParameters, 0, 1, + method_definitions[NsfMethodForwardCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfObject *object = (NsfObject *)pc.clientData[0]; int withPer_object = (int )PTR2INT(pc.clientData[1]); @@ -1415,7 +1415,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfMethodPropertyCmdIdx].paramDefs, - method_definitions[NsfMethodPropertyCmdIdx].nrParameters, 0, 1, + method_definitions[NsfMethodPropertyCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfObject *object = (NsfObject *)pc.clientData[0]; int withPer_object = (int )PTR2INT(pc.clientData[1]); @@ -1454,7 +1454,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfMethodSetterCmdIdx].paramDefs, - method_definitions[NsfMethodSetterCmdIdx].nrParameters, 0, 1, + method_definitions[NsfMethodSetterCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfObject *object = (NsfObject *)pc.clientData[0]; int withPer_object = (int )PTR2INT(pc.clientData[1]); @@ -1475,7 +1475,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfMyCmdIdx].paramDefs, - method_definitions[NsfMyCmdIdx].nrParameters, 0, 1, + method_definitions[NsfMyCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withIntrinsic = (int )PTR2INT(pc.clientData[0]); int withLocal = (int )PTR2INT(pc.clientData[1]); @@ -1497,7 +1497,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfNSCopyCmdsCmdIdx].paramDefs, - method_definitions[NsfNSCopyCmdsCmdIdx].nrParameters, 0, 1, + method_definitions[NsfNSCopyCmdsCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { Tcl_Obj *fromNs = (Tcl_Obj *)pc.clientData[0]; Tcl_Obj *toNs = (Tcl_Obj *)pc.clientData[1]; @@ -1517,7 +1517,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfNSCopyVarsCmdIdx].paramDefs, - method_definitions[NsfNSCopyVarsCmdIdx].nrParameters, 0, 1, + method_definitions[NsfNSCopyVarsCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { Tcl_Obj *fromNs = (Tcl_Obj *)pc.clientData[0]; Tcl_Obj *toNs = (Tcl_Obj *)pc.clientData[1]; @@ -1569,7 +1569,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfObjectPropertyCmdIdx].paramDefs, - method_definitions[NsfObjectPropertyCmdIdx].nrParameters, 0, 1, + method_definitions[NsfObjectPropertyCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfObject *objectName = (NsfObject *)pc.clientData[0]; int objectproperty = (int )PTR2INT(pc.clientData[1]); @@ -1606,7 +1606,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfObjectSystemCreateCmdIdx].paramDefs, - method_definitions[NsfObjectSystemCreateCmdIdx].nrParameters, 0, 1, + method_definitions[NsfObjectSystemCreateCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { Tcl_Obj *rootClass = (Tcl_Obj *)pc.clientData[0]; Tcl_Obj *rootMetaClass = (Tcl_Obj *)pc.clientData[1]; @@ -1627,7 +1627,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfProcCmdIdx].paramDefs, - method_definitions[NsfProcCmdIdx].nrParameters, 0, 1, + method_definitions[NsfProcCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withAd = (int )PTR2INT(pc.clientData[0]); Tcl_Obj *procName = (Tcl_Obj *)pc.clientData[1]; @@ -1681,7 +1681,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfRelationCmdIdx].paramDefs, - method_definitions[NsfRelationCmdIdx].nrParameters, 0, 1, + method_definitions[NsfRelationCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfObject *object = (NsfObject *)pc.clientData[0]; int relationtype = (int )PTR2INT(pc.clientData[1]); @@ -1750,7 +1750,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfVarExistsCmdIdx].paramDefs, - method_definitions[NsfVarExistsCmdIdx].nrParameters, 0, 1, + method_definitions[NsfVarExistsCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withArray = (int )PTR2INT(pc.clientData[0]); NsfObject *object = (NsfObject *)pc.clientData[1]; @@ -1771,7 +1771,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfVarImportCmdIdx].paramDefs, - method_definitions[NsfVarImportCmdIdx].nrParameters, 0, 1, + method_definitions[NsfVarImportCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfObject *object = (NsfObject *)pc.clientData[0]; @@ -1790,7 +1790,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfVarSetCmdIdx].paramDefs, - method_definitions[NsfVarSetCmdIdx].nrParameters, 0, 1, + method_definitions[NsfVarSetCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withArray = (int )PTR2INT(pc.clientData[0]); NsfObject *object = (NsfObject *)pc.clientData[1]; @@ -1812,7 +1812,7 @@ if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], method_definitions[NsfVarUnsetCmdIdx].paramDefs, - method_definitions[NsfVarUnsetCmdIdx].nrParameters, 0, 1, + method_definitions[NsfVarUnsetCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withNocomplain = (int )PTR2INT(pc.clientData[0]); NsfObject *object = (NsfObject *)pc.clientData[1]; @@ -1833,7 +1833,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "autoname"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfOAutonameMethodIdx].paramDefs, - method_definitions[NsfOAutonameMethodIdx].nrParameters, 0, 1, + method_definitions[NsfOAutonameMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withInstance = (int )PTR2INT(pc.clientData[0]); int withReset = (int )PTR2INT(pc.clientData[1]); @@ -1912,7 +1912,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "exists"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfOExistsMethodIdx].paramDefs, - method_definitions[NsfOExistsMethodIdx].nrParameters, 0, 1, + method_definitions[NsfOExistsMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { CONST char *varName = (CONST char *)pc.clientData[0]; @@ -1931,7 +1931,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "filterguard"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfOFilterGuardMethodIdx].paramDefs, - method_definitions[NsfOFilterGuardMethodIdx].nrParameters, 0, 1, + method_definitions[NsfOFilterGuardMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { CONST char *filter = (CONST char *)pc.clientData[0]; Tcl_Obj *guard = (Tcl_Obj *)pc.clientData[1]; @@ -1961,7 +1961,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "mixinguard"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfOMixinGuardMethodIdx].paramDefs, - method_definitions[NsfOMixinGuardMethodIdx].nrParameters, 0, 1, + method_definitions[NsfOMixinGuardMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { Tcl_Obj *mixin = (Tcl_Obj *)pc.clientData[0]; Tcl_Obj *guard = (Tcl_Obj *)pc.clientData[1]; @@ -2059,7 +2059,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "children"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfObjInfoChildrenMethodIdx].paramDefs, - method_definitions[NsfObjInfoChildrenMethodIdx].nrParameters, 0, 1, + method_definitions[NsfObjInfoChildrenMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfClass *withType = (NsfClass *)pc.clientData[0]; CONST char *pattern = (CONST char *)pc.clientData[1]; @@ -2095,7 +2095,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "filterguard"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfObjInfoFilterguardMethodIdx].paramDefs, - method_definitions[NsfObjInfoFilterguardMethodIdx].nrParameters, 0, 1, + method_definitions[NsfObjInfoFilterguardMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { CONST char *filter = (CONST char *)pc.clientData[0]; @@ -2114,7 +2114,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "filtermethods"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfObjInfoFiltermethodsMethodIdx].paramDefs, - method_definitions[NsfObjInfoFiltermethodsMethodIdx].nrParameters, 0, 1, + method_definitions[NsfObjInfoFiltermethodsMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withGuards = (int )PTR2INT(pc.clientData[0]); int withOrder = (int )PTR2INT(pc.clientData[1]); @@ -2135,7 +2135,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "forward"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfObjInfoForwardMethodIdx].paramDefs, - method_definitions[NsfObjInfoForwardMethodIdx].nrParameters, 0, 1, + method_definitions[NsfObjInfoForwardMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withDefinition = (int )PTR2INT(pc.clientData[0]); CONST char *name = (CONST char *)pc.clientData[1]; @@ -2155,7 +2155,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "hasmixin"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfObjInfoHasMixinMethodIdx].paramDefs, - method_definitions[NsfObjInfoHasMixinMethodIdx].nrParameters, 0, 1, + method_definitions[NsfObjInfoHasMixinMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfClass *class = (NsfClass *)pc.clientData[0]; @@ -2174,7 +2174,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "hastype"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfObjInfoHasTypeMethodIdx].paramDefs, - method_definitions[NsfObjInfoHasTypeMethodIdx].nrParameters, 0, 1, + method_definitions[NsfObjInfoHasTypeMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfClass *class = (NsfClass *)pc.clientData[0]; @@ -2209,7 +2209,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "is"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfObjInfoIsMethodIdx].paramDefs, - method_definitions[NsfObjInfoIsMethodIdx].nrParameters, 0, 1, + method_definitions[NsfObjInfoIsMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int objectkind = (int )PTR2INT(pc.clientData[0]); @@ -2228,7 +2228,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "lookupfilter"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfObjInfoLookupFilterMethodIdx].paramDefs, - method_definitions[NsfObjInfoLookupFilterMethodIdx].nrParameters, 0, 1, + method_definitions[NsfObjInfoLookupFilterMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { CONST char *filter = (CONST char *)pc.clientData[0]; @@ -2263,7 +2263,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "lookupmethods"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfObjInfoLookupMethodsMethodIdx].paramDefs, - method_definitions[NsfObjInfoLookupMethodsMethodIdx].nrParameters, 0, 1, + method_definitions[NsfObjInfoLookupMethodsMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withCallprotection = (int )PTR2INT(pc.clientData[0]); int withIncontext = (int )PTR2INT(pc.clientData[1]); @@ -2288,7 +2288,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "lookupslots"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfObjInfoLookupSlotsMethodIdx].paramDefs, - method_definitions[NsfObjInfoLookupSlotsMethodIdx].nrParameters, 0, 1, + method_definitions[NsfObjInfoLookupSlotsMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withSource = (int )PTR2INT(pc.clientData[0]); NsfClass *withType = (NsfClass *)pc.clientData[1]; @@ -2309,7 +2309,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "method"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfObjInfoMethodMethodIdx].paramDefs, - method_definitions[NsfObjInfoMethodMethodIdx].nrParameters, 0, 1, + method_definitions[NsfObjInfoMethodMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int infomethodsubcmd = (int )PTR2INT(pc.clientData[0]); Tcl_Obj *name = (Tcl_Obj *)pc.clientData[1]; @@ -2329,7 +2329,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "methods"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfObjInfoMethodsMethodIdx].paramDefs, - method_definitions[NsfObjInfoMethodsMethodIdx].nrParameters, 0, 1, + method_definitions[NsfObjInfoMethodsMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withCallprotection = (int )PTR2INT(pc.clientData[0]); int withMethodtype = (int )PTR2INT(pc.clientData[1]); @@ -2351,7 +2351,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "mixinclasses"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfObjInfoMixinclassesMethodIdx].paramDefs, - method_definitions[NsfObjInfoMixinclassesMethodIdx].nrParameters, 0, 1, + method_definitions[NsfObjInfoMixinclassesMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withGuards = (int )PTR2INT(pc.clientData[0]); int withHeritage = (int )PTR2INT(pc.clientData[1]); @@ -2386,7 +2386,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "mixinguard"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfObjInfoMixinguardMethodIdx].paramDefs, - method_definitions[NsfObjInfoMixinguardMethodIdx].nrParameters, 0, 1, + method_definitions[NsfObjInfoMixinguardMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { CONST char *mixin = (CONST char *)pc.clientData[0]; @@ -2437,7 +2437,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "precedence"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfObjInfoPrecedenceMethodIdx].paramDefs, - method_definitions[NsfObjInfoPrecedenceMethodIdx].nrParameters, 0, 1, + method_definitions[NsfObjInfoPrecedenceMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { int withIntrinsic = (int )PTR2INT(pc.clientData[0]); CONST char *pattern = (CONST char *)pc.clientData[1]; @@ -2457,7 +2457,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "slotobjects"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfObjInfoSlotobjectsMethodIdx].paramDefs, - method_definitions[NsfObjInfoSlotobjectsMethodIdx].nrParameters, 0, 1, + method_definitions[NsfObjInfoSlotobjectsMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { NsfClass *withType = (NsfClass *)pc.clientData[0]; CONST char *pattern = (CONST char *)pc.clientData[1]; @@ -2477,7 +2477,7 @@ if (unlikely(obj == NULL)) return NsfDispatchClientDataError(interp, clientData, "object", "vars"); if (likely(ArgumentParse(interp, objc, objv, obj, objv[0], method_definitions[NsfObjInfoVarsMethodIdx].paramDefs, - method_definitions[NsfObjInfoVarsMethodIdx].nrParameters, 0, 1, + method_definitions[NsfObjInfoVarsMethodIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, &pc) == TCL_OK)) { CONST char *pattern = (CONST char *)pc.clientData[0]; Index: generic/nsfInt.h =================================================================== diff -u -reae784ccc80b2a18b83fbe631c32d549189f7927 -r9dadb4297ee2e6b648f14674b79f8ef678fbb8fb --- generic/nsfInt.h (.../nsfInt.h) (revision eae784ccc80b2a18b83fbe631c32d549189f7927) +++ generic/nsfInt.h (.../nsfInt.h) (revision 9dadb4297ee2e6b648f14674b79f8ef678fbb8fb) @@ -423,6 +423,12 @@ #define NSF_DISALLOWED_ARG_OBJECT_PARAMETER 0 #define NSF_DISALLOWED_ARG_VALUECHECK (NSF_ARG_SUBST_DEFAULT|NSF_ARG_METHOD_INVOCATION|NSF_ARG_SWITCH|NSF_ARG_CURRENTLY_UNKNOWN|NSF_ARG_SLOTASSIGN|NSF_ARG_SLOTINITIALIZE) +/* Argument parse processing flags */ +#define NSF_ARGPARSE_CHECK 0x0001 +#define NSF_ARGPARSE_FORCE_REQUIRED 0x0002 +#define NSF_ARGPARSE_BUILTIN (NSF_ARGPARSE_CHECK|NSF_ARGPARSE_FORCE_REQUIRED) +/* Special flags for process method arguments */ +#define NSF_ARGPARSE_METHOD_PUSH 0x0100 /* flags for ParseContext */ #define NSF_PC_MUST_DECR 0x0001