672 generate_c_vardecl_c::external_vt); |
672 generate_c_vardecl_c::external_vt); |
673 vardecl->print(symbol->var_declarations); |
673 vardecl->print(symbol->var_declarations); |
674 delete vardecl; |
674 delete vardecl; |
675 |
675 |
676 /* (A.4) Generate private internal variables for SFC */ |
676 /* (A.4) Generate private internal variables for SFC */ |
677 sfcdecl = new generate_c_sfcdecl_c(&s4o_incl, generate_c_sfcdecl_c::sfcdecl_sd); |
677 sfcdecl = new generate_c_sfcdecl_c(&s4o_incl, symbol); |
678 sfcdecl->print(symbol->fblock_body); |
678 sfcdecl->generate(symbol->fblock_body, generate_c_sfcdecl_c::sfcdecl_sd); |
679 delete sfcdecl; |
679 delete sfcdecl; |
680 s4o_incl.print("\n"); |
680 s4o_incl.print("\n"); |
681 |
681 |
682 /* (A.5) Function Block data structure type name. */ |
682 /* (A.5) Function Block data structure type name. */ |
683 s4o_incl.indent_left(); |
683 s4o_incl.indent_left(); |
684 s4o_incl.print("} "); |
684 s4o_incl.print("} "); |
685 symbol->fblock_name->accept(*typedecl); |
685 symbol->fblock_name->accept(*typedecl); |
686 s4o_incl.print(";\n\n"); |
686 s4o_incl.print(";\n\n"); |
718 generate_c_vardecl_c::en_vt | |
718 generate_c_vardecl_c::en_vt | |
719 generate_c_vardecl_c::eno_vt); |
719 generate_c_vardecl_c::eno_vt); |
720 vardecl->print(symbol->var_declarations, NULL, FB_FUNCTION_PARAM"->"); |
720 vardecl->print(symbol->var_declarations, NULL, FB_FUNCTION_PARAM"->"); |
721 delete vardecl; |
721 delete vardecl; |
722 s4o.print("\n"); |
722 s4o.print("\n"); |
|
723 |
|
724 sfcdecl = new generate_c_sfcdecl_c(&s4o, symbol, FB_FUNCTION_PARAM"->"); |
|
725 |
723 /* (B.3) Generate private internal variables for SFC */ |
726 /* (B.3) Generate private internal variables for SFC */ |
724 sfcdecl = new generate_c_sfcdecl_c(&s4o, generate_c_sfcdecl_c::sfcinit_sd); |
727 sfcdecl->generate(symbol->fblock_body, generate_c_sfcdecl_c::sfcinit_sd); |
725 sfcdecl->print(symbol->fblock_body, FB_FUNCTION_PARAM"->"); |
728 |
726 delete sfcdecl; |
|
727 s4o.indent_left(); |
729 s4o.indent_left(); |
728 s4o.print(s4o.indent_spaces + "}\n\n"); |
730 s4o.print(s4o.indent_spaces + "}\n\n"); |
729 |
731 |
730 |
732 |
731 /* (C) Function with FB body */ |
733 /* (C) Function with FB body */ |
732 /* (C.1) Step definitions */ |
734 /* (C.1) Step definitions */ |
733 sfcdecl = new generate_c_sfcdecl_c(&s4o, generate_c_sfcdecl_c::stepdef_sd); |
735 sfcdecl->generate(symbol->fblock_body, generate_c_sfcdecl_c::stepdef_sd); |
734 sfcdecl->print(symbol->fblock_body); |
|
735 delete sfcdecl; |
|
736 |
736 |
737 /* (C.2) Action definitions */ |
737 /* (C.2) Action definitions */ |
738 sfcdecl = new generate_c_sfcdecl_c(&s4o, generate_c_sfcdecl_c::actiondef_sd); |
738 sfcdecl->generate(symbol->fblock_body, generate_c_sfcdecl_c::actiondef_sd); |
739 sfcdecl->print(symbol->fblock_body); |
739 |
740 delete sfcdecl; |
|
741 |
|
742 /* (C.3) Function declaration */ |
740 /* (C.3) Function declaration */ |
743 s4o.print("// Code part\n"); |
741 s4o.print("// Code part\n"); |
744 /* function interface */ |
742 /* function interface */ |
745 s4o.print("void "); |
743 s4o.print("void "); |
746 symbol->fblock_name->accept(*this); |
744 symbol->fblock_name->accept(*this); |
796 symbol->fblock_name->accept(*this); |
794 symbol->fblock_name->accept(*this); |
797 s4o.print(FB_FUNCTION_SUFFIX); |
795 s4o.print(FB_FUNCTION_SUFFIX); |
798 s4o.print(s4o.indent_spaces + "() \n\n"); |
796 s4o.print(s4o.indent_spaces + "() \n\n"); |
799 |
797 |
800 /* (C.6) Step undefinitions */ |
798 /* (C.6) Step undefinitions */ |
801 sfcdecl = new generate_c_sfcdecl_c(&s4o, generate_c_sfcdecl_c::stepundef_sd); |
799 sfcdecl->generate(symbol->fblock_body, generate_c_sfcdecl_c::stepundef_sd); |
802 sfcdecl->print(symbol->fblock_body); |
800 |
803 delete sfcdecl; |
|
804 |
|
805 /* (C.7) Action undefinitions */ |
801 /* (C.7) Action undefinitions */ |
806 sfcdecl = new generate_c_sfcdecl_c(&s4o, generate_c_sfcdecl_c::actionundef_sd); |
802 sfcdecl->generate(symbol->fblock_body, generate_c_sfcdecl_c::actionundef_sd); |
807 sfcdecl->print(symbol->fblock_body); |
803 |
808 delete sfcdecl; |
804 delete sfcdecl; |
809 |
805 |
810 s4o.indent_left(); |
806 s4o.indent_left(); |
811 s4o.print("\n\n\n\n"); |
807 s4o.print("\n\n\n\n"); |
812 |
808 |
862 generate_c_vardecl_c::private_vt | |
858 generate_c_vardecl_c::private_vt | |
863 generate_c_vardecl_c::located_vt | |
859 generate_c_vardecl_c::located_vt | |
864 generate_c_vardecl_c::external_vt); |
860 generate_c_vardecl_c::external_vt); |
865 vardecl->print(symbol->var_declarations); |
861 vardecl->print(symbol->var_declarations); |
866 delete vardecl; |
862 delete vardecl; |
|
863 |
867 /* (A.4) Generate private internal variables for SFC */ |
864 /* (A.4) Generate private internal variables for SFC */ |
868 sfcdecl = new generate_c_sfcdecl_c(&s4o_incl, generate_c_sfcdecl_c::sfcdecl_sd); |
865 sfcdecl = new generate_c_sfcdecl_c(&s4o_incl, symbol); |
869 sfcdecl->print(symbol->function_block_body); |
866 sfcdecl->generate(symbol->function_block_body, generate_c_sfcdecl_c::sfcdecl_sd); |
870 delete sfcdecl; |
867 delete sfcdecl; |
|
868 s4o_incl.print("\n"); |
871 |
869 |
872 /* (A.5) Program data structure type name. */ |
870 /* (A.5) Program data structure type name. */ |
873 s4o_incl.indent_left(); |
871 s4o_incl.indent_left(); |
874 s4o_incl.print("} "); |
872 s4o_incl.print("} "); |
875 symbol->program_type_name->accept(*typedecl); |
873 symbol->program_type_name->accept(*typedecl); |
906 generate_c_vardecl_c::located_vt | |
904 generate_c_vardecl_c::located_vt | |
907 generate_c_vardecl_c::external_vt); |
905 generate_c_vardecl_c::external_vt); |
908 vardecl->print(symbol->var_declarations, NULL, FB_FUNCTION_PARAM"->"); |
906 vardecl->print(symbol->var_declarations, NULL, FB_FUNCTION_PARAM"->"); |
909 delete vardecl; |
907 delete vardecl; |
910 s4o.print("\n"); |
908 s4o.print("\n"); |
|
909 |
|
910 sfcdecl = new generate_c_sfcdecl_c(&s4o, symbol, FB_FUNCTION_PARAM"->"); |
|
911 |
911 /* (B.3) Generate private internal variables for SFC */ |
912 /* (B.3) Generate private internal variables for SFC */ |
912 sfcdecl = new generate_c_sfcdecl_c(&s4o, generate_c_sfcdecl_c::sfcinit_sd); |
913 sfcdecl->generate(symbol->function_block_body, generate_c_sfcdecl_c::sfcinit_sd); |
913 sfcdecl->print(symbol->function_block_body,FB_FUNCTION_PARAM"->"); |
|
914 delete sfcdecl; |
|
915 |
914 |
916 s4o.indent_left(); |
915 s4o.indent_left(); |
917 s4o.print(s4o.indent_spaces + "}\n\n"); |
916 s4o.print(s4o.indent_spaces + "}\n\n"); |
918 |
917 |
919 /* (C) Function with PROGRAM body */ |
918 /* (C) Function with PROGRAM body */ |
920 /* (C.1) Step definitions */ |
919 /* (C.1) Step definitions */ |
921 sfcdecl = new generate_c_sfcdecl_c(&s4o, generate_c_sfcdecl_c::stepdef_sd); |
920 sfcdecl->generate(symbol->function_block_body, generate_c_sfcdecl_c::stepdef_sd); |
922 sfcdecl->print(symbol->function_block_body); |
|
923 delete sfcdecl; |
|
924 |
921 |
925 /* (C.2) Action definitions */ |
922 /* (C.2) Action definitions */ |
926 sfcdecl = new generate_c_sfcdecl_c(&s4o, generate_c_sfcdecl_c::actiondef_sd); |
923 sfcdecl->generate(symbol->function_block_body, generate_c_sfcdecl_c::actiondef_sd); |
927 sfcdecl->print(symbol->function_block_body); |
|
928 delete sfcdecl; |
|
929 |
924 |
930 /* (C.3) Function declaration */ |
925 /* (C.3) Function declaration */ |
931 s4o.print("// Code part\n"); |
926 s4o.print("// Code part\n"); |
932 /* function interface */ |
927 /* function interface */ |
933 s4o.print("void "); |
928 s4o.print("void "); |
959 symbol->program_type_name->accept(*this); |
954 symbol->program_type_name->accept(*this); |
960 s4o.print(FB_FUNCTION_SUFFIX); |
955 s4o.print(FB_FUNCTION_SUFFIX); |
961 s4o.print(s4o.indent_spaces + "() \n\n"); |
956 s4o.print(s4o.indent_spaces + "() \n\n"); |
962 |
957 |
963 /* (C.6) Step undefinitions */ |
958 /* (C.6) Step undefinitions */ |
964 sfcdecl = new generate_c_sfcdecl_c(&s4o, generate_c_sfcdecl_c::stepundef_sd); |
959 sfcdecl->generate(symbol->function_block_body, generate_c_sfcdecl_c::stepundef_sd); |
965 sfcdecl->print(symbol->function_block_body); |
960 |
|
961 /* (C.7) Action undefinitions */ |
|
962 sfcdecl->generate(symbol->function_block_body, generate_c_sfcdecl_c::actionundef_sd); |
|
963 |
966 delete sfcdecl; |
964 delete sfcdecl; |
967 |
965 |
968 /* (C.7) Action undefinitions */ |
|
969 sfcdecl = new generate_c_sfcdecl_c(&s4o, generate_c_sfcdecl_c::actionundef_sd); |
|
970 sfcdecl->print(symbol->function_block_body); |
|
971 delete sfcdecl; |
|
972 |
|
973 s4o.indent_left(); |
966 s4o.indent_left(); |
974 s4o.print("\n\n\n\n"); |
967 s4o.print("\n\n\n\n"); |
975 |
968 |
976 return NULL; |
969 return NULL; |
977 } |
970 } |