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 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
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;
120 char * attribute_name;
121 globus_rsl_value_t * value_sequence;
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);
int globus_rsl_is_boolean_or(globus_rsl_t *ast)
RSL boolean or test.
Definition: globus_rsl.c:373
int globus_rsl_is_boolean_and(globus_rsl_t *ast)
RSL boolean and test.
Definition: globus_rsl.c:341
int globus_rsl_value_concatenation_set_right(globus_rsl_value_t *concatenate_node, globus_rsl_value_t *new_right_node)
Set the right-hand value of a concatenation.
Definition: globus_rsl.c:1551
int globus_rsl_eval(globus_rsl_t *ast_node, globus_symboltable_t *symbol_table)
Evaluate an RSL syntax tree.
Definition: globus_rsl.c:2108
char * globus_rsl_value_unparse(globus_rsl_value_t *rsl_value)
Convert an RSL value pointer to a string.
Definition: globus_rsl.c:2756
int globus_rsl_value_is_concatenation(globus_rsl_value_t *ast)
RSL value concatenation test.
Definition: globus_rsl.c:528
globus_rsl_t * globus_rsl_parse(char *rsl_spec)
Parse an RSL string.
Definition: globus_rsl_parser.c:1885
int globus_rsl_is_boolean_multi(globus_rsl_t *ast)
RSL boolean multi test.
Definition: globus_rsl.c:406
globus_rsl_t * globus_rsl_copy_recursive(globus_rsl_t *globus_rsl_ptr)
Create a deep copy of an RSL syntax tree.
Definition: globus_rsl.c:808
globus_list_t * globus_rsl_value_sequence_get_value_list(globus_rsl_value_t *sequence_node)
Get the value list from an RSL value sequence.
Definition: globus_rsl.c:1263
globus_rsl_value_t * globus_rsl_value_make_concatenation(globus_rsl_value_t *left_value, globus_rsl_value_t *right_value)
RSL concatenation constructor.
Definition: globus_rsl.c:764
char * globus_rsl_value_variable_get_name(globus_rsl_value_t *variable_node)
Get the name of an RSL variable reference.
Definition: globus_rsl.c:1319
int globus_rsl_value_eval(globus_rsl_value_t *ast_node, globus_symboltable_t *symbol_table, char **string_value, int rsl_substitute_flag)
Evaluate RSL substitions in an RSL value node.
Definition: globus_rsl.c:1857
int globus_rsl_value_variable_get_size(globus_rsl_value_t *variable_node)
Get the size of the value list within an RSL variable reference node.
Definition: globus_rsl.c:1398
int globus_rsl_value_free(globus_rsl_value_t *val)
Free an RSL value node.
Definition: globus_rsl.c:1619
int globus_rsl_param_get(globus_rsl_t *ast_node, int required_type, char *param, char ***values)
Get the value strings for an RSL attribute.
Definition: globus_rsl.c:2393
int globus_rsl_is_relation(globus_rsl_t *ast)
RSL relation test.
Definition: globus_rsl.c:179
Reference Counting Module Activation and Deactivation.
int globus_rsl_value_is_sequence(globus_rsl_value_t *ast)
RSL value sequence test.
Definition: globus_rsl.c:468
char * globus_rsl_unparse(globus_rsl_t *rsl_spec)
Convert an RSL parse tree to a string.
Definition: globus_rsl.c:2704
globus_rsl_value_t * globus_rsl_relation_get_single_value(globus_rsl_t *ast_node)
Get the single value of an RSL relation.
Definition: globus_rsl.c:1194
globus_rsl_value_t * globus_rsl_value_make_literal(char *string)
RSL literal constructor.
Definition: globus_rsl.c:654
globus_rsl_value_t * globus_rsl_value_variable_get_sequence(globus_rsl_value_t *variable_node)
Get the value sequence from an RSL variable reference.
Definition: globus_rsl.c:1291
globus_rsl_value_t * globus_rsl_value_make_variable(globus_rsl_value_t *sequence)
RSL variable reference constructor.
Definition: globus_rsl.c:724
List data type.
Definition: globus_list.h:44
int globus_rsl_value_is_variable(globus_rsl_value_t *ast)
RSL value variable test.
Definition: globus_rsl.c:498
globus_rsl_value_t * globus_rsl_value_copy_recursive(globus_rsl_value_t *globus_rsl_value_ptr)
Create a deep copy of an RSL value.
Definition: globus_rsl.c:909
int globus_rsl_value_list_literal_replace(globus_list_t *value_list, char *string_value)
Replace the first value in a value list with a literal.
Definition: globus_rsl.c:1806
globus_rsl_value_t * globus_rsl_value_concatenation_get_right(globus_rsl_value_t *concatenation_node)
Get the right side of a concatenation value.
Definition: globus_rsl.c:1454
int globus_rsl_is_relation_eq(globus_rsl_t *ast)
RSL equality operation test.
Definition: globus_rsl.c:246
Lightweight Chaining Symboltable.
globus_list_t ** globus_rsl_value_sequence_get_list_ref(globus_rsl_value_t *sequence_node)
Get a reference to the list of values in a sequence.
Definition: globus_rsl.c:1482
globus_list_t * globus_rsl_param_get_values(globus_rsl_t *ast_node, char *param)
Get the list of values for an RSL attribute.
Definition: globus_rsl.c:2313
globus_rsl_value_t * globus_rsl_value_make_sequence(globus_list_t *value_list)
RSL value sequence constructor.
Definition: globus_rsl.c:689
int globus_rsl_boolean_get_operator(globus_rsl_t *ast_node)
Get the RSL operator used in a boolean RSL composition.
Definition: globus_rsl.c:1023
int globus_rsl_is_boolean(globus_rsl_t *ast)
RSL boolean test.
Definition: globus_rsl.c:215
int globus_rsl_is_relation_attribute_equal(globus_rsl_t *ast, char *attribute)
RSL attribute name test.
Definition: globus_rsl.c:308
int globus_rsl_print_recursive(globus_rsl_t *ast_node)
Print the value of an RSL syntax tree to standard output.
Definition: globus_rsl.c:2648
int globus_rsl_value_free_recursive(globus_rsl_value_t *globus_rsl_value_ptr)
Free an RSL value and all its child nodes.
Definition: globus_rsl.c:1667
int globus_rsl_value_print_recursive(globus_rsl_value_t *globus_rsl_value_ptr)
Print the value of a globus_rsl_value_t to standard output.
Definition: globus_rsl.c:2526
globus_rsl_value_t * globus_rsl_value_concatenation_get_left(globus_rsl_value_t *concatenation_node)
Get the left side of a concatenation value.
Definition: globus_rsl.c:1427
int globus_rsl_value_list_param_get(globus_list_t *ast_node_list, int required_type, char ***value, int *value_ctr)
Get the values of an RSL value list.
Definition: globus_rsl.c:2236
int globus_rsl_value_is_literal(globus_rsl_value_t *ast)
RSL literal string test.
Definition: globus_rsl.c:438
int globus_rsl_relation_get_operator(globus_rsl_t *ast_node)
Get an RSL relation operator.
Definition: globus_rsl.c:1136
globus_rsl_t * globus_rsl_make_boolean(int my_operator, globus_list_t *children)
RSL boolean constructor.
Definition: globus_rsl.c:570
globus_list_t * globus_list_copy_reverse(globus_list_t *orig)
Create a reverse-order copy of a list.
Definition: globus_rsl.c:1588
int globus_rsl_is_relation_lessthan(globus_rsl_t *ast)
RSL less than operation test.
Definition: globus_rsl.c:276
char * globus_rsl_value_variable_get_default(globus_rsl_value_t *variable_node)
Get the default value of an RSL variable reference.
Definition: globus_rsl.c:1359
int globus_rsl_free_recursive(globus_rsl_t *ast_node)
Free an RSL syntax tree and all its child nodes.
Definition: globus_rsl.c:1738
globus_list_t ** globus_rsl_boolean_get_operand_list_ref(globus_rsl_t *boolean_node)
Get a reference to the RSL operand list from a boolean RSL composition.
Definition: globus_rsl.c:1078
globus_list_t * globus_rsl_boolean_get_operand_list(globus_rsl_t *ast_node)
Get the RSL operand list from a boolean RSL composition.
Definition: globus_rsl.c:1049
globus_rsl_value_t * globus_rsl_relation_get_value_sequence(globus_rsl_t *ast_node)
Get the value of an RSL relation.
Definition: globus_rsl.c:1164
char * globus_rsl_relation_get_attribute(globus_rsl_t *ast_node)
Get an RSL relation attribute name.
Definition: globus_rsl.c:1108
globus_rsl_t * globus_rsl_make_relation(int my_operator, char *attributename, globus_rsl_value_t *value_sequence)
RSL relation constructor.
Definition: globus_rsl.c:615
char * globus_rsl_value_literal_get_string(globus_rsl_value_t *literal_node)
Get the string value of an RSL literal.
Definition: globus_rsl.c:1235
int globus_rsl_free(globus_rsl_t *ast_node)
Free an RSL syntax tree node.
Definition: globus_rsl.c:1642
Module Descriptor.
Definition: globus_module.h:71
int globus_rsl_value_concatenation_set_left(globus_rsl_value_t *concatenate_node, globus_rsl_value_t *new_left_node)
Set the left-hand value of a concatenation.
Definition: globus_rsl.c:1515