Skip to content

Commit

Permalink
Add convenience functions for creating inline getters and setters
Browse files Browse the repository at this point in the history
  • Loading branch information
Dylan Harries committed Dec 7, 2016
1 parent 6a373cb commit 15b74e5
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions meta/CConversion.m
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,14 @@
CreateInlineSetter::usage="creates C/C++ inline setter"
CreateInlineElementSetter::usage="creates C/C++ inline setter for a
vector or matrix element";
CreateInlineSetters::usage="creates a C/C++ inline setter, and, if
given a vector or matrix, a C/C++ inline setter for a singlet element";

CreateInlineGetter::usage="creates C/C++ inline getter"
CreateInlineElementGetter::usage="creates C/C++ inline getter for a
vector or matrix element";
CreateInlineGetters::usage="creates a C/C++ inline getter, and, if
given a vector or matrix, a C/C++ inline getter for a single element";

CreateGetterReturnType::usage="creates C/C++ getter return type";

Expand Down Expand Up @@ -279,6 +283,12 @@
CreateInlineSetter[parameter_String, type_] :=
CreateInlineSetter[parameter, CreateSetterInputType[type]];

CreateInlineSetters[parameter_String, type_] :=
If[MatchQ[type, ScalarType[_]],
CreateInlineSetter[parameter, type],
CreateInlineSetter[parameter, type] <> CreateInlineElementSetter[parameter, type]
];

(* Creates a C++ inline element getter *)
CreateInlineElementGetter[parameter_String, elementType_String, dim_Integer, postFix_String:"", wrapper_String:""] :=
elementType <> " get_" <> parameter <> postFix <> "(int i) const" <>
Expand Down Expand Up @@ -319,6 +329,12 @@
CreateInlineGetter[parameter_String, type_, postFix_String:"", wrapper_String:""] :=
CreateInlineGetter[ToValidCSymbolString[parameter], CreateGetterReturnType[type], postFix, wrapper];

CreateInlineGetters[parameter_String, type_, postFix_String:"", wrapper_String:""] :=
If[MatchQ[type, ScalarType[_]],
CreateInlineGetter[parameter, type, postFix, wrapper],
CreateInlineGetter[parameter, type, postFix, wrapper] <> CreateInlineElementGetter[parameter, type, postFix, wrapper]
];

(* Creates C++ getter prototype *)
CreateGetterPrototype[parameter_String, type_String] :=
type <> " get_" <> parameter <> "() const;\n";
Expand Down

0 comments on commit 15b74e5

Please sign in to comment.