diff options
author | ericm <ericm> | 2000-05-08 21:25:30 (GMT) |
---|---|---|
committer | ericm <ericm> | 2000-05-08 21:25:30 (GMT) |
commit | 63adaf2eb6d8949c310ea3f93c699ed6dd1c8839 (patch) | |
tree | f9e4cc25a6c9937d5d35ace7dde71abce54375d9 /generic | |
parent | a761496cfa5e3457e53d62de2e940dabff44e63f (diff) | |
download | tcl-63adaf2eb6d8949c310ea3f93c699ed6dd1c8839.zip tcl-63adaf2eb6d8949c310ea3f93c699ed6dd1c8839.tar.gz tcl-63adaf2eb6d8949c310ea3f93c699ed6dd1c8839.tar.bz2 |
* tests/set-old.test:
* doc/array.n:
* generic/tclVar.c: Added [array statistics] command [RFE: 4557]
Diffstat (limited to 'generic')
-rw-r--r-- | generic/tclVar.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/generic/tclVar.c b/generic/tclVar.c index 834a8dc..f9d5e32 100644 --- a/generic/tclVar.c +++ b/generic/tclVar.c @@ -14,7 +14,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclVar.c,v 1.16 2000/01/21 03:29:14 ericm Exp $ + * RCS: @(#) $Id: tclVar.c,v 1.17 2000/05/08 21:25:31 ericm Exp $ */ #include "tclInt.h" @@ -2861,10 +2861,10 @@ Tcl_ArrayObjCmd(dummy, interp, objc, objv) enum {ARRAY_ANYMORE, ARRAY_DONESEARCH, ARRAY_EXISTS, ARRAY_GET, ARRAY_NAMES, ARRAY_NEXTELEMENT, ARRAY_SET, ARRAY_SIZE, - ARRAY_STARTSEARCH, ARRAY_UNSET}; + ARRAY_STARTSEARCH, ARRAY_STATISTICS, ARRAY_UNSET}; static char *arrayOptions[] = { "anymore", "donesearch", "exists", "get", "names", "nextelement", - "set", "size", "startsearch", "unset", (char *) NULL + "set", "size", "startsearch", "statistics", "unset", (char *) NULL }; Interp *iPtr = (Interp *) interp; @@ -3178,7 +3178,22 @@ Tcl_ArrayObjCmd(dummy, interp, objc, objv) varPtr->searchPtr = searchPtr; break; } - case ARRAY_UNSET: { + + case ARRAY_STATISTICS: { + char *stats; + stats = Tcl_HashStats(varPtr->value.tablePtr); + if (stats != NULL) { + Tcl_SetResult(interp, stats, TCL_VOLATILE); + ckfree((void *)stats); + } else { + Tcl_SetResult(interp, "error reading array statistics", + TCL_STATIC); + return TCL_ERROR; + } + break; + } + + case ARRAY_UNSET: { Tcl_HashSearch search; Var *varPtr2; char *pattern = NULL; |