Changeset 14236
- Timestamp:
- Nov 29, 2019 4:36:18 PM (12 days ago)
- Location:
- branches/dev-jk-2733/Compiler/ModelicaCBackEnd/src/jastadd/CCodeGen
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev-jk-2733/Compiler/ModelicaCBackEnd/src/jastadd/CCodeGen/CCodeGenBlocks.jrag
r13168 r14236 27 27 public CodePrinter AbstractEquationBlock.blockPrinter() { 28 28 return new CPrettyPrinter(this); 29 } 30 31 public void FClass.generateEquationBlocks_C(CodePrinter p, CodeStream str, String indent, String functionName) { 32 Collection<AbstractEquationBlock> blocks; 33 if (p.inInitialSystem()) { 34 blocks = myOptions().getBooleanOption("generate_ode") ? 35 getDAEInitBLT().getAllBlocks() : Collections.<AbstractEquationBlock>emptySet(); 36 } else { 37 blocks = !onlyInitBLT() && myOptions().getBooleanOption("generate_ode") ? 38 getDAEStructuredBLT().getAllBlocks() : Collections.<AbstractEquationBlock>emptySet(); 39 } 40 generateEquationBlocks_C(p, str, indent, functionName, blocks); 41 } 42 43 public void FClass.generateEquationBlocks_C(CodePrinter p, CodeStream str, String indent, String functionName, 44 Collection<AbstractEquationBlock> blocks) { 45 final String next = p.indent(indent); 46 47 CodeSplitter<AbstractEquationBlock> cs = new CodeSplitter<AbstractEquationBlock>(p, str, next, true, functionName, myOptions()) { 48 @Override 49 public void genDecl(AbstractEquationBlock element) { 50 element.genVarDecls(p, str, indent); 51 } 52 @Override 53 public void genPre(AbstractEquationBlock element) { 54 element.genReinitTempInits_C(p, str, indent); 55 } 56 @Override 57 public void gen(AbstractEquationBlock element) { 58 element.genSolvedInBLT(p, str, indent); 59 } 60 @Override 61 public void genPost(AbstractEquationBlock element) { 62 //element.genReinitWritebacks_C(p, indent, str); 63 } 64 }; 65 66 cs.add(blocks); 67 68 cs.genFuncImpls(); 69 70 cs.genFuncHeads(); 71 72 str.print("int " + functionName + "_base(jmi_t* jmi) {\n"); 73 cs.printStatusDecl(); 74 if (!p.inInitialSystem() && onlyInitBLT()) { 75 str.print(next + "ef = model_ode_initialize(jmi);\n"); 76 } else { 77 cs.genFuncCalls(); 78 } 79 cs.printStatusReturn(); 80 str.print("}\n"); 29 81 } 30 82 -
branches/dev-jk-2733/Compiler/ModelicaCBackEnd/src/jastadd/CCodeGen/CGenerator.jrag
r14004 r14236 707 707 CodePrinter p = ASTNode.printer_C; 708 708 String indent = ""; 709 String next = p.indent(indent); 710 711 CodeSplitter<AbstractEquationBlock> cs = new CodeSplitter<AbstractEquationBlock>(p, str, next, true, 712 "model_ode_derivatives", fclass.myOptions()) { 713 @Override 714 public void genDecl(AbstractEquationBlock element) { 715 element.genVarDecls(p, str, indent); 716 } 717 @Override 718 public void genPre(AbstractEquationBlock element) { 719 element.genReinitTempInits_C(p, str, indent); 720 } 721 @Override 722 public void gen(AbstractEquationBlock element) { 723 element.genSolvedInBLT(p, str, indent); 724 } 725 @Override 726 public void genPost(AbstractEquationBlock element) { 727 //element.genReinitWritebacks_C(p, indent, str); 728 } 729 }; 730 731 if (!fclass.onlyInitBLT() && fclass.myOptions().getBooleanOption("generate_ode")) { 732 cs.add(fclass.getDAEStructuredBLT().getAllBlocks()); 733 } 734 735 cs.genFuncImpls(); 736 737 cs.genFuncHeads(); 738 739 str.print("int model_ode_derivatives_base(jmi_t* jmi) {\n"); 740 cs.printStatusDecl(); 741 if (fclass.onlyInitBLT()) { 742 str.print(next + "ef = model_ode_initialize(jmi);\n"); 743 } else { 744 cs.genFuncCalls(); 745 } 746 cs.printStatusReturn(); 747 str.print("}\n"); 709 fclass.generateEquationBlocks_C(p, str, indent, "model_ode_derivatives"); 748 710 } 749 711 } … … 762 724 763 725 public void generate(CodeStream str) { 764 765 726 CodePrinter p = ASTNode.printer_C.initialSystemPrinter(); 766 727 String indent = ""; 767 String next = p.indent(indent); 768 769 CodeSplitter<AbstractEquationBlock> cs = new CodeSplitter<AbstractEquationBlock>(p, str, next, true, 770 "model_ode_initialize", fclass.myOptions()) { 771 @Override 772 public void genDecl(AbstractEquationBlock element) { 773 element.genVarDecls(p, str, indent); 774 } 775 @Override 776 public void genPre(AbstractEquationBlock element) { 777 element.genReinitTempInits_C(p, str, indent); 778 } 779 @Override 780 public void gen(AbstractEquationBlock element) { 781 element.genSolvedInBLT(p, str, indent); 782 } 783 @Override 784 public void genPost(AbstractEquationBlock element) { 785 //element.genReinitWritebacks_C(p, indent, str); 786 } 787 }; 788 789 if (fclass.myOptions().getBooleanOption("generate_ode")) { 790 cs.add(fclass.getDAEInitBLT()); 791 } 792 793 cs.genFuncImpls(); 794 795 cs.genFuncHeads(); 796 797 str.print("int model_ode_initialize_base(jmi_t* jmi) {\n"); 798 cs.printStatusDecl(); 799 cs.genFuncCalls(); 800 cs.printStatusReturn(); 801 str.print("}\n"); 728 fclass.generateEquationBlocks_C(p, str, indent, "model_ode_initialize"); 802 729 } 803 730 }
Note: See TracChangeset
for help on using the changeset viewer.