Skip to content

Commit

Permalink
return const& where possible (but not for expressions)
Browse files Browse the repository at this point in the history
Note: This fixes a bug triggered by
test_CMSSM_effective_couplings.cpp:

When model.get_UM() returns an Eigen::Matrix<>, then the matrix U
defined by

   const auto U = (model.get_UM()).conjugate();

is wrong.  However, when model.get_UM() returns a const
Eigen::Matrix<>&, then the U defined above is correct.
  • Loading branch information
Alexander Voigt authored and Alexander Voigt committed Mar 20, 2018
1 parent 4d7cea6 commit fd37f05
Showing 1 changed file with 8 additions and 2 deletions.
10 changes: 8 additions & 2 deletions meta/CConversion.m
Expand Up @@ -266,7 +266,10 @@
""
];

CreateGetterReturnType[type_] := CreateCType[type];
CreateGetterReturnType[type_CConversion`ScalarType] := CreateCType[type];
CreateGetterReturnType[type_] := "const " <> CreateCType[type] <> "&";

CreateGetterReturnTypeCopy[type_] := CreateCType[type];

CreateSetterInputType[type_] :=
CreateGetterReturnType[type];
Expand Down Expand Up @@ -352,8 +355,11 @@
type <> " get_" <> parameter <> postFix <>
"() const { return " <> If[wrapper != "", wrapper <> "(", ""] <> expr <> If[wrapper != "", ")", ""] <> "; }\n";

CreateInlineGetter[parameter_String, expr_String, type_, postFix_String:"", wrapper_String:""] :=
CreateInlineGetter[parameter, expr, CreateGetterReturnType[type], postFix, wrapper];

CreateInlineGetter[parameter_String, expr_, type_, postFix_String:"", wrapper_String:""] :=
CreateInlineGetter[ToValidCSymbolString[parameter], RValueToCFormString[expr], CreateGetterReturnType[type], postFix, wrapper];
CreateInlineGetter[parameter, RValueToCFormString[expr], CreateGetterReturnTypeCopy[type], postFix, wrapper];

CreateInlineGetters[parameter_String, expr_, type_, postFix_String:"", wrapper_String:""] :=
If[MatchQ[type, ScalarType[_]],
Expand Down

0 comments on commit fd37f05

Please sign in to comment.