Implement CFCJson_find_hash_elem
Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/bff120c5 Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/bff120c5 Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/bff120c5 Branch: refs/heads/master Commit: bff120c521ce1f2ce09a438069a55cb077124efa Parents: 8ac4a06 Author: Nick Wellnhofer <wellnho...@aevum.de> Authored: Sat Mar 19 19:58:50 2016 +0100 Committer: Nick Wellnhofer <wellnho...@aevum.de> Committed: Fri Jul 22 16:06:48 2016 +0200 ---------------------------------------------------------------------- compiler/src/CFCJson.c | 15 +++++++++++++++ compiler/src/CFCJson.h | 3 +++ 2 files changed, 18 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/bff120c5/compiler/src/CFCJson.c ---------------------------------------------------------------------- diff --git a/compiler/src/CFCJson.c b/compiler/src/CFCJson.c index 262b943..1f3a396 100644 --- a/compiler/src/CFCJson.c +++ b/compiler/src/CFCJson.c @@ -277,3 +277,18 @@ CFCJson_get_children(CFCJson *self) { return self->kids; } +CFCJson* +CFCJson_find_hash_elem(CFCJson *self, const char *key) { + if (self->type != CFCJSON_HASH) { + CFCUtil_die("Not a JSON hash"); + } + + for (int i = 0; self->kids[i]; i += 2) { + if (strcmp(self->kids[i]->string, key) == 0) { + return self->kids[i+1]; + } + } + + return NULL; +} + http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/bff120c5/compiler/src/CFCJson.h ---------------------------------------------------------------------- diff --git a/compiler/src/CFCJson.h b/compiler/src/CFCJson.h index 97d7081..052a1b8 100644 --- a/compiler/src/CFCJson.h +++ b/compiler/src/CFCJson.h @@ -49,6 +49,9 @@ CFCJson_get_num_children(CFCJson *self); CFCJson** CFCJson_get_children(CFCJson *self); +CFCJson* +CFCJson_find_hash_elem(CFCJson *self, const char *key); + #ifdef __cplusplus } #endif