Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
niklwors committed Aug 13, 2015
2 parents 630c7be + 49329bb commit 2e38570
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 4 deletions.
10 changes: 10 additions & 0 deletions Compiler/FrontEnd/Absyn.mo
Expand Up @@ -2410,6 +2410,16 @@ algorithm
end match;
end elementSpecName;

public function isClassdef
input Element inElement;
output Boolean b;
algorithm
b := match inElement
case ELEMENT(specification=CLASSDEF()) then true;
else false;
end match;
end isClassdef;

public function printImportString
"This function takes a Import and prints it as a flat-string."
input Import imp;
Expand Down
23 changes: 23 additions & 0 deletions Compiler/Template/AbsynDumpTV.mo
Expand Up @@ -7,6 +7,23 @@ package builtin
replaceable type T subtypeof Any;
end listReverse;

function boolAnd
input Boolean b1;
input Boolean b2;
output Boolean b;
end boolAnd;

function boolOr
input Boolean a;
input Boolean b;
output Boolean c;
end boolOr;

function boolNot
input Boolean b;
output Boolean nb;
end boolNot;

uniontype SourceInfo
record SOURCEINFO
String fileName;
Expand Down Expand Up @@ -828,6 +845,12 @@ package Absyn
Option<Annotation> annotation_;
end EXTERNALDECL;
end ExternalDecl;

function isClassdef
input Element inElement;
output Boolean b;
end isClassdef;

end Absyn;

package Config
Expand Down
2 changes: 1 addition & 1 deletion Compiler/Template/AbsynDumpTpl.tpl
Expand Up @@ -267,7 +267,7 @@ template dumpElement(Absyn.Element elem, DumpOptions options)
::=
match elem
case ELEMENT(__) then
if boolUnparseFileFromInfo(info, options) then
if boolOr(boolUnparseFileFromInfo(info, options), boolNot(isClassdef(elem))) then
let final_str = dumpFinal(finalPrefix)
let redecl_str = match redeclareKeywords case SOME(re) then dumpRedeclare(re)
let repl_str = match redeclareKeywords case SOME(re) then dumpReplaceable(re)
Expand Down
40 changes: 39 additions & 1 deletion Compiler/Template/CodegenCpp.tpl
Expand Up @@ -5433,7 +5433,14 @@ template varInit(Variable var, String outStruct, Integer i, Text &varDecls, Text
match var
case var as VARIABLE(__) then
let varName = '<%contextCref(var.name,contextFunction,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>'

let &preExp = buffer ""
let recordInit = initRecordMembers(var, &preExp, &varDecls, simCode, &extraFuncs, &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)
let &varInits += if recordInit then
<<
//initRecordMembers <%varName%>
<%preExp%>
<%recordInit%>
>>
let instDimsInit = (instDims |> exp => daeExp(exp, contextFunction, &varInits , &varDecls,simCode , &extraFuncs , &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation);separator=",")


Expand Down Expand Up @@ -5472,6 +5479,37 @@ case var as FUNCTION_PTR(__) then

end varInit;

template initRecordMembers(Variable var, Text &preExp /*BUFP*/, Text &varDecls /*BUFP*/,SimCode simCode ,Text& extraFuncs,Text& extraFuncsDecl,Text extraFuncsNamespace, Text stateDerVectorName /*=__zDot*/, Boolean useFlatArrayNotation)
"Initialize members of a record variable"
::=
match var
case VARIABLE(ty = T_COMPLEX(complexClassType = RECORD(__))) then
let varName = contextCref(name, contextFunction, simCode, extraFuncs, extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)
(ty.varLst |> v => recordMemberInit(v, varName, &preExp, &varDecls, simCode, &extraFuncs, &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation) ;separator="\n")
end initRecordMembers;

template recordMemberInit(Var v, Text varName, Text &preExp /*BUFP*/, Text &varDecls /*BUFP*/,SimCode simCode ,Text& extraFuncs,Text& extraFuncsDecl,Text extraFuncsNamespace, Text stateDerVectorName /*=__zDot*/, Boolean useFlatArrayNotation)
"Initialize one record member"
::=
match v
case TYPES_VAR(__) then
let vn = '<%varName%>.<%name%>'
let defaultValue =
match binding
case VALBOUND(valBound = val) then
'<%vn%> = <%daeExp(valueExp(val), contextOther, &preExp, &varDecls, simCode, &extraFuncs, &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>;'
case EQBOUND(evaluatedExp = SOME(val)) then
'<%vn%> = <%daeExp(valueExp(val), contextFunction, &preExp, &varDecls, simCode, &extraFuncs, &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>;'
case EQBOUND(exp = exp) then
'<%vn%> = <%daeExp(exp, contextFunction, &preExp, &varDecls, simCode, &extraFuncs, &extraFuncsDecl, extraFuncsNamespace, stateDerVectorName, useFlatArrayNotation)%>;'
else
''
end match
<<
<%defaultValue%>
>>
end recordMemberInit;

template setDims(Text testinstDimsInit, String varName , Text &varInits, String instDimsInit)
::=
match testinstDimsInit
Expand Down
2 changes: 1 addition & 1 deletion Makefile.common
Expand Up @@ -412,7 +412,7 @@ git-clean:
git clean -fdx

git-sanity-check: git-clean
test "./Compiler/boot/bootstrap-sources.tar.xz" = "`find . -type f -size +684k | grep -v 3rdParty`"
test "./Compiler/boot/bootstrap-sources.tar.xz" = "`find . -type f -size +800k | grep -v 3rdParty`"
for commit in `git rev-list origin/master..HEAD`; do \
(! git ls-tree --name-only -r $$commit | egrep "(.*[.](html|png|svg|o|so|la|stamp|a|dll|exe|cab|lnk|msi|log|class|jar|pyc|db|zip|DS_Store|pdf|tex|md5|dep)$$)|SimulationRuntime/cpp/Doc") || exit 1; \
done
Expand Down

0 comments on commit 2e38570

Please sign in to comment.