libcomps  ..
 All Data Structures Files Functions Variables Typedefs
Functions
comps.h File Reference

A Documented file. Details. More...

#include <stdio.h>
#include <stdarg.h>
#include "comps_doc_types.h"
#include "comps_getset.h"
#include "comps_dict.h"
#include "comps_list.h"
#include "comps_set.h"
#include "comps_logger.h"
#include "comps_hslist.h"
#include "comps_utils.h"
#include <libxml/encoding.h>
#include <libxml/xmlwriter.h>
#include <libxml/tree.h>

Go to the source code of this file.

Functions

void comps2xml_f (COMPS_Doc *doc, char *filename, char stdoutredirect)
 
char * comps2xml_str (COMPS_Doc *doc)
 
COMPS_Doc * comps_doc_create (const char *encoding)
 
void comps_doc_init (COMPS_Doc *doc)
 
void comps_doc_clear (COMPS_Doc *doc)
 
void comps_doc_destroy (COMPS_Doc **doc)
 
void comps_doc_destroy_v (void *doc)
 
char comps_doc_add_group (COMPS_Doc *doc, COMPS_DocGroup *group)
 
char comps_doc_add_category (COMPS_Doc *doc, COMPS_DocCategory *category)
 
char comps_doc_add_env (COMPS_Doc *doc, COMPS_DocEnv *env)
 
COMPS_Listcomps_doc_get_groups (COMPS_Doc *doc, char *id, char *name, char *desc, char *lang)
 
COMPS_Listcomps_doc_get_categories (COMPS_Doc *doc, char *id, char *name, char *desc, char *lang)
 
COMPS_Listcomps_doc_get_envs (COMPS_Doc *doc, char *id, char *name, char *desc, char *lang)
 
char comps_doc_del_group (COMPS_Doc *doc, COMPS_DocGroup *group)
 
char comps_doc_del_category (COMPS_Doc *doc, COMPS_DocCategory *category)
 
char comps_doc_del_env (COMPS_Doc *doc, COMPS_DocEnv *env)
 
void comps_doc_xml (COMPS_Doc *doc, xmlTextWriterPtr writer)
 
COMPS_Doc * comps_doc_union (COMPS_Doc *c1, COMPS_Doc *c2)
 
COMPS_Doc * comps_doc_intersect (COMPS_Doc *c1, COMPS_Doc *c2)
 
char comps_doc_cmp (COMPS_Doc *c1, COMPS_Doc *c2)
 
COMPS_DocGroup * comps_docgroup_create ()
 
void comps_docgroup_destroy (void *group)
 
void comps_docgroup_set_id (COMPS_DocGroup *group, char *id, char copy)
 
void comps_docgroup_set_name (COMPS_DocGroup *group, char *name, char copy)
 
void comps_docgroup_add_lang_name (COMPS_DocGroup *group, char *lang, char *name, char copy)
 
void comps_docgroup_set_desc (COMPS_DocGroup *group, char *desc, char copy)
 
void comps_docgroup_add_lang_desc (COMPS_DocGroup *group, char *lang, char *desc, char copy)
 
void comps_docgroup_set_default (COMPS_DocGroup *group, unsigned def)
 
void comps_docgroup_set_uservisible (COMPS_DocGroup *group, unsigned uservisible)
 
void comps_docgroup_set_displayorder (COMPS_DocGroup *group, unsigned display_order)
 
void comps_docgroup_set_langonly (COMPS_DocGroup *group, char *langonly, char copy)
 
void comps_docgroup_add_package (COMPS_DocGroup *group, COMPS_DocGroupPackage *package)
 
COMPS_Listcomps_docgroup_get_packages (COMPS_DocGroup *group, char *name, COMPS_PackageType type)
 
void comps_docgroup_xml (COMPS_DocGroup *group, xmlTextWriterPtr writer, COMPS_Logger *log)
 
COMPS_DocGroup * comps_docgroup_union (COMPS_DocGroup *g1, COMPS_DocGroup *g2)
 
COMPS_DocGroup * comps_docgroup_intersect (COMPS_DocGroup *g1, COMPS_DocGroup *g2)
 
COMPS_DocGroup * comps_docgroup_clone (COMPS_DocGroup *g)
 
char comps_docgroup_cmp (COMPS_DocGroup *g1, COMPS_DocGroup *g2)
 
char comps_docgroup_cmp_v (void *g1, void *g2)
 
COMPS_DocCategory * comps_doccategory_create ()
 
void comps_doccategory_destroy (void *category)
 
void comps_doccategory_set_id (COMPS_DocCategory *category, char *id, char copy)
 
