1 /* libcomps - C alternative to yum.comps library
2  * Copyright (C) 2013 Jindrich Luza
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * any later version.
8  *
9  * This program is distributed in the hope that it will be useful, but
10  * WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to  Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
17  * USA
18  */
19 
20 #include "comps_objdict.h"
21 
comps_objdict_set_x(COMPS_ObjDict * rt,char * key,COMPS_Object * data)22 inline void comps_objdict_set_x(COMPS_ObjDict *rt, char *key, COMPS_Object *data){
23     comps_objrtree_set_x((COMPS_ObjRTree*) rt, key, data);
24 }
comps_objdict_set(COMPS_ObjDict * rt,char * key,COMPS_Object * data)25 inline void comps_objdict_set(COMPS_ObjDict *rt, char *key, COMPS_Object *data){
26     comps_objrtree_set((COMPS_ObjRTree*) rt, key, data);
27 }
comps_objdict_set_n(COMPS_ObjDict * rt,char * key,unsigned int len,COMPS_Object * data)28 inline void comps_objdict_set_n(COMPS_ObjDict *rt, char *key, unsigned int len,
29                                 COMPS_Object *data) {
30     comps_objrtree_set_n((COMPS_ObjRTree*) rt, key, len, data);
31 }
comps_objdict_get_x(COMPS_ObjRTree * rt,const char * key)32 inline COMPS_Object* comps_objdict_get_x(COMPS_ObjRTree * rt, const char * key) {
33     return comps_objrtree_get_x((COMPS_ObjRTree*) rt, key);
34 }
comps_objdict_get(COMPS_ObjDict * rt,const char * key)35 inline COMPS_Object* comps_objdict_get(COMPS_ObjDict *rt, const char *key) {
36     return comps_objrtree_get((COMPS_ObjRTree*) rt, key);
37 }
comps_objdict_unset(COMPS_ObjDict * rt,const char * key)38 inline void comps_objdict_unset(COMPS_ObjDict * rt, const char * key) {
39     comps_objrtree_unset((COMPS_ObjRTree*) rt, key);
40 }
comps_objdict_clear(COMPS_ObjDict * rt)41 inline void comps_objdict_clear(COMPS_ObjDict * rt) {
42     comps_objrtree_clear((COMPS_ObjRTree*) rt);
43 }
comps_objdict_values(COMPS_ObjDict * rt)44 inline COMPS_HSList * comps_objdict_values(COMPS_ObjDict * rt) {
45     return comps_objrtree_values((COMPS_ObjRTree*)rt);
46 }
comps_objdict_values_walk(COMPS_ObjRTree * rt,void * udata,void (* walk_f)(void *,COMPS_Object *))47 inline void comps_objdict_values_walk(COMPS_ObjRTree * rt, void* udata,
48                               void (*walk_f)(void*, COMPS_Object*)) {
49     comps_objrtree_values_walk((COMPS_ObjRTree*)rt, udata, walk_f);
50 }
comps_objdict_clone(COMPS_ObjDict * rt)51 inline COMPS_ObjDict * comps_objdict_clone(COMPS_ObjDict * rt) {
52     return (COMPS_ObjRTree*) comps_objrtree_clone((COMPS_ObjRTree*)rt);
53 }
comps_objdict_clone_v(void * rt)54 inline void * comps_objdict_clone_v(void * rt) {
55     return (void*) comps_objrtree_clone((COMPS_ObjRTree*)rt);
56 }
comps_objdict_keys(COMPS_ObjDict * rt)57 inline COMPS_HSList* comps_objdict_keys(COMPS_ObjDict * rt) {
58     return comps_objrtree_keys((COMPS_ObjRTree*)rt);
59 }
comps_objdict_pairs(COMPS_ObjDict * rt)60 inline COMPS_HSList* comps_objdict_pairs(COMPS_ObjDict *rt) {
61     return comps_objrtree_pairs((COMPS_ObjRTree*)rt);
62 }
comps_objdict_union(COMPS_ObjDict * d1,COMPS_ObjDict * d2)63 inline COMPS_ObjDict* comps_objdict_union(COMPS_ObjDict *d1, COMPS_ObjDict *d2) {
64     return comps_objrtree_union((COMPS_ObjRTree*)d1, (COMPS_ObjRTree*)d2);
65 }
66 
comps_objmdict_set_x(COMPS_ObjMDict * rt,char * key,COMPS_Object * data)67 inline void comps_objmdict_set_x(COMPS_ObjMDict *rt, char *key, COMPS_Object *data){
68     comps_objmrtree_set_x((COMPS_ObjMRTree*) rt, key, data);
69 }
comps_objmdict_set(COMPS_ObjMDict * rt,char * key,COMPS_Object * data)70 inline void comps_objmdict_set(COMPS_ObjMDict *rt, char *key, COMPS_Object *data) {
71     comps_objmrtree_set((COMPS_ObjMRTree*) rt, key, data);
72 }
73 
comps_objmdict_set_n(COMPS_ObjMDict * rt,char * key,unsigned int len,COMPS_Object * data)74 inline void comps_objmdict_set_n(COMPS_ObjMDict *rt, char *key, unsigned int len,
75                                  COMPS_Object *data) {
76     comps_objmrtree_set_n((COMPS_ObjMRTree*) rt, key, len, data);
77 }
78 
comps_objmdict_get(COMPS_ObjMDict * rt,const char * key)79 inline COMPS_ObjList* comps_objmdict_get(COMPS_ObjMDict *rt, const char *key) {
80     return comps_objmrtree_get((COMPS_ObjMRTree*) rt, key);
81 }
82 /*inline COMPS_HSList** comps_objmdict_getp(COMPS_ObjMDict *rt, const char *key) {
83     return comps_obj_mrtree_getp((COMPS_ObjMRTree*) rt, key);
84 }*/
comps_objmdict_unset(COMPS_ObjMDict * rt,const char * key)85 inline void comps_objmdict_unset(COMPS_ObjMDict * rt, const char * key) {
86     comps_objmrtree_unset((COMPS_ObjMRTree*) rt, key);
87 }
comps_objmdict_clear(COMPS_ObjMDict * rt)88 inline void comps_objmdict_clear(COMPS_ObjMDict * rt) {
89     comps_objmrtree_clear((COMPS_ObjMRTree*) rt);
90 }
comps_objmdict_values_walk(COMPS_ObjMDict * rt,void * udata,void (* walk_f)(void *,void *))91 inline void comps_objmdict_values_walk(COMPS_ObjMDict * rt, void* udata,
92                               void (*walk_f)(void*, void*)) {
93     comps_objmrtree_values_walk((COMPS_ObjMRTree*)rt, udata, walk_f);
94 }
95 
comps_objmdict_clone(COMPS_ObjMDict * rt)96 inline COMPS_ObjMDict* comps_objmdict_clone(COMPS_ObjMDict * rt) {
97     return (COMPS_ObjMDict*) comps_objmrtree_clone((COMPS_ObjMRTree*)rt);
98 }
comps_objmdict_clone_v(void * rt)99 inline void* comps_objmdict_clone_v(void *rt) {
100     return (COMPS_ObjMRTree*) comps_objmrtree_clone((COMPS_ObjMRTree*)rt);
101 }
comps_objmdict_keys(COMPS_ObjMDict * rt)102 inline COMPS_HSList* comps_objmdict_keys(COMPS_ObjMDict * rt) {
103     return comps_objmrtree_keys((COMPS_ObjMRTree*)rt);
104 }
comps_objmdict_unite(COMPS_ObjMDict * d1,COMPS_ObjMDict * d2)105 inline void comps_objmdict_unite(COMPS_ObjMDict * d1, COMPS_ObjMDict *d2) {
106     comps_objmrtree_unite((COMPS_ObjMRTree*)d1, (COMPS_ObjMRTree*)d2);
107 }
comps_objmdict_pairs(COMPS_ObjMDict * rt)108 inline COMPS_HSList* comps_objmdict_pairs(COMPS_ObjMDict *rt) {
109     return comps_objmrtree_pairs((COMPS_ObjMRTree*)rt);
110 }
comps_objmdict_values(COMPS_ObjMDict * rt)111 inline COMPS_HSList * comps_objmdict_values(COMPS_ObjMDict * rt) {
112     return comps_objmrtree_values((COMPS_ObjMRTree*)rt);
113 }
114 
115 COMPS_ObjectInfo COMPS_ObjMDict_ObjInfo = {
116     .obj_size = sizeof(COMPS_ObjMRTree),
117     .constructor = &comps_objmrtree_create_u,
118     .destructor = &comps_objmrtree_destroy_u,
119     .copy = &comps_objmrtree_copy_u,
120     .obj_cmp = &comps_objmrtree_cmp_u
121 };
122 
123 COMPS_ObjectInfo COMPS_ObjDict_ObjInfo = {
124     .obj_size = sizeof(COMPS_ObjRTree),
125     .constructor = &comps_objrtree_create_u,
126     .destructor = &comps_objrtree_destroy_u,
127     .copy = &comps_objrtree_copy_u,
128     .obj_cmp = &comps_objrtree_cmp_u
129 };
130