8
8
#ifndef { {modelHeaderGuardPrefix} }_{ {classname} }_H_
9
9
#define { {modelHeaderGuardPrefix} }_{ {classname} }_H_
10
10
11
+ { {#oneOf} }
12
+ { {#-first} }
13
+ #include <variant >
14
+ { {/-first} }
15
+ { {/oneOf} }
11
16
{ {^parent} }
12
17
{ {{defaultInclude} }}
13
18
#include "{ {packageName} }/ModelBase.h"
@@ -24,6 +29,60 @@ namespace {{this}} {
24
29
{ {#vendorExtensions.x-forward-declarations} }{ {.} }
25
30
{ {/vendorExtensions.x-forward-declarations} }
26
31
{ {/vendorExtensions.x-has-forward-declarations} }
32
+ { {#oneOf} }{ {#-first} }
33
+
34
+ class { {declspec} } { {classname} }
35
+ {
36
+ public:
37
+ {{classname} }() = default;
38
+ ~{ {classname} }() = default;
39
+
40
+ /////////////////////////////////////////////
41
+
42
+ void validate();
43
+
44
+ web::json::value toJson() const;
45
+
46
+ template<typename Target >
47
+ bool fromJson(const web::json::value& json) {
48
+ // convert json to Target type
49
+ Target target;
50
+ if (! target.fromJson(json)) {
51
+ return false ;
52
+ }
53
+
54
+ m_variantValue = target;
55
+ return true;
56
+ }
57
+
58
+ void toMultipart(std::shared_ptr<MultipartFormData > multipart, const utility::string_t& namePrefix) const;
59
+
60
+ template<typename Target >
61
+ bool fromMultiPart(std::shared_ptr<MultipartFormData > multipart, const utility::string_t& namePrefix) {
62
+ // convert multipart to Target type
63
+ Target target;
64
+ if (! target.fromMultiPart(multipart, namePrefix)) {
65
+ return false ;
66
+ }
67
+
68
+ m_variantValue = target;
69
+ return true;
70
+ }
71
+
72
+ /////////////////////////////////////////////
73
+ /// { {classname} } members
74
+
75
+ using VariantType = std::variant<{ {#oneOf} }{ {^-first} }, { {/-first} }{ {{.} }}{ {/oneOf} }>;
76
+
77
+ const VariantType& getVariant() const;
78
+ void setVariant(VariantType value);
79
+
80
+ protected:
81
+ VariantType m_variantValue;
82
+ };
83
+
84
+ { {/-first} }{ {/oneOf} }
85
+ { {^oneOf} }
27
86
{ {#isEnum} }
28
87
class { {declspec} } { {classname} }
29
88
: public { {{parent} }}{ {^parent} }ModelBase{ {/parent} }
@@ -120,6 +179,7 @@ protected:
120
179
};
121
180
122
181
{ {/isEnum} }
182
+ { {/oneOf} }
123
183
124
184
{ {#modelNamespaceDeclarations} }
125
185
}
0 commit comments