summaryrefslogtreecommitdiffstats
path: root/generic/tclOOInfo.c
diff options
context:
space:
mode:
authordkf <donal.k.fellows@manchester.ac.uk>2018-04-15 14:47:26 (GMT)
committerdkf <donal.k.fellows@manchester.ac.uk>2018-04-15 14:47:26 (GMT)
commit28e500cbf94b82fc75c2a0a5007458fc6756504e (patch)
tree9764cf6550de2adb163c13e9b8438a14c974f5e4 /generic/tclOOInfo.c
parent637c7dbc7ef7c87a8528e00c422624be5b102bed (diff)
downloadtcl-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.c24
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;