00001
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef CPELANG_H_
00037 #define CPELANG_H_
00038
00039 #include <stdlib.h>
00040
00041 #include "cpeuri.h"
00042 #include "oscap.h"
00043
00047 typedef enum {
00048 CPE_LANG_OPER_HALT = 0x00,
00049 CPE_LANG_OPER_AND = 0x01,
00050 CPE_LANG_OPER_OR = 0x02,
00051 CPE_LANG_OPER_MATCH = 0x04,
00052
00053 CPE_LANG_OPER_MASK = 0xFF,
00054 CPE_LANG_OPER_NOT = 0x100,
00055
00056 CPE_LANG_OPER_NAND = CPE_LANG_OPER_AND | CPE_LANG_OPER_NOT,
00057 CPE_LANG_OPER_NOR = CPE_LANG_OPER_OR | CPE_LANG_OPER_NOT,
00058 } cpe_lang_oper_t;
00059
00060
00065 struct cpe_testexpr;
00066
00071 struct cpe_lang_model;
00072
00077 struct cpe_platform;
00078
00083 struct cpe_platform_iterator;
00085 struct cpe_platform* cpe_platform_iterator_next(struct cpe_platform_iterator* it);
00087 bool cpe_platform_iterator_has_more(struct cpe_platform_iterator* it);
00089 void cpe_platform_iterator_free(struct cpe_platform_iterator* it);
00090
00091
00096 struct cpe_lang_model * cpe_lang_model_import(const struct oscap_import_source * source);
00097
00104 void cpe_lang_model_export(struct cpe_lang_model * spec, struct oscap_export_target * target);
00105
00110 cpe_lang_oper_t cpe_testexpr_get_oper(const struct cpe_testexpr *item);
00111
00117 struct cpe_testexpr * cpe_testexpr_get_meta_expr(const struct cpe_testexpr *item);
00118
00124 struct cpe_name * cpe_testexpr_get_meta_cpe(const struct cpe_testexpr *item);
00125
00132 bool cpe_platform_match_cpe(struct cpe_name ** cpe, size_t n, const struct cpe_platform * platform);
00136
00137 const char * cpe_platform_get_id(const struct cpe_platform *item);
00139 const char * cpe_platform_get_remark(const struct cpe_platform *item);
00141 struct oscap_title_iterator * cpe_platform_get_titles(const struct cpe_platform *item);
00143 const struct cpe_testexpr * cpe_platform_get_expr(const struct cpe_platform *item);
00144
00149 const char * cpe_lang_model_get_ns_href(const struct cpe_lang_model *item);
00150
00155 const char * cpe_lang_model_get_ns_prefix(const struct cpe_lang_model *item);
00156
00161 struct cpe_platform_iterator * cpe_lang_model_get_platforms(const struct cpe_lang_model *item);
00162
00167 struct cpe_platform * cpe_lang_model_get_item(const struct cpe_lang_model *item, const char *key);
00168
00169
00170
00175 bool cpe_lang_model_add_item(struct cpe_lang_model *lang, struct cpe_platform *platform);
00176
00181 struct cpe_lang_model * cpe_lang_model_new(void);
00182
00187 struct cpe_testexpr * cpe_testexpr_new(void);
00188
00193 struct cpe_platform * cpe_platform_new(void);
00194
00199 void cpe_testexpr_free(struct cpe_testexpr * expr);
00200
00205 void cpe_lang_model_free(struct cpe_lang_model * platformspec);
00206
00211 void cpe_platform_free(struct cpe_platform * platform);
00217 const struct cpe_testexpr * cpe_testexpr_get_next(const struct cpe_testexpr * expr);
00218
00222
00223 bool cpe_lang_model_set_ns_href(struct cpe_lang_model * model, const char *new_href);
00225 bool cpe_lang_model_set_ns_prefix(struct cpe_lang_model * model, const char *new_prefix);
00227 bool cpe_lang_model_add_item(struct cpe_lang_model * lang, struct cpe_platform *platform);
00229 bool cpe_platform_set_id(struct cpe_platform * platform, const char *new_id);
00230
00231 bool cpe_platform_set_remark(struct cpe_platform * platform, const char *new_remark);
00233 bool cpe_platform_add_title(struct cpe_platform * platform, struct oscap_title *title);
00234
00235 #endif
00236
00237