stage4/generate_c/generate_c_st.cc
changeset 231 b8527b0abe75
parent 228 43831b683764
child 233 3d23a68183d3
--- a/stage4/generate_c/generate_c_st.cc	Wed Dec 09 16:45:27 2009 +0100
+++ b/stage4/generate_c/generate_c_st.cc	Fri Dec 11 12:53:54 2009 +0100
@@ -140,13 +140,27 @@
 		symbol_c* fb_symbol = NULL,
 		symbol_c* fb_value = NULL) {
   unsigned int vartype = search_varfb_instance_type->get_vartype(symbol);
-  if (vartype == search_var_instance_decl_c::external_vt)
-    s4o.print(SET_EXTERNAL);
-  else if (vartype == search_var_instance_decl_c::located_vt)
-    s4o.print(SET_LOCATED);
-  else
-    s4o.print(SET_VAR);
-  s4o.print("(");
+  if (vartype == search_var_instance_decl_c::external_vt) {
+    symbolic_variable_c *variable = dynamic_cast<symbolic_variable_c *>(symbol);
+    /* TODO Find a solution for forcing global complex variables */
+    if (variable != NULL) {
+      s4o.print(SET_EXTERNAL);
+      s4o.print("(");
+      variable->var_name->accept(*this);
+      s4o.print(",");
+    }
+    else {
+      s4o.print(SET_COMPLEX_EXTERNAL);
+      s4o.print("(");
+    }
+  }
+  else {
+    if (vartype == search_var_instance_decl_c::located_vt)
+      s4o.print(SET_LOCATED);
+    else
+      s4o.print(SET_VAR);
+    s4o.print("(");
+  }
 
   if (fb_symbol != NULL) {
     print_variable_prefix();