void comps_doccategory_set_name (COMPS_DocCategory *category, char *name, char copy)
 
void comps_doccategory_add_lang_name (COMPS_DocCategory *category, char *lang, char *name, char copy)
 
void comps_doccategory_set_desc (COMPS_DocCategory *category, char *desc, char copy)
 
void comps_doccategory_add_lang_desc (COMPS_DocCategory *category, char *lang, char *desc, char copy)
 
void comps_doccategory_set_displayorder (COMPS_DocCategory *category, int display_order)
 
void comps_doccategory_add_groupid (COMPS_DocCategory *category, COMPS_DocGroupId *groupid)
 
void comps_doccategory_xml (COMPS_DocCategory *cat, xmlTextWriterPtr writer, COMPS_Logger *log)
 
COMPS_DocCategory * comps_doccategory_union (COMPS_DocCategory *c1, COMPS_DocCategory *c2)
 
COMPS_DocCategory * comps_doccategory_intersect (COMPS_DocCategory *c1, COMPS_DocCategory *c2)
 
COMPS_DocCategory * comps_doccategory_clone (COMPS_DocCategory *c)
 
char comps_doccategory_cmp (COMPS_DocCategory *c1, COMPS_DocCategory *c2)
 
char comps_doccategory_cmp_v (void *c1, void *c2)
 
COMPS_DocEnv * comps_docenv_create ()
 
void comps_docenv_destroy (void *env)
 
void comps_docenv_set_id (COMPS_DocEnv *env, char *id, char copy)
 
void comps_docenv_set_name (COMPS_DocEnv *env, char *name, char copy)
 
void comps_docenv_add_lang_name (COMPS_DocEnv *env, char *lang, char *name, char copy)
 
void comps_docenv_set_desc (COMPS_DocEnv *env, char *desc, char copy)
 
void comps_docenv_add_lang_desc (COMPS_DocEnv *env, char *lang, char *desc, char copy)
 
void comps_docenv_set_displayorder (COMPS_DocEnv *env, int display_order)
 
void comps_docenv_add_optionid (COMPS_DocEnv *env, COMPS_DocGroupId *optionid)
 
void comps_docenv_add_groupid (COMPS_DocEnv *env, COMPS_DocGroupId *groupid)
 
void comps_docenv_xml (COMPS_DocEnv *env, xmlTextWriterPtr writer, COMPS_Logger *log)
 
COMPS_DocEnv * comps_docenv_union (COMPS_DocEnv *e1, COMPS_DocEnv *e2)
 
COMPS_DocEnv * comps_docenv_intersect (COMPS_DocEnv *e1, COMPS_DocEnv *e2)
 
COMPS_DocEnv * comps_docenv_clone (COMPS_DocEnv *g)
 
char comps_docenv_cmp (COMPS_DocEnv *e1, COMPS_DocEnv *e2)
 
char comps_docenv_cmp_v (void *e1, void *e2)
 
COMPS_DocGroupPackage * comps_docpackage_create ()
 
COMPS_DocGroupPackage * comps_docpackage_clone (COMPS_DocGroupPackage *pkg)
 
void comps_docpackage_set_name (COMPS_DocGroupPackage *package, char *name, char copy)
 
void comps_docpackage_set_type (COMPS_DocGroupPackage *package, COMPS_PackageType type)
 
void comps_docpackage_set_requires (COMPS_DocGroupPackage *package, char *requires, char copy)
 
void comps_docpackage_destroy (void *pkg)
 
void comps_docpackage_xml (COMPS_DocGroupPackage *pkg, xmlTextWriterPtr writer, COMPS_Logger *log)
 
char comps_docpackage_cmp (void *pkg1, void *pkg2)
 
const char * comps_docpackage_type_str (COMPS_PackageType type)
 
COMPS_DocGroupId * comps_docgroupid_create ()
 
COMPS_DocGroupId * comps_docgroupid_clone (COMPS_DocGroupId *groupid)
 
void comps_docgroupid_set_name (COMPS_DocGroupId *groupid, char *name, char copy)
 
void comps_docgroupid_set_default (COMPS_DocGroupId *groupid, char def)
 
char comps_docgroupid_cmp (void *gid1, void *gid2)
 
void comps_docgroupid_destroy (void *groupid)
 

Detailed Description

A Documented file. Details.

Function Documentation

void comps2xml_f ( COMPS_Doc *  doc,
char *  filename,
char  stdoutredirect 
)

Export COMPS_Doc object to xml file

Parameters
doc* COMPS_Doc object
filenameoutput filename
char* comps2xml_str ( COMPS_Doc *  doc)

