Index: generic/nsfAPI.h =================================================================== diff -u -rcafecba5f922de5329a5db109b697cbf88ae5f1a -r403f26de1f34f39943b605903b47ec31c974cf9a --- generic/nsfAPI.h (.../nsfAPI.h) (revision cafecba5f922de5329a5db109b697cbf88ae5f1a) +++ generic/nsfAPI.h (.../nsfAPI.h) (revision 403f26de1f34f39943b605903b47ec31c974cf9a) @@ -281,7 +281,7 @@ /* just to define the symbol */ -static Nsf_methodDefinition method_definitions[110]; +static Nsf_methodDefinition method_definitions[111]; static CONST char *method_command_namespace_names[] = { "::nsf::methods::object::info", @@ -369,6 +369,8 @@ NSF_nonnull(2) NSF_nonnull(4); static int NsfMethodForwardCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []) NSF_nonnull(2) NSF_nonnull(4); +static int NsfMethodGetCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []) + NSF_nonnull(2) NSF_nonnull(4); static int NsfMethodPropertyCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []) NSF_nonnull(2) NSF_nonnull(4); static int NsfMethodRegisteredCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []) @@ -588,6 +590,8 @@ NSF_nonnull(1) NSF_nonnull(2) NSF_nonnull(4); static int NsfMethodForwardCmd(Tcl_Interp *interp, NsfObject *object, int withPer_object, Tcl_Obj *method, Tcl_Obj *withDefault, int withEarlybinding, Tcl_Obj *withOnerror, Tcl_Obj *withPrefix, int withFrame, int withVerbose, Tcl_Obj *target, int nobjc, Tcl_Obj *CONST nobjv[]) NSF_nonnull(1) NSF_nonnull(2) NSF_nonnull(4); +static int NsfMethodGetCmd(Tcl_Interp *interp, int subcmd, Tcl_Obj *methodName) + NSF_nonnull(1) NSF_nonnull(3); static int NsfMethodPropertyCmd(Tcl_Interp *interp, NsfObject *object, int withPer_object, Tcl_Obj *methodName, int methodProperty, Tcl_Obj *value) NSF_nonnull(1) NSF_nonnull(2) NSF_nonnull(4); static int NsfMethodRegisteredCmd(Tcl_Interp *interp, Tcl_Obj *handle) @@ -768,6 +772,7 @@ NsfMethodCreateCmdIdx, NsfMethodDeleteCmdIdx, NsfMethodForwardCmdIdx, + NsfMethodGetCmdIdx, NsfMethodPropertyCmdIdx, NsfMethodRegisteredCmdIdx, NsfMethodSetterCmdIdx, @@ -1761,6 +1766,26 @@ } static int +NsfMethodGetCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + ParseContext pc; + (void)clientData; + + if (likely(ArgumentParse(interp, objc, objv, NULL, objv[0], + method_definitions[NsfMethodGetCmdIdx].paramDefs, + method_definitions[NsfMethodGetCmdIdx].nrParameters, 0, NSF_ARGPARSE_BUILTIN, + &pc) == TCL_OK)) { + int subcmd = (int )PTR2INT(pc.clientData[0]); + Tcl_Obj *methodName = (Tcl_Obj *)pc.clientData[1]; + + assert(pc.status == 0); + return NsfMethodGetCmd(interp, subcmd, methodName); + + } else { + return TCL_ERROR; + } +} + +static int NsfMethodPropertyCmdStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { ParseContext pc; (void)clientData; @@ -3175,7 +3200,7 @@ } } -static Nsf_methodDefinition method_definitions[110] = { +static Nsf_methodDefinition method_definitions[111] = { {"::nsf::methods::class::alloc", NsfCAllocMethodStub, 1, { {"objectName", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}} }, @@ -3371,6 +3396,10 @@ {"target", 0, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"args", 0, 1, ConvertToNothing, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}} }, +{"::nsf::method::get", NsfMethodGetCmdStub, 2, { + {"subcmd", NSF_ARG_REQUIRED|NSF_ARG_IS_ENUMERATION, 1, ConvertToInfomethodsubcmd, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}, + {"methodName", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Tclobj, NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL}} +}, {"::nsf::method::property", NsfMethodPropertyCmdStub, 5, { {"object", NSF_ARG_REQUIRED, 1, Nsf_ConvertTo_Object, NULL,NULL,"object",NULL,NULL,NULL,NULL,NULL}, {"-per-object", 0, 0, Nsf_ConvertTo_Boolean, NULL,NULL,"switch",NULL,NULL,NULL,NULL,NULL},