Changeset 21866


Ignore:
Timestamp:
2014-08-14T09:39:22+02:00 (10 years ago)
Author:
RuedKamp
Message:

-changed functions from call by value to call by reference

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Compiler/Template/CodegenCpp.tpl

    r21863 r21866  
    20432043 let fname = underscorePath(name)
    20442044  << /*tuple return type*/
    2045     struct <%fname%>Type
     2045    struct <%fname%>Type/*RecordTypeTest*/
    20462046    {
    20472047       typedef boost::tuple< <%vars |> var => funReturnDefinition1(var,simCode) ;separator=", "%> > TUPLE_ARRAY;
     
    20542054      TUPLE_ARRAY data;
    20552055    };
    2056     typedef <%fname%>Type <%fname%>RetType /* functionHeaderRegularFunction1 */;
     2056    typedef <%fname%>Type/*RecordTypeTest*/ <%fname%>RetType /* functionHeaderRegularFunction1 */;
    20572057  >>
    20582058
     
    21022102        ;separator=", ")
    21032103      <<
    2104       <%fname%>Type <%fname%>(<%funArgsStr%>);
     2104      void /*RecordTypetest*/ <%fname%>(<%funArgsStr%>,<%fname%>Type &output );
    21052105      >>
    21062106end functionHeaderRecordConstruct;
     
    22002200  let structVar = tempDecl(structType, &varDecls /*BUFD*/)
    22012201
    2202   <<
    2203   <%retType%> Functions::<%fname%>(<%funArgs |> var as  VARIABLE(__) => '<%varType1(var,simCode)%> <%crefStr(name)%>' ;separator=", "%>)
     2202
     2203  <<
     2204  void /*<%retType%>*/ Functions::<%fname%>(<%funArgs |> var as  VARIABLE(__) => '<%varType1(var,simCode)%> <%crefStr(name)%>' ;separator=", "%>,<%retType%>& output )
    22042205  {
    2205 
    2206     <%varDecls%>
    2207     <%funArgs |> VARIABLE(__) => '<%structVar%>.<%crefStr(name)%> = <%crefStr(name)%>;' ;separator="\n"%>
    2208     return <%structVar%>;
     2206    <%funArgs |> VARIABLE(__) => 'output.<%crefStr(name)%> = <%crefStr(name)%>;' ;separator="\n"%>
     2207    //output = <%structVar%>;
     2208  //return <%structVar%>;
    22092209  }
    22102210
     
    22372237  <<
    22382238        /* functionHeaderRegularFunction2 */
    2239         <%fname%>RetType <%fname%>(<%functionArguments |> var => funArgDefinition(var,simCode,useFlatArrayNotation) ;separator=", "%>);
     2239        void /*<%fname%>RetType*/ <%fname%>(<%functionArguments |> var => funArgDefinition(var,simCode,useFlatArrayNotation) ;separator=", "%>, <%fname%>RetType& output);
    22402240  >>
    22412241case EXTERNAL_FUNCTION(outVars=var::_) then
     
    22432243   <<
    22442244        /* functionHeaderRegularFunction2 */
    2245         <%fname%>RetType <%fname%>(<%funArgs |> var => funArgDefinition(var,simCode,useFlatArrayNotation) ;separator=", "%>);
     2245        void /*<%fname%>RetType*/ <%fname%>(<%funArgs |> var => funArgDefinition(var,simCode,useFlatArrayNotation) ;separator=", "%>, <%fname%>RetType output);
    22462246   >>
    22472247case EXTERNAL_FUNCTION(outVars={}) then
     
    22782278  let()= System.tmpTickReset(1)
    22792279  let fname = underscorePath(name)
    2280   let retType = if outVars then '<%fname%>RetType /* functionBodyRegularFunction */' else "void"
     2280  let retType = if outVars then '<%fname%>RetType ' else "void" /* functionBodyRegularFunction */
    22812281  let &varDecls = buffer "" /*BUFD*/
    22822282  let &varInits = buffer "" /*BUFD*/
     
    23142314  //let boxedFn = if acceptMetaModelicaGrammar() then functionBodyBoxed(fn)
    23152315  <<
    2316   <%retType%> Functions::<%fname%>(<%functionArguments |> var => funArgDefinition(var,simCode,useFlatArrayNotation) ;separator=", "%>)
     2316  //if outvars missing
     2317  void /*<%retType%>*/ Functions::<%fname%>(<%functionArguments |> var => funArgDefinition(var,simCode,useFlatArrayNotation) ;separator=", "%> <%if outVars then ', <%retType%>& output' %> )
    23172318  {
    23182319    //functionBodyRegularFunction
     
    23262327    while(false);
    23272328    <%outVarAssign%>
    2328     return <%if outVars then '_<%fname%>' %>;
     2329  <%if outVars then 'output = _<%fname%>;' %>
    23292330  }
    23302331
     
    23702371
    23712372  let fnBody = <<
    2372   <%retType%> Functions::<%fname%>(<%funArgs |> var => funArgDefinition(var,simCode,useFlatArrayNotation) ;separator=", "%>)
     2373  void /*<%retType%>*/ Functions::<%fname%>(<%funArgs |> var => funArgDefinition(var,simCode,useFlatArrayNotation) ;separator=", "%> ,<%retType%>& output)/*function2*/
    23732374  {
    23742375    /* functionBodyExternalFunction: varDecls */
     
    26712672      ""
    26722673    else
    2673       let &varAssign += '_<%fname%>= <%contextCref(var.name,contextFunction,simCode,useFlatArrayNotation)%>;<%\n%>'
     2674      let &varAssign += '_<%fname%>=/*test21*/ <%contextCref(var.name,contextFunction,simCode,useFlatArrayNotation)%>;<%\n%>'
    26742675      ""
    26752676case var as VARIABLE(__) then
     
    26952696*/
    26962697 if instDims then
    2697  let &varAssign += '_<%fname%>.assign(<%contextCref(var.name,contextFunction,simCode,useFlatArrayNotation)%>);<%\n%>'
     2698 let &varAssign += '_<%fname%>.assign(<%contextCref(var.name,contextFunction,simCode,useFlatArrayNotation)%>)/*test21*/;<%\n%>'
    26982699 //let &varAssign += '<%contextCref(var.name,contextFunction,simCode)%>;<%\n%>'
    26992700 ""
    27002701 else
    2701  let &varAssign += '_<%fname%> = <%contextCref(var.name,contextFunction,simCode,useFlatArrayNotation)%>;<%\n%>'
     2702 let &varAssign += '_<%fname%> =/*test22*/ <%contextCref(var.name,contextFunction,simCode,useFlatArrayNotation)%>;<%\n%>'
    27022703 //let &varAssign += '<%contextCref(var.name,contextFunction,simCode)%>;<%\n%>'
    27032704 ""
     
    91289129    let arraytpye =  'multi_array_ref<<%expTypeShort(ty)%>,<%listLength(dims)%>>'
    91299130    let &preExp += match context
    9130                         case FUNCTION_CONTEXT(__) then '<%retVar%>.assign(<%funName%>(<%argStr%>));<%\n%>'
     9131                        case FUNCTION_CONTEXT(__) then '(<%funName%>(<%argStr%>,<%retVar%>));<%\n%>'
    91319132            /*multi_array else 'assign_array(<%retVar%> ,_functions.<%funName%>(<%argStr%>));<%\n%>'*/
    9132                         else '<%retVar%>= _functions-><%funName%>(<%argStr%>);<%\n%>'
     9133                        else '_functions-><%funName%>(<%argStr%>, <%retVar%>);<%\n%>'
    91339134
    91349135
     
    91539154    let retType = '<%funName%>RetType /* undefined */'
    91549155    let retVar = tempDecl(retType, &varDecls)
    9155     let &preExp += match context case FUNCTION_CONTEXT(__) then'<%if retVar then '<%retVar%> = '%><%funName%>(<%argStr%>);<%\n%>'
    9156     else '<%if retVar then '<%retVar%> = '%>(_functions-><%funName%>(<%argStr%>));<%\n%>'
     9156    let &preExp += match context case FUNCTION_CONTEXT(__) then'<%funName%>(<%argStr%><%if retVar then ',<%retVar%>'%>);<%\n%>'
     9157    else '_functions-><%funName%>(<%argStr%><%if retVar then ',<%retVar%>'%>);<%\n%>'
    91579158     '<%retVar%>'
    91589159
     
    95099510  let ret_type = '<%record_type_name%>RetType'
    95109511  let ret_var = tempDecl(ret_type, &varDecls)
    9511   let &preExp += '<%ret_var%> = _functions-><%record_type_name%>(<%vars%>);<%\n%>'
     9512  let &preExp += '_functions-><%record_type_name%>(<%vars%>,<%ret_var%>);<%\n%>'
    95129513  '<%ret_var%>'
    95139514end daeExpRecordCrefRhs;
Note: See TracChangeset for help on using the changeset viewer.