diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2018-04-15 14:47:26 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2018-04-15 14:47:26 (GMT) |
commit | 28e500cbf94b82fc75c2a0a5007458fc6756504e (patch) | |
tree | 9764cf6550de2adb163c13e9b8438a14c974f5e4 /generic/tclOOInfo.c | |
parent | 637c7dbc7ef7c87a8528e00c422624be5b102bed (diff) | |
download | tcl-28e500cbf94b82fc75c2a0a5007458fc6756504e.zip tcl-28e500cbf94b82fc75c2a0a5007458fc6756504e.tar.gz tcl-28e500cbf94b82fc75c2a0a5007458fc6756504e.tar.bz2 |
Testing the private variables.
Diffstat (limited to 'generic/tclOOInfo.c')
-rw-r--r-- | generic/tclOOInfo.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/generic/tclOOInfo.c b/generic/tclOOInfo.c index bdb67ae..d189528 100644 --- a/generic/tclOOInfo.c +++ b/generic/tclOOInfo.c @@ -799,21 +799,37 @@ InfoObjectVariablesCmd( Tcl_Obj *const objv[]) { Object *oPtr; - Tcl_Obj *variableObj, *resultObj; - int i; + Tcl_Obj *resultObj; + int i, private = 0; if (objc != 2 && objc != 3) { Tcl_WrongNumArgs(interp, 1, objv, "objName ?-private?"); return TCL_ERROR; } + if (objc == 3) { + if (strcmp("-private", Tcl_GetString(objv[2])) != 0) { + return TCL_ERROR; + } + private = 1; + } oPtr = (Object *) Tcl_GetObjectFromObj(interp, objv[1]); if (oPtr == NULL) { return TCL_ERROR; } resultObj = Tcl_NewObj(); - FOREACH(variableObj, oPtr->variables) { - Tcl_ListObjAppendElement(NULL, resultObj, variableObj); + if (private) { + PrivateVariableMapping *privatePtr; + + FOREACH_STRUCT(privatePtr, oPtr->privateVariables) { + Tcl_ListObjAppendElement(NULL, resultObj, privatePtr->variableObj); + } + } else { + Tcl_Obj *variableObj; + + FOREACH(variableObj, oPtr->variables) { + Tcl_ListObjAppendElement(NULL, resultObj, variableObj); + } } Tcl_SetObjResult(interp, resultObj); return TCL_OK; |