.TH "globus_rsl.h" 3 "Tue Jul 5 2022" "Version 11.3" "globus_rsl" \" -*- nroff -*- .ad l .nh .SH NAME globus_rsl.h \- Globus RSL Parsing\&. .SH SYNOPSIS .br .PP \fC#include 'globus_module\&.h'\fP .br \fC#include 'globus_list\&.h'\fP .br \fC#include 'globus_symboltable\&.h'\fP .br \fC#include 'globus_hashtable\&.h'\fP .br .SS "Functions" .in +1c .ti -1c .RI "int \fBglobus_rsl_is_relation\fP (globus_rsl_t *ast)" .br .RI "RSL relation test\&. " .ti -1c .RI "int \fBglobus_rsl_is_boolean\fP (globus_rsl_t *ast)" .br .RI "RSL boolean test\&. " .ti -1c .RI "int \fBglobus_rsl_is_relation_eq\fP (globus_rsl_t *ast)" .br .RI "RSL equality operation test\&. " .ti -1c .RI "int \fBglobus_rsl_is_relation_lessthan\fP (globus_rsl_t *ast)" .br .RI "RSL less than operation test\&. " .ti -1c .RI "int \fBglobus_rsl_is_relation_attribute_equal\fP (globus_rsl_t *ast, char *attribute)" .br .RI "RSL attribute name test\&. " .ti -1c .RI "int \fBglobus_rsl_is_boolean_and\fP (globus_rsl_t *ast)" .br .RI "RSL boolean and test\&. " .ti -1c .RI "int \fBglobus_rsl_is_boolean_or\fP (globus_rsl_t *ast)" .br .RI "RSL boolean or test\&. " .ti -1c .RI "int \fBglobus_rsl_is_boolean_multi\fP (globus_rsl_t *ast)" .br .RI "RSL boolean multi test\&. " .ti -1c .RI "int \fBglobus_rsl_value_is_literal\fP (globus_rsl_value_t *ast)" .br .RI "RSL literal string test\&. " .ti -1c .RI "int \fBglobus_rsl_value_is_sequence\fP (globus_rsl_value_t *ast)" .br .RI "RSL value sequence test\&. " .ti -1c .RI "int \fBglobus_rsl_value_is_variable\fP (globus_rsl_value_t *ast)" .br .RI "RSL value variable test\&. " .ti -1c .RI "int \fBglobus_rsl_value_is_concatenation\fP (globus_rsl_value_t *ast)" .br .RI "RSL value concatenation test\&. " .ti -1c .RI "globus_rsl_t * \fBglobus_rsl_make_boolean\fP (int my_operator, globus_list_t *children)" .br .RI "RSL boolean constructor\&. " .ti -1c .RI "globus_rsl_t * \fBglobus_rsl_make_relation\fP (int my_operator, char *attributename, globus_rsl_value_t *value_sequence)" .br .RI "RSL relation constructor\&. " .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_value_make_literal\fP (char *string)" .br .RI "RSL literal constructor\&. " .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_value_make_sequence\fP (globus_list_t *value_list)" .br .RI "RSL value sequence constructor\&. " .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_value_make_variable\fP (globus_rsl_value_t *sequence)" .br .RI "RSL variable reference constructor\&. " .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_value_make_concatenation\fP (globus_rsl_value_t *left_value, globus_rsl_value_t *right_value)" .br .RI "RSL concatenation constructor\&. " .ti -1c .RI "globus_rsl_t * \fBglobus_rsl_copy_recursive\fP (globus_rsl_t *globus_rsl_ptr)" .br .RI "Create a deep copy of an RSL syntax tree\&. " .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_value_copy_recursive\fP (globus_rsl_value_t *globus_rsl_value_ptr)" .br .RI "Create a deep copy of an RSL value\&. " .ti -1c .RI "int \fBglobus_rsl_boolean_get_operator\fP (globus_rsl_t *ast_node)" .br .RI "Get the RSL operator used in a boolean RSL composition\&. " .ti -1c .RI "globus_list_t * \fBglobus_rsl_boolean_get_operand_list\fP (globus_rsl_t *ast_node)" .br .RI "Get the RSL operand list from a boolean RSL composition\&. " .ti -1c .RI "globus_list_t ** \fBglobus_rsl_boolean_get_operand_list_ref\fP (globus_rsl_t *boolean_node)" .br .RI "Get a reference to the RSL operand list from a boolean RSL composition\&. " .ti -1c .RI "char * \fBglobus_rsl_relation_get_attribute\fP (globus_rsl_t *ast_node)" .br .RI "Get an RSL relation attribute name\&. " .ti -1c .RI "int \fBglobus_rsl_relation_get_operator\fP (globus_rsl_t *ast_node)" .br .RI "Get an RSL relation operator\&. " .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_relation_get_value_sequence\fP (globus_rsl_t *ast_node)" .br .RI "Get the value of an RSL relation\&. " .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_relation_get_single_value\fP (globus_rsl_t *ast_node)" .br .RI "Get the single value of an RSL relation\&. " .ti -1c .RI "char * \fBglobus_rsl_value_literal_get_string\fP (globus_rsl_value_t *literal_node)" .br .RI "Get the string value of an RSL literal\&. " .ti -1c .RI "globus_list_t * \fBglobus_rsl_value_sequence_get_value_list\fP (globus_rsl_value_t *sequence_node)" .br .RI "Get the value list from an RSL value sequence\&. " .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_value_variable_get_sequence\fP (globus_rsl_value_t *variable_node)" .br .RI "Get the value sequence from an RSL variable reference\&. " .ti -1c .RI "char * \fBglobus_rsl_value_variable_get_name\fP (globus_rsl_value_t *variable_node)" .br .RI "Get the name of an RSL variable reference\&. " .ti -1c .RI "char * \fBglobus_rsl_value_variable_get_default\fP (globus_rsl_value_t *variable_node)" .br .RI "Get the default value of an RSL variable reference\&. " .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_value_concatenation_get_left\fP (globus_rsl_value_t *concatenation_node)" .br .RI "Get the left side of a concatenation value\&. " .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_value_concatenation_get_right\fP (globus_rsl_value_t *concatenation_node)" .br .RI "Get the right side of a concatenation value\&. " .ti -1c .RI "globus_list_t ** \fBglobus_rsl_value_sequence_get_list_ref\fP (globus_rsl_value_t *sequence_node)" .br .RI "Get a reference to the list of values in a sequence\&. " .ti -1c .RI "int \fBglobus_rsl_value_concatenation_set_left\fP (globus_rsl_value_t *concatenate_node, globus_rsl_value_t *new_left_node)" .br .RI "Set the left-hand value of a concatenation\&. " .ti -1c .RI "int \fBglobus_rsl_value_concatenation_set_right\fP (globus_rsl_value_t *concatenate_node, globus_rsl_value_t *new_right_node)" .br .RI "Set the right-hand value of a concatenation\&. " .ti -1c .RI "int \fBglobus_rsl_value_eval\fP (globus_rsl_value_t *ast_node, globus_symboltable_t *symbol_table, char **string_value, int rsl_substitute_flag)" .br .RI "Evaluate RSL substitions in an RSL value node\&. " .ti -1c .RI "int \fBglobus_rsl_eval\fP (globus_rsl_t *ast_node, globus_symboltable_t *symbol_table)" .br .RI "Evaluate an RSL syntax tree\&. " .ti -1c .RI "int \fBglobus_rsl_value_free\fP (globus_rsl_value_t *val)" .br .RI "Free an RSL value node\&. " .ti -1c .RI "int \fBglobus_rsl_free\fP (globus_rsl_t *ast_node)" .br .RI "Free an RSL syntax tree node\&. " .ti -1c .RI "int \fBglobus_rsl_value_free_recursive\fP (globus_rsl_value_t *globus_rsl_value_ptr)" .br .RI "Free an RSL value and all its child nodes\&. " .ti -1c .RI "int \fBglobus_rsl_free_recursive\fP (globus_rsl_t *ast_node)" .br .RI "Free an RSL syntax tree and all its child nodes\&. " .ti -1c .RI "int \fBglobus_rsl_value_print_recursive\fP (globus_rsl_value_t *globus_rsl_value_ptr)" .br .RI "Print the value of a globus_rsl_value_t to standard output\&. " .ti -1c .RI "int \fBglobus_rsl_print_recursive\fP (globus_rsl_t *ast_node)" .br .RI "Print the value of an RSL syntax tree to standard output\&. " .ti -1c .RI "int \fBglobus_rsl_value_variable_get_size\fP (globus_rsl_value_t *variable_node)" .br .RI "Get the size of the value list within an RSL variable reference node\&. " .ti -1c .RI "globus_list_t * \fBglobus_list_copy_reverse\fP (globus_list_t *orig)" .br .RI "Create a reverse-order copy of a list\&. " .ti -1c .RI "int \fBglobus_rsl_value_list_literal_replace\fP (globus_list_t *value_list, char *string_value)" .br .RI "Replace the first value in a value list with a literal\&. " .ti -1c .RI "int \fBglobus_rsl_value_list_param_get\fP (globus_list_t *ast_node_list, int required_type, char ***value, int *value_ctr)" .br .RI "Get the values of an RSL value list\&. " .ti -1c .RI "int \fBglobus_rsl_param_get\fP (globus_rsl_t *ast_node, int required_type, char *param, char ***values)" .br .RI "Get the value strings for an RSL attribute\&. " .ti -1c .RI "globus_list_t * \fBglobus_rsl_param_get_values\fP (globus_rsl_t *ast_node, char *param)" .br .RI "Get the list of values for an RSL attribute\&. " .ti -1c .RI "globus_rsl_t * \fBglobus_rsl_parse\fP (char *rsl_spec)" .br .RI "Parse an RSL string\&. " .ti -1c .RI "char * \fBglobus_rsl_unparse\fP (globus_rsl_t *rsl_spec)" .br .RI "Convert an RSL parse tree to a string\&. " .ti -1c .RI "char * \fBglobus_rsl_value_unparse\fP (globus_rsl_value_t *rsl_value)" .br .RI "Convert an RSL value pointer to a string\&. " .in -1c .SH "Detailed Description" .PP Globus RSL Parsing\&. .SH "Function Documentation" .PP .SS "globus_rsl_t* globus_rsl_parse (char * buf)" .PP Parse an RSL string\&. The \fBglobus_rsl_parse()\fP function parses the string pointed to by the \fIbuf\fP parameter into an RSL syntax tree\&. The caller is responsible for freeing that tree by calling \fBglobus_rsl_free_recursive()\fP\&. .PP \fBParameters\fP .RS 4 \fIbuf\fP A NULL-terminated string that contains an RSL relation or boolean composition\&. .RE .PP \fBReturns\fP .RS 4 Upon success, the \fBglobus_rsl_parse()\fP function returns the parse tree generated by processing its input\&. If an error occurs, \fBglobus_rsl_parse()\fP returns NULL\&. .RE .PP .SH "Author" .PP Generated automatically by Doxygen for globus_rsl from the source code\&.