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 #ifndef COMPS_DOCPACKAGE_H 21 #define COMPS_DOCPACKAGE_H 22 23 #include "comps_utils.h" 24 #include "comps_obj.h" 25 #include "comps_log.h" 26 27 #include "comps_validate.h" 28 #include "comps_default.h" 29 30 /** \file comps_docpackage.h 31 * \brief COMPS_DocPackage header file 32 */ 33 34 /** COMPS_DocGroupPackage type 35 */ 36 typedef enum {COMPS_PACKAGE_DEFAULT, COMPS_PACKAGE_OPTIONAL, 37 COMPS_PACKAGE_CONDITIONAL, COMPS_PACKAGE_MANDATORY, 38 COMPS_PACKAGE_UNKNOWN} COMPS_PackageType; 39 40 /** COMPS_Object derivate representing packagereq element in comps.xml structure*/ 41 typedef struct { 42 COMPS_Object_HEAD; 43 COMPS_PackageType type; /**< package type */ 44 COMPS_Str *name; /**< name of package */ 45 COMPS_Str *requires; /**< packagereq requires attribute */ 46 COMPS_Num *basearchonly; 47 COMPS_ObjList *arches; 48 } COMPS_DocGroupPackage; 49 50 51 //HEAD_COMPS_CREATE_u(docpackage, COMPS_DocGroupPackagePackage) /*comps_utils.h macro*/ 52 //HEAD_COMPS_COPY_u(docpackage, COMPS_DocGroupPackagePackage) /*comps_utils.h macro*/ 53 //HEAD_COMPS_DESTROY_u(docpackage, COMPS_DocGroupPackagePackage) /*comps_utils.h macro*/ 54 55 signed char comps_docpackage_cmp_u(COMPS_Object *pkg1, COMPS_Object *pkg2); 56 char comps_docpackage_cmp_set(void *pkg1, void *pkg2); 57 58 /** COMPS_DocGroupPackage name getter 59 * @param pkg COMPS_DocGroupPackage object 60 * @return COMPS_Str object typed as COMPS_Object representating package's name 61 * with incremented reference counter 62 */ 63 COMPS_Object* comps_docpackage_get_name(COMPS_DocGroupPackage *pkg); 64 65 /** COMPS_DocGroupPackage name setter 66 * @param pkg COMPS_DocGroupPackage object 67 * @param name new name of package 68 * @param copy deprecated argument 69 * 70 * Old name object's reference counter will be decremented 71 */ 72 void comps_docpackage_set_name(COMPS_DocGroupPackage *pkg, char *name, char copy); 73 74 /** COMPS_DocGroupPackage requires getter 75 * @param pkg COMPS_DocGroupPackage object 76 * @return COMPS_Str object typed as COMPS_Object representating package's 77 * requires attribute with incremented reference counter 78 */ 79 COMPS_Object* comps_docpackage_get_requires(COMPS_DocGroupPackage *pkg); 80 81 /** COMPS_DocGroupPackage requires setter 82 * @param pkg COMPS_DocGroupPackage object 83 * @param requires new requries attribute value 84 * @param copy deprecated argument 85 * 86 * Old requires object's reference counter will be decremented 87 */ 88 void comps_docpackage_set_requires(COMPS_DocGroupPackage *pkg, char *requires, char copy); 89 90 /** COMPS_DocGroupPackage type getter 91 * @param pkg COMPS_DocGroupPackage object 92 * @return COMPS_Num object typed as COMPS_Object representating package's 93 * type as number with incremented reference counter 94 */ 95 COMPS_Object* comps_docpackage_get_type(COMPS_DocGroupPackage *pkg); 96 97 /** COMPS_DocGroupPackage type setter 98 * @param pkg COMPS_DocGroupPackage object 99 * @param type package type 100 * 101 * old object with stored type will be decremented 102 */ 103 void comps_docpackage_set_type(COMPS_DocGroupPackage *pkg, 104 COMPS_PackageType type, 105 bool unset); 106 107 /** COMPS_DocGroupPackage type setter same as comps_docpackage_set_type 108 * @param pkg COMPS_DocGroupPackage object 109 * @param type package type as integer 110 */ 111 void comps_docpackage_set_type_i(COMPS_DocGroupPackage *pkg, int type, bool unset); 112 113 /** return package type as string 114 * @param type package type as COMPS_PackageType 115 * @return string representation of type 116 * */ 117 const char* comps_docpackage_type_str(COMPS_PackageType type); 118 119 /** set package basearchonly attribute 120 * @param type package type as COMPS_PckageType 121 * @param basearchonly basearchonly attribute 122 * */ 123 void comps_docpackage_set_basearchonly(COMPS_DocGroupPackage *pkg, 124 int basearchonly, bool unset); 125 126 /** return package basearchonly attrinute 127 * @param type package type as COMPS_PackageType 128 * @return COMPS_Num basearchonly attribute 129 * */ 130 COMPS_Object* comps_docpackage_get_basearchonly(COMPS_DocGroupPackage *pkg); 131 132 char __comps_docpackage_idcmp(void *pkg1, void *pkg2); 133 COMPS_ObjList* comps_docpackage_arches(COMPS_DocGroupPackage *pkg); 134 void comps_docpackage_set_arches(COMPS_DocGroupPackage *pkg, 135 COMPS_ObjList *arches); 136 137 signed char comps_docpackage_xml(COMPS_DocGroupPackage *pkg, 138 xmlTextWriterPtr writer, 139 COMPS_Log *log, COMPS_XMLOptions *xml_options, 140 COMPS_DefaultsOptions *def_options); 141 142 extern COMPS_ObjectInfo COMPS_DocGroupPackage_ObjInfo; 143 extern COMPS_ValRuleGeneric* COMPS_DocGroupPackage_ValidateRules[]; 144 145 #endif 146 147