Export COMPS_Doc object to string. Result need to be freed.

Parameters
doc* COMPS_Doc object
Returns
string containing xml representation of COMPS_Doc object
void comps_doc_clear ( COMPS_Doc *  doc)
inline

Clear all data in COMPS_Doc object

Parameters
docCOMPS_Doc object
COMPS_Doc* comps_doc_create ( const char *  encoding)

COMPS_Doc constructor Only creates COMPS_Doc object.

See Also
comps_doc_destroy
Returns
COMPS_Doc
void comps_doc_destroy ( COMPS_Doc **  doc)

COMPS_Doc destructor Destroy COMPS_Doc object set its reference to NULL

Parameters
docreference to COMPS_Doc object
COMPS_List* comps_doc_get_categories ( COMPS_Doc *  doc,
char *  id,
char *  name,
char *  desc,
char *  lang 
)

Get list of categories from COMPS_Doc object matching passed arguments Matching is evaluated by AND style (id-match && name-mach && desc-match) Result is only shadow filter of original list (if you destroy original list shadow list will become invalid)

Parameters
docCOMPS_Doc object
idcategory id which is compared against other categories ids. NULL means exclusion from final matching filter
namecategory name which is compared against other categories names NULL means exclusion from final matching filter
desccategory description which is compared against other categories descriptions NULL means exclusion from final matching filter
Returns
COMPS_List object of matched COMPS_DocCategory objects
See Also
COMPS_List
COMPS_DocCategory
COMPS_List* comps_doc_get_envs ( COMPS_Doc *  doc,
char *  id,
char *  name,
char *  desc,
char *  lang 
)

Get list of environments from COMPS_Doc object matching passed arguments Matching is evaluated by AND style (id-match && name-mach && desc-match). Result is only shadow filter of original list (if you destroy original list shadow list will become invalid)

Parameters
docCOMPS_Doc object
idenvironment id which is compared against other environment ids. NULL means exclusion from final matching filter
nameenvironment name which is compared against other environments names NULL means exclusion from final matching filter
descenvironment description which is compared against other environments descriptions NULL means exclusion from final matching filter
Returns
COMPS_List object of matched COMPS_DocCategory objects
See Also
COMPS_List
COMPS_DocCategory
COMPS_List* comps_doc_get_groups ( COMPS_Doc *  doc,
char *  id,
char *  name,
char *  desc,
char *  lang 
)

Get list of groups from COMPS_Doc object matching passed arguments Matching is evaluated by AND style (id-match && name-mach && desc-match) Result is only shadow filter of original list (if you destroy original list shadow list will become invalid)

Parameters
docCOMPS_Doc object
idgroup id which is compared against other groups ids. NULL means exclusion from final matching filter
namegroup name which is compared against other groups names NULL means exclusion from final matching filter
descgroup description which is compared against other groups description NULL means exclusion from final matching filter
Returns
COMPS_List object of matched COMPS_DocGroup objects
See Also
COMPS_List
COMPS_DocGroup
void comps_doc_init ( COMPS_Doc *  doc)
inline

COMPS_Doc initializer

Parameters
docCOMPS_Doc object
COMPS_Doc* comps_doc_intersect ( COMPS_Doc *  c1,
COMPS_Doc *  c2 
)

Make intersection of two existing COMPS_Doc objects. Result intersection is completly new COMPS_Doc object (deep copy of those two). Intersection is made by objects ids. Objects of intersection is created by intersecting specific objects.

See Also
comps_docgroup_intersect
comps_doccategory_intersect
comps_docenv_intersect
Parameters
c1COMPS_Doc object
c2COMPS_Doc object
Returns
new COMPS_Doc object
COMPS_Doc* comps_doc_union ( COMPS_Doc *  c1,
COMPS_Doc *  c2 
)

Make union of two existing COMPS_Doc objects. Result union is completly new COMPS_Doc object (deep copy of those two). If both of COMPS_Doc objects contain groups,categories or environments object with same id, resulting group/category/environment object is created by union of incrimined groups/categories/environments objects.

See Also
comps_docgroup_union
comps_doccategory_union
comps_docenv_union
Parameters
c1COMPS_Doc object
c2COMPS_Doc object
Returns
new COMPS_Doc object
void comps_doccategory_add_groupid ( COMPS_DocCategory *  category,
COMPS_DocGroupId *  groupid 
)

Add new groupid to category. If copy param is 1, copy passed id buffer to new buffer and set description to newly created buffer. If copy param is 0, only reassign buffer pointer

