stage4/generate_c/generate_c.cc
changeset 111 ee31ee39eaf6
parent 98 d0cdf1d00b74
child 112 0c8d1b0c957a
--- a/stage4/generate_c/generate_c.cc	Mon Feb 11 10:26:35 2008 +0100
+++ b/stage4/generate_c/generate_c.cc	Tue Feb 26 10:59:48 2008 +0100
@@ -40,6 +40,7 @@
 #include <iostream>
 #include <sstream>
 #include <typeinfo>
+#include <list>
 
 #include "../../util/symtable.hh"
 #include "../../util/dsymtable.hh"
@@ -181,6 +182,7 @@
 #include "function_call_param_iterator.cc"
 #include "type_initial_value.cc"
 #include "search_fb_instance_decl.cc"
+#include "search_fb_typedecl.cc"
 #include "search_base_type.cc"
 #include "search_var_instance_decl.cc"
 #include "decompose_var_instance_name.cc"
@@ -194,6 +196,7 @@
 #include "generate_c_vardecl.cc"
 #include "generate_c_configbody.cc"
 #include "generate_location_list.cc"
+#include "generate_var_list.cc"
 
 /***********************************************************************/
 /***********************************************************************/
@@ -1432,8 +1435,10 @@
     stage4out_c &s4o;
     stage4out_c pous_s4o;
     stage4out_c located_variables_s4o;
+    stage4out_c variables_s4o;
     generate_c_pous_c generate_c_pous;
-
+    generate_var_list_c *generate_var_list;
+    
     symbol_c *current_configuration;
 
     const char *current_name;
@@ -1446,6 +1451,7 @@
             s4o(*s4o_ptr),
             pous_s4o(builddir, "POUS", "c"),
             located_variables_s4o(builddir, "LOCATED_VARIABLES","h"),
+            variables_s4o(builddir, "VARIABLES","h"),
             generate_c_pous(&pous_s4o) {
       current_builddir = builddir;
       current_configuration = NULL;
@@ -1457,9 +1463,14 @@
 /* B 0 - Programming Model */
 /***************************/
     void *visit(library_c *symbol) {
+      generate_var_list = new generate_var_list_c(&variables_s4o, symbol);
+      
       for(int i = 0; i < symbol->n; i++) {
         symbol->elements[i]->accept(*this);
       }
+      
+      delete generate_var_list;
+      
       generate_location_list_c generate_location_list(&located_variables_s4o);
       symbol->accept(generate_location_list);
       return NULL;
@@ -1543,6 +1554,8 @@
 
       current_configuration = NULL;
       
+      symbol->accept(*generate_var_list);
+      
       return NULL;
     }