--- 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();