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 char comps_doc_add_group(COMPS_Doc *doc, COMPS_DocGroup *group);
85 char comps_doc_add_category(COMPS_Doc *doc, COMPS_DocCategory *category);
86 char comps_doc_add_env(COMPS_Doc *doc, COMPS_DocEnv *env);
87 
88 COMPS_List* comps_doc_get_groups(COMPS_Doc *doc, char *id, char *name,
89  char *desc, char *lang);
90 COMPS_List* comps_doc_get_categories(COMPS_Doc *doc, char *id, char *name,
91  char *desc, char *lang);
92 COMPS_List* comps_doc_get_envs(COMPS_Doc *doc, char *id, char *name,
93  char *desc, char *lang);
94 
95 char comps_doc_del_group(COMPS_Doc *doc, COMPS_DocGroup *group);
96 char comps_doc_del_category(COMPS_Doc *doc, COMPS_DocCategory *category);
97 char comps_doc_del_env(COMPS_Doc * doc, COMPS_DocEnv *env);
98 
99 void comps_doc_xml(COMPS_Doc * doc, xmlTextWriterPtr writer);
100 COMPS_Doc* comps_doc_union(COMPS_Doc *c1, COMPS_Doc *c2);
101 COMPS_Doc* comps_doc_intersect(COMPS_Doc *c1, COMPS_Doc *c2);
102 char comps_doc_cmp(COMPS_Doc *c1, COMPS_Doc *c2);
103 
104 COMPS_DocGroup* comps_docgroup_create();
105 void comps_docgroup_destroy(void *group);
106 void comps_docgroup_set_id(COMPS_DocGroup *group, char *id, char copy);
107 void comps_docgroup_set_name(COMPS_DocGroup *group, char *name,
108  char copy);
109 void comps_docgroup_add_lang_name(COMPS_DocGroup *group, char *lang, char *name,
110  char copy);
111 void comps_docgroup_set_desc(COMPS_DocGroup *group, char *desc,
112  char copy);
113 void comps_docgroup_add_lang_desc(COMPS_DocGroup *group, char *lang, char *desc,
114  char copy);
115 void comps_docgroup_set_default(COMPS_DocGroup *group, unsigned def);
116 void comps_docgroup_set_uservisible(COMPS_DocGroup *group,
117  unsigned uservisible);
118 void comps_docgroup_set_displayorder(COMPS_DocGroup *group,
119  unsigned display_order);
120 void comps_docgroup_set_langonly(COMPS_DocGroup *group, char *langonly,
121  char copy);
122 void comps_docgroup_add_package(COMPS_DocGroup *group,
123  COMPS_DocGroupPackage *package);
124 COMPS_List* comps_docgroup_get_packages(COMPS_DocGroup *group, char *name,
125  COMPS_PackageType type);
126 void comps_docgroup_xml(COMPS_DocGroup *group, xmlTextWriterPtr writer,
127  COMPS_Logger *log);
128 COMPS_DocGroup* comps_docgroup_union(COMPS_DocGroup *g1, COMPS_DocGroup *g2);
129 COMPS_DocGroup* comps_docgroup_intersect(COMPS_DocGroup *g1,
130  COMPS_DocGroup *g2);
131 COMPS_DocGroup* comps_docgroup_clone(COMPS_DocGroup *g);
132 char __comps_docgroup_idcmp(void* g1, void *g2);
133 char comps_docgroup_cmp(COMPS_DocGroup *g1, COMPS_DocGroup *g2);
134 char comps_docgroup_cmp_v(void *g1, void *g2);
135 
136 
137 COMPS_DocCategory* comps_doccategory_create();
138 void comps_doccategory_destroy(void *category);
139 void comps_doccategory_set_id(COMPS_DocCategory *category, char *id, char copy);
140 void comps_doccategory_set_name(COMPS_DocCategory *category, char *name,
141  char copy);
142 void comps_doccategory_add_lang_name(COMPS_DocCategory *category, char *lang,
143  char *name, char copy);
144 void comps_doccategory_set_desc(COMPS_DocCategory *category, char *desc,
145  char copy);
146 void comps_doccategory_add_lang_desc(COMPS_DocCategory *category, char *lang,
147  char *desc, char copy);
148 void comps_doccategory_set_displayorder(COMPS_DocCategory *category,
149  int display_order);
150 void comps_doccategory_add_groupid(COMPS_DocCategory *category,
151  COMPS_DocGroupId *groupid);
152 void comps_doccategory_xml(COMPS_DocCategory *cat, xmlTextWriterPtr writer,
153  COMPS_Logger *log);
154 COMPS_DocCategory* comps_doccategory_union(COMPS_DocCategory *c1,
155  COMPS_DocCategory *c2);
156 COMPS_DocCategory* comps_doccategory_intersect(COMPS_DocCategory *c1,
157  COMPS_DocCategory *c2);
158 COMPS_DocCategory* comps_doccategory_clone(COMPS_DocCategory *c);
159 char __comps_doccategory_idcmp(void* cat1, void *cat2);
160 char comps_doccategory_cmp(COMPS_DocCategory *c1, COMPS_DocCategory *c2);
161 char comps_doccategory_cmp_v(void *c1, void *c2);
162 
163 COMPS_DocEnv *comps_docenv_create();
164 void comps_docenv_destroy(void *env);
165 void comps_docenv_set_id(COMPS_DocEnv * env, char *id, char copy);
166 void comps_docenv_set_name(COMPS_DocEnv * env, char *name, char copy);
167 void comps_docenv_add_lang_name(COMPS_DocEnv *env, char *lang,
168  char *name, char copy);
169 void comps_docenv_set_desc(COMPS_DocEnv * env, char *desc, char copy);
170 void comps_docenv_add_lang_desc(COMPS_DocEnv *env, char *lang,
171  char *desc, char copy);
172 void comps_docenv_set_displayorder(COMPS_DocEnv *env, int display_order);
173 void comps_docenv_add_optionid(COMPS_DocEnv *env,
174  COMPS_DocGroupId *optionid);
175 void comps_docenv_add_groupid(COMPS_DocEnv *env,
176  COMPS_DocGroupId *groupid);
177 void comps_docenv_xml(COMPS_DocEnv *env, xmlTextWriterPtr writer,
178  COMPS_Logger *log);
179 COMPS_DocEnv* comps_docenv_union(COMPS_DocEnv *e1, COMPS_DocEnv *e2);
180 COMPS_DocEnv* comps_docenv_intersect(COMPS_DocEnv *e1, COMPS_DocEnv *e2);
181 COMPS_DocEnv* comps_docenv_clone(COMPS_DocEnv *g);
182 char __comps_docenv_idcmp(void* e1, void *e2);
183 char comps_docenv_cmp(COMPS_DocEnv *e1, COMPS_DocEnv *e2);
184 char comps_docenv_cmp_v(void *e1, void *e2);
185 
186 COMPS_DocGroupPackage* comps_docpackage_create();
187 COMPS_DocGroupPackage* comps_docpackage_clone(COMPS_DocGroupPackage * pkg);
188 void comps_docpackage_set_name(COMPS_DocGroupPackage *package, char *name,
189  char copy);
190 void comps_docpackage_set_type(COMPS_DocGroupPackage *package,
191  COMPS_PackageType type);
192 void comps_docpackage_set_requires(COMPS_DocGroupPackage *package,
193  char *requires, char copy);
194 
195 void comps_docpackage_destroy(void *pkg);
196 void comps_docpackage_xml(COMPS_DocGroupPackage *pkg, xmlTextWriterPtr writer,
197  COMPS_Logger *log);
198 char comps_docpackage_cmp(void* pkg1, void *pkg2);
199 const char* comps_docpackage_type_str(COMPS_PackageType type);
200 
201 COMPS_DocGroupId* comps_docgroupid_create();
202 COMPS_DocGroupId* comps_docgroupid_clone(COMPS_DocGroupId * groupid);
203 void comps_docgroupid_set_name(COMPS_DocGroupId *groupid, char *name, char copy);
204 void comps_docgroupid_set_default(COMPS_DocGroupId *groupid, char def);
205 char comps_docgroupid_cmp(void* gid1, void *gid2);
206 void comps_docgroupid_destroy(void *groupid);
207 
208 #endif
void comps_docenv_destroy(void *env)
Definition: comps.c:1579
COMPS_Doc * comps_doc_create(const char *encoding)
Definition: comps.c:133
char * comps2xml_str(COMPS_Doc *doc)
Definition: comps.c:429
void comps_docenv_set_displayorder(COMPS_DocEnv *env, int display_order)
Definition: comps.c:1643
COMPS_DocEnv * comps_docenv_create()
Definition: comps.c:1562
COMPS_DocGroup * comps_docgroup_intersect(COMPS_DocGroup *g1, COMPS_DocGroup *g2)
Definition: comps.c:1128
COMPS_DocCategory * comps_doccategory_create()
Definition: comps.c:1196
void comps_doccategory_destroy(void *category)
Definition: comps.c:1213
void comps_doc_destroy(COMPS_Doc **doc)
Definition: comps.c:174
void comps_docpackage_destroy(void *pkg)
Definition: comps.c:2071
void comps_doccategory_set_displayorder(COMPS_DocCategory *category, int display_order)
Definition: comps.c:1279
void comps_doc_init(COMPS_Doc *doc)
Definition: comps.c:152
Definition: comps_list.h:76
void comps2xml_f(COMPS_Doc *doc, char *filename, char stdoutredirect)
Definition: comps.c:399
COMPS_List * comps_doc_get_groups(COMPS_Doc *doc, char *id, char *name, char *desc, char *lang)
Definition: comps.c:206
COMPS_Doc * comps_doc_intersect(COMPS_Doc *c1, COMPS_Doc *c2)
Definition: comps.c:622
A Documented file. Details.
COMPS_DocEnv * comps_docenv_union(COMPS_DocEnv *e1, COMPS_DocEnv *e2)
Definition: comps.c:1832
COMPS_DocCategory * comps_doccategory_intersect(COMPS_DocCategory *c1, COMPS_DocCategory *c2)
Definition: comps.c:1490
COMPS_DocGroup * comps_docgroup_clone(COMPS_DocGroup *g)
Definition: comps.c:1037
Definition: comps_logger.h:73
COMPS_DocGroupPackage * comps_docpackage_create()
Definition: comps.c:2010
void comps_docgroup_add_package(COMPS_DocGroup *group, COMPS_DocGroupPackage *package)
Definition: comps.c:866
COMPS_DocEnv * comps_docenv_intersect(COMPS_DocEnv *e1, COMPS_DocEnv *e2)
Definition: comps.c:1900
COMPS_List * comps_docgroup_get_packages(COMPS_DocGroup *group, char *name, COMPS_PackageType type)
Definition: comps.c:896
COMPS_Doc * comps_doc_union(COMPS_Doc *c1, COMPS_Doc *c2)
Definition: comps.c:514
void comps_docpackage_set_type(COMPS_DocGroupPackage *package, COMPS_PackageType type)
Definition: comps.c:2062
void comps_docpackage_set_name(COMPS_DocGroupPackage *package, char *name, char copy)
Definition: comps.c:2048
void comps_docgroup_set_langonly(COMPS_DocGroup *group, char *langonly, char copy)
Definition: comps.c:853
COMPS_DocGroupPackage * comps_docpackage_clone(COMPS_DocGroupPackage *pkg)
Definition: comps.c:2026
void comps_doccategory_add_groupid(COMPS_DocCategory *category, COMPS_DocGroupId *groupid)
Definition: comps.c:1295
COMPS_DocGroup * comps_docgroup_union(COMPS_DocGroup *g1, COMPS_DocGroup *g2)
Definition: comps.c:1072
COMPS_DocCategory * comps_doccategory_clone(COMPS_DocCategory *c)
Definition: comps.c:1400
COMPS_DocEnv * comps_docenv_clone(COMPS_DocEnv *g)
Definition: comps.c:1789
void comps_docgroup_set_default(COMPS_DocGroup *group, unsigned def)
Definition: comps.c:826
COMPS_DocCategory * comps_doccategory_union(COMPS_DocCategory *c1, COMPS_DocCategory *c2)
Definition: comps.c:1436
COMPS_List * comps_doc_get_envs(COMPS_Doc *doc, char *id, char *name, char *desc, char *lang)
Definition: comps.c:343
void comps_docenv_add_groupid(COMPS_DocEnv *env, COMPS_DocGroupId *groupid)
Definition: comps.c:1658
void comps_doc_clear(COMPS_Doc *doc)
Definition: comps.c:161
char comps_docpackage_cmp(void *pkg1, void *pkg2)
Definition: comps.c:2116
void comps_docenv_add_optionid(COMPS_DocEnv *env, COMPS_DocGroupId *optionid)
Definition: comps.c:1680
COMPS_List * comps_doc_get_categories(COMPS_Doc *doc, char *id, char *name, char *desc, char *lang)
Definition: comps.c:274
void comps_docgroup_set_uservisible(COMPS_DocGroup *group, unsigned uservisible)
Definition: comps.c:836
void comps_docgroup_destroy(void *group)
Definition: comps.c:764
COMPS_DocGroup * comps_docgroup_create()
Definition: comps.c:747
A Documented file. Details.