00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00035 #ifndef __SSL_EXPR_H__
00036 #define __SSL_EXPR_H__
00037
00038 #ifndef FALSE
00039 #define FALSE 0
00040 #endif
00041
00042 #ifndef TRUE
00043 #define TRUE !FALSE
00044 #endif
00045
00046 #ifndef YY_NULL
00047 #define YY_NULL 0
00048 #endif
00049
00050 #ifndef MIN
00051 #define MIN(a,b) (((a)<(b))?(a):(b))
00052 #endif
00053
00054 #ifndef BOOL
00055 #define BOOL unsigned int
00056 #endif
00057
00058 #ifndef NULL
00059 #define NULL (void *)0
00060 #endif
00061
00062 #ifndef NUL
00063 #define NUL '\0'
00064 #endif
00065
00066 #ifndef YYDEBUG
00067 #define YYDEBUG 0
00068 #endif
00069
00070 typedef enum {
00071 op_NOP, op_ListElement, op_OidListElement,
00072 op_True, op_False, op_Not, op_Or, op_And, op_Comp,
00073 op_EQ, op_NE, op_LT, op_LE, op_GT, op_GE, op_IN, op_REG, op_NRE,
00074 op_Digit, op_String, op_Regex, op_Var, op_Func
00075 } ssl_expr_node_op;
00076
00077 typedef struct {
00078 ssl_expr_node_op node_op;
00079 void *node_arg1;
00080 void *node_arg2;
00081 apr_pool_t *p;
00082 } ssl_expr_node;
00083
00084 typedef ssl_expr_node ssl_expr;
00085
00086 typedef struct {
00087 apr_pool_t *pool;
00088 char *inputbuf;
00089 int inputlen;
00090 char *inputptr;
00091 ssl_expr *expr;
00092 } ssl_expr_info_type;
00093
00094 extern ssl_expr_info_type ssl_expr_info;
00095 extern char *ssl_expr_error;
00096
00097 #define yylval ssl_expr_yylval
00098 #define yyerror ssl_expr_yyerror
00099 #define yyinput ssl_expr_yyinput
00100
00101 extern int ssl_expr_yyparse(void);
00102 extern int ssl_expr_yyerror(char *);
00103 extern int ssl_expr_yylex(void);
00104
00105 extern ssl_expr *ssl_expr_comp(apr_pool_t *, char *);
00106 extern int ssl_expr_exec(request_rec *, ssl_expr *);
00107 extern char *ssl_expr_get_error(void);
00108 extern ssl_expr *ssl_expr_make(ssl_expr_node_op, void *, void *);
00109 extern BOOL ssl_expr_eval(request_rec *, ssl_expr *);
00110
00111 #endif
00112