Index: TODO =================================================================== diff -u -r353fe0c41d46ad9d3475bd4b8ea16aea6aae0419 -r39607bed15618248130a1251cc2b1c2a03db93b0 --- TODO (.../TODO) (revision 353fe0c41d46ad9d3475bd4b8ea16aea6aae0419) +++ TODO (.../TODO) (revision 39607bed15618248130a1251cc2b1c2a03db93b0) @@ -1752,6 +1752,9 @@ - provided ::nsf::parametersyntax for 3 ::nsf commands and 7 nx methods (from relationslots) +- fix requiredness of several info methods +- added "nsf::configure debug ?level?" + TODO: - "-returns" Index: generic/gentclAPI.decls =================================================================== diff -u -r353fe0c41d46ad9d3475bd4b8ea16aea6aae0419 -r39607bed15618248130a1251cc2b1c2a03db93b0 --- generic/gentclAPI.decls (.../gentclAPI.decls) (revision 353fe0c41d46ad9d3475bd4b8ea16aea6aae0419) +++ generic/gentclAPI.decls (.../gentclAPI.decls) (revision 39607bed15618248130a1251cc2b1c2a03db93b0) @@ -34,7 +34,7 @@ {-argName "arg" -required 0 -type tclobj} } nsfCmd configure NsfConfigureCmd { - {-argName "configureoption" -required 1 -type "filter|softrecreate|objectsystems|keepinitcmd|checkresults|checkarguments"} + {-argName "configureoption" -required 1 -type "debug|filter|softrecreate|objectsystems|keepinitcmd|checkresults|checkarguments"} {-argName "value" -required 0 -type tclobj} } nsfCmd createobjectsystem NsfCreateObjectSystemCmd { @@ -237,21 +237,21 @@ {-argName "name"} } objectInfoMethod hasmixin NsfObjInfoHasMixinMethod { - {-argName "class" -type class} + {-argName "class" -required 1 -type class} } objectInfoMethod hasnamespace NsfObjInfoHasnamespaceMethod { } objectInfoMethod hastype NsfObjInfoHasTypeMethod { - {-argName "class" -type class} + {-argName "class" -required 1 -type class} } objectInfoMethod is NsfObjInfoIsMethod { - {-argName "objectkind" -type "class|baseclass|metaclass"} + {-argName "objectkind" -required 1 -type "class|baseclass|metaclass"} } objectInfoMethod lookupfilter NsfObjInfoLookupFilterMethod { - {-argName "filter"} + {-argName "filter" -required 1} } objectInfoMethod lookupmethod NsfObjInfoLookupMethodMethod { - {-argName "name" -type tclobj} + {-argName "name" -required 1 -type tclobj} } objectInfoMethod lookupmethods NsfObjInfoLookupMethodsMethod { {-argName "-callprotection" -nrargs 1 -type "all|protected|public" -default all} @@ -267,7 +267,7 @@ } objectInfoMethod method NsfObjInfoMethodMethod { {-argName "infomethodsubcmd" -type "args|body|definition|handle|parameter|parametersyntax|type|precondition|postcondition|submethods"} - {-argName "name" -type tclobj} + {-argName "name" -required 1 -type tclobj} } objectInfoMethod methods NsfObjInfoMethodsMethod { {-argName "-callprotection" -nrargs 1 -type "all|protected|public" -default public} @@ -320,7 +320,7 @@ classInfoMethod method NsfClassInfoMethodMethod { {-argName "infomethodsubcmd" -type "args|body|definition|handle|parameter|parametersyntax|type|precondition|postcondition|submethods"} - {-argName "name" -type tclobj} + {-argName "name" -required 1 -type tclobj} } classInfoMethod methods NsfClassInfoMethodsMethod { {-argName "-callprotection" -nrargs 1 -type "all|protected|public" -default public} Index: generic/nsf.c =================================================================== diff -u -r353fe0c41d46ad9d3475bd4b8ea16aea6aae0419 -r39607bed15618248130a1251cc2b1c2a03db93b0 --- generic/nsf.c (.../nsf.c) (revision 353fe0c41d46ad9d3475bd4b8ea16aea6aae0419) +++ generic/nsf.c (.../nsf.c) (revision 39607bed15618248130a1251cc2b1c2a03db93b0) @@ -12420,7 +12420,7 @@ /* nsfCmd configure NsfConfigureCmd { - {-argName "configureoption" -required 1 -type "filter|softrecreate|objectsystems|keepinitcmd|checkresult"} + {-argName "configureoption" -required 1 -type "debug|filter|softrecreate|objectsystems|keepinitcmd|checkresult"} {-argName "value" -required 0 -type tclobj} } */ @@ -12442,6 +12442,22 @@ return TCL_OK; } + if (configureoption == ConfigureoptionDebugIdx) { + int level; + + if (valueObj) { + int result = Tcl_GetIntFromObj(interp, valueObj, &level); + if (result != TCL_OK) { + return result; + } + RUNTIME_STATE(interp)->debugLevel = level; + } + Tcl_SetIntObj(Tcl_GetObjResult(interp), + RUNTIME_STATE(interp)->debugLevel); + + return TCL_OK; + } + if (valueObj) { int result = Tcl_GetBooleanFromObj(interp, valueObj, &bool); if (result != TCL_OK) @@ -15380,7 +15396,7 @@ /* objectInfoMethod hasmixin NsfObjInfoHasMixinMethod { - {-argName "class" -type class} + {-argName "class" -required 1 -type class} } */ static int @@ -15401,7 +15417,7 @@ /* objectInfoMethod hastype NsfObjInfoHasTypeMethod { - {-argName "class" -type class} + {-argName "class" -required 1 -type class} } */ static int @@ -15412,7 +15428,7 @@ /* objectInfoMethod is NsfObjInfoIsMethod { - {-argName "objectkind" -type "class|baseclass|metaclass"} + {-argName "objectkind" -required 1 -type "class|baseclass|metaclass"} } */ static int @@ -15440,7 +15456,7 @@ /* objectInfoMethod lookupfilter NsfObjInfoLookupFilterMethod { - {-argName "filter"} + {-argName "filter" -required 1} } */ static int @@ -15475,7 +15491,7 @@ /* objectInfoMethod lookupmethod NsfObjInfoLookupMethodMethod { - {-argName "pattern" -required 0} + {-argName "name" -required 1 -type tclobj} } */ static int @@ -15602,7 +15618,7 @@ /* objectInfoMethod method NsfObjInfoMethodMethod { {-argName "infomethodsubcmd" -type "args|body|definition|handle|parameter|parametersyntax|type|precondition|postcondition|subcommands"} - {-argName "name"} + {-argName "name" -required 1 -type tclobj} } */ @@ -15856,7 +15872,7 @@ /* classInfoMethod method NsfClassInfoMethodMethod { {-argName "infomethodsubcmd" -type "args|body|definition|handle|parameter|parametersyntax|type|precondition|postcondition|subcommands"} - {-argName "name"} + {-argName "name" -required 1 -type tclobj} } */ Index: generic/nsfInt.h =================================================================== diff -u -rc5d841d4cd001b85e95e01202b4fc0afe75df6a8 -r39607bed15618248130a1251cc2b1c2a03db93b0 --- generic/nsfInt.h (.../nsfInt.h) (revision c5d841d4cd001b85e95e01202b4fc0afe75df6a8) +++ generic/nsfInt.h (.../nsfInt.h) (revision 39607bed15618248130a1251cc2b1c2a03db93b0) @@ -685,11 +685,12 @@ int errorCount; /* these flags could move into a bitarray, but are used only once per interp*/ int unknown; - int doFilters; int doSoftrecreate; int doKeepinitcmd; int doCheckResults; int doCheckArguments; + int doFilters; + int debugLevel; int exitHandlerDestroyRound; int returnCode; int overloadedMethods; Index: generic/tclAPI.h =================================================================== diff -u -r353fe0c41d46ad9d3475bd4b8ea16aea6aae0419 -r39607bed15618248130a1251cc2b1c2a03db93b0 --- generic/tclAPI.h (.../tclAPI.h) (revision 353fe0c41d46ad9d3475bd4b8ea16aea6aae0419) +++ generic/tclAPI.h (.../tclAPI.h) (revision 39607bed15618248130a1251cc2b1c2a03db93b0) @@ -79,12 +79,12 @@ return result; } -enum ConfigureoptionIdx {ConfigureoptionNULL, ConfigureoptionFilterIdx, ConfigureoptionSoftrecreateIdx, ConfigureoptionObjectsystemsIdx, ConfigureoptionKeepinitcmdIdx, ConfigureoptionCheckresultsIdx, ConfigureoptionCheckargumentsIdx}; +enum ConfigureoptionIdx {ConfigureoptionNULL, ConfigureoptionDebugIdx, ConfigureoptionFilterIdx, ConfigureoptionSoftrecreateIdx, ConfigureoptionObjectsystemsIdx, ConfigureoptionKeepinitcmdIdx, ConfigureoptionCheckresultsIdx, ConfigureoptionCheckargumentsIdx}; static int ConvertToConfigureoption(Tcl_Interp *interp, Tcl_Obj *objPtr, NsfParam CONST *pPtr, ClientData *clientData, Tcl_Obj **outObjPtr) { int index, result; - static CONST char *opts[] = {"filter", "softrecreate", "objectsystems", "keepinitcmd", "checkresults", "checkarguments", NULL}; + static CONST char *opts[] = {"debug", "filter", "softrecreate", "objectsystems", "keepinitcmd", "checkresults", "checkarguments", NULL}; result = Tcl_GetIndexFromObj(interp, objPtr, opts, "configureoption", 0, &index); *clientData = (ClientData) INT2PTR(index + 1); *outObjPtr = objPtr; @@ -163,7 +163,7 @@ {ConvertToMethodproperty, "class-only|call-protected|redefine-protected|returns|slotcontainer|slotobj"}, {ConvertToRelationtype, "object-mixin|class-mixin|object-filter|class-filter|class|superclass|rootclass"}, {ConvertToSource, "all|application|baseclasses"}, - {ConvertToConfigureoption, "filter|softrecreate|objectsystems|keepinitcmd|checkresults|checkarguments"}, + {ConvertToConfigureoption, "debug|filter|softrecreate|objectsystems|keepinitcmd|checkresults|checkarguments"}, {ConvertToAssertionsubcmd, "check|object-invar|class-invar"}, {NULL, NULL} }; @@ -2118,7 +2118,7 @@ }, {"::nsf::methods::class::info::method", NsfClassInfoMethodMethodStub, 2, { {"infomethodsubcmd", 0|NSF_ARG_IS_ENUMERATION, 0, ConvertToInfomethodsubcmd}, - {"name", 0, 0, ConvertToTclobj}} + {"name", NSF_ARG_REQUIRED, 0, ConvertToTclobj}} }, {"::nsf::methods::class::info::methods", NsfClassInfoMethodsMethodStub, 6, { {"-callprotection", 0|NSF_ARG_IS_ENUMERATION, 1, ConvertToCallprotection}, @@ -2353,22 +2353,22 @@ {"name", 0, 0, ConvertToString}} }, {"::nsf::methods::object::info::hasmixin", NsfObjInfoHasMixinMethodStub, 1, { - {"class", 0, 0, ConvertToClass}} + {"class", NSF_ARG_REQUIRED, 0, ConvertToClass}} }, {"::nsf::methods::object::info::hastype", NsfObjInfoHasTypeMethodStub, 1, { - {"class", 0, 0, ConvertToClass}} + {"class", NSF_ARG_REQUIRED, 0, ConvertToClass}} }, {"::nsf::methods::object::info::hasnamespace", NsfObjInfoHasnamespaceMethodStub, 0, { } }, {"::nsf::methods::object::info::is", NsfObjInfoIsMethodStub, 1, { - {"objectkind", 0|NSF_ARG_IS_ENUMERATION, 0, ConvertToObjectkind}} + {"objectkind", NSF_ARG_REQUIRED|NSF_ARG_IS_ENUMERATION, 0, ConvertToObjectkind}} }, {"::nsf::methods::object::info::lookupfilter", NsfObjInfoLookupFilterMethodStub, 1, { - {"filter", 0, 0, ConvertToString}} + {"filter", NSF_ARG_REQUIRED, 0, ConvertToString}} }, {"::nsf::methods::object::info::lookupmethod", NsfObjInfoLookupMethodMethodStub, 1, { - {"name", 0, 0, ConvertToTclobj}} + {"name", NSF_ARG_REQUIRED, 0, ConvertToTclobj}} }, {"::nsf::methods::object::info::lookupmethods", NsfObjInfoLookupMethodsMethodStub, 7, { {"-callprotection", 0|NSF_ARG_IS_ENUMERATION, 1, ConvertToCallprotection}, @@ -2384,7 +2384,7 @@ }, {"::nsf::methods::object::info::method", NsfObjInfoMethodMethodStub, 2, { {"infomethodsubcmd", 0|NSF_ARG_IS_ENUMERATION, 0, ConvertToInfomethodsubcmd}, - {"name", 0, 0, ConvertToTclobj}} + {"name", NSF_ARG_REQUIRED, 0, ConvertToTclobj}} }, {"::nsf::methods::object::info::methods", NsfObjInfoMethodsMethodStub, 6, { {"-callprotection", 0|NSF_ARG_IS_ENUMERATION, 1, ConvertToCallprotection}, Index: library/nx/nx.tcl =================================================================== diff -u -r353fe0c41d46ad9d3475bd4b8ea16aea6aae0419 -r39607bed15618248130a1251cc2b1c2a03db93b0 --- library/nx/nx.tcl (.../nx.tcl) (revision 353fe0c41d46ad9d3475bd4b8ea16aea6aae0419) +++ library/nx/nx.tcl (.../nx.tcl) (revision 39607bed15618248130a1251cc2b1c2a03db93b0) @@ -1516,12 +1516,12 @@ interp alias {} ::nx::self {} ::nsf::current object - set value "?add class?|?assign classes?|?get?|?delete class?" + set value "?add class?|?classes?|?delete class?" set ::nsf::parametersyntax(::nsf::classes::nx::Object::mixin) $value set ::nsf::parametersyntax(::nsf::classes::nx::Class::mixin) $value set ::nsf::parametersyntax(::nsf::classes::nx::Class::superclass) $value set ::nsf::parametersyntax(::nsf::classes::nx::Object::class) "?class?" - set value "?add filter?|?assign filters?|?get?|?delete filter?" + set value "?add filter?|?filters?|?delete filter?" set ::nsf::parametersyntax(::nsf::classes::nx::Object::filter) $value set ::nsf::parametersyntax(::nsf::classes::nx::Class::filter) $value set ::nsf::parametersyntax(::nsf::classes::nx::Object::eval) "arg ?arg ...?"