ZClk  0.1.0-alpha.3
Library to build cli programs
zclk_dict.h
1 // Copyright (c) 2020 Abhishek Mishra
2 //
3 // This software is released under the MIT License.
4 // https://opensource.org/licenses/MIT
5 
6 #ifndef SRC_CLD_DICT_H_
7 #define SRC_CLD_DICT_H_
8 
9 #include "zclk_common.h"
10 #include <coll_arraylist.h>
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 typedef struct zclk_dict_t {
17  arraylist* keys;
18  arraylist* vals;
19 } zclk_dict;
20 
21 MODULE_API int create_zclk_dict(zclk_dict** dict);
22 
23 MODULE_API void free_zclk_dict(zclk_dict* dict);
24 
25 MODULE_API int zclk_dict_put(zclk_dict* dict, char* key, char* value);
26 
27 MODULE_API int zclk_dict_remove(zclk_dict* dict, char* key);
28 
29 MODULE_API int zclk_dict_get(zclk_dict* dict, char* key, char** value);
30 
31 MODULE_API int zclk_dict_keys(zclk_dict* dict, char** keys);
32 
33 #define zclk_dict_foreach(dict, key, value) \
34  char* key; \
35  char* value; \
36  size_t i; \
37  size_t len = arraylist_length(dict->keys); \
38  for(i = 0, \
39  key = (char*)arraylist_get(dict->keys, i), \
40  value = (char*)arraylist_get(dict->vals, i); \
41  i < len; \
42  i++, \
43  key = (char*)arraylist_get(dict->keys, i), \
44  value = (char*)arraylist_get(dict->vals, i))
45 
46 #ifdef __cplusplus
47 }
48 #endif
49 
50 #endif /* SRC_CLD_DICT_H_ */
Definition: zclk_dict.h:16