.TH "globus_rsl.h" 3 "Fri Sep 2 2016" "Version 10.11" "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 "\fIRSL relation test\&. \fP" .ti -1c .RI "int \fBglobus_rsl_is_boolean\fP (globus_rsl_t *ast)" .br .RI "\fIRSL boolean test\&. \fP" .ti -1c .RI "int \fBglobus_rsl_is_relation_eq\fP (globus_rsl_t *ast)" .br .RI "\fIRSL equality operation test\&. \fP" .ti -1c .RI "int \fBglobus_rsl_is_relation_lessthan\fP (globus_rsl_t *ast)" .br .RI "\fIRSL less than operation test\&. \fP" .ti -1c .RI "int \fBglobus_rsl_is_relation_attribute_equal\fP (globus_rsl_t *ast, char *attribute)" .br .RI "\fIRSL attribute name test\&. \fP" .ti -1c .RI "int \fBglobus_rsl_is_boolean_and\fP (globus_rsl_t *ast)" .br .RI "\fIRSL boolean and test\&. \fP" .ti -1c .RI "int \fBglobus_rsl_is_boolean_or\fP (globus_rsl_t *ast)" .br .RI "\fIRSL boolean or test\&. \fP" .ti -1c .RI "int \fBglobus_rsl_is_boolean_multi\fP (globus_rsl_t *ast)" .br .RI "\fIRSL boolean multi test\&. \fP" .ti -1c .RI "int \fBglobus_rsl_value_is_literal\fP (globus_rsl_value_t *ast)" .br .RI "\fIRSL literal string test\&. \fP" .ti -1c .RI "int \fBglobus_rsl_value_is_sequence\fP (globus_rsl_value_t *ast)" .br .RI "\fIRSL value sequence test\&. \fP" .ti -1c .RI "int \fBglobus_rsl_value_is_variable\fP (globus_rsl_value_t *ast)" .br .RI "\fIRSL value variable test\&. \fP" .ti -1c .RI "int \fBglobus_rsl_value_is_concatenation\fP (globus_rsl_value_t *ast)" .br .RI "\fIRSL value concatenation test\&. \fP" .ti -1c .RI "globus_rsl_t * \fBglobus_rsl_make_boolean\fP (int my_operator, globus_list_t *children)" .br .RI "\fIRSL boolean constructor\&. \fP" .ti -1c .RI "globus_rsl_t * \fBglobus_rsl_make_relation\fP (int my_operator, char *attributename, globus_rsl_value_t *value_sequence)" .br .RI "\fIRSL relation constructor\&. \fP" .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_value_make_literal\fP (char *string)" .br .RI "\fIRSL literal constructor\&. \fP" .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_value_make_sequence\fP (globus_list_t *value_list)" .br .RI "\fIRSL value sequence constructor\&. \fP" .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_value_make_variable\fP (globus_rsl_value_t *sequence)" .br .RI "\fIRSL variable reference constructor\&. \fP" .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 "\fIRSL concatenation constructor\&. \fP" .ti -1c .RI "globus_rsl_t * \fBglobus_rsl_copy_recursive\fP (globus_rsl_t *globus_rsl_ptr)" .br .RI "\fICreate a deep copy of an RSL syntax tree\&. \fP" .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_value_copy_recursive\fP (globus_rsl_value_t *globus_rsl_value_ptr)" .br .RI "\fICreate a deep copy of an RSL value\&. \fP" .ti -1c .RI "int \fBglobus_rsl_boolean_get_operator\fP (globus_rsl_t *ast_node)" .br .RI "\fIGet the RSL operator used in a boolean RSL composition\&. \fP" .ti -1c .RI "globus_list_t * \fBglobus_rsl_boolean_get_operand_list\fP (globus_rsl_t *ast_node)" .br .RI "\fIGet the RSL operand list from a boolean RSL composition\&. \fP" .ti -1c .RI "globus_list_t ** \fBglobus_rsl_boolean_get_operand_list_ref\fP (globus_rsl_t *boolean_node)" .br .RI "\fIGet a reference to the RSL operand list from a boolean RSL composition\&. \fP" .ti -1c .RI "char * \fBglobus_rsl_relation_get_attribute\fP (globus_rsl_t *ast_node)" .br .RI "\fIGet an RSL relation attribute name\&. \fP" .ti -1c .RI "int \fBglobus_rsl_relation_get_operator\fP (globus_rsl_t *ast_node)" .br .RI "\fIGet an RSL relation operator\&. \fP" .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_relation_get_value_sequence\fP (globus_rsl_t *ast_node)" .br .RI "\fIGet the value of an RSL relation\&. \fP" .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_relation_get_single_value\fP (globus_rsl_t *ast_node)" .br .RI "\fIGet the single value of an RSL relation\&. \fP" .ti -1c .RI "char * \fBglobus_rsl_value_literal_get_string\fP (globus_rsl_value_t *literal_node)" .br .RI "\fIGet the string value of an RSL literal\&. \fP" .ti -1c .RI "globus_list_t * \fBglobus_rsl_value_sequence_get_value_list\fP (globus_rsl_value_t *sequence_node)" .br .RI "\fIGet the value list from an RSL value sequence\&. \fP" .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_value_variable_get_sequence\fP (globus_rsl_value_t *variable_node)" .br .RI "\fIGet the value sequence from an RSL variable reference\&. \fP" .ti -1c .RI "char * \fBglobus_rsl_value_variable_get_name\fP (globus_rsl_value_t *variable_node)" .br .RI "\fIGet the name of an RSL variable reference\&. \fP" .ti -1c .RI "char * \fBglobus_rsl_value_variable_get_default\fP (globus_rsl_value_t *variable_node)" .br .RI "\fIGet the default value of an RSL variable reference\&. \fP" .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_value_concatenation_get_left\fP (globus_rsl_value_t *concatenation_node)" .br .RI "\fIGet the left side of a concatenation value\&. \fP" .ti -1c .RI "globus_rsl_value_t * \fBglobus_rsl_value_concatenation_get_right\fP (globus_rsl_value_t *concatenation_node)" .br .RI "\fIGet the right side of a concatenation value\&. \fP" .ti -1c .RI "globus_list_t ** \fBglobus_rsl_value_sequence_get_list_ref\fP (globus_rsl_value_t *sequence_node)" .br .RI "\fIGet a reference to the list of values in a sequence\&. \fP" .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 "\fISet the left-hand value of a concatenation\&. \fP" .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 "\fISet the right-hand value of a concatenation\&. \fP" .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 "\fIEvaluate RSL substitions in an RSL value node\&. \fP" .ti -1c .RI "int \fBglobus_rsl_eval\fP (globus_rsl_t *ast_node, globus_symboltable_t *symbol_table)" .br .RI "\fIEvaluate an RSL syntax tree\&. \fP" .ti -1c .RI "int \fBglobus_rsl_value_free\fP (globus_rsl_value_t *val)" .br .RI "\fIFree an RSL value node\&. \fP" .ti -1c .RI "int \fBglobus_rsl_free\fP (globus_rsl_t *ast_node)" .br .RI "\fIFree an RSL syntax tree node\&. \fP" .ti -1c .RI "int \fBglobus_rsl_value_free_recursive\fP (globus_rsl_value_t *globus_rsl_value_ptr)" .br .RI "\fIFree an RSL value and all its child nodes\&. \fP" .ti -1c .RI "int \fBglobus_rsl_free_recursive\fP (globus_rsl_t *ast_node)" .br .RI "\fIFree an RSL syntax tree and all its child nodes\&. \fP" .ti -1c .RI "int \fBglobus_rsl_value_print_recursive\fP (globus_rsl_value_t *globus_rsl_value_ptr)" .br .RI "\fIPrint the value of a globus_rsl_value_t to standard output\&. \fP" .ti -1c .RI "int \fBglobus_rsl_print_recursive\fP (globus_rsl_t *ast_node)" .br .RI "\fIPrint the value of an RSL syntax tree to standard output\&. \fP" .ti -1c .RI "int \fBglobus_rsl_value_variable_get_size\fP (globus_rsl_value_t *variable_node)" .br .RI "\fIGet the size of the value list within an RSL variable reference node\&. \fP" .ti -1c .RI "globus_list_t * \fBglobus_list_copy_reverse\fP (globus_list_t *orig)" .br .RI "\fICreate a reverse-order copy of a list\&. \fP" .ti -1c .RI "int \fBglobus_rsl_value_list_literal_replace\fP (globus_list_t *value_list, char *string_value)" .br .RI "\fIReplace the first value in a value list with a literal\&. \fP" .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 "\fIGet the values of an RSL value list\&. \fP" .ti -1c .RI "int \fBglobus_rsl_param_get\fP (globus_rsl_t *ast_node, int required_type, char *param, char ***values)" .br .RI "\fIGet the value strings for an RSL attribute\&. \fP" .ti -1c .RI "globus_list_t * \fBglobus_rsl_param_get_values\fP (globus_rsl_t *ast_node, char *param)" .br .RI "\fIGet the list of values for an RSL attribute\&. \fP" .ti -1c .RI "globus_rsl_t * \fBglobus_rsl_parse\fP (char *rsl_spec)" .br .RI "\fIParse an RSL string\&. \fP" .ti -1c .RI "char * \fBglobus_rsl_unparse\fP (globus_rsl_t *rsl_spec)" .br .RI "\fIConvert an RSL parse tree to a string\&. \fP" .ti -1c .RI "char * \fBglobus_rsl_value_unparse\fP (globus_rsl_value_t *rsl_value)" .br .RI "\fIConvert an RSL value pointer to a string\&. \fP" .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\&.