Index: generic/tclAPI.h =================================================================== diff -u -r5c255e27038ce407b8bdf4706a9942c10da1a940 -re29434ffef30bea10b7422f1f295787d41377839 --- generic/tclAPI.h (.../tclAPI.h) (revision 5c255e27038ce407b8bdf4706a9942c10da1a940) +++ generic/tclAPI.h (.../tclAPI.h) (revision e29434ffef30bea10b7422f1f295787d41377839) @@ -285,6 +285,7 @@ static int NsfObjInfoMixinguardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int NsfObjInfoParentMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int NsfObjInfoPrecedenceMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); +static int NsfObjInfoSlotsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int NsfObjInfoVarsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int NsfCAllocMethod(Tcl_Interp *interp, NsfClass *cl, Tcl_Obj *objectName); @@ -376,6 +377,7 @@ static int NsfObjInfoMixinguardMethod(Tcl_Interp *interp, NsfObject *obj, CONST char *mixin); static int NsfObjInfoParentMethod(Tcl_Interp *interp, NsfObject *obj); static int NsfObjInfoPrecedenceMethod(Tcl_Interp *interp, NsfObject *obj, int withIntrinsic, CONST char *pattern); +static int NsfObjInfoSlotsMethod(Tcl_Interp *interp, NsfObject *obj, NsfClass *withType, CONST char *pattern); static int NsfObjInfoVarsMethod(Tcl_Interp *interp, NsfObject *obj, CONST char *pattern); enum { @@ -468,6 +470,7 @@ NsfObjInfoMixinguardMethodIdx, NsfObjInfoParentMethodIdx, NsfObjInfoPrecedenceMethodIdx, + NsfObjInfoSlotsMethodIdx, NsfObjInfoVarsMethodIdx } NsfMethods; @@ -2211,6 +2214,26 @@ } static int +NsfObjInfoSlotsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + ParseContext pc; + NsfObject *obj = (NsfObject *)clientData; + if (!obj) return NsfDispatchClientDataError(interp, clientData, "object", "slots"); + if (ArgumentParse(interp, objc, objv, obj, objv[0], + method_definitions[NsfObjInfoSlotsMethodIdx].paramDefs, + method_definitions[NsfObjInfoSlotsMethodIdx].nrParameters, 1, + &pc) != TCL_OK) { + return TCL_ERROR; + } else { + NsfClass *withType = (NsfClass *)pc.clientData[0]; + CONST char *pattern = (CONST char *)pc.clientData[1]; + + assert(pc.status == 0); + return NsfObjInfoSlotsMethod(interp, obj, withType, pattern); + + } +} + +static int NsfObjInfoVarsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { ParseContext pc; NsfObject *obj = (NsfObject *)clientData; @@ -2602,6 +2625,10 @@ {"-intrinsic", 0, 0, Nsf_ConvertToString, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, {"pattern", 0, 0, Nsf_ConvertToString, NULL,NULL,NULL,NULL,NULL,NULL,NULL}} }, +{"::nsf::methods::object::info::slots", NsfObjInfoSlotsMethodStub, 2, { + {"-type", 0, 1, Nsf_ConvertToClass, NULL,NULL,NULL,NULL,NULL,NULL,NULL}, + {"pattern", 0, 0, Nsf_ConvertToString, NULL,NULL,NULL,NULL,NULL,NULL,NULL}} +}, {"::nsf::methods::object::info::vars", NsfObjInfoVarsMethodStub, 1, { {"pattern", 0, 0, Nsf_ConvertToString, NULL,NULL,NULL,NULL,NULL,NULL,NULL}} },{NULL}