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