absyntax_utils/function_param_iterator.cc
changeset 235 ed66dc50f31a
parent 233 3d23a68183d3
child 237 cece842c7417
--- a/absyntax_utils/function_param_iterator.cc	Sun Dec 13 11:41:22 2009 +0100
+++ b/absyntax_utils/function_param_iterator.cc	Tue Dec 15 08:51:44 2009 +0100
@@ -245,11 +245,25 @@
 
 /* var1_list ':' array_spec_init */
 //SYM_REF2(array_var_init_decl_c, var1_list, array_spec_init)
-void *function_param_iterator_c::visit(array_var_init_decl_c *symbol) {TRACE("array_var_init_decl_c"); return symbol->var1_list->accept(*this);}
+void *function_param_iterator_c::visit(array_var_init_decl_c *symbol) {
+  TRACE("array_var_init_decl_c");
+
+  current_param_default_value = spec_init_sperator_c::get_init(symbol->array_spec_init);
+  current_param_type = spec_init_sperator_c::get_spec(symbol->array_spec_init);
+
+  return symbol->var1_list->accept(*this);
+}
 
 /*  var1_list ':' initialized_structure */
 //SYM_REF2(structured_var_init_decl_c, var1_list, initialized_structure)
-void *function_param_iterator_c::visit(structured_var_init_decl_c *symbol) {TRACE("structured_var_init_decl_c"); return symbol->var1_list->accept(*this);}
+void *function_param_iterator_c::visit(structured_var_init_decl_c *symbol) {
+  TRACE("structured_var_init_decl_c");
+
+  current_param_default_value = spec_init_sperator_c::get_init(symbol->initialized_structure);
+  current_param_type = spec_init_sperator_c::get_spec(symbol->initialized_structure);
+
+  return symbol->var1_list->accept(*this);
+}
 
 void *function_param_iterator_c::visit(output_declarations_c *symbol) {
   TRACE("output_declarations_c");
@@ -284,7 +298,14 @@
 
 /*  var1_list ':' structure_type_name */
 //SYM_REF2(structured_var_declaration_c, var1_list, structure_type_name)
-void *function_param_iterator_c::visit(structured_var_declaration_c *symbol) {TRACE("structured_var_declaration_c"); return symbol->var1_list->accept(*this);}
+void *function_param_iterator_c::visit(structured_var_declaration_c *symbol) {
+  TRACE("structured_var_declaration_c");
+
+  current_param_default_value = NULL;
+  current_param_type = symbol->structure_type_name;
+
+  return symbol->var1_list->accept(*this);
+}
 
 /* VAR [CONSTANT] var_init_decl_list END_VAR */
 void *function_param_iterator_c::visit(var_declarations_c *symbol) {TRACE("var_declarations_c"); return NULL;}