Warning
Destroying category free current category description.
Passing copy=0 only prevents from double copying
Parameters
categoryCOMPS_DocCategory object
idnew groupid
copycopy indicator
COMPS_DocCategory* comps_doccategory_clone ( COMPS_DocCategory *  c)

Make deep copy of category

Parameters
cCOMPS_DocCategory object
Returns
new COMPS_DocCategory object
COMPS_DocCategory* comps_doccategory_create ( )

COMPS_DocCategory constructor

Returns
new COMPS_DocCategory object
void comps_doccategory_destroy ( void *  category)

COMPS_DocCategory destructor

Parameters
categoryCOMPS_DocCategory object
COMPS_DocCategory* comps_doccategory_intersect ( COMPS_DocCategory *  c1,
COMPS_DocCategory *  c2 
)

Intersect two categories and return completly new COMPS_DocCategory object of intersection result. Name, id, description intersect policy: if name/id/desc of one category isn't set, result will have name/id/decs of other one. if name/id/desc is set in both categories, result will have name/id/desc of first category otherwise name/ids/desc won't be set in result

Parameters
c1COMPS_DocCategory object
c2COMPS_DocCategory object
Returns
new COMPS_DocCategory object of intersection
void comps_doccategory_set_displayorder ( COMPS_DocCategory *  category,
int  display_order 
)
inline

Set category display order

Parameters
categoryCOMPS_DocCategory object
display_ordernew display_order of category
COMPS_DocCategory* comps_doccategory_union ( COMPS_DocCategory *  c1,
COMPS_DocCategory *  c2 
)

Union two categories and return completly new COMPS_DocCategory object of union result. Name, id, description union policy: if name/id/desc of one category isn't set, result will have name/id/decs of other one. if name/id/desc is set in both categories, result will have name/id/desc of first category otherwise name/ids/desc won't be set in result

Parameters
c1COMPS_DocCategory object
c2COMPS_DocCategory object
Returns
new COMPS_DocCategory object of union
void comps_docenv_add_groupid ( COMPS_DocEnv *  env,
COMPS_DocGroupId *  groupid 
)

Add new groupid to environment. If copy param is 1, copy passed id buffer to new buffer and set description to newly created buffer. If copy param is 0, only reassign buffer pointer

Warning
Destroying environment free groupids buffers.
Passing copy=0 only prevents from double copying
Parameters
envCOMPS_DocEnvironment object
idnew groupid
copycopy indicator
void comps_docenv_add_optionid ( COMPS_DocEnv *  env,
COMPS_DocGroupId *  optionid 
)

Add new optionid to environment. If copy param is 1, copy passed id buffer to new buffer and set description to newly created buffer. If copy param is 0, only reassign buffer pointer

Warning
Destroying environment free optionids buffers.
Passing copy=0 only prevents from double copying
Parameters
envCOMPS_DocEnvironment object
idnew optionid
copycopy indicator
COMPS_DocEnv* comps_docenv_clone ( COMPS_DocEnv *  e)

Make deep copy of environment

Parameters
eCOMPS_DocEnv object
Returns
new COMPS_DocEnv object
COMPS_DocEnv* comps_docenv_create ( )

COMPS_DocEnv constructor

Returns
new COMPS_DocEnv object
void comps_docenv_destroy ( void *  env)

COMPS_DocEnv destructor

Parameters
envCOMPS_DocEnv object
COMPS_DocEnv* comps_docenv_intersect ( COMPS_DocEnv *  e1,
COMPS_DocEnv *  e2 
)

Intersect two environments and return completly new COMPS_DocCategory object of intersection result. Name, id, description intersect policy: if name/id/desc of one environment isn't set, result will have name/id/decs of other one. if name/id/desc is set in both environments, result will have name/id/desc of first environment otherwise name/ids/desc won't be set in result

Parameters
e1COMPS_DocEnv object
e2COMPS_DocEnv object
Returns
new COMPS_DocEnv object of intersection
void comps_docenv_set_displayorder ( COMPS_DocEnv *  env,
int  display_order 
)
inline

Set display order of COMPS_DocEnv object

Parameters
envCOMPS_DocEnv object
display_ordernew environment display order
COMPS_DocEnv* comps_docenv_union ( COMPS_DocEnv *  e1,
COMPS_DocEnv *  e2 
)

Union two environment and return completly new COMPS_DocEnv object of union result. Name, id, description union policy: if name/id/desc of one environment isn't set, result will have name/id/decs of other one. if name/id/desc is set in both environments, result will have name/id/desc of first environment otherwise name/ids/desc won't be set in result

