libcomps  ..
 All Data Structures Files Functions Variables Typedefs
comps.h
Go to the documentation of this file.
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 
25 #ifndef COMPS_H
26 #define COMPS_H
27 
28 #include <stdio.h>
29 #include <stdarg.h>
30 
31 #include "comps_doc_types.h"
32 #include "comps_getset.h"
33 #include "comps_dict.h"
34 #include "comps_list.h"
35 #include "comps_set.h"
36 #include "comps_logger.h"
37 #include "comps_hslist.h"
38 #include "comps_utils.h"
39 
40 #include <libxml/encoding.h>
41 #include <libxml/xmlwriter.h>
42 #include <libxml/tree.h>
43 
44 COMPS_Prop * __comps_doccat_get_prop(void *cat, const char *key);
45 COMPS_Prop * __comps_docenv_get_prop(void *env, const char *key);
46 COMPS_Prop * __comps_docgroup_get_prop(void *group, const char *key);
47 
48 
49 void __comps_doc_char_setter(void **attr, char *val, char copy);
50 char __comps_doc_add_lobject(COMPS_Doc *doc, char *parent, void *obj,
51  void(*obj_destructor)(void*));
52 COMPS_List* __comps_get_lobject(COMPS_Doc *doc, const char *obj);
53 void __comps_set_lobject(COMPS_Doc *doc, const char *obj, COMPS_List *lobj);
54 char __comps_doc_remove_lobject(COMPS_Doc *doc, char *parent, void *obj);
55 
56 COMPS_Dict* __comps_get_dobject(COMPS_Doc *doc, const char *obj);
57 void __comps_set_dobject(COMPS_Doc *doc, const char *obj, COMPS_Dict *dobj);
58 char __comps_doc_add_dobject(COMPS_Doc *doc, char *parent, char *key,
59  char *val);
60 
61 COMPS_MDict* __comps_get_mdobject(COMPS_Doc *doc, const char *obj);
62 void __comps_set_mdobject(COMPS_Doc *doc, const char *obj, COMPS_MDict *mdobj);
63 char __comps_doc_add_mdobject(COMPS_Doc *doc, char *parent, char *key,
64  char *val);
65 
66 void __comps_doc_add_lang_prop(COMPS_Dict *dict, char *lang, char *prop,
67  char copy);
68 void __comps_doc_add_prop(COMPS_Dict *dict, char *key, COMPS_Prop * prop);
69 char __comps_doc_write_simple_prop(xmlTextWriterPtr writer, char *prop,
70  char *val);
71 void __comps_doc_write_lang_prop(xmlTextWriterPtr writer, COMPS_Dict *lang_dict,
72  char *prop);
73 
74 
75 void comps2xml_f(COMPS_Doc * doc, char *filename, char stdoutredirect);
76 char *comps2xml_str(COMPS_Doc *doc);
77 
78 COMPS_Doc *comps_doc_create(const char *encoding);
79 void comps_doc_init(COMPS_Doc *doc);
80 void comps_doc_clear(COMPS_Doc *doc);
81 void comps_doc_destroy(COMPS_Doc **doc);
82 void comps_doc_destroy_v(void *doc);
83 
84 COMPS_List *comps_doc_groups(COMPS_Doc *doc);
85 COMPS_List *comps_doc_categories(COMPS_Doc *doc);
86 COMPS_List *comps_doc_environments(COMPS_Doc *doc);
87 COMPS_Dict *comps_doc_langpacks(COMPS_Doc *doc);
88 COMPS_MDict *comps_doc_whiteout(COMPS_Doc *doc);
89 COMPS_MDict *comps_doc_blacklist(COMPS_Doc *doc);
90 
91 void comps_doc_set_groups(COMPS_Doc *doc, COMPS_List *groups);
92 void comps_doc_set_cats(COMPS_Doc *doc, COMPS_List *cats);
93 void comps_doc_set_envs(COMPS_Doc *doc, COMPS_List *envs);
94 void comps_doc_set_langpacks(COMPS_Doc *doc, COMPS_Dict *langs);
95 void comps_doc_set_whiteout(COMPS_Doc *doc, COMPS_MDict *whiteout);
96 void comps_doc_set_blacklist(COMPS_Doc *doc, COMPS_MDict *blist);
97 
98 void comps_doc_set_groups_v(void *doc, COMPS_List *groups);
99 void comps_doc_set_cats_v(void *doc, COMPS_List *cats);
100 void comps_doc_set_envs_v(void *doc, COMPS_List *envs);
101 void comps_doc_set_langpacks_v(void *doc, COMPS_Dict *langs);
102 void comps_doc_set_whiteout_v(void *doc, COMPS_MDict *whiteout);
103 void comps_doc_set_blacklist_v(void *doc, COMPS_MDict *blist);
104 COMPS_List *comps_doc_groups_v(void *doc);
105 COMPS_List *comps_doc_categories_v(void *doc);
106 COMPS_List *comps_doc_environments_v(void *doc);
107 COMPS_Dict *comps_doc_langpacks_v(void *doc);
108 COMPS_MDict *comps_doc_whiteout_v(void *doc);
109 COMPS_MDict *comps_doc_blacklist_v(void *doc);
110 
111 char comps_doc_add_group(COMPS_Doc *doc, COMPS_DocGroup *group);
112 char comps_doc_add_category(COMPS_Doc *doc, COMPS_DocCategory *category);
113 char comps_doc_add_env(COMPS_Doc *doc, COMPS_DocEnv *env);
114 char comps_doc_add_langpack(COMPS_Doc *doc, char *name, char *install);
115 char comps_doc_add_blacklist(COMPS_Doc *doc, char *name, char *arch);
116 char comps_doc_add_whiteout(COMPS_Doc *doc, char *requires, char *package);
117 
118 COMPS_List* comps_doc_get_groups(COMPS_Doc *doc, char *id, char *name,
119  char *desc, char *lang);
120 COMPS_List* comps_doc_get_categories(COMPS_Doc *doc, char *id, char *name,
121  char *desc, char *lang);
122 COMPS_List* comps_doc_get_envs(COMPS_Doc *doc, char *id, char *name,
123  char *desc, char *lang);
124 
125 char comps_doc_del_group(COMPS_Doc *doc, COMPS_DocGroup *group);
126 char comps_doc_del_category(COMPS_Doc *doc, COMPS_DocCategory *category);
127 char comps_doc_del_env(COMPS_Doc * doc, COMPS_DocEnv *env);
128 
129 void comps_doc_xml(COMPS_Doc * doc, xmlTextWriterPtr writer);
130 COMPS_Doc* comps_doc_union(COMPS_Doc *c1, COMPS_Doc *c2);
131 COMPS_Doc* comps_doc_intersect(COMPS_Doc *c1, COMPS_Doc *c2);
132 char comps_doc_cmp(COMPS_Doc *c1, COMPS_Doc *c2);
133 
134 COMPS_DocGroup* comps_docgroup_create();
135 void comps_docgroup_destroy(void *group);
136 void comps_docgroup_set_id(COMPS_DocGroup *group, char *id, char copy);
137 void comps_docgroup_set_name(COMPS_DocGroup *group, char *name,
138  char copy);
139 void comps_docgroup_add_lang_name(COMPS_DocGroup *group, char *lang, char *name,
140  char copy);
141 void comps_docgroup_set_desc(COMPS_DocGroup *group, char *desc,
142  char copy);
143 void comps_docgroup_add_lang_desc(COMPS_DocGroup *group, char *lang, char *desc,
144  char copy);
145 void comps_docgroup_set_default(COMPS_DocGroup *group, unsigned def);
146 void comps_docgroup_set_uservisible(COMPS_DocGroup *group,
147  unsigned uservisible);
148 void comps_docgroup_set_displayorder(COMPS_DocGroup *group,
149  unsigned display_order);
150 void comps_docgroup_set_langonly(COMPS_DocGroup *group, char *langonly,
151  char copy);
152 void comps_docgroup_add_package(COMPS_DocGroup *group,
153  COMPS_DocGroupPackage *package);
154 COMPS_List* comps_docgroup_get_packages(COMPS_DocGroup *group, char *name,
155  COMPS_PackageType type);
156 void comps_docgroup_xml(COMPS_DocGroup *group, xmlTextWriterPtr writer,
157  COMPS_Logger *log);
158 COMPS_DocGroup* comps_docgroup_union(COMPS_DocGroup *g1, COMPS_DocGroup *g2);
159 COMPS_DocGroup* comps_docgroup_intersect(COMPS_DocGroup *g1,
160  COMPS_DocGroup *g2);
161 COMPS_DocGroup* comps_docgroup_clone(COMPS_DocGroup *g);
162 char __comps_docgroup_idcmp(void* g1, void *g2);
163 char comps_docgroup_cmp(COMPS_DocGroup *g1, COMPS_DocGroup *g2);
164 char comps_docgroup_cmp_v(void *g1, void *g2);
165 
166 
167 COMPS_DocCategory* comps_doccategory_create();
168 void comps_doccategory_destroy(void *category);
169 void comps_doccategory_set_id(COMPS_DocCategory *category, char *id, char copy);
170 void comps_doccategory_set_name(COMPS_DocCategory *category, char *name,
171  char copy);
172 void comps_doccategory_add_lang_name(COMPS_DocCategory *category, char *lang,
173  char *name, char copy);
174 void comps_doccategory_set_desc(COMPS_DocCategory *category, char *desc,
175  char copy);
176 void comps_doccategory_add_lang_desc(COMPS_DocCategory *category, char *lang,
177  char *desc, char copy);
178 void comps_doccategory_set_displayorder(COMPS_DocCategory *category,
179  int display_order);
180 void comps_doccategory_add_groupid(COMPS_DocCategory *category,
181  COMPS_DocGroupId *groupid);
182 void comps_doccategory_xml(COMPS_DocCategory *cat, xmlTextWriterPtr writer,
183  COMPS_Logger *log);
184 COMPS_DocCategory* comps_doccategory_union(COMPS_DocCategory *c1,
185  COMPS_DocCategory *c2);
186 COMPS_DocCategory* comps_doccategory_intersect(COMPS_DocCategory *c1,
187  COMPS_DocCategory *c2);
188 COMPS_DocCategory* comps_doccategory_clone(COMPS_DocCategory *c);
189 char __comps_doccategory_idcmp(void* cat1, void *cat2);
190 char comps_doccategory_cmp(COMPS_DocCategory *c1, COMPS_DocCategory *c2);
191 char comps_doccategory_cmp_v(void *c1, void *c2);
192 
193 COMPS_DocEnv *comps_docenv_create();
194 void comps_docenv_destroy(void *env);
195 void comps_docenv_set_id(COMPS_DocEnv * env, char *id, char copy);
196 void comps_docenv_set_name(COMPS_DocEnv * env, char *name, char copy);
197 void comps_docenv_add_lang_name(COMPS_DocEnv *env, char *lang,
198  char *name, char copy);
199 void comps_docenv_set_desc(COMPS_DocEnv * env, char *desc, char copy);
200 void comps_docenv_add_lang_desc(COMPS_DocEnv *env, char *lang,
201  char *desc, char copy);
202 void comps_docenv_set_displayorder(COMPS_DocEnv *env, int display_order);
203 void comps_docenv_add_optionid(COMPS_DocEnv *env,
204  COMPS_DocGroupId *optionid);
205 void comps_docenv_add_groupid(COMPS_DocEnv *env,
206  COMPS_DocGroupId *groupid);
207 void comps_docenv_xml(COMPS_DocEnv *env, xmlTextWriterPtr writer,
208  COMPS_Logger *log);
209 COMPS_DocEnv* comps_docenv_union(COMPS_DocEnv *e1, COMPS_DocEnv *e2);
210 COMPS_DocEnv* comps_docenv_intersect(COMPS_DocEnv *e1, COMPS_DocEnv *e2);
211 COMPS_DocEnv* comps_docenv_clone(COMPS_DocEnv *g);
212 char __comps_docenv_idcmp(void* e1, void *e2);
213 char comps_docenv_cmp(COMPS_DocEnv *e1, COMPS_DocEnv *e2);
214 char comps_docenv_cmp_v(void *e1, void *e2);
215 
216 COMPS_DocGroupPackage* comps_docpackage_create();
217 COMPS_DocGroupPackage* comps_docpackage_clone(COMPS_DocGroupPackage * pkg);
218 void comps_docpackage_set_name(COMPS_DocGroupPackage *package, char *name,
219  char copy);
220 void comps_docpackage_set_type(COMPS_DocGroupPackage *package,
221  COMPS_PackageType type);
222 void comps_docpackage_set_requires(COMPS_DocGroupPackage *package,
223  char *requires, char copy);
224 
225 void comps_docpackage_destroy(void *pkg);
226 void comps_docpackage_xml(COMPS_DocGroupPackage *pkg, xmlTextWriterPtr writer,
227  COMPS_Logger *log);
228 char comps_docpackage_cmp(void* pkg1, void *pkg2);
229 const char* comps_docpackage_type_str(COMPS_PackageType type);
230 
231 COMPS_DocGroupId* comps_docgroupid_create();
232 COMPS_DocGroupId* comps_docgroupid_clone(COMPS_DocGroupId * groupid);
233 void comps_docgroupid_set_name(COMPS_DocGroupId *groupid, char *name, char copy);
234 void comps_docgroupid_set_default(COMPS_DocGroupId *groupid, char def);
235 char comps_docgroupid_cmp(void* gid1, void *gid2);
236 void comps_docgroupid_destroy(void *groupid);
237 
238 #endif