Open SCAP Library
Loading...
Searching...
No Matches
cpe_lang.h
Go to the documentation of this file.
1
13/*
14 * Copyright 2009--2014 Red Hat Inc., Durham, North Carolina.
15 * All Rights Reserved.
16 *
17 * This library is free software; you can redistribute it and/or
18 * modify it under the terms of the GNU Lesser General Public
19 * License as published by the Free Software Foundation; either
20 * version 2.1 of the License, or (at your option) any later version.
21 *
22 * This library is distributed in the hope that it will be useful,
23 * but WITHOUT ANY WARRANTY; without even the implied warranty of
24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
25 * Lesser General Public License for more details.
26 *
27 * You should have received a copy of the GNU Lesser General Public
28 * License along with this library; if not, write to the Free Software
29 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
30 *
31 * Authors:
32 * Lukas Kuklinek <lkuklinek@redhat.com>
33 * Maros Barabas <mbarabas@redhat.com>
34 */
35
36#ifndef CPELANG_H_
37#define CPELANG_H_
38
39#include <stdlib.h>
40
41#include "cpe_name.h"
42#include "oscap.h"
43#include "oscap_text.h"
44#include "oscap_source.h"
45#include "oscap_export.h"
46
63
68struct cpe_lang_model;
69
74struct cpe_platform;
75
80struct cpe_testexpr;
81
82
83/************************************************************/
95
97OSCAP_API struct cpe_platform *cpe_platform_iterator_next(struct cpe_platform_iterator *it);
99OSCAP_API bool cpe_platform_iterator_has_more(struct cpe_platform_iterator *it);
101OSCAP_API void cpe_platform_iterator_free(struct cpe_platform_iterator *it);
102
110OSCAP_API struct cpe_testexpr *cpe_testexpr_iterator_next(struct cpe_testexpr_iterator *it);
112OSCAP_API bool cpe_testexpr_iterator_has_more(struct cpe_testexpr_iterator *it);
114OSCAP_API void cpe_testexpr_iterator_free(struct cpe_testexpr_iterator *it);
115
116/************************************************************/
119/************************************************************/
132
138OSCAP_API struct cpe_testexpr_iterator *cpe_testexpr_get_meta_expr(const struct cpe_testexpr *item);
139
145OSCAP_API const struct cpe_name *cpe_testexpr_get_meta_cpe(const struct cpe_testexpr *item);
146
152OSCAP_API const char* cpe_testexpr_get_meta_check_system(const struct cpe_testexpr *item);
153
159OSCAP_API const char* cpe_testexpr_get_meta_check_href(const struct cpe_testexpr *item);
160
166OSCAP_API const char* cpe_testexpr_get_meta_check_id(const struct cpe_testexpr *item);
167
173OSCAP_API const struct cpe_testexpr *cpe_testexpr_get_next(const struct cpe_testexpr *expr);
174
180
185OSCAP_API struct cpe_platform *cpe_lang_model_get_item(const struct cpe_lang_model *item, const char *key);
186
195OSCAP_API bool cpe_platform_applicable_lang_model(const char* platform, struct cpe_lang_model *lang_model, cpe_check_fn check_cb, cpe_dict_fn dict_cb, void* usr);
196
201OSCAP_API const char *cpe_platform_get_id(const struct cpe_platform *item);
206OSCAP_API const char *cpe_platform_get_remark(const struct cpe_platform *item);
211OSCAP_API struct oscap_text_iterator *cpe_platform_get_titles(const struct cpe_platform *item);
216OSCAP_API const struct cpe_testexpr *cpe_platform_get_expr(const struct cpe_platform *item);
217
218/************************************************************/
221/************************************************************/
233OSCAP_API bool cpe_lang_model_add_platform(struct cpe_lang_model *lang, struct cpe_platform *platform);
238OSCAP_API bool cpe_platform_add_title(struct cpe_platform *platform, struct oscap_text *title);
239
244/*bool cpe_lang_model_add_xmlns(struct cpe_lang_model * model, struct xml_metadata * xml);*/
245
252OSCAP_API bool cpe_testexpr_add_subexpression(struct cpe_testexpr *expr, struct cpe_testexpr *sub);
253
258OSCAP_API bool cpe_platform_set_id(struct cpe_platform *platform, const char *new_id);
263OSCAP_API bool cpe_platform_set_remark(struct cpe_platform *platform, const char *new_remark);
270OSCAP_API bool cpe_platform_set_expr(struct cpe_platform *platform, struct cpe_testexpr *expr);
278
286OSCAP_API bool cpe_testexpr_set_name(struct cpe_testexpr *expr, struct cpe_name *name);
287
288/************************************************************/
292OSCAP_API void cpe_platform_iterator_remove(struct cpe_platform_iterator *it, struct cpe_lang_model *parent);
294OSCAP_API void cpe_platform_iterator_reset(struct cpe_platform_iterator *it);
295
300OSCAP_API struct cpe_lang_model *cpe_lang_model_new(void);
301
306OSCAP_API struct cpe_testexpr *cpe_testexpr_new(void);
307
312OSCAP_API struct cpe_platform *cpe_platform_new(void);
313
319OSCAP_API struct cpe_testexpr * cpe_testexpr_clone(struct cpe_testexpr * old_expr);
320
325OSCAP_API void cpe_testexpr_free(struct cpe_testexpr *expr);
326
332
337OSCAP_API void cpe_lang_model_free(struct cpe_lang_model *platformspec);
338
343OSCAP_API void cpe_platform_free(struct cpe_platform *platform);
344
345/************************************************************/
356OSCAP_API const char * cpe_lang_model_supported(void);
357
358/************************************************************/
365OSCAP_API struct cpe_lang_model *cpe_lang_model_import_source(struct oscap_source *source);
366
373OSCAP_API void cpe_lang_model_export(const struct cpe_lang_model *spec, const char *file);
374
379#endif /* _CPELANG_H_ */
Interface to Common Platform Enumeration (CPE) URI.
bool(* cpe_check_fn)(const char *, const char *, const char *, void *)
Shared callback definition used to evaluate checks to perform applicability tests.
Definition cpe_name.h:341
bool(* cpe_dict_fn)(const struct cpe_name *, void *)
Shared callback definition used to match CPE names to perform applicability tests.
Definition cpe_name.h:350
OSCAP_API const struct cpe_testexpr * cpe_platform_get_expr(const struct cpe_platform *item)
cpe_platform functions to get test expression
OSCAP_API bool cpe_testexpr_add_subexpression(struct cpe_testexpr *expr, struct cpe_testexpr *sub)
Add XML namespace to CPE lang model.
Definition cpelang_priv.c:710
OSCAP_API struct cpe_platform_iterator * cpe_lang_model_get_platforms(const struct cpe_lang_model *item)
cpe_lang_model function to get CPE platforms
OSCAP_API bool cpe_testexpr_set_name(struct cpe_testexpr *expr, struct cpe_name *name)
Set CPE name.
Definition cpelang_priv.c:698
OSCAP_API struct cpe_testexpr * cpe_testexpr_new(void)
Constructor of CPE test expression.
Definition cpelang_priv.c:137
OSCAP_API bool cpe_testexpr_set_oper(struct cpe_testexpr *expr, cpe_lang_oper_t oper)
Set CPE operation.
Definition cpelang_priv.c:689
OSCAP_API void cpe_testexpr_free(struct cpe_testexpr *expr)
Free function of CPE test expression.
Definition cpelang_priv.c:631
OSCAP_API bool cpe_platform_add_title(struct cpe_platform *platform, struct oscap_text *title)
Add title to platform.
OSCAP_API bool cpe_platform_set_remark(struct cpe_platform *platform, const char *new_remark)
Set remark of CPE platform.
OSCAP_API void cpe_testexpr_iterator_reset(struct cpe_testexpr_iterator *it)
Reset function of CPE test expression.
OSCAP_API const char * cpe_platform_get_remark(const struct cpe_platform *item)
cpe_platform functions to get remark
OSCAP_API struct cpe_platform * cpe_platform_new(void)
Constructor of CPE Platform.
Definition cpelang_priv.c:192
OSCAP_API bool cpe_platform_set_id(struct cpe_platform *platform, const char *new_id)
Set ID of CPE platform.
OSCAP_API void cpe_lang_model_export(const struct cpe_lang_model *spec, const char *file)
Write the lang_model to a file.
Definition cpelang.c:46
OSCAP_API const struct cpe_testexpr * cpe_testexpr_get_next(const struct cpe_testexpr *expr)
Function to get next expr from array.
Definition cpelang_priv.c:123
OSCAP_API struct cpe_testexpr * cpe_testexpr_clone(struct cpe_testexpr *old_expr)
Clone CPE test expression.
Definition cpelang_priv.c:151
OSCAP_API struct cpe_lang_model * cpe_lang_model_new(void)
Constructor of CPE Language model.
Definition cpelang_priv.c:176
OSCAP_API cpe_lang_oper_t cpe_testexpr_get_oper(const struct cpe_testexpr *item)
cpe_testexpr functions to get variable members
OSCAP_API const char * cpe_platform_get_id(const struct cpe_platform *item)
cpe_platform functions to get id
OSCAP_API struct cpe_platform * cpe_lang_model_get_item(const struct cpe_lang_model *item, const char *key)
cpe_lang_model function to get CPE platforms
cpe_lang_oper_t
CPE language operators.
Definition cpe_lang.h:50
OSCAP_API struct oscap_text_iterator * cpe_platform_get_titles(const struct cpe_platform *item)
cpe_platform functions to get titles
OSCAP_API struct cpe_lang_model * cpe_lang_model_import_source(struct oscap_source *source)
Load CPE language model from an oscap_source.
Definition cpelang_priv.c:219
@ CPE_LANG_OPER_CHECK
check-ref = evaluate given check
Definition cpe_lang.h:55
@ CPE_LANG_OPER_MASK
mask to extract the operator w/o possible negation
Definition cpe_lang.h:57
@ CPE_LANG_OPER_AND
logical AND
Definition cpe_lang.h:52
@ CPE_LANG_OPER_MATCH
fact-ref = match given CPE name against available dictionaries
Definition cpe_lang.h:54
@ CPE_LANG_OPER_NOT
negate
Definition cpe_lang.h:58
@ CPE_LANG_OPER_OR
logical OR
Definition cpe_lang.h:53
@ CPE_LANG_OPER_INVALID
invalid or unknown operation
Definition cpe_lang.h:51
General OpenScap functions and types.
Multilingual text processing interface.
CPE platform specification.
Definition cpelang_priv.c:63
Structure holding Common Platform Enumeration URI data.
Definition cpename.c:70
Iterator over CPE dictionary items.
Single platform representation in CPE language.
Definition cpelang_priv.c:73
Iterator over CPE language expressions.
CPE language boolean expression.
Definition cpelang_priv.h:51
cpe_lang_oper_t oper
operator
Definition cpelang_priv.h:52
struct oscap_list * expr
array of subexpressions for operators
Definition cpelang_priv.h:54
Definition oscap_source.c:66
Internationalized string iterator.
Representation of internationalizable character strings.
Definition text_priv.h:46