source: libabac/abac_pl_yy.h @ 440ba20

mei_rt2mei_rt2_fix_1
Last change on this file since 440ba20 was 440ba20, checked in by Mei <mei@…>, 12 years ago

1) wrap up refactoring to move all the code gen to abac structure
2) all original testsuite passed
3) add couple more ui calls in abac.hh ie. manage constraint's

creation, hook to dump yap db.

  • Property mode set to 100644
File size: 3.5 KB
Line 
1#ifndef __ABAC_PL_YY_H__
2#define __ABAC_PL_YY_H__
3
4/* C declarations */
5#include "abac_internal.h"
6#include "abac_list.h"
7#include "abac_rt.h"
8
9typedef struct _abac_yy_principal_t abac_yy_principal_t;
10typedef struct _abac_yy_term_principal_t abac_yy_term_principal_t;
11typedef struct _abac_yy_term_data_t abac_yy_term_data_t;
12typedef struct _abac_yy_term_t abac_yy_term_t;
13typedef struct _abac_yy_roleoset_t abac_yy_roleoset_t;
14typedef struct _abac_yy_expression_t abac_yy_expression_t;
15
16enum roleoset_type {
17    e_yy_NULL_TYPE=0, 
18    e_yy_ROLE_TYPE=1,
19    e_yy_OSET_TYPE=2
20};
21
22enum expr_rtype {
23    e_yy_EXPR_NAMED=1,
24    e_yy_EXPR_ROLE=2,
25    e_yy_EXPR_OSET=3,
26    e_yy_EXPR_LINKED=4,
27    e_yy_EXPR_OBJECT=5
28};
29
30enum dterm_type {
31    e_yy_DTERM_PRINCIPAL=1,
32    e_yy_DTERM_NAMED=2,
33    e_yy_DTERM_DATA=3,
34    e_yy_DTERM_ANONYMOUS=4
35};
36
37enum range_type {
38   e_yy_RANGE_MIN=1,
39   e_yy_RANGE_MAX=2,
40   e_yy_RANGE_TARGET=3 
41};
42
43abac_yy_expression_t *make_yy_expression(int type,void *pptr,
44              abac_yy_roleoset_t *optr, abac_yy_roleoset_t *linked_role);
45extern abac_list_t *make_yy_max_range(char *max);
46extern abac_list_t *make_yy_minmax_range(char *min, char *max);
47extern abac_list_t *make_yy_min_range(char *min);
48extern void make_yy_range_constraint(abac_yy_term_data_t *ptr);
49extern void make_yy_oset_constraint(abac_yy_term_data_t *ptr, char *tail_string);
50extern void make_yy_role_constraint(abac_yy_term_principal_t *ptr, char *tail_string);
51extern abac_yy_principal_t *make_yy_principal(char *sha, char *cn, int type);
52extern abac_yy_roleoset_t *make_yy_roleoset_role(char *name, abac_yy_term_t *terms);
53extern abac_yy_roleoset_t *make_yy_roleoset_oset(char *name, abac_yy_term_t *terms);
54extern abac_yy_term_data_t *make_yy_term_data();
55extern void set_yy_term_data_name(abac_yy_term_data_t *ptr, char *name);
56extern void set_yy_term_data_is_anonymous(abac_yy_term_data_t *ptr);
57extern abac_yy_term_t *make_yy_term_dterm_anonymous();
58extern abac_yy_term_t *make_yy_term_dterm_data(abac_yy_term_data_t *dptr);
59extern abac_yy_term_t *make_yy_term_dterm_named(abac_yy_principal_t *nptr);
60extern abac_yy_term_t *make_yy_term_dterm_principal(abac_yy_term_principal_t *pptr);
61extern abac_yy_term_principal_t *make_yy_term_principal();
62extern void set_yy_term_principal_name(abac_yy_term_principal_t *,char*);
63extern void set_yy_term_principal_is_anonymous(abac_yy_term_principal_t *);
64extern abac_list_t *make_yy_val_range(char *val);
65
66extern abac_list_t *make_role_statement(abac_yy_expression_t *headexpr, abac_yy_expression_t *tailexpr);
67extern abac_list_t *make_oset_statement(abac_yy_expression_t *headexpr, abac_yy_expression_t *tailexpr);
68extern char *get_yy_term_data_name(abac_yy_term_data_t *ptr);
69extern abac_yy_term_data_t *get_yy_expression_object(abac_yy_expression_t *ptr);
70extern abac_yy_expression_t *add_yy_expression(abac_yy_expression_t *nexpr, abac_yy_expression_t *exprs);
71extern abac_yy_term_t *add_yy_term(abac_yy_term_t *nterm, abac_yy_term_t *terms);
72extern abac_list_t *add_yy_val_range(abac_list_t *ptr, char * val);
73
74extern abac_aspect_t *validate_head(int yytype, abac_yy_expression_t *expr);
75extern abac_aspect_t *validate_named_tail(int yytype, abac_yy_expression_t *expr);
76extern abac_aspect_t *validate_object_tail(int yytype,abac_yy_expression_t *expr);
77extern abac_aspect_t *validate_some_tail(int yytype, abac_yy_expression_t *expr);
78extern abac_aspect_t *validate_linked_tail(int yytype, abac_yy_expression_t *expr);
79
80#define ABAC_YY_INVALID_HEAD        -1
81
82#endif /* __ABC_PL_YY_H__ */
Note: See TracBrowser for help on using the repository browser.