Skip to content

Commit

Permalink
- Fix code generation for assigning output variables that are functio…
Browse files Browse the repository at this point in the history
…n pointers

git-svn-id: https://openmodelica.org/svn/OpenModelica/trunk@7153 f25d12d1-65f4-0310-ae8a-bbce733d8d8e
  • Loading branch information
sjoelund committed Nov 22, 2010
1 parent f3c24dc commit 8af7fc5
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 1 deletion.
21 changes: 21 additions & 0 deletions Compiler/SimCodeC.mo
Expand Up @@ -18059,6 +18059,27 @@ algorithm
(txt, i_varAssign, i_varInits) = fun_428(txt, i_instDims, i_instDimsInit, i_var_ty, i_var_name, i_ix, i_dest, i_varAssign, i_var, i_varInits);
then (txt, i_varDecls, i_varInits, i_varCopy, i_varAssign);

case ( txt,
(i_var as SimCode.FUNCTION_PTR(name = i_var_name)),
i_dest,
i_ix,
i_varDecls,
i_varInits,
i_varCopy,
i_varAssign )
local
String i_var_name;
SimCode.Variable i_var;
equation
i_varAssign = Tpl.writeStr(i_varAssign, i_dest);
i_varAssign = Tpl.writeTok(i_varAssign, Tpl.ST_STRING(".targ"));
i_varAssign = Tpl.writeStr(i_varAssign, intString(i_ix));
i_varAssign = Tpl.writeTok(i_varAssign, Tpl.ST_STRING(" = (modelica_fnptr) _"));
i_varAssign = Tpl.writeStr(i_varAssign, i_var_name);
i_varAssign = Tpl.writeTok(i_varAssign, Tpl.ST_STRING(";"));
i_varAssign = Tpl.writeTok(i_varAssign, Tpl.ST_NEW_LINE());
then (txt, i_varDecls, i_varInits, i_varCopy, i_varAssign);

case ( txt,
_,
_,
Expand Down
5 changes: 4 additions & 1 deletion Compiler/runtime/Settings_omc.cpp
Expand Up @@ -29,6 +29,7 @@
*/

#include "settingsimpl.c"
#include <string>

extern "C" {

Expand Down Expand Up @@ -65,9 +66,11 @@ extern void Settings_setEcho(int _echo)
echo = _echo;
}

static const std::string version = std::string(CONFIG_VERSION) + std::string(" (Bootstrapping version; only for development)");

extern const char* Settings_getVersionNr()
{
return CONFIG_VERSION;
return version.c_str();
}

extern const char* Settings_getTempDirectoryPath()
Expand Down
3 changes: 3 additions & 0 deletions Compiler/susan_codegen/SimCode/SimCodeC.tpl
Expand Up @@ -3478,6 +3478,9 @@ case var as VARIABLE(__) then
let &varInits += initRecordMembers(var)
let &varAssign += '<%dest%>.targ<%ix%> = <%contextCref(var.name,contextFunction)%>;<%\n%>'
""
case var as FUNCTION_PTR(__) then
let &varAssign += '<%dest%>.targ<%ix%> = (modelica_fnptr) _<%var.name%>;<%\n%>'
""
end varOutput;

template initRecordMembers(Variable var)
Expand Down

0 comments on commit 8af7fc5

Please sign in to comment.