Parameters
e1COMPS_DocEnv object
e2COMPS_DocEnv object
Returns
new COMPS_DocEnv object of union
void comps_docgroup_add_package ( COMPS_DocGroup *  group,
COMPS_DocGroupPackage *  package 
)

Add COMPS_DocGroupPackage object to group

Parameters
groupCOMPS_DocGroup object
packageCOMPS_DocGroupPackage object
COMPS_DocGroup* comps_docgroup_clone ( COMPS_DocGroup *  g)

Deep copy of COMPS_DocGroup object

Parameters
gCOMPS_DocGroup object
Returns
new copy of group
COMPS_DocGroup* comps_docgroup_create ( )

COMPS_DocGroup constructor

Returns
COMPS_DocGroup object
void comps_docgroup_destroy ( void *  group)

COMPS_DocGroup destructor

Parameters
groupCOMPS_DocGroup object
COMPS_List* comps_docgroup_get_packages ( COMPS_DocGroup *  group,
char *  name,
COMPS_PackageType  type 
)

Get COMPS_List of COMPS_DocGroupPackage objects matching specified package name and type (AND matching - match name && match type). Returned list is only shadow filter of original list (if original is destroyed, result is invalid)

Parameters
groupCOMPS_DocGroup object
namefiltered name of package
typefiltered type of package
COMPS_DocGroup* comps_docgroup_intersect ( COMPS_DocGroup *  g1,
COMPS_DocGroup *  g2 
)

Intersect two groups and return completly new COMPS_DocGroup object of intersection result. Packages in groups are compared by name and type. Name, id, description intersect policy: if name/id/desc of one group isn't set, result will have name/id/decs of other one. if name/id/desc is set in both groups, result will have name/id/desc of first group otherwise name/ids/desc won't be set in result

Parameters
g1COMPS_DocGroup object
g2COMPS_DocGroup object
Returns
new COMPS_DocGroup object of intersection result
void comps_docgroup_set_default ( COMPS_DocGroup *  group,
unsigned  def 
)
inline

Set group default flag

Parameters
groupCOMPS_DocGroup
defdefault flag
void comps_docgroup_set_langonly ( COMPS_DocGroup *  group,
char *  langonly,
char  copy 
)
inline

Set group lang_only flag

Parameters
groupCOMPS_DocGroup
langonlyflag
void comps_docgroup_set_uservisible ( COMPS_DocGroup *  group,
unsigned  uservisible 
)
inline

Set group uservisible flag

Parameters
groupCOMPS_DocGroup
uservisibleflag
COMPS_DocGroup* comps_docgroup_union ( COMPS_DocGroup *  g1,
COMPS_DocGroup *  g2 
)

Union two groups and return completly new COMPS_DocGroup object of union result. Packages in groups are compared by name and type. Name, id, description union policy: if name/id/desc of one group isn't set, result will have name/id/decs of other one. if name/id/desc is set in both groups, result will have name/id/desc of first group otherwise name/ids/desc won't be set in result

Parameters
g1COMPS_DocGroup object
g2COMPS_DocGroup object
Returns
new COMPS_DocGroup object of union
COMPS_DocGroupPackage* comps_docpackage_clone ( COMPS_DocGroupPackage *  pkg)

Deep copy COMPS_DocGroupPackage

Parameters
pkgCOMPS_DocGroupPackage object
Returns
new COMPS_DocGroupPackage object
char comps_docpackage_cmp ( void *  pkg1,
void *  pkg2 
)

Compare two COMPS_DocGroupPackage objects

Parameters
pkg1COMPS_DocGroupPackage object
pkg2COMPS_DocGroupPackage object
Returns
1 if packages have same name and type 0 otherwise
COMPS_DocGroupPackage* comps_docpackage_create ( )
inline

COMPS_DocGroupPackage constructor

Returns
new COMPS_DocGroupObject object
void comps_docpackage_destroy ( void *  pkg)

COMPS_DocGroupPackage destructor

Parameters
pkgCOMPS_DocGroupPackage object
void comps_docpackage_set_name ( COMPS_DocGroupPackage *  package,
char *  name,
char  copy 
)
inline

Set package name. If copy param is 1, copy passed name buffer to new buffer and set name to newly created buffer. If copy param is 0, only reassign buffer pointer

Warning
Destroying package or another comps_docpackage_set_name
call free current package name. Passing copy=0 only prevents 'warning from double copying
Parameters
packageCOMPS_DocGroupPackage object
namenew package name
copycopy indicator
void comps_docpackage_set_type ( COMPS_DocGroupPackage *  package,
COMPS_PackageType  type 
)
inline

Set COMPS_DocGroupPackage type

Parameters
packageCOMPS_DocGroupPackage object
typenew package type