25 #include "globus_module.h"
26 #include "globus_list.h"
27 #include "globus_symboltable.h"
28 #include "globus_hashtable.h"
34 #define GLOBUS_RSL_BOOLEAN 1
35 #define GLOBUS_RSL_RELATION 2
37 #define GLOBUS_RSL_EQ 1
38 #define GLOBUS_RSL_NEQ 2
39 #define GLOBUS_RSL_GT 3
40 #define GLOBUS_RSL_GTEQ 4
41 #define GLOBUS_RSL_LT 5
42 #define GLOBUS_RSL_LTEQ 6
43 #define GLOBUS_RSL_AND 8
44 #define GLOBUS_RSL_OR 9
45 #define GLOBUS_RSL_MULTIREQ 10
47 #define GLOBUS_RSL_VALUE_LITERAL 1
48 #define GLOBUS_RSL_VALUE_SEQUENCE 2
49 #define GLOBUS_RSL_VALUE_VARIABLE 3
50 #define GLOBUS_RSL_VALUE_CONCATENATION 4
52 #define GLOBUS_RSL_PARAM_SINGLE_LITERAL 1
53 #define GLOBUS_RSL_PARAM_MULTI_LITERAL 2
54 #define GLOBUS_RSL_PARAM_SEQUENCE 3
62 extern globus_module_descriptor_t globus_i_rsl_module;
64 #define GLOBUS_RSL_MODULE (&globus_i_rsl_module)
69 typedef struct _globus_rsl_value_t globus_rsl_value_t;
71 struct _globus_rsl_value_t
84 globus_list_t * value_list;
89 globus_rsl_value_t * sequence;
94 globus_rsl_value_t * left_value;
95 globus_rsl_value_t * right_value;
101 typedef struct _globus_rsl_t globus_rsl_t;
114 globus_list_t *operand_list;
120 char * attribute_name;
121 globus_rsl_value_t * value_sequence;
179 globus_list_t *children);
184 globus_rsl_value_t *value_sequence);
197 globus_rsl_value_t *right_value);
302 globus_rsl_value_t *new_left_node);
308 globus_rsl_value_t *new_right_node);
317 globus_symboltable_t * symbol_table,
318 char ** string_value,
319 int rsl_substitute_flag);
323 globus_symboltable_t * symbol_table);
358 #define GLOBUS_SPECIFICATION_PARSE_ERROR_MESSAGE_LENGTH 1024
359 typedef struct globus_parse_error_s
364 char message[GLOBUS_SPECIFICATION_PARSE_ERROR_MESSAGE_LENGTH];
365 } globus_rsl_parse_error_t;
382 char * string_value);
385 globus_rsl_operand_list_copy_recursive(globus_list_t * orig);
388 globus_rsl_value_sequence_list_copy_recursive(globus_list_t * orig);