absyntax_utils/function_param_iterator.cc
changeset 233 3d23a68183d3
parent 202 da1a8186f86f
child 235 ed66dc50f31a
--- a/absyntax_utils/function_param_iterator.cc	Fri Dec 11 13:01:17 2009 +0100
+++ b/absyntax_utils/function_param_iterator.cc	Sat Dec 12 20:41:32 2009 +0100
@@ -159,6 +159,7 @@
   identifier_c *identifier;
  
   param_count = 0;
+  en_eno_param_implicit = false;
   next_param++;
   current_operation = function_param_iterator_c::iterate_op;
   res = f_decl->accept(*this);
@@ -196,6 +197,11 @@
   return current_param_type;
 }
 
+/* Returns if currently referenced parameter is an implicit defined EN/ENO parameter. */
+bool function_param_iterator_c::is_en_eno_param_implicit(void) {
+  return en_eno_param_implicit;
+}
+
 /* Returns the currently referenced parameter's data passing direction.
  * i.e. VAR_INPUT, VAR_OUTPUT or VAR_INOUT
  */
@@ -203,6 +209,11 @@
   return current_param_direction;
 }
 
+void *function_param_iterator_c::visit(implicit_definition_c *symbol) {
+	en_eno_param_implicit = current_operation == function_param_iterator_c::iterate_op;
+	return NULL;
+}
+
 /****************************************/
 /* 1.4.3 - Declaration & Initialisation */
 /****************************************/
@@ -224,6 +235,8 @@
    * variables will get overwritten when we visit the next
    * var1_init_decl_c list!
    */
+  symbol->method->accept(*this);
+
   current_param_default_value = symbol->value;
   current_param_type = symbol->type;
 
@@ -251,14 +264,12 @@
    * variables will get overwritten when we visit the next
    * var1_init_decl_c list!
    */
+  symbol->method->accept(*this);
+
   current_param_default_value = NULL;
   current_param_type = symbol->type;
 
   return handle_single_param(symbol->name);
-#if 0
-  if (eno_declared) ERROR;
-  return (void *)declare_eno_param();
-#endif
 }
 void *function_param_iterator_c::visit(input_output_declarations_c *symbol) {
   TRACE("input_output_declarations_c");