Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
- Fix FMU export (compile the XML-files into the binary)


git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@16498 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
sjoelund committed Jun 26, 2013
1 parent 44acf02 commit 13b5428
Show file tree
Hide file tree
Showing 9 changed files with 184 additions and 111 deletions.
2 changes: 1 addition & 1 deletion Compiler/BackEnd/SimCodeMain.mo
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,7 @@ algorithm

case (_,"C")
equation
Tpl.tplNoret2(SimCodeDump.dumpSimCode, simCode, false);
Tpl.tplNoret2(SimCodeDump.dumpSimCodeToC, simCode, false);
Tpl.tplNoret(CodegenFMU.translateModel, simCode);
then ();
case (_,"Cpp")
Expand Down
11 changes: 9 additions & 2 deletions Compiler/Template/CodegenC.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -275,6 +275,13 @@ template populateModelInfo(ModelInfo modelInfo, String fileNamePrefix, String gu
data->modelData.modelFilePrefix = "<%fileNamePrefix%>";
data->modelData.modelDir = "<%directory%>";
data->modelData.modelGUID = "{<%guid%>}";
#ifdef OPENMODELICA_XML_FROM_FILE_AT_RUNTIME
data->modelData.initXMLData = NULL;
data->modelData.modelDataXml.infoXMLData = NULL;
#else
#include "<%fileNamePrefix%>_init.c"
#include "<%fileNamePrefix%>_info.c"
#endif

data->modelData.nStates = <%varInfo.numStateVars%>;
data->modelData.nVariablesReal = 2*<%varInfo.numStateVars%>+<%varInfo.numAlgVars%>;
Expand Down Expand Up @@ -3059,7 +3066,7 @@ case SIMCODE(modelInfo=MODELINFO(__), makefileParams=MAKEFILE_PARAMS(__), simula
# /I - Include Directories
# /DNOMINMAX - Define NOMINMAX (does what it says)
# /TP - Use C++ Compiler
CFLAGS=/Od /ZI /EHa /fp:except /I"<%makefileParams.omhome%>/include/omc" /I. /DNOMINMAX /TP /DNO_INTERACTIVE_DEPENDENCY
CFLAGS=/Od /ZI /EHa /fp:except /I"<%makefileParams.omhome%>/include/omc" /I. /DNOMINMAX /TP /DNO_INTERACTIVE_DEPENDENCY /DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME

# /ZI enable Edit and Continue debug info
CDFLAGS = /ZI
Expand Down Expand Up @@ -3108,7 +3115,7 @@ case SIMCODE(modelInfo=MODELINFO(__), makefileParams=MAKEFILE_PARAMS(__), simula
DLLEXT=<%makefileParams.dllext%>
CFLAGS_BASED_ON_INIT_FILE=<%extraCflags%>
CFLAGS=$(CFLAGS_BASED_ON_INIT_FILE) <%makefileParams.cflags%> <%match sopt case SOME(s as SIMULATION_SETTINGS(__)) then s.cflags /* From the simulate() command */%>
CPPFLAGS=-I"<%makefileParams.omhome%>/include/omc" -I. <%dirExtra%> <%makefileParams.includes ; separator=" "%>
CPPFLAGS=-I"<%makefileParams.omhome%>/include/omc" -I. <%dirExtra%> <%makefileParams.includes ; separator=" "%> -DOPENMODELICA_XML_FROM_FILE_AT_RUNTIME
LIBSIMULATIONRUNTIMEC=<% if boolAnd(boolNot(stringEq(os(), "OSX")), boolOr(acceptMetaModelicaGrammar(), Flags.isSet(Flags.GEN_DEBUG_SYMBOLS))) then "-Wl,-whole-archive "%>-lSimulationRuntimeC <% if boolAnd(boolNot(stringEq(os(), "OSX")), boolOr(acceptMetaModelicaGrammar(), Flags.isSet(Flags.GEN_DEBUG_SYMBOLS))) then " -Wl,-no-whole-archive"%> <% if stringEq(makefileParams.platform, "win32") then "" else " -ldl"%>
LDFLAGS=-L"<%makefileParams.omhome%>/lib/omc" -Wl,<% if stringEq(makefileParams.platform, "win32") then "--stack,0x2000000,"%>-rpath,'<%makefileParams.omhome%>/lib/omc' $(LIBSIMULATIONRUNTIMEC) -linteractive <%ParModelicaLibs%> <%makefileParams.ldflags%> <%makefileParams.runtimelibs%> <%match System.os() case "OSX" then "-lf2c" else "-Wl,-Bstatic -lf2c -Wl,-Bdynamic"%>
PERL=perl
Expand Down
122 changes: 65 additions & 57 deletions Compiler/Template/CodegenFMU.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,20 @@ case SIMCODE(modelInfo=modelInfo as MODELINFO(__)) then
let()= textFile(recordsFile(fileNamePrefix, recordDecls), '<%fileNamePrefix%>_records.c')
let()= textFile(simulationHeaderFile(simCode,guid), '<%fileNamePrefix%>_model.h')
let()= textFile(simulationFile(simCode,guid), '<%fileNamePrefix%>.c')
let()= textFile(simulationInitFile(simCode,guid), '<%fileNamePrefix%>_init.xml')
let()= textFile(simulationInitFileCString(simulationInitFile(simCode,guid)), '<%fileNamePrefix%>_init.c')
let()= textFile(fmumodel_identifierFile(simCode,guid), '<%fileNamePrefix%>_FMU.c')
let()= textFile(fmuModelDescriptionFile(simCode,guid), 'modelDescription.xml')
let()= textFile(fmudeffile(simCode), '<%fileNamePrefix%>.def')
let()= textFile(fmuMakefile(target,simCode), '<%fileNamePrefix%>_FMU.makefile')
"" // Return empty result since result written to files directly
end translateModel;

template simulationInitFileCString(Text text)
::=
<<
data->modelData.initXMLData = "<%Util.escapeModelicaStringToCString(text)%>";
>>
end simulationInitFileCString;

template fmuModelDescriptionFile(SimCode simCode, String guid)
"Generates code for ModelDescription file for FMU target."
Expand Down Expand Up @@ -981,60 +987,61 @@ end SwitchAliasVarsSet;
template getPlatformString2(String platform, String fileNamePrefix, String dirExtra, String libsPos1, String libsPos2, String omhome)
"returns compilation commands for the platform. "
::=
let fmudirname = '<%fileNamePrefix%>.fmutmp'
match platform
case "win32" then
<<
<%fileNamePrefix%>_FMU: <%fileNamePrefix%>.def <%fileNamePrefix%>.dll
<%\t%> dlltool -d <%fileNamePrefix%>.def --dllname <%fileNamePrefix%>.dll --output-lib <%fileNamePrefix%>.lib --kill-at

<%\t%> cp <%fileNamePrefix%>.dll <%fileNamePrefix%>/binaries/<%platform%>/
<%\t%> cp <%fileNamePrefix%>.lib <%fileNamePrefix%>/binaries/<%platform%>/
<%\t%> cp <%fileNamePrefix%>.c <%fileNamePrefix%>/sources/<%fileNamePrefix%>.c
<%\t%> cp <%fileNamePrefix%>_model.h <%fileNamePrefix%>/sources/<%fileNamePrefix%>_model.h
<%\t%> cp <%fileNamePrefix%>_FMU.c <%fileNamePrefix%>/sources/<%fileNamePrefix%>_FMU.c
<%\t%> cp <%fileNamePrefix%>_info.xml <%fileNamePrefix%>/sources/<%fileNamePrefix%>_info.xml
<%\t%> cp <%fileNamePrefix%>_init.xml <%fileNamePrefix%>/sources/<%fileNamePrefix%>_init.xml
<%\t%> cp <%fileNamePrefix%>_functions.c <%fileNamePrefix%>/sources/<%fileNamePrefix%>_functions.c
<%\t%> cp <%fileNamePrefix%>_functions.h <%fileNamePrefix%>/sources/<%fileNamePrefix%>_functions.h
<%\t%> cp <%fileNamePrefix%>_records.c <%fileNamePrefix%>/sources/<%fileNamePrefix%>_records.c
<%\t%> cp modelDescription.xml <%fileNamePrefix%>/modelDescription.xml
<%\t%> cp <%omhome%>/lib/omc/libexec/gnuplot/binary/libexpat-1.dll <%fileNamePrefix%>/binaries/<%platform%>/
<%\t%> cd <%fileNamePrefix%>&& rm -f ../<%fileNamePrefix%>.fmu&& zip -r ../<%fileNamePrefix%>.fmu *
<%\t%> rm -rf <%fileNamePrefix%>
<%\t%> cp <%fileNamePrefix%>.dll <%fmudirname%>/binaries/<%platform%>/
<%\t%> cp <%fileNamePrefix%>.lib <%fmudirname%>/binaries/<%platform%>/
<%\t%> cp <%fileNamePrefix%>.c <%fmudirname%>/sources/<%fileNamePrefix%>.c
<%\t%> cp <%fileNamePrefix%>_model.h <%fmudirname%>/sources/<%fileNamePrefix%>_model.h
<%\t%> cp <%fileNamePrefix%>_FMU.c <%fmudirname%>/sources/<%fileNamePrefix%>_FMU.c
<%\t%> cp <%fileNamePrefix%>_info.c <%fmudirname%>/sources/<%fileNamePrefix%>_info.c
<%\t%> cp <%fileNamePrefix%>_init.c <%fmudirname%>/sources/<%fileNamePrefix%>_init.c
<%\t%> cp <%fileNamePrefix%>_functions.c <%fmudirname%>/sources/<%fileNamePrefix%>_functions.c
<%\t%> cp <%fileNamePrefix%>_functions.h <%fmudirname%>/sources/<%fileNamePrefix%>_functions.h
<%\t%> cp <%fileNamePrefix%>_records.c <%fmudirname%>/sources/<%fileNamePrefix%>_records.c
<%\t%> cp modelDescription.xml <%fmudirname%>/modelDescription.xml
<%\t%> cp <%omhome%>/lib/omc/libexec/gnuplot/binary/libexpat-1.dll <%fmudirname%>/binaries/<%platform%>/
<%\t%> cd <%fmudirname%>&& rm -f ../<%fileNamePrefix%>.fmu&& zip -r ../<%fileNamePrefix%>.fmu *
<%\t%> rm -rf <%fmudirname%>
<%\t%> rm -f <%fileNamePrefix%>.def <%fileNamePrefix%>.o <%fileNamePrefix%>_FMU.libs <%fileNamePrefix%>_FMU.makefile <%fileNamePrefix%>_FMU.o <%fileNamePrefix%>_records.o

<%fileNamePrefix%>.dll: clean <%fileNamePrefix%>_FMU.o <%fileNamePrefix%>.o <%fileNamePrefix%>_records.o
<%\t%> $(CXX) -shared -I. -o <%fileNamePrefix%>.dll <%fileNamePrefix%>_FMU.o <%fileNamePrefix%>.o <%fileNamePrefix%>_records.o $(CPPFLAGS) <%dirExtra%> <%libsPos1%> <%libsPos2%> $(CFLAGS) $(LDFLAGS) <%match System.os() case "OSX" then "-lf2c" else "-Wl,-Bstatic -lf2c -Wl,-Bdynamic"%> -Wl,--kill-at

<%\t%> "mkdir.exe" -p <%fileNamePrefix%>
<%\t%> "mkdir.exe" -p <%fileNamePrefix%>/binaries
<%\t%> "mkdir.exe" -p <%fileNamePrefix%>/binaries/<%platform%>
<%\t%> "mkdir.exe" -p <%fileNamePrefix%>/sources
<%\t%> "mkdir.exe" -p <%fmudirname%>
<%\t%> "mkdir.exe" -p <%fmudirname%>/binaries
<%\t%> "mkdir.exe" -p <%fmudirname%>/binaries/<%platform%>
<%\t%> "mkdir.exe" -p <%fmudirname%>/sources
>>
else
<<
<%fileNamePrefix%>_FMU: <%fileNamePrefix%>_FMU.o <%fileNamePrefix%>.o <%fileNamePrefix%>_records.o
<%\t%> $(CXX) -shared -I. -o <%fileNamePrefix%>$(DLLEXT) <%fileNamePrefix%>_FMU.o <%fileNamePrefix%>.o <%fileNamePrefix%>_records.o $(CPPFLAGS) <%dirExtra%> <%libsPos1%> <%libsPos2%> $(CFLAGS) $(LDFLAGS) <%match System.os() case "OSX" then "-lf2c" else "-Wl,-Bstatic -lf2c -Wl,-Bdynamic"%>

<%\t%> mkdir -p <%fileNamePrefix%>
<%\t%> mkdir -p <%fileNamePrefix%>/binaries

<%\t%> mkdir -p <%fileNamePrefix%>/binaries/$(PLATFORM)
<%\t%> mkdir -p <%fileNamePrefix%>/sources

<%\t%> cp <%fileNamePrefix%>$(DLLEXT) <%fileNamePrefix%>/binaries/$(PLATFORM)/
<%\t%> cp <%fileNamePrefix%>_FMU.libs <%fileNamePrefix%>/binaries/$(PLATFORM)/
<%\t%> cp <%fileNamePrefix%>.c <%fileNamePrefix%>/sources/<%fileNamePrefix%>.c
<%\t%> cp <%fileNamePrefix%>_model.h <%fileNamePrefix%>/sources/<%fileNamePrefix%>_model.h
<%\t%> cp <%fileNamePrefix%>_info.xml <%fileNamePrefix%>/sources/<%fileNamePrefix%>_info.xml
<%\t%> cp <%fileNamePrefix%>_init.xml <%fileNamePrefix%>/sources/<%fileNamePrefix%>_init.xml
<%\t%> cp <%fileNamePrefix%>_FMU.c <%fileNamePrefix%>/sources/<%fileNamePrefix%>_FMU.c
<%\t%> cp <%fileNamePrefix%>_functions.c <%fileNamePrefix%>/sources/<%fileNamePrefix%>_functions.c
<%\t%> cp <%fileNamePrefix%>_functions.h <%fileNamePrefix%>/sources/<%fileNamePrefix%>_functions.h
<%\t%> cp <%fileNamePrefix%>_records.c <%fileNamePrefix%>/sources/<%fileNamePrefix%>_records.c
<%\t%> cp modelDescription.xml <%fileNamePrefix%>/modelDescription.xml
<%\t%> cd <%fileNamePrefix%>; rm -f ../<%fileNamePrefix%>.fmu && zip -r ../<%fileNamePrefix%>.fmu *
<%\t%> rm -rf <%fileNamePrefix%>
<%\t%> mkdir -p <%fmudirname%>
<%\t%> mkdir -p <%fmudirname%>/binaries

<%\t%> mkdir -p <%fmudirname%>/binaries/$(PLATFORM)
<%\t%> mkdir -p <%fmudirname%>/sources

<%\t%> cp <%fileNamePrefix%>$(DLLEXT) <%fmudirname%>/binaries/$(PLATFORM)/
<%\t%> cp <%fileNamePrefix%>_FMU.libs <%fmudirname%>/binaries/$(PLATFORM)/
<%\t%> cp <%fileNamePrefix%>.c <%fmudirname%>/sources/<%fileNamePrefix%>.c
<%\t%> cp <%fileNamePrefix%>_model.h <%fmudirname%>/sources/<%fileNamePrefix%>_model.h
<%\t%> cp <%fileNamePrefix%>_info.c <%fmudirname%>/sources/<%fileNamePrefix%>_info.c
<%\t%> cp <%fileNamePrefix%>_init.c <%fmudirname%>/sources/<%fileNamePrefix%>_init.c
<%\t%> cp <%fileNamePrefix%>_FMU.c <%fmudirname%>/sources/<%fileNamePrefix%>_FMU.c
<%\t%> cp <%fileNamePrefix%>_functions.c <%fmudirname%>/sources/<%fileNamePrefix%>_functions.c
<%\t%> cp <%fileNamePrefix%>_functions.h <%fmudirname%>/sources/<%fileNamePrefix%>_functions.h
<%\t%> cp <%fileNamePrefix%>_records.c <%fmudirname%>/sources/<%fileNamePrefix%>_records.c
<%\t%> cp modelDescription.xml <%fmudirname%>/modelDescription.xml
<%\t%> cd <%fmudirname%>; rm -f ../<%fileNamePrefix%>.fmu && zip -r ../<%fileNamePrefix%>.fmu *
<%\t%> rm -rf <%fmudirname%>
<%\t%> rm -f <%fileNamePrefix%>.def <%fileNamePrefix%>.o <%fileNamePrefix%>_FMU.libs <%fileNamePrefix%>_FMU.makefile <%fileNamePrefix%>_FMU.o <%fileNamePrefix%>_records.o

>>
Expand All @@ -1051,6 +1058,7 @@ case SIMCODE(modelInfo=MODELINFO(__), makefileParams=MAKEFILE_PARAMS(__), simula
let libsStr = (makefileParams.libs |> lib => lib ;separator=" ")
let libsPos1 = if not dirExtra then libsStr //else ""
let libsPos2 = if dirExtra then libsStr // else ""
let fmudirname = '<%fileNamePrefix%>.fmutmp'
let extraCflags = match sopt case SOME(s as SIMULATION_SETTINGS(__)) then
'<%if s.measureTime then "-D_OMC_MEASURE_TIME "%> <%match s.method
case "inline-euler" then "-D_OMC_INLINE_EULER"
Expand Down Expand Up @@ -1096,26 +1104,26 @@ case SIMCODE(modelInfo=MODELINFO(__), makefileParams=MAKEFILE_PARAMS(__), simula
GENERATEDFILES=$(MAINFILE) $(FILEPREFIX)_functions.c $(FILEPREFIX)_functions.h $(FILEPREFIX)_records.c $(FILEPREFIX).makefile

$(FILEPREFIX)$(FMUEXT): $(FILEPREFIX)$(DLLEXT) modelDescription.xml
if not exist <%fileNamePrefix%>\binaries\$(PLATWIN32) mkdir <%fileNamePrefix%>\binaries\$(PLATWIN32)
if not exist <%fileNamePrefix%>\sources mkdir <%fileNamePrefix%>\sources

copy <%fileNamePrefix%>.dll <%fileNamePrefix%>\binaries\$(PLATWIN32)
copy <%fileNamePrefix%>.lib <%fileNamePrefix%>\binaries\$(PLATWIN32)
copy <%fileNamePrefix%>.pdb <%fileNamePrefix%>\binaries\$(PLATWIN32)
copy <%fileNamePrefix%>.c <%fileNamePrefix%>\sources\<%fileNamePrefix%>.c
copy <%fileNamePrefix%>_model.h <%fileNamePrefix%>\sources\<%fileNamePrefix%>_model.h
copy <%fileNamePrefix%>_FMU.c <%fileNamePrefix%>\sources\<%fileNamePrefix%>_FMU.c
copy <%fileNamePrefix%>_info.xml <%fileNamePrefix%>\sources\<%fileNamePrefix%>_info.xml
copy <%fileNamePrefix%>_init.xml <%fileNamePrefix%>\sources\<%fileNamePrefix%>_init.xml
copy <%fileNamePrefix%>_functions.c <%fileNamePrefix%>\sources\<%fileNamePrefix%>_functions.c
copy <%fileNamePrefix%>_functions.h <%fileNamePrefix%>\sources\<%fileNamePrefix%>_functions.h
copy <%fileNamePrefix%>_records.c <%fileNamePrefix%>\sources\<%fileNamePrefix%>_records.c
copy modelDescription.xml <%fileNamePrefix%>\modelDescription.xml
copy <%stringReplace(makefileParams.omhome,"/","\\")%>\lib\omc\libexec\gnuplot\binary\libexpat-1.dll <%fileNamePrefix%>\binaries\$(PLATWIN32)
cd <%fileNamePrefix%>
if not exist <%fmudirname%>\binaries\$(PLATWIN32) mkdir <%fmudirname%>\binaries\$(PLATWIN32)
if not exist <%fmudirname%>\sources mkdir <%fmudirname%>\sources

copy <%fileNamePrefix%>.dll <%fmudirname%>\binaries\$(PLATWIN32)
copy <%fileNamePrefix%>.lib <%fmudirname%>\binaries\$(PLATWIN32)
copy <%fileNamePrefix%>.pdb <%fmudirname%>\binaries\$(PLATWIN32)
copy <%fileNamePrefix%>.c <%fmudirname%>\sources\<%fileNamePrefix%>.c
copy <%fileNamePrefix%>_model.h <%fmudirname%>\sources\<%fileNamePrefix%>_model.h
copy <%fileNamePrefix%>_FMU.c <%fmudirname%>\sources\<%fileNamePrefix%>_FMU.c
copy <%fileNamePrefix%>_info.c <%fmudirname%>\sources\<%fileNamePrefix%>_info.c
copy <%fileNamePrefix%>_init.c <%fmudirname%>\sources\<%fileNamePrefix%>_init.c
copy <%fileNamePrefix%>_functions.c <%fmudirname%>\sources\<%fileNamePrefix%>_functions.c
copy <%fileNamePrefix%>_functions.h <%fmudirname%>\sources\<%fileNamePrefix%>_functions.h
copy <%fileNamePrefix%>_records.c <%fmudirname%>\sources\<%fileNamePrefix%>_records.c
copy modelDescription.xml <%fmudirname%>\modelDescription.xml
copy <%stringReplace(makefileParams.omhome,"/","\\")%>\lib\omc\libexec\gnuplot\binary\libexpat-1.dll <%fmudirname%>\binaries\$(PLATWIN32)
cd <%fmudirname%>
"$(MINGW)\bin\zip.exe" -r ../<%fileNamePrefix%>.fmu *
cd ..
rmdir /S /Q <%fileNamePrefix%>
rmdir /S /Q <%fmudirname%>

$(FILEPREFIX)$(DLLEXT): $(MAINOBJ) $(FILEPREFIX)_records.c $(FILEPREFIX)_functions.c $(FILEPREFIX)_functions.h
$(CXX) /Fe$(FILEPREFIX)$(DLLEXT) $(MAINFILE) $(FILEPREFIX)_FMU.c $(FILEPREFIX)_records.c $(CFLAGS) $(LDFLAGS)
Expand Down Expand Up @@ -1150,7 +1158,7 @@ case SIMCODE(modelInfo=MODELINFO(__), makefileParams=MAKEFILE_PARAMS(__), simula
PLAT34 = <%makefileParams.platform%>
CFLAGS=$(CFLAGS_BASED_ON_INIT_FILE) -I"<%makefileParams.omhome%>/include/omc" <%makefileParams.cflags%> <%match sopt case SOME(s as SIMULATION_SETTINGS(__)) then s.cflags /* From the simulate() command */%>
CPPFLAGS=-I"<%makefileParams.omhome%>/include/omc" -I. <%dirExtra%> <%makefileParams.includes ; separator=" "%>
LDFLAGS=-L"<%makefileParams.omhome%>/lib/omc" -lSimulationRuntimeC -linteractive <%makefileParams.ldflags%> <%makefileParams.runtimelibs%>
LDFLAGS=-L"<%makefileParams.omhome%>/lib/omc" -Wl,-rpath,'<%makefileParams.omhome%>/lib/omc' -lSimulationRuntimeC -linteractive <%makefileParams.ldflags%> <%makefileParams.runtimelibs%>
PERL=perl
MAINFILE=<%fileNamePrefix%>_FMU<% if acceptMetaModelicaGrammar() then ".conv"%>.c
MAINOBJ=<%fileNamePrefix%>_FMU<% if acceptMetaModelicaGrammar() then ".conv"%>.o
Expand Down
25 changes: 21 additions & 4 deletions Compiler/Template/SimCodeDump.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,30 @@ import interface SimCodeTV;
import CodegenUtil.*;

template dumpSimCode(SimCode code, Boolean withOperations)
::=
match code
case sc as SIMCODE(modelInfo=mi as MODELINFO(vars=vars as SIMVARS(__))) then
let res = dumpSimCodeBase(code,withOperations)
let() = textFile(res,'<%fileNamePrefix%>_info.xml')
'<%fileNamePrefix%>_info'
end dumpSimCode;

template dumpSimCodeToC(SimCode code, Boolean withOperations)
::=
match code
case sc as SIMCODE(modelInfo=mi as MODELINFO(vars=vars as SIMVARS(__))) then
let res =
'data->modelData.modelDataXml.infoXMLData = "<%Util.escapeModelicaStringToCString(dumpSimCodeBase(code,withOperations))%>";'
let() = textFile(res,'<%fileNamePrefix%>_info.c')
'<%fileNamePrefix%>_info'
end dumpSimCodeToC;

template dumpSimCodeBase(SimCode code, Boolean withOperations)
::=
match code
case sc as SIMCODE(modelInfo=mi as MODELINFO(vars=vars as SIMVARS(__))) then
let name = Util.escapeModelicaStringToXmlString(dotPath(mi.name))
let res = <<
<<
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="application/xml" href="simcodedump.xsl"?>
<simcodedump model="<%name%>">
Expand Down Expand Up @@ -58,9 +77,7 @@ template dumpSimCode(SimCode code, Boolean withOperations)
</functions>
</simcodedump><%\n%>
>>
let() = textFile(res,'<%fileNamePrefix%>_info.xml')
'<%fileNamePrefix%>_info'
end dumpSimCode;
end dumpSimCodeBase;

template dumpVarsShort(list<SimVar> vars)
::=
Expand Down

0 comments on commit 13b5428

Please sign in to comment.