1 |
/*! |
2 |
|
3 |
\file pdl.h |
4 |
\brief Callback functions for parser of the evaluation manager |
5 |
\author Aram Verstegen |
6 |
|
7 |
This header contains some callback functions used for the PDL parser: |
8 |
It contains the following functions: |
9 |
|
10 |
-# pdl_init(const char*): Inilizes the parser |
11 |
-# pdl_term(void): terminates the parser |
12 |
-# set_modules_path(record_t*): sets the path to use for plug-ins (used by the parser) |
13 |
-# get_pdl_path(void): returns the path read from the config file or empty string if none was parsed |
14 |
-# add_policy(record_t*, rule_t*): adds a new policy |
15 |
-# add_rule(record_t*, record_t*, record_t*): adds a new rule |
16 |
-# remove_policy(record_t* policy): removes a policy |
17 |
-# add_variable(record_t* name, record_t* value): adds a variable (plug-in) to the list |
18 |
-# allow_rules(int): |
19 |
-# allowed_policy_rule(const char* label): |
20 |
|
21 |
-# concat_strings(record_t*, record_t*): concatenates two strings |
22 |
-# concat_strings_with_space(record_t*, record_t*): concatenates two strings separated by a space |
23 |
*/ |
24 |
|
25 |
#ifndef PDL_H |
26 |
#define PDL_H |
27 |
|
28 |
#if HAVE_CONFIG_H |
29 |
#include "config.h" |
30 |
#endif |
31 |
#if HAVE_STDIO_H |
32 |
#include <stdio.h> |
33 |
#endif |
34 |
#if HAVE_STDLIB_H |
35 |
#include <stdlib.h> |
36 |
#endif |
37 |
#include "plugin_manager.h" |
38 |
#include "eef_polytypes.h" |
39 |
#include "eef_log.h" |
40 |
|
41 |
#define TRUE 1 |
42 |
#define FALSE 0 |
43 |
|
44 |
/* lifecycle functions */ |
45 |
EES_RC pdl_init(const char* config_file_name); |
46 |
EES_RC pdl_term(void); |
47 |
EES_RC add_prepared_plugins(void); |
48 |
|
49 |
policy_t* get_policies(void); |
50 |
policy_t* reduce_policy_tree(policy_t* policies, int number_of_policies, char* names_of_policies[]); |
51 |
EES_RC link_rules_to_plugins(policy_t* policies); |
52 |
|
53 |
EES_RC clean_variables_list(void); |
54 |
EES_RC clean_policies_list(void); |
55 |
EES_RC clean_rules_list(rule_t*); |
56 |
|
57 |
/* callback functions */ |
58 |
void set_pdl_path(record_t*); |
59 |
void add_policy(record_t*, rule_t*); |
60 |
rule_t * add_rule(record_t*, record_t*, record_t*); |
61 |
const char * get_pdl_path(void); |
62 |
void remove_policy(record_t* policy); |
63 |
void remove_policy_by_name(char* policy); |
64 |
void add_variable(record_t* name, record_t* value); |
65 |
EES_RC allow_rules(int); |
66 |
EES_RC allowed_policy_rule(const char* label); |
67 |
|
68 |
/* convenience methods used by the lexer */ |
69 |
record_t * concat_strings(record_t*, record_t*); |
70 |
record_t * concat_strings_with_space(record_t*, record_t*); |
71 |
char ** _var_to_argv(char*, int*); |
72 |
var_t* get_variable_by_name(char*); |
73 |
rule_t* get_rule(rule_t* rule, const char* state); |
74 |
rule_t* check_for_recursion(rule_t*, rule_t*); |
75 |
void free_args(int argc, char** argv); |
76 |
|
77 |
|
78 |
/* Lex/Yacc stuff */ |
79 |
int yyerror(char*); |
80 |
void set_yylval(record_t* r); |
81 |
|
82 |
/* debug functions */ |
83 |
void print_policies(policy_t* policies); |
84 |
|
85 |
#endif |