diff -r e1e7c7678c44 -r f8d422b98315 absyntax_utils/search_var_instance_decl.hh --- a/absyntax_utils/search_var_instance_decl.hh Fri Apr 13 13:05:44 2012 +0100 +++ b/absyntax_utils/search_var_instance_decl.hh Sat Apr 14 15:19:17 2012 +0100 @@ -31,26 +31,51 @@ */ -/* Determine the data type of a specific variable instance, including - * function block instances. - * A reference to the relevant variable declaration is returned. +/* Search in a VAR* END_VAR declaration for the delcration of the specified variable instance. + * Will return: + * - the declaration itself (get_decl() ) + * - the type of declaration in which the variable was declared (get_vartype() ) + * * The variable instance may NOT be a member of a structure of a memeber * of a structure of an element of an array of ... * - * example: + * For example, considering the following 'variables': * window.points[1].coordinate.x * window.points[1].colour - * etc... ARE NOT ALLOWED! + * offset[99] + * + * passing a reference to 'points', 'points[1]', 'points[1].colour', 'colour' + * ARE NOT ALLOWED! * * This class must only be passed the name of the variable that will appear * in the variable declaration. In the above examples, this would be - * 'window' !! - * - * - * If you need to pass a complete name of a variable instance (such as - * 'window.points[1].coordinate.x') use the search_varfb_instance_type_c instead! - */ -/* Note that current_type_decl that this class returns may reference the + * 'window.points[1].coordinate.x' + * 'window.points[1].coordinate' + * 'window.points[1]' + * 'window' + * 'window.points[1].colour' + * 'offset' + * 'offset[99]' + * + * + */ + +/* Note: + * Determining the declaration type of a specific variable instance (including + * function block instances) really means determining whether the variable was declared in a + * VAR_INPUT + * VAR_OUTPUT + * VAR_IN_OUT + * VAR + * VAR_TEMP + * VAR_EXTERNAL + * VAR_GLOBAL + * VAR AT -> Located variable! + * + */ + +/* Note: + * The current_type_decl that this class returns may reference the * name of a type, or the type declaration itself! * For an example of the first, consider a variable declared as ... * x : AAA; @@ -266,34 +291,5 @@ // SYM_REF2(single_resource_declaration_c, task_configuration_list, program_configuration_list) void *visit(single_resource_declaration_c *symbol); -#if 0 -/*********************/ -/* B 1.4 - Variables */ -/*********************/ -SYM_REF2(symbolic_variable_c, var_name, unused) - -/********************************************/ -/* B.1.4.1 Directly Represented Variables */ -/********************************************/ -SYM_TOKEN(direct_variable_c) - -/*************************************/ -/* B.1.4.2 Multi-element Variables */ -/*************************************/ -/* subscripted_variable '[' subscript_list ']' */ -SYM_REF2(array_variable_c, subscripted_variable, subscript_list) - -/* subscript_list ',' subscript */ -SYM_LIST(subscript_list_c) - -/* record_variable '.' field_selector */ -/* WARNING: input and/or output variables of function blocks - * may be accessed as fields of a tructured variable! - * Code handling a structured_variable_c must take - * this into account! - */ -SYM_REF2(structured_variable_c, record_variable, field_selector) -#endif - }; // search_var_instance_decl_c