diff options
author | Tucker Evans <tucker@tuckerevans.com> | 2020-07-06 20:50:38 -0400 |
---|---|---|
committer | Tucker Evans <tucker@tuckerevans.com> | 2020-07-08 11:03:54 -0400 |
commit | 15de5dc2c5d82e816cd9c0a7c56b7e1d4165717f (patch) | |
tree | 5b8a61fc0978046b6f3107c7454cd690845d81e0 /collections/map/map.c | |
parent | 7d69ea177200bda62b403eb9ead6eee2ba5abe52 (diff) |
Add index function for maps
Diffstat (limited to 'collections/map/map.c')
-rw-r--r-- | collections/map/map.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/collections/map/map.c b/collections/map/map.c index 7de58e4..0600c8b 100644 --- a/collections/map/map.c +++ b/collections/map/map.c @@ -105,6 +105,25 @@ void *key; return tmp; } +void* map_index(root, key) +map *root; +void *key; +{ + int cmp; + if (!root || !key) + return NULL; + + cmp = root->cmp(root->key, key); + + if (cmp < 0) + return map_index(root->left, key); + + if (cmp > 0) + return map_index(root->right, key); + + return root->val; +} + void map_clear(root) map *root; { |