diff options
author | Steve Bennett <steveb@workware.net.au> | 2010-10-05 13:12:27 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2010-10-20 10:14:42 +1000 |
commit | 2d499dd0fd27436b64777396e1ebd9ae7774d674 (patch) | |
tree | f159d968791a49b14e8276cf4e6ea107b8b11454 /jim-array.c | |
parent | 1d2f53210dda3c9826c3ce2e499b46994c1bf0a8 (diff) | |
download | jimtcl-2d499dd0fd27436b64777396e1ebd9ae7774d674.zip jimtcl-2d499dd0fd27436b64777396e1ebd9ae7774d674.tar.gz jimtcl-2d499dd0fd27436b64777396e1ebd9ae7774d674.tar.bz2 |
Add support for 'dict keys'
And implement 'array names' in terms of it
Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jim-array.c')
-rw-r--r-- | jim-array.c | 26 |
1 files changed, 1 insertions, 25 deletions
diff --git a/jim-array.c b/jim-array.c index 73713b5..2d0d081 100644 --- a/jim-array.c +++ b/jim-array.c @@ -119,37 +119,13 @@ static int array_cmd_get(Jim_Interp *interp, int argc, Jim_Obj *const *argv) static int array_cmd_names(Jim_Interp *interp, int argc, Jim_Obj *const *argv) { - int i; - int len; - Jim_Obj *resultObj; Jim_Obj *objPtr = Jim_GetVariable(interp, argv[0], JIM_NONE); - Jim_Obj *dictObj; - Jim_Obj **dictValuesObj; if (!objPtr) { return JIM_OK; } - if (Jim_DictKeysVector(interp, objPtr, NULL, 0, &dictObj, JIM_ERRMSG) != JIM_OK) { - return JIM_ERR; - } - - if (Jim_DictPairs(interp, dictObj, &dictValuesObj, &len) != JIM_OK) { - return JIM_ERR; - } - - /* Only return the matching values */ - resultObj = Jim_NewListObj(interp, NULL, 0); - - for (i = 0; i < len; i += 2) { - if (argc == 1 || Jim_StringMatchObj(argv[1], dictValuesObj[i], 0)) { - Jim_ListAppendElement(interp, resultObj, dictValuesObj[i]); - } - } - Jim_Free(dictValuesObj); - - Jim_SetResult(interp, resultObj); - return JIM_OK; + return Jim_DictKeys(interp, objPtr, argc == 1 ? NULL : argv[1]); } static int array_cmd_unset(Jim_Interp *interp, int argc, Jim_Obj *const *argv) |