stage4/generate_c/generate_c_vardecl.cc
changeset 195 66d501d7b67d
parent 189 7ca02034c4f6
child 202 da1a8186f86f
equal deleted inserted replaced
194:e18690830555 195:66d501d7b67d
  1701 
  1701 
  1702 /*| global_var_name location */
  1702 /*| global_var_name location */
  1703 // SYM_REF2(global_var_spec_c, global_var_name, location)
  1703 // SYM_REF2(global_var_spec_c, global_var_name, location)
  1704 void *visit(global_var_spec_c *symbol) {
  1704 void *visit(global_var_spec_c *symbol) {
  1705   TRACE("global_var_spec_c");
  1705   TRACE("global_var_spec_c");
  1706 
       
  1707   /* now to produce the c equivalent... */
  1706   /* now to produce the c equivalent... */
  1708   switch(wanted_varformat) {
  1707   switch(wanted_varformat) {
  1709     case local_vf:
  1708     case local_vf:
  1710       s4o.print(s4o.indent_spaces);
  1709       s4o.print("extern ");
       
  1710       this->current_var_type_symbol->accept(*this);
       
  1711       s4o.print("* ");
       
  1712       symbol->location->accept(*this);
       
  1713       s4o.print(";\n");
  1711       if (symbol->global_var_name != NULL) {
  1714       if (symbol->global_var_name != NULL) {
  1712         s4o.print("extern ");
  1715         s4o.print(s4o.indent_spaces);
  1713         this->current_var_type_symbol->accept(*this);
       
  1714         s4o.print("* ");
       
  1715         symbol->location->accept(*this);
       
  1716         s4o.print(";\n");
       
  1717         this->current_var_type_symbol->accept(*this);
  1716         this->current_var_type_symbol->accept(*this);
  1718         s4o.print(" *");
  1717         s4o.print(" *");
  1719         if (this->resource_name != NULL) {
  1718         if (this->resource_name != NULL) {
  1720             this->resource_name->accept(*this);
  1719             this->resource_name->accept(*this);
  1721             s4o.print("__");
  1720             s4o.print("__");
  1722         }
  1721         }
  1723         symbol->global_var_name->accept(*this);
  1722         symbol->global_var_name->accept(*this);
  1724         s4o.print(";\n");
  1723         s4o.print(";\n");
  1725         if (this->resource_name != NULL) {
  1724         if (this->resource_name != NULL) {
       
  1725             s4o.print(s4o.indent_spaces);
  1726             s4o.print("#define ");
  1726             s4o.print("#define ");
  1727             symbol->global_var_name->accept(*this);
  1727             symbol->global_var_name->accept(*this);
  1728             s4o.print(" ");
  1728             s4o.print(" ");
  1729             this->resource_name->accept(*this);
  1729             this->resource_name->accept(*this);
  1730             s4o.print("__");
  1730             s4o.print("__");