26 #include "comps_log.h"
27 #include "comps_types.h"
31 #include "comps_validate.h"
32 #include "comps_default.h"
44 #define COMPS_DOC_GETOBJLIST(OBJS) COMPS_ObjList* CONCAT(comps_doc_, OBJS)\
47 ret = (COMPS_ObjList*)comps_objdict_get(doc->objects, #OBJS);\
49 ret = COMPS_OBJECT_CREATE(COMPS_ObjList, NULL);\
50 comps_objdict_set_x(doc->objects, #OBJS, (COMPS_Object*)ret);\
51 ret = (COMPS_ObjList*)comps_object_incref((COMPS_Object*)ret);\
57 #define HEAD_COMPS_DOC_GETOBJLIST(OBJS) COMPS_ObjList* CONCAT(comps_doc_, OBJS)\
61 #define COMPS_DOC_SETOBJLIST(OBJS) void CONCAT(comps_doc_set_, OBJS)\
63 COMPS_ObjList *list){\
64 comps_objdict_set(doc->objects, #OBJS, (COMPS_Object*)list);\
67 #define HEAD_COMPS_DOC_SETOBJLIST(OBJS) void CONCAT(comps_doc_set_, OBJS)\
72 #define COMPS_DOC_GETOBJDICT(OBJNAME) COMPS_ObjDict* CONCAT(comps_doc_, OBJNAME)\
75 ret = (COMPS_ObjDict*)comps_objdict_get(doc->objects, #OBJNAME);\
77 ret = COMPS_OBJECT_CREATE(COMPS_ObjDict, NULL);\
78 comps_objdict_set_x(doc->objects, #OBJNAME, (COMPS_Object*)ret);\
79 ret = (COMPS_ObjDict*)comps_object_incref((COMPS_Object*)ret);\
84 #define HEAD_COMPS_DOC_GETOBJDICT(OBJNAME) COMPS_ObjDict* CONCAT(comps_doc_, OBJNAME)\
88 #define COMPS_DOC_GETOBJMDICT(OBJNAME) COMPS_ObjMDict* CONCAT(comps_doc_, OBJNAME)\
91 ret = (COMPS_ObjMDict*)comps_objdict_get(doc->objects, #OBJNAME);\
93 ret = COMPS_OBJECT_CREATE(COMPS_ObjMDict, NULL);\
94 comps_objdict_set_x(doc->objects, #OBJNAME, (COMPS_Object*)ret);\
95 ret = (COMPS_ObjMDict*)comps_object_incref((COMPS_Object*)ret);\
100 #define HEAD_COMPS_DOC_GETOBJMDICT(OBJNAME) COMPS_ObjMDict* CONCAT(comps_doc_, OBJNAME)\
104 #define COMPS_DOC_SETOBJDICT(OBJS) void CONCAT(comps_doc_set_, OBJS)\
106 COMPS_ObjDict *dict){\
107 comps_objdict_set(doc->objects, #OBJS, (COMPS_Object*)dict);\
110 #define HEAD_COMPS_DOC_SETOBJDICT(OBJS) void CONCAT(comps_doc_set_, OBJS)\
112 COMPS_ObjDict *dict);
115 #define COMPS_DOC_SETOBJMDICT(OBJS) void CONCAT(comps_doc_set_, OBJS)\
117 COMPS_ObjMDict *dict){\
118 comps_objdict_set(doc->objects, #OBJS, (COMPS_Object*)dict);\
121 #define HEAD_COMPS_DOC_SETOBJMDICT(OBJS) void CONCAT(comps_doc_set_, OBJS)\
123 COMPS_ObjMDict *dict);
127 #define COMPS_DOC_ADDOBJLIST(OBJS, OBJNAME, OBJTYPE) void CONCAT(comps_doc_add_,\
132 ret = (COMPS_ObjList*)comps_objdict_get(doc->objects, #OBJS);\
134 ret = COMPS_OBJECT_CREATE(COMPS_ObjList, NULL);\
135 comps_objdict_set(doc->objects, #OBJS, (COMPS_Object*)ret);\
138 comps_objlist_append_x(ret, (COMPS_Object*)obj);\
139 COMPS_OBJECT_DESTROY(ret);\
142 #define HEAD_COMPS_DOC_ADDOBJLIST(OBJNAME, OBJTYPE) void CONCAT(comps_doc_add_,\
148 #define COMPS_DOC_ADDOBJDICT(OBJS, OBJNAME) void CONCAT(comps_doc_add_,\
154 ret = (COMPS_ObjDict*)comps_objdict_get(doc->objects, #OBJS);\
156 ret = COMPS_OBJECT_CREATE(COMPS_ObjDict, NULL);\
157 comps_objdict_set(doc->objects, #OBJS, (COMPS_Object*)ret);\
159 comps_objdict_set_x(ret, key, (COMPS_Object*)obj);\
160 COMPS_OBJECT_DESTROY(ret);\
163 #define HEAD_COMPS_DOC_ADDOBJDICT(OBJNAME) void CONCAT(comps_doc_add_,\
171 #define COMPS_DOC_ADDOBJMDICT(OBJS, OBJNAME) void CONCAT(comps_doc_add_,\
176 COMPS_ObjMDict *ret;\
177 ret = (COMPS_ObjMDict*)comps_objdict_get(doc->objects, #OBJS);\
179 ret = COMPS_OBJECT_CREATE(COMPS_ObjMDict, NULL);\
180 comps_objdict_set(doc->objects, #OBJS, (COMPS_Object*)ret);\
182 comps_objmdict_set_x(ret, key, (COMPS_Object*)obj);\
183 COMPS_OBJECT_DESTROY(ret);\
186 #define HEAD_COMPS_DOC_ADDOBJMDICT(OBJNAME) void CONCAT(comps_doc_add_,\
193 #define COMPS_DOC_GETPROP(OBJ,TYPE) CONCAT(TYPE,CONCAT(* ,CONCAT(comps_doc_, OBJ)))\
196 ret = (COMPS_Str*)comps_objdict_get(doc->objects, #OBJ);\
198 ret = COMPS_OBJECT_CREATE(TYPE, NULL);\
199 comps_objdict_set_x(doc->objects, #OBJ, (COMPS_Object*)ret);\
200 ret = (TYPE*)comps_object_incref((COMPS_Object*)ret);\
206 #define HEAD_COMPS_DOC_GETPROP(OBJ, TYPE) CONCAT(TYPE,CONCAT(*,CONCAT(comps_doc_, OBJS)))\
211 #define COMPS_DOC_SETPROP(OBJ, TYPE) void CONCAT(comps_doc_set_, OBJ)\
214 comps_objdict_set(doc->objects, #OBJ, (COMPS_Object*)value);\
220 #define HEAD_COMPS_DOC_SETPROP(OBJ, TYPE) void CONCAT(comps_doc_set_, OBJ)\
274 HEAD_COMPS_DOC_GETOBJLIST(groups)
279 HEAD_COMPS_DOC_GETOBJLIST(categories)
284 HEAD_COMPS_DOC_GETOBJLIST(environments)
289 HEAD_COMPS_DOC_GETOBJDICT(langpacks)
294 HEAD_COMPS_DOC_GETOBJMDICT(blacklist)
299 HEAD_COMPS_DOC_GETOBJMDICT(whiteout)
313 HEAD_COMPS_DOC_SETOBJLIST(groups)
321 HEAD_COMPS_DOC_SETOBJLIST(categories)
329 HEAD_COMPS_DOC_SETOBJLIST(environments)
337 HEAD_COMPS_DOC_SETOBJDICT(langpacks)
345 HEAD_COMPS_DOC_SETOBJMDICT(blacklist)
353 HEAD_COMPS_DOC_SETOBJMDICT(whiteout)
403 HEAD_COMPS_DOC_ADDOBJMDICT(blacklist)
413 HEAD_COMPS_DOC_ADDOBJMDICT(whiteout)
432 char *desc,
char *lang,
int flags);
434 char *desc,
char *lang,
int flags);
436 char *desc,
char *lang,
int flags);
454 COMPS_XMLOptions *xml_options,
455 COMPS_DefaultsOptions *def_options);
462 COMPS_DefaultsOptions *def_options);
485 extern COMPS_ValRuleGeneric* COMPS_Doc_ValidateRules[];
COMPS_Doc * comps_doc_union(COMPS_Doc *c1, COMPS_Doc *c2)
#define COMPS_Object_HEAD
Definition: comps_obj.h:86
COMPS_Object header file.
COMPS_DocCategory header file.
Definition: comps_obj.h:124
Definition: comps_objlist.h:41
#define COMPS_Object_TAIL(obj)
insert "extern COMPS_ObjectInfo _ObjInfo" statement. Use this macro in combination with COMPS_OB...
Definition: comps_obj.h:89
COMPS_DocGroup header file.
void comps_doc_create(COMPS_Doc *doc, COMPS_Object **args)
void comps_doc_copy(COMPS_Doc *doc_dst, COMPS_Doc *doc_src)
Definition: comps_obj.h:143
void comps_doc_destroy(COMPS_Doc *doc)
COMPS_DocGroup HEAD_COMPS_DOC_ADDOBJLIST(category, COMPS_DocCategory) HEAD_COMPS_DOC_ADDOBJLIST(environment
Definition: comps_docenv.h:18
Libcomps dictionary and multi-dictionary. COMPS_ObjDict and COMPS_ObjMDict are both derivates of COMP...
A Documented file. Details.
COMPS_Str * encoding
Definition: comps_doc.h:235
COMPS_DocGroup COMPS_DocEnv HEAD_COMPS_DOC_ADDOBJDICT(langpack) HEAD_COMPS_DOC_ADDOBJMDICT(blacklist) HEAD_COMPS_DOC_ADDOBJMDICT(whiteout) HEAD_COMPS_DOC_SETPROP(lang
COMPS_Log * log
Definition: comps_doc.h:232
signed char comps2xml_f(COMPS_Doc *doc, char *filename, char stdoutredirect, COMPS_XMLOptions *xml_options, COMPS_DefaultsOptions *def_options)
Definition: comps_docgroup.h:49
char * comps2xml_str(COMPS_Doc *doc, COMPS_XMLOptions *options, COMPS_DefaultsOptions *def_options)
COMPS_DocEnv header file.
Definition: comps_doccategory.h:49
COMPS_ObjDict * objects
Definition: comps_doc.h:231
Definition: comps_doc.h:229
signed char comps_doc_cmp_u(COMPS_Object *obj1, COMPS_Object *obj2)