Changed located global variable declaration and init to reflec recent change on located vars (pointers)
authoretisserant
Thu, 17 Jul 2008 19:06:20 +0200
changeset 128 fd5760f30682
parent 127 ee613c07b9e5
child 129 05ed78b25d0d
Changed located global variable declaration and init to reflec recent change on located vars (pointers)
stage4/generate_c/generate_c_vardecl.cc
--- a/stage4/generate_c/generate_c_vardecl.cc	Thu Jul 17 17:03:06 2008 +0200
+++ b/stage4/generate_c/generate_c_vardecl.cc	Thu Jul 17 19:06:20 2008 +0200
@@ -402,7 +402,6 @@
      */
     typedef enum {finterface_vf,
                     local_vf,
-                    localstatic_vf,
 		    localinit_vf,
 		    init_vf,
 		    constructorinit_vf,
@@ -1198,15 +1197,6 @@
   /* now to produce the c equivalent... */
   switch(wanted_varformat) {
     case local_vf:
-    case localstatic_vf:
-      /* NOTE: located variables must be declared static, as the connection to the
-       * MatPLC point must be initialised at program startup, and not whenever
-       * a new function block is instantiated!
-       * Nevertheless, this construct never occurs inside a Function Block, but
-       * only inside a configuration. In this case, only a single instance will
-       * be created, directly at startup, so it is not necessary that the variables
-       * be declared static.
-       */
       s4o.print(s4o.indent_spaces);
       if (symbol->global_var_name != NULL) {
         s4o.print("extern ");
@@ -1214,13 +1204,9 @@
         s4o.print("* ");
         symbol->location->accept(*this);
         s4o.print(";\n");
-        if (wanted_varformat == localstatic_vf)
-          s4o.print("static ");
         this->current_var_type_symbol->accept(*this);
         s4o.print(" *");
         symbol->global_var_name->accept(*this);
-        s4o.print(" = ");
-        symbol->location->accept(*this);
         s4o.print(";\n");
       }
       break;
@@ -1229,7 +1215,12 @@
       s4o.print(nv->get());
       
       if (symbol->global_var_name != NULL) {
-        s4o.print("*");
+        symbol->global_var_name->accept(*this);
+      	s4o.print(" = ");
+      	symbol->location->accept(*this);
+      	s4o.print(";");
+        s4o.print(nv->get());
+      	s4o.print("*");
         symbol->global_var_name->accept(*this);
       }
       else