Skip to content

Commit

Permalink
Clean up code generation
Browse files Browse the repository at this point in the history
- remove obsolete function callExternalObjectConstructors from c runtime
  • Loading branch information
lochel authored and OpenModelica-Hudson committed Jan 10, 2017
1 parent df2b1c7 commit cde3ffc
Show file tree
Hide file tree
Showing 4 changed files with 2 additions and 48 deletions.
39 changes: 0 additions & 39 deletions Compiler/Template/CodegenC.tpl
Expand Up @@ -128,7 +128,6 @@ end translateModel;

<%variableDefinitions(modelInfo, timeEvents)%><%functions |> fn hasindex i0 => '#define <%functionName(fn,false)%>_index <%i0%>'; separator="\n"%>

extern void <%symbolName(modelNamePrefixStr,"callExternalObjectConstructors")%>(DATA *data, threadData_t *threadData);
extern void <%symbolName(modelNamePrefixStr,"callExternalObjectDestructors")%>(DATA *_data, threadData_t *threadData);
#if !defined(OMC_NUM_NONLINEAR_SYSTEMS) || OMC_NUM_NONLINEAR_SYSTEMS>0
<% if intGt(varInfo.numNonLinearSystems, 0) then 'extern void <%symbolName(modelNamePrefixStr,"initialNonLinearSystem")%>(int nNonLinearSystems, NONLINEAR_SYSTEM_DATA *data);' %>
Expand Down Expand Up @@ -479,8 +478,6 @@ template simulationFile_exo(SimCode simCode)
extern "C" {
#endif
<%functionCallExternalObjectConstructors(extObjInfo, modelNamePrefix(simCode))%>
<%functionCallExternalObjectDestructors(extObjInfo, modelNamePrefix(simCode))%>
#if defined(__cplusplus)
}
Expand Down Expand Up @@ -1039,7 +1036,6 @@ template simulationFile(SimCode simCode, String guid, Boolean isModelExchangeFMU
<% if isModelExchangeFMU then "NULL" else '(int (*)(DATA *, threadData_t *, void *)) <%symbolName(modelNamePrefixStr,"performSimulation")%>'%>,
<% if isModelExchangeFMU then "NULL" else '(int (*)(DATA *, threadData_t *, void *)) <%symbolName(modelNamePrefixStr,"performQSSSimulation")%>'%>,
<% if isModelExchangeFMU then "NULL" else '<%symbolName(modelNamePrefixStr,"updateContinuousSystem")%>'%>,
<%symbolName(modelNamePrefixStr,"callExternalObjectConstructors")%>,
<%symbolName(modelNamePrefixStr,"callExternalObjectDestructors")%>,
<%if intEq(varInfo.numNonLinearSystems,0) then "NULL" else symbolName(modelNamePrefixStr,"initialNonLinearSystem")%>,
<%if intEq(varInfo.numLinearSystems,0) then "NULL" else symbolName(modelNamePrefixStr,"initialLinearSystem")%>,
Expand Down Expand Up @@ -1556,41 +1552,6 @@ template aliasVarNameType(AliasVariable var)
end match
end aliasVarNameType;

template functionCallExternalObjectConstructors(ExtObjInfo extObjInfo, String modelNamePrefix)
"Generates function in simulation file."
::=
match extObjInfo
case EXTOBJINFO(__) then
let &auxFunction = buffer ""
let &varDecls = buffer ""
let ctorCalls = (vars |> var as SIMVAR(initialValue=SOME(exp)) =>
let &preExp = buffer ""
let arg = daeExp(exp, contextOther, &preExp, &varDecls, &auxFunction)
/* Restore the memory state after each object has been initialized. Then we can
* initalize a really large number of external objects that play with strings :)
*/
<<
<%preExp%>
<%cref(var.name)%> = <%arg%>;
>>
;separator="\n")

<<
<%auxFunction%>
/* Has to be performed after _init.xml file has been read */
void <%symbolName(modelNamePrefix,"callExternalObjectConstructors")%>(DATA *data, threadData_t *threadData)
{
<%varDecls%>
/* data->simulationInfo->extObjs = NULL; */
infoStreamPrint(LOG_DEBUG, 0, "call external Object Constructors");
<%ctorCalls%>
<%aliases |> (var1, var2) => '<%cref(var1)%> = <%cref(var2)%>;' ;separator="\n"%>
infoStreamPrint(LOG_DEBUG, 0, "call external Object Constructors finished");
}
>>
end match
end functionCallExternalObjectConstructors;

template functionCallExternalObjectDestructors(ExtObjInfo extObjInfo, String modelNamePrefix)
"Generates function in simulation file."
::=
Expand Down
2 changes: 0 additions & 2 deletions SimulationRuntime/c/openmodelica_func.h
Expand Up @@ -58,8 +58,6 @@ struct OpenModelicaGeneratedFunctionCallbacks {
int (*performSimulation)(DATA* data, threadData_t*, void* solverInfo);
int (*performQSSSimulation)(DATA* data, threadData_t*, void* solverInfo);
void (*updateContinuousSystem)(DATA *data, threadData_t*);
/* Function for calling external object constructors */
void (*callExternalObjectConstructors)(DATA *data, threadData_t*);
/* Function for calling external object deconstructors */
void (*callExternalObjectDestructors)(DATA *_data, threadData_t*);

Expand Down
4 changes: 1 addition & 3 deletions SimulationRuntime/fmi/export/fmi1/fmu1_model_interface.c
Expand Up @@ -197,9 +197,7 @@ fmiComponent fmiInstantiateModel(fmiString instanceName, fmiString GUID, fmiCall
strcpy((char*)comp->GUID, (const char*)GUID);

/* read input vars */
//input_function(comp->fmuData);
/* initial sample and delay before initial the system */
comp->fmuData->callback->callExternalObjectConstructors(comp->fmuData, comp->threadData);
/* input_function(comp->fmuData);*/
/* allocate memory for non-linear system solvers */
initializeNonlinearSystems(comp->fmuData, comp->threadData);
/* allocate memory for non-linear system solvers */
Expand Down
5 changes: 1 addition & 4 deletions SimulationRuntime/fmi/export/fmi2/fmu2_model_interface.c
Expand Up @@ -373,9 +373,7 @@ fmi2Component fmi2Instantiate(fmi2String instanceName, fmi2Type fmuType, fmi2Str
modelInfoInit(&(comp->fmuData->modelData->modelDataXml));
#endif
/* read input vars */
//input_function(comp->fmuData);
/* initial sample and delay before initial the system */
comp->fmuData->callback->callExternalObjectConstructors(comp->fmuData, comp->threadData);
/* input_function(comp->fmuData); */
#if !defined(OMC_NUM_NONLINEAR_SYSTEMS) || OMC_NUM_NONLINEAR_SYSTEMS>0
/* allocate memory for non-linear system solvers */
initializeNonlinearSystems(comp->fmuData, comp->threadData);
Expand Down Expand Up @@ -1282,4 +1280,3 @@ fmi2Status fmi2GetSpecificDerivatives(fmi2Component c, fmi2Real derivatives[], c
return fmi2Error;
}
#endif

0 comments on commit cde3ffc

Please sign in to comment.