stage4/generate_c/generate_c.cc
changeset 860 7669a8d43c11
parent 856 d80971552535
child 864 300c27c08753
equal deleted inserted replaced
859:41d11bacfc9b 860:7669a8d43c11
   659       arrayname_im,
   659       arrayname_im,
   660       arraydeclaration_im
   660       arraydeclaration_im
   661     } inlinearray_mode_t;
   661     } inlinearray_mode_t;
   662 
   662 
   663   private:
   663   private:
   664     stage4out_c *s4o_ptr;
       
   665     std::map<std::string, int> inline_array_defined;
   664     std::map<std::string, int> inline_array_defined;
   666     std::string current_array_name;
   665     std::string current_array_name;
   667     inlinearray_mode_t current_mode;
   666     inlinearray_mode_t current_mode;
   668 
   667 
   669   public:
   668   public:
   670     generate_c_datatypes_c(stage4out_c *s4o_ptr, stage4out_c *s4o_incl_ptr)
   669     generate_c_datatypes_c(stage4out_c *s4o_ptr, stage4out_c *s4o_incl_ptr)
   671       : generate_c_typedecl_c(s4o_ptr, s4o_incl_ptr) {
   670       : generate_c_typedecl_c(s4o_incl_ptr) {
   672       generate_c_datatypes_c::s4o_ptr = s4o_ptr;
       
   673       current_mode = none_im;
   671       current_mode = none_im;
   674     };
   672     };
   675     virtual ~generate_c_datatypes_c(void) {
   673     virtual ~generate_c_datatypes_c(void) {
   676       while (!inline_array_defined.empty()) {
   674       while (!inline_array_defined.empty()) {
   677         inline_array_defined.erase(inline_array_defined.begin());
   675         inline_array_defined.erase(inline_array_defined.begin());
  1093 /***********************************************************************/
  1091 /***********************************************************************/
  1094 /***********************************************************************/
  1092 /***********************************************************************/
  1095 /***********************************************************************/
  1093 /***********************************************************************/
  1096 
  1094 
  1097 
  1095 
  1098 class generate_c_pous_c: public generate_c_typedecl_c {
  1096 class generate_c_pous_c: public generate_c_base_c {
  1099   private:
  1097   private:
  1100     stage4out_c *s4o_ptr;
  1098     stage4out_c &s4o_incl;
  1101     
  1099     
  1102   public:
  1100   public:
  1103     generate_c_pous_c(stage4out_c *s4o_ptr, stage4out_c *s4o_incl_ptr)
  1101     generate_c_pous_c(stage4out_c *s4o_ptr, stage4out_c *s4o_incl_ptr)
  1104       : generate_c_typedecl_c(s4o_ptr, s4o_incl_ptr) {
  1102       : generate_c_base_c(s4o_ptr), s4o_incl(*s4o_incl_ptr) {
  1105       generate_c_pous_c::s4o_ptr = s4o_ptr;
       
  1106     };
  1103     };
  1107     virtual ~generate_c_pous_c(void) {}
  1104     virtual ~generate_c_pous_c(void) {}
  1108 
  1105 
  1109   private:
  1106   private:
  1110     void print_end_of_block_label(void) {
  1107     void print_end_of_block_label(void) {
  1134 
  1131 
  1135   public:
  1132   public:
  1136 /********************/
  1133 /********************/
  1137 /* 2.1.6 - Pragmas  */
  1134 /* 2.1.6 - Pragmas  */
  1138 /********************/
  1135 /********************/
  1139 void *visit(enable_code_generation_pragma_c * symbol)   {s4o_ptr->enable_output();  return NULL;}
  1136 void *visit(enable_code_generation_pragma_c * symbol)   {s4o.enable_output();  return NULL;}
  1140 void *visit(disable_code_generation_pragma_c * symbol)  {s4o_ptr->disable_output(); return NULL;} 
  1137 void *visit(disable_code_generation_pragma_c * symbol)  {s4o.disable_output(); return NULL;} 
  1141 
  1138 
  1142 /*************************/
  1139 /*************************/
  1143 /* B.1 - Common elements */
  1140 /* B.1 - Common elements */
  1144 /*************************/
  1141 /*************************/
  1145 /*******************************************/
  1142 /*******************************************/
  1697 /***********************************************************************/
  1694 /***********************************************************************/
  1698 /***********************************************************************/
  1695 /***********************************************************************/
  1699 /***********************************************************************/
  1696 /***********************************************************************/
  1700 /***********************************************************************/
  1697 /***********************************************************************/
  1701 
  1698 
  1702 class generate_c_config_c: public generate_c_typedecl_c {
  1699 class generate_c_config_c: public generate_c_base_c {
  1703     private:
  1700     private:
  1704     stage4out_c *s4o_ptr;
  1701     stage4out_c &s4o_incl;
  1705     stage4out_c *s4o_incl_ptr;
       
  1706     
  1702     
  1707     public:
  1703     public:
  1708     generate_c_config_c(stage4out_c *s4o_ptr, stage4out_c *s4o_incl_ptr)
  1704     generate_c_config_c(stage4out_c *s4o_ptr, stage4out_c *s4o_incl_ptr)
  1709       : generate_c_typedecl_c(s4o_ptr, s4o_incl_ptr) {
  1705       : generate_c_base_c(s4o_ptr), s4o_incl(*s4o_incl_ptr) {
  1710       generate_c_config_c::s4o_ptr = s4o_ptr;
       
  1711       generate_c_config_c::s4o_incl_ptr = s4o_incl_ptr;
       
  1712     };
  1706     };
  1713 
  1707 
  1714     virtual ~generate_c_config_c(void) {}
  1708     virtual ~generate_c_config_c(void) {}
  1715 
  1709 
  1716     typedef enum {
  1710     typedef enum {
  1726 public:
  1720 public:
  1727 /********************/
  1721 /********************/
  1728 /* 2.1.6 - Pragmas  */
  1722 /* 2.1.6 - Pragmas  */
  1729 /********************/
  1723 /********************/
  1730 void *visit(enable_code_generation_pragma_c * symbol)   {
  1724 void *visit(enable_code_generation_pragma_c * symbol)   {
  1731     s4o_ptr->enable_output();
  1725     s4o.enable_output();
  1732     s4o_incl_ptr->enable_output();
  1726     s4o_incl.enable_output();
  1733     return NULL;
  1727     return NULL;
  1734 }
  1728 }
  1735 
  1729 
  1736 void *visit(disable_code_generation_pragma_c * symbol)  {
  1730 void *visit(disable_code_generation_pragma_c * symbol)  {
  1737     s4o_ptr->disable_output();
  1731     s4o.disable_output();
  1738     s4o_incl_ptr->disable_output();    
  1732     s4o_incl.disable_output();    
  1739     return NULL;
  1733     return NULL;
  1740 }
  1734 }
  1741     
  1735     
  1742     
  1736     
  1743 /********************************/
  1737 /********************************/