Index: generic/tclAPI.h =================================================================== diff -u -r5003fb8069bfd0d2de1482c68a7ab68782c4b328 -r80dbbc5075b96ca2d25ebf426204398f68411e17 --- generic/tclAPI.h (.../tclAPI.h) (revision 5003fb8069bfd0d2de1482c68a7ab68782c4b328) +++ generic/tclAPI.h (.../tclAPI.h) (revision 80dbbc5075b96ca2d25ebf426204398f68411e17) @@ -33,30 +33,52 @@ static int XOTclClassInfoSlotsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclClassInfoSubclassMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); static int XOTclClassInfoSuperclassMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); +static int XOTclObjInfoArgsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); +static int XOTclObjInfoBodyMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); +static int XOTclObjInfoCheckMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); +static int XOTclObjInfoChildrenMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); +static int XOTclObjInfoClassMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); +static int XOTclObjInfoCommandsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); +static int XOTclObjInfoDefaultMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); +static int XOTclObjInfoFilterMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); +static int XOTclObjInfoFilterguardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); +static int XOTclObjInfoForwardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); +static int XOTclObjInfoHasnamespaceMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv []); -static int XOTclClassInfoHeritageMethod(Tcl_Interp *interp, XOTclClass * class, char * pattern); -static int XOTclClassInfoInstancesMethod(Tcl_Interp *interp, XOTclClass * class, int withClosure, char *patternString, XOTclObject *patternObj); -static int XOTclClassInfoInstargsMethod(Tcl_Interp *interp, XOTclClass * class, char * methodName); -static int XOTclClassInfoInstbodyMethod(Tcl_Interp *interp, XOTclClass * class, char * methodName); -static int XOTclClassInfoInstcommandsMethod(Tcl_Interp *interp, XOTclClass * class, char * pattern); -static int XOTclClassInfoInstdefaultMethod(Tcl_Interp *interp, XOTclClass * class, char * methodName, char * arg, Tcl_Obj * var); -static int XOTclClassInfoInstfilterMethod(Tcl_Interp *interp, XOTclClass * class, int withGuards, char * pattern); -static int XOTclClassInfoInstfilterguardMethod(Tcl_Interp *interp, XOTclClass * class, char * filter); -static int XOTclClassInfoInstforwardMethod(Tcl_Interp *interp, XOTclClass * class, int withDefinition, char * methodName); -static int XOTclClassInfoInstinvarMethod(Tcl_Interp *interp, XOTclClass * class); -static int XOTclClassInfoInstmixinMethod(Tcl_Interp *interp, XOTclClass * class, int withClosure, int withGuards, char *patternString, XOTclObject *patternObj); -static int XOTclClassInfoInstmixinguardMethod(Tcl_Interp *interp, XOTclClass * class, char * mixin); -static int XOTclClassInfoInstmixinofMethod(Tcl_Interp *interp, XOTclClass * class, int withClosure, char *patternString, XOTclObject *patternObj); -static int XOTclClassInfoInstnonposargsMethod(Tcl_Interp *interp, XOTclClass * class, char * methodName); -static int XOTclClassInfoInstparametercmdMethod(Tcl_Interp *interp, XOTclClass * class, char * pattern); -static int XOTclClassInfoInstpostMethod(Tcl_Interp *interp, XOTclClass * class, char * methodName); -static int XOTclClassInfoInstpreMethod(Tcl_Interp *interp, XOTclClass * class, char * methodName); -static int XOTclClassInfoInstprocsMethod(Tcl_Interp *interp, XOTclClass * class, char * pattern); -static int XOTclClassInfoMixinofMethod(Tcl_Interp *interp, XOTclClass * class, int withClosure, char *patternString, XOTclObject *patternObj); -static int XOTclClassInfoParameterMethod(Tcl_Interp *interp, XOTclClass * class); -static int XOTclClassInfoSlotsMethod(Tcl_Interp *interp, XOTclClass * class); -static int XOTclClassInfoSubclassMethod(Tcl_Interp *interp, XOTclClass * class, int withClosure, char *patternString, XOTclObject *patternObj); -static int XOTclClassInfoSuperclassMethod(Tcl_Interp *interp, XOTclClass * class, int withClosure, char * pattern); +static int XOTclClassInfoHeritageMethod(Tcl_Interp *interp, XOTclClass *class, char *pattern); +static int XOTclClassInfoInstancesMethod(Tcl_Interp *interp, XOTclClass *class, int withClosure, char *patternString, XOTclObject *patternObj); +static int XOTclClassInfoInstargsMethod(Tcl_Interp *interp, XOTclClass *class, char *methodName); +static int XOTclClassInfoInstbodyMethod(Tcl_Interp *interp, XOTclClass *class, char *methodName); +static int XOTclClassInfoInstcommandsMethod(Tcl_Interp *interp, XOTclClass *class, char *pattern); +static int XOTclClassInfoInstdefaultMethod(Tcl_Interp *interp, XOTclClass *class, char *methodName, char *arg, Tcl_Obj *var); +static int XOTclClassInfoInstfilterMethod(Tcl_Interp *interp, XOTclClass *class, int withGuards, char *pattern); +static int XOTclClassInfoInstfilterguardMethod(Tcl_Interp *interp, XOTclClass *class, char *filter); +static int XOTclClassInfoInstforwardMethod(Tcl_Interp *interp, XOTclClass *class, int withDefinition, char *methodName); +static int XOTclClassInfoInstinvarMethod(Tcl_Interp *interp, XOTclClass *class); +static int XOTclClassInfoInstmixinMethod(Tcl_Interp *interp, XOTclClass *class, int withClosure, int withGuards, char *patternString, XOTclObject *patternObj); +static int XOTclClassInfoInstmixinguardMethod(Tcl_Interp *interp, XOTclClass *class, char *mixin); +static int XOTclClassInfoInstmixinofMethod(Tcl_Interp *interp, XOTclClass *class, int withClosure, char *patternString, XOTclObject *patternObj); +static int XOTclClassInfoInstnonposargsMethod(Tcl_Interp *interp, XOTclClass *class, char *methodName); +static int XOTclClassInfoInstparametercmdMethod(Tcl_Interp *interp, XOTclClass *class, char *pattern); +static int XOTclClassInfoInstpostMethod(Tcl_Interp *interp, XOTclClass *class, char *methodName); +static int XOTclClassInfoInstpreMethod(Tcl_Interp *interp, XOTclClass *class, char *methodName); +static int XOTclClassInfoInstprocsMethod(Tcl_Interp *interp, XOTclClass *class, char *pattern); +static int XOTclClassInfoMixinofMethod(Tcl_Interp *interp, XOTclClass *class, int withClosure, char *patternString, XOTclObject *patternObj); +static int XOTclClassInfoParameterMethod(Tcl_Interp *interp, XOTclClass *class); +static int XOTclClassInfoSlotsMethod(Tcl_Interp *interp, XOTclClass *class); +static int XOTclClassInfoSubclassMethod(Tcl_Interp *interp, XOTclClass *class, int withClosure, char *patternString, XOTclObject *patternObj); +static int XOTclClassInfoSuperclassMethod(Tcl_Interp *interp, XOTclClass *class, int withClosure, char *pattern); +static int XOTclObjInfoArgsMethod(Tcl_Interp *interp, XOTclObject *object, char *methodName); +static int XOTclObjInfoBodyMethod(Tcl_Interp *interp, XOTclObject *object, char *methodName); +static int XOTclObjInfoCheckMethod(Tcl_Interp *interp, XOTclObject *object); +static int XOTclObjInfoChildrenMethod(Tcl_Interp *interp, XOTclObject *object, char *pattern); +static int XOTclObjInfoClassMethod(Tcl_Interp *interp, XOTclObject *object); +static int XOTclObjInfoCommandsMethod(Tcl_Interp *interp, XOTclObject *object, char *pattern); +static int XOTclObjInfoDefaultMethod(Tcl_Interp *interp, XOTclObject *object, char *methodName, char *arg, Tcl_Obj *var); +static int XOTclObjInfoFilterMethod(Tcl_Interp *interp, XOTclObject *object, int withOrder, int withGuards, char *pattern); +static int XOTclObjInfoFilterguardMethod(Tcl_Interp *interp, XOTclObject *object, char *filter); +static int XOTclObjInfoForwardMethod(Tcl_Interp *interp, XOTclObject *object, int withDefinition, char *methodName); +static int XOTclObjInfoHasnamespaceMethod(Tcl_Interp *interp, XOTclObject *object); enum { XOTclClassInfoHeritageMethodIdx, @@ -81,7 +103,18 @@ XOTclClassInfoParameterMethodIdx, XOTclClassInfoSlotsMethodIdx, XOTclClassInfoSubclassMethodIdx, - XOTclClassInfoSuperclassMethodIdx + XOTclClassInfoSuperclassMethodIdx, + XOTclObjInfoArgsMethodIdx, + XOTclObjInfoBodyMethodIdx, + XOTclObjInfoCheckMethodIdx, + XOTclObjInfoChildrenMethodIdx, + XOTclObjInfoClassMethodIdx, + XOTclObjInfoCommandsMethodIdx, + XOTclObjInfoDefaultMethodIdx, + XOTclObjInfoFilterMethodIdx, + XOTclObjInfoFilterguardMethodIdx, + XOTclObjInfoForwardMethodIdx, + XOTclObjInfoHasnamespaceMethodIdx } XOTclMethods; @@ -106,7 +139,7 @@ return TCL_ERROR; } else { XOTclClass * class = (XOTclClass *)pc.clientData[0]; - int withClosure = (int)pc.clientData[1]; + int withClosure = (int )pc.clientData[1]; char *patternString = NULL; XOTclObject *patternObj = NULL; Tcl_Obj * pattern = (Tcl_Obj *)pc.clientData[2]; @@ -185,7 +218,7 @@ return TCL_ERROR; } else { XOTclClass * class = (XOTclClass *)pc.clientData[0]; - int withGuards = (int)pc.clientData[1]; + int withGuards = (int )pc.clientData[1]; char * pattern = (char *)pc.clientData[2]; return XOTclClassInfoInstfilterMethod(interp, class, withGuards, pattern); @@ -214,7 +247,7 @@ return TCL_ERROR; } else { XOTclClass * class = (XOTclClass *)pc.clientData[0]; - int withDefinition = (int)pc.clientData[1]; + int withDefinition = (int )pc.clientData[1]; char * methodName = (char *)pc.clientData[2]; return XOTclClassInfoInstforwardMethod(interp, class, withDefinition, methodName); @@ -242,8 +275,8 @@ return TCL_ERROR; } else { XOTclClass * class = (XOTclClass *)pc.clientData[0]; - int withClosure = (int)pc.clientData[1]; - int withGuards = (int)pc.clientData[2]; + int withClosure = (int )pc.clientData[1]; + int withGuards = (int )pc.clientData[2]; char *patternString = NULL; XOTclObject *patternObj = NULL; Tcl_Obj * pattern = (Tcl_Obj *)pc.clientData[3]; @@ -278,7 +311,7 @@ return TCL_ERROR; } else { XOTclClass * class = (XOTclClass *)pc.clientData[0]; - int withClosure = (int)pc.clientData[1]; + int withClosure = (int )pc.clientData[1]; char *patternString = NULL; XOTclObject *patternObj = NULL; Tcl_Obj * pattern = (Tcl_Obj *)pc.clientData[2]; @@ -369,7 +402,7 @@ return TCL_ERROR; } else { XOTclClass * class = (XOTclClass *)pc.clientData[0]; - int withClosure = (int)pc.clientData[1]; + int withClosure = (int )pc.clientData[1]; char *patternString = NULL; XOTclObject *patternObj = NULL; Tcl_Obj * pattern = (Tcl_Obj *)pc.clientData[2]; @@ -416,7 +449,7 @@ return TCL_ERROR; } else { XOTclClass * class = (XOTclClass *)pc.clientData[0]; - int withClosure = (int)pc.clientData[1]; + int withClosure = (int )pc.clientData[1]; char *patternString = NULL; XOTclObject *patternObj = NULL; Tcl_Obj * pattern = (Tcl_Obj *)pc.clientData[2]; @@ -437,14 +470,170 @@ return TCL_ERROR; } else { XOTclClass * class = (XOTclClass *)pc.clientData[0]; - int withClosure = (int)pc.clientData[1]; + int withClosure = (int )pc.clientData[1]; char * pattern = (char *)pc.clientData[2]; return XOTclClassInfoSuperclassMethod(interp, class, withClosure, pattern); } } +static int +XOTclObjInfoArgsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + parseContext pc; + if (parse2(clientData, interp, objc, objv, XOTclObjInfoArgsMethodIdx, &pc) != TCL_OK) { + return TCL_ERROR; + } else { + XOTclObject * object = (XOTclObject *)pc.clientData[0]; + char * methodName = (char *)pc.clientData[1]; + + return XOTclObjInfoArgsMethod(interp, object, methodName); + + } +} + +static int +XOTclObjInfoBodyMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + parseContext pc; + if (parse2(clientData, interp, objc, objv, XOTclObjInfoBodyMethodIdx, &pc) != TCL_OK) { + return TCL_ERROR; + } else { + XOTclObject * object = (XOTclObject *)pc.clientData[0]; + char * methodName = (char *)pc.clientData[1]; + + return XOTclObjInfoBodyMethod(interp, object, methodName); + + } +} + +static int +XOTclObjInfoCheckMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + parseContext pc; + if (parse2(clientData, interp, objc, objv, XOTclObjInfoCheckMethodIdx, &pc) != TCL_OK) { + return TCL_ERROR; + } else { + XOTclObject * object = (XOTclObject *)pc.clientData[0]; + + return XOTclObjInfoCheckMethod(interp, object); + + } +} + +static int +XOTclObjInfoChildrenMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + parseContext pc; + if (parse2(clientData, interp, objc, objv, XOTclObjInfoChildrenMethodIdx, &pc) != TCL_OK) { + return TCL_ERROR; + } else { + XOTclObject * object = (XOTclObject *)pc.clientData[0]; + char * pattern = (char *)pc.clientData[1]; + + return XOTclObjInfoChildrenMethod(interp, object, pattern); + + } +} + +static int +XOTclObjInfoClassMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + parseContext pc; + if (parse2(clientData, interp, objc, objv, XOTclObjInfoClassMethodIdx, &pc) != TCL_OK) { + return TCL_ERROR; + } else { + XOTclObject * object = (XOTclObject *)pc.clientData[0]; + + return XOTclObjInfoClassMethod(interp, object); + + } +} + +static int +XOTclObjInfoCommandsMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + parseContext pc; + if (parse2(clientData, interp, objc, objv, XOTclObjInfoCommandsMethodIdx, &pc) != TCL_OK) { + return TCL_ERROR; + } else { + XOTclObject * object = (XOTclObject *)pc.clientData[0]; + char * pattern = (char *)pc.clientData[1]; + + return XOTclObjInfoCommandsMethod(interp, object, pattern); + + } +} + +static int +XOTclObjInfoDefaultMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + parseContext pc; + if (parse2(clientData, interp, objc, objv, XOTclObjInfoDefaultMethodIdx, &pc) != TCL_OK) { + return TCL_ERROR; + } else { + XOTclObject * object = (XOTclObject *)pc.clientData[0]; + char * methodName = (char *)pc.clientData[1]; + char * arg = (char *)pc.clientData[2]; + Tcl_Obj * var = (Tcl_Obj *)pc.clientData[3]; + + return XOTclObjInfoDefaultMethod(interp, object, methodName, arg, var); + + } +} + +static int +XOTclObjInfoFilterMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + parseContext pc; + if (parse2(clientData, interp, objc, objv, XOTclObjInfoFilterMethodIdx, &pc) != TCL_OK) { + return TCL_ERROR; + } else { + XOTclObject * object = (XOTclObject *)pc.clientData[0]; + int withOrder = (int )pc.clientData[1]; + int withGuards = (int )pc.clientData[2]; + char * pattern = (char *)pc.clientData[3]; + + return XOTclObjInfoFilterMethod(interp, object, withOrder, withGuards, pattern); + + } +} + +static int +XOTclObjInfoFilterguardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + parseContext pc; + if (parse2(clientData, interp, objc, objv, XOTclObjInfoFilterguardMethodIdx, &pc) != TCL_OK) { + return TCL_ERROR; + } else { + XOTclObject * object = (XOTclObject *)pc.clientData[0]; + char * filter = (char *)pc.clientData[1]; + + return XOTclObjInfoFilterguardMethod(interp, object, filter); + + } +} + +static int +XOTclObjInfoForwardMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + parseContext pc; + if (parse2(clientData, interp, objc, objv, XOTclObjInfoForwardMethodIdx, &pc) != TCL_OK) { + return TCL_ERROR; + } else { + XOTclObject * object = (XOTclObject *)pc.clientData[0]; + int withDefinition = (int )pc.clientData[1]; + char * methodName = (char *)pc.clientData[2]; + + return XOTclObjInfoForwardMethod(interp, object, withDefinition, methodName); + + } +} + +static int +XOTclObjInfoHasnamespaceMethodStub(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { + parseContext pc; + if (parse2(clientData, interp, objc, objv, XOTclObjInfoHasnamespaceMethodIdx, &pc) != TCL_OK) { + return TCL_ERROR; + } else { + XOTclObject * object = (XOTclObject *)pc.clientData[0]; + + return XOTclObjInfoHasnamespaceMethod(interp, object); + + } +} + static methodDefinition2 methodDefinitons[] = { {"instances", XOTclClassInfoHeritageMethodStub, { {"class", 1, 0, "class"}, @@ -545,6 +734,52 @@ {"class", 1, 0, "class"}, {"-closure", 0, 0, NULL}, {"pattern", 0, 0, NULL}} +}, +{"args", XOTclObjInfoArgsMethodStub, { + {"object", 1, 0, "object"}, + {"methodName", 1, 0, NULL}} +}, +{"body", XOTclObjInfoBodyMethodStub, { + {"object", 1, 0, "object"}, + {"methodName", 1, 0, NULL}} +}, +{"check", XOTclObjInfoCheckMethodStub, { + {"object", 1, 0, "object"}} +}, +{"children", XOTclObjInfoChildrenMethodStub, { + {"object", 1, 0, "object"}, + {"pattern", 0, 0, NULL}} +}, +{"class", XOTclObjInfoClassMethodStub, { + {"object", 1, 0, "object"}} +}, +{"commands", XOTclObjInfoCommandsMethodStub, { + {"object", 1, 0, "object"}, + {"pattern", 0, 0, NULL}} +}, +{"default", XOTclObjInfoDefaultMethodStub, { + {"object", 1, 0, "object"}, + {"methodName", 1, 0, NULL}, + {"arg", 1, 0, NULL}, + {"var", 1, 0, "tclobj"}} +}, +{"filter", XOTclObjInfoFilterMethodStub, { + {"object", 1, 0, "object"}, + {"-order", 0, 0, NULL}, + {"-guards", 0, 0, NULL}, + {"pattern", 0, 0, NULL}} +}, +{"filterguard", XOTclObjInfoFilterguardMethodStub, { + {"object", 1, 0, "object"}, + {"filter", 1, 0, NULL}} +}, +{"forward", XOTclObjInfoForwardMethodStub, { + {"object", 1, 0, "object"}, + {"-definition", 0, 0, NULL}, + {"methodName", 1, 0, NULL}} +}, +{"hasnamespace", XOTclObjInfoHasnamespaceMethodStub, { + {"object", 1, 0, "object"}} } };