stage4/generate_c/generate_c.cc
changeset 234 e4d31cd0e6d8
parent 231 b8527b0abe75
child 237 cece842c7417
equal deleted inserted replaced
233:3d23a68183d3 234:e4d31cd0e6d8
   637 //SYM_REF4(function_block_declaration_c, fblock_name, var_declarations, fblock_body, unused)
   637 //SYM_REF4(function_block_declaration_c, fblock_name, var_declarations, fblock_body, unused)
   638 void *visit(function_block_declaration_c *symbol) {
   638 void *visit(function_block_declaration_c *symbol) {
   639   generate_c_vardecl_c *vardecl;
   639   generate_c_vardecl_c *vardecl;
   640   generate_c_sfcdecl_c *sfcdecl;
   640   generate_c_sfcdecl_c *sfcdecl;
   641   generate_c_typedecl_c *typedecl;
   641   generate_c_typedecl_c *typedecl;
       
   642   generate_c_inlinefcall_c *inlinedecl;
   642   TRACE("function_block_declaration_c");
   643   TRACE("function_block_declaration_c");
   643 
   644 
   644   /* (A) Function Block data structure declaration... */
   645   /* (A) Function Block data structure declaration... */
   645   typedecl = new generate_c_typedecl_c(&s4o_incl);
   646   typedecl = new generate_c_typedecl_c(&s4o_incl);
   646   /* (A.1) Data structure declaration */
   647   /* (A.1) Data structure declaration */
   684   symbol->fblock_name->accept(*typedecl);
   685   symbol->fblock_name->accept(*typedecl);
   685   s4o_incl.print(";\n\n");
   686   s4o_incl.print(";\n\n");
   686   delete typedecl;
   687   delete typedecl;
   687 
   688 
   688   /* (A.6) Function Block inline function declaration for function invocation */
   689   /* (A.6) Function Block inline function declaration for function invocation */
   689   generate_c_inlinefcall_c inline_decl(&s4o, symbol->fblock_name, symbol, FB_FUNCTION_PARAM"->");
   690   inlinedecl = new generate_c_inlinefcall_c(&s4o, symbol->fblock_name, symbol, FB_FUNCTION_PARAM"->");
   690   symbol->fblock_body->accept(inline_decl);
   691   inlinedecl->print(symbol->fblock_body);
       
   692   delete inlinedecl;
   691 
   693 
   692   /* (B) Constructor */
   694   /* (B) Constructor */
   693   /* (B.1) Constructor name... */
   695   /* (B.1) Constructor name... */
   694   s4o.print(s4o.indent_spaces + "void ");
   696   s4o.print(s4o.indent_spaces + "void ");
   695   symbol->fblock_name->accept(*this);
   697   symbol->fblock_name->accept(*this);
   828 //SYM_REF4(program_declaration_c, program_type_name, var_declarations, function_block_body, unused)
   830 //SYM_REF4(program_declaration_c, program_type_name, var_declarations, function_block_body, unused)
   829 void *visit(program_declaration_c *symbol) {
   831 void *visit(program_declaration_c *symbol) {
   830   generate_c_vardecl_c *vardecl;
   832   generate_c_vardecl_c *vardecl;
   831   generate_c_sfcdecl_c *sfcdecl;
   833   generate_c_sfcdecl_c *sfcdecl;
   832   generate_c_typedecl_c *typedecl;
   834   generate_c_typedecl_c *typedecl;
       
   835   generate_c_inlinefcall_c *inlinedecl;
   833   TRACE("program_declaration_c");
   836   TRACE("program_declaration_c");
   834 
   837 
   835   /* (A) Program data structure declaration... */
   838   /* (A) Program data structure declaration... */
   836   typedecl = new generate_c_typedecl_c(&s4o_incl);
   839   typedecl = new generate_c_typedecl_c(&s4o_incl);
   837   /* (A.1) Data structure declaration */
   840   /* (A.1) Data structure declaration */
   872   symbol->program_type_name->accept(*typedecl);
   875   symbol->program_type_name->accept(*typedecl);
   873   s4o_incl.print(";\n\n");
   876   s4o_incl.print(";\n\n");
   874   delete typedecl;
   877   delete typedecl;
   875 
   878 
   876   /* (A.6) Function Block inline function declaration for function invocation */
   879   /* (A.6) Function Block inline function declaration for function invocation */
   877   generate_c_inlinefcall_c inline_decl(&s4o, symbol->program_type_name, symbol, FB_FUNCTION_PARAM"->");
   880   inlinedecl = new generate_c_inlinefcall_c(&s4o, symbol->program_type_name, symbol, FB_FUNCTION_PARAM"->");
   878   symbol->function_block_body->accept(inline_decl);
   881   inlinedecl->print(symbol->function_block_body);
       
   882   delete inlinedecl;
   879 
   883 
   880   /* (B) Constructor */
   884   /* (B) Constructor */
   881   /* (B.1) Constructor name... */
   885   /* (B.1) Constructor name... */
   882   s4o.print(s4o.indent_spaces + "void ");
   886   s4o.print(s4o.indent_spaces + "void ");
   883   symbol->program_type_name->accept(*this);
   887   symbol->program_type_name->accept(*this);