Skip to content

Commit 6e9dedb

Browse files
authored
[cpp-rest-sdk] fix enum values being used instead of names (#21223)
* [cpp-rest-sdk] fix enum values being used instead of names * [cpp-rest-sdk] remove unnecessary prefix for enum classes * [cpprest-sdk]: use _XPLATSTR for string_t on Windows
1 parent fc29daa commit 6e9dedb

File tree

8 files changed

+56
-55
lines changed

8 files changed

+56
-55
lines changed

modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/model-header.mustache

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ public:
123123
/// {{.}}
124124
/// </summary>
125125
{{/enumDescription}}
126-
{{classname}}_{{{name}}}{{^last}},{{/last}}
126+
{{{name}}}{{^last}},{{/last}}
127127
{{/enumVars}}
128128
{{/allowableValues}}
129129
};
@@ -136,14 +136,14 @@ public:
136136
std::map<e{{classname}},utility::string_t> enumToStrMap = {
137137
{{#allowableValues}}
138138
{{#enumVars}}
139-
{ e{{classname}}::{{classname}}_{{{name}}}, "{{{name}}}" }{{^-last}},{{/-last}}
139+
{ e{{classname}}::{{{name}}}, _XPLATSTR("{{{name}}}") }{{^-last}},{{/-last}}
140140
{{/enumVars}}
141141
{{/allowableValues}}
142142
};
143143
std::map<utility::string_t,e{{classname}}> strToEnumMap = {
144144
{{#allowableValues}}
145145
{{#enumVars}}
146-
{ "{{{name}}}", e{{classname}}::{{classname}}_{{{name}}} }{{^-last}},{{/-last}}
146+
{ _XPLATSTR("{{{name}}}"), e{{classname}}::{{{name}}} }{{^-last}},{{/-last}}
147147
{{/enumVars}}
148148
{{/allowableValues}}
149149
};
@@ -185,8 +185,11 @@ public:
185185
{{#isEnum}}
186186
enum class {{#isContainer}}{{{enumName}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}{{/isContainer}}
187187
{
188-
{{#allowableValues}}{{#enumVars}}{{value}},
189-
{{/enumVars}}{{/allowableValues}}
188+
{{#allowableValues}}
189+
{{#enumVars}}
190+
{{{name}}}{{^last}},{{/last}}
191+
{{/enumVars}}
192+
{{/allowableValues}}
190193
};
191194
{{#description}}
192195
/// <summary>

modules/openapi-generator/src/main/resources/cpp-rest-sdk-client/model-source.mustache

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ using EnumUnderlyingType = {{#isNumeric}}int64_t{{/isNumeric}}{{^isNumeric}}util
7272
{
7373
{{#enumVars}}
7474
case {{value}}:
75-
return {{classname}}::e{{classname}}::{{classname}}_{{name}};
75+
return {{classname}}::e{{classname}}::{{name}};
7676
{{#-last}}
7777
default:
7878
break;
@@ -83,7 +83,7 @@ using EnumUnderlyingType = {{#isNumeric}}int64_t{{/isNumeric}}{{^isNumeric}}util
8383
{{^isNumeric}}
8484
{{#enumVars}}
8585
if (val == utility::conversions::to_string_t(_XPLATSTR("{{{value}}}")))
86-
return {{classname}}::e{{classname}}::{{classname}}_{{name}};
86+
return {{classname}}::e{{classname}}::{{name}};
8787
{{/enumVars}}
8888
{{/isNumeric}}
8989
{{/allowableValues}}
@@ -96,7 +96,7 @@ EnumUnderlyingType fromEnum({{classname}}::e{{classname}} e)
9696
switch (e)
9797
{
9898
{{#enumVars}}
99-
case {{classname}}::e{{classname}}::{{classname}}_{{name}}:
99+
case {{classname}}::e{{classname}}::{{name}}:
100100
return {{#isNumeric}}{{value}}{{/isNumeric}}{{^isNumeric}}_XPLATSTR("{{value}}"){{/isNumeric}};
101101
{{#-last}}
102102
default:
@@ -354,7 +354,7 @@ bool {{classname}}::fromMultiPart(std::shared_ptr<MultipartFormData> multipart,
354354
{
355355
{{#allowableValues}}{{#enumVars}}
356356
if (value == utility::conversions::to_string_t("{{value}}")) {
357-
return {{#isContainer}}{{{enumName}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}{{/isContainer}}::{{value}};
357+
return {{#isContainer}}{{{enumName}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}{{/isContainer}}::{{name}};
358358
}
359359
{{/enumVars}}{{/allowableValues}}
360360
throw std::invalid_argument("Invalid value for conversion to {{{datatypeWithEnum}}}");
@@ -369,7 +369,7 @@ const {{dataType}} {{classname}}::from{{{datatypeWithEnum}}}(const {{{datatypeWi
369369
switch(value)
370370
{
371371
{{#allowableValues}}{{#enumVars}}
372-
case {{#isContainer}}{{{enumName}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}{{/isContainer}}::{{value}}: return utility::conversions::to_string_t("{{value}}");
372+
case {{#isContainer}}{{{enumName}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}{{/isContainer}}::{{name}}: return utility::conversions::to_string_t("{{value}}");
373373
{{/enumVars}}{{/allowableValues}}
374374
}
375375
}

samples/client/petstore/cpp-restsdk/client/include/CppRestPetstoreClient/model/Color.h

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,11 @@ class Color
5454

5555
enum class eColor
5656
{
57-
Color_BLACK,
58-
Color_WHITE,
59-
Color_BROWN,
60-
Color_GOLDEN,
61-
Color_MIXED,
57+
BLACK,
58+
WHITE,
59+
BROWN,
60+
GOLDEN,
61+
MIXED,
6262
};
6363

6464
eColor getValue() const;
@@ -67,18 +67,18 @@ class Color
6767
protected:
6868
eColor m_value;
6969
std::map<eColor,utility::string_t> enumToStrMap = {
70-
{ eColor::Color_BLACK, "BLACK" },
71-
{ eColor::Color_WHITE, "WHITE" },
72-
{ eColor::Color_BROWN, "BROWN" },
73-
{ eColor::Color_GOLDEN, "GOLDEN" },
74-
{ eColor::Color_MIXED, "MIXED" }
70+
{ eColor::BLACK, _XPLATSTR("BLACK") },
71+
{ eColor::WHITE, _XPLATSTR("WHITE") },
72+
{ eColor::BROWN, _XPLATSTR("BROWN") },
73+
{ eColor::GOLDEN, _XPLATSTR("GOLDEN") },
74+
{ eColor::MIXED, _XPLATSTR("MIXED") }
7575
};
7676
std::map<utility::string_t,eColor> strToEnumMap = {
77-
{ "BLACK", eColor::Color_BLACK },
78-
{ "WHITE", eColor::Color_WHITE },
79-
{ "BROWN", eColor::Color_BROWN },
80-
{ "GOLDEN", eColor::Color_GOLDEN },
81-
{ "MIXED", eColor::Color_MIXED }
77+
{ _XPLATSTR("BLACK"), eColor::BLACK },
78+
{ _XPLATSTR("WHITE"), eColor::WHITE },
79+
{ _XPLATSTR("BROWN"), eColor::BROWN },
80+
{ _XPLATSTR("GOLDEN"), eColor::GOLDEN },
81+
{ _XPLATSTR("MIXED"), eColor::MIXED }
8282
};
8383

8484
};

samples/client/petstore/cpp-restsdk/client/include/CppRestPetstoreClient/model/Order.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,9 @@ class Order
5858

5959
enum class StatusEnum
6060
{
61-
placed,
62-
approved,
63-
delivered,
64-
61+
PLACED,
62+
APPROVED,
63+
DELIVERED,
6564
};
6665
/// <summary>
6766
/// Order Status

samples/client/petstore/cpp-restsdk/client/include/CppRestPetstoreClient/model/Pet.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,9 @@ class Pet
6464

6565
enum class StatusEnum
6666
{
67-
available,
68-
pending,
69-
sold,
70-
67+
AVAILABLE,
68+
PENDING,
69+
SOLD,
7170
};
7271
/// <summary>
7372
/// pet status in the store

samples/client/petstore/cpp-restsdk/client/src/model/Color.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,31 +25,31 @@ using EnumUnderlyingType = utility::string_t;
2525
Color::eColor toEnum(const EnumUnderlyingType& val)
2626
{
2727
if (val == utility::conversions::to_string_t(_XPLATSTR("black")))
28-
return Color::eColor::Color_BLACK;
28+
return Color::eColor::BLACK;
2929
if (val == utility::conversions::to_string_t(_XPLATSTR("white")))
30-
return Color::eColor::Color_WHITE;
30+
return Color::eColor::WHITE;
3131
if (val == utility::conversions::to_string_t(_XPLATSTR("brown")))
32-
return Color::eColor::Color_BROWN;
32+
return Color::eColor::BROWN;
3333
if (val == utility::conversions::to_string_t(_XPLATSTR("golden")))
34-
return Color::eColor::Color_GOLDEN;
34+
return Color::eColor::GOLDEN;
3535
if (val == utility::conversions::to_string_t(_XPLATSTR("mixed")))
36-
return Color::eColor::Color_MIXED;
36+
return Color::eColor::MIXED;
3737
return {};
3838
}
3939

4040
EnumUnderlyingType fromEnum(Color::eColor e)
4141
{
4242
switch (e)
4343
{
44-
case Color::eColor::Color_BLACK:
44+
case Color::eColor::BLACK:
4545
return _XPLATSTR("black");
46-
case Color::eColor::Color_WHITE:
46+
case Color::eColor::WHITE:
4747
return _XPLATSTR("white");
48-
case Color::eColor::Color_BROWN:
48+
case Color::eColor::BROWN:
4949
return _XPLATSTR("brown");
50-
case Color::eColor::Color_GOLDEN:
50+
case Color::eColor::GOLDEN:
5151
return _XPLATSTR("golden");
52-
case Color::eColor::Color_MIXED:
52+
case Color::eColor::MIXED:
5353
return _XPLATSTR("mixed");
5454
default:
5555
break;

samples/client/petstore/cpp-restsdk/client/src/model/Order.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -239,15 +239,15 @@ Order::StatusEnum Order::toStatusEnum(const utility::string_t& value) const
239239
{
240240

241241
if (value == utility::conversions::to_string_t("placed")) {
242-
return StatusEnum::placed;
242+
return StatusEnum::PLACED;
243243
}
244244

245245
if (value == utility::conversions::to_string_t("approved")) {
246-
return StatusEnum::approved;
246+
return StatusEnum::APPROVED;
247247
}
248248

249249
if (value == utility::conversions::to_string_t("delivered")) {
250-
return StatusEnum::delivered;
250+
return StatusEnum::DELIVERED;
251251
}
252252

253253
throw std::invalid_argument("Invalid value for conversion to StatusEnum");
@@ -259,11 +259,11 @@ const utility::string_t Order::fromStatusEnum(const StatusEnum value) const
259259
switch(value)
260260
{
261261

262-
case StatusEnum::placed: return utility::conversions::to_string_t("placed");
262+
case StatusEnum::PLACED: return utility::conversions::to_string_t("placed");
263263

264-
case StatusEnum::approved: return utility::conversions::to_string_t("approved");
264+
case StatusEnum::APPROVED: return utility::conversions::to_string_t("approved");
265265

266-
case StatusEnum::delivered: return utility::conversions::to_string_t("delivered");
266+
case StatusEnum::DELIVERED: return utility::conversions::to_string_t("delivered");
267267

268268
}
269269
}

samples/client/petstore/cpp-restsdk/client/src/model/Pet.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -263,15 +263,15 @@ Pet::StatusEnum Pet::toStatusEnum(const utility::string_t& value) const
263263
{
264264

265265
if (value == utility::conversions::to_string_t("available")) {
266-
return StatusEnum::available;
266+
return StatusEnum::AVAILABLE;
267267
}
268268

269269
if (value == utility::conversions::to_string_t("pending")) {
270-
return StatusEnum::pending;
270+
return StatusEnum::PENDING;
271271
}
272272

273273
if (value == utility::conversions::to_string_t("sold")) {
274-
return StatusEnum::sold;
274+
return StatusEnum::SOLD;
275275
}
276276

277277
throw std::invalid_argument("Invalid value for conversion to StatusEnum");
@@ -283,11 +283,11 @@ const utility::string_t Pet::fromStatusEnum(const StatusEnum value) const
283283
switch(value)
284284
{
285285

286-
case StatusEnum::available: return utility::conversions::to_string_t("available");
286+
case StatusEnum::AVAILABLE: return utility::conversions::to_string_t("available");
287287

288-
case StatusEnum::pending: return utility::conversions::to_string_t("pending");
288+
case StatusEnum::PENDING: return utility::conversions::to_string_t("pending");
289289

290-
case StatusEnum::sold: return utility::conversions::to_string_t("sold");
290+
case StatusEnum::SOLD: return utility::conversions::to_string_t("sold");
291291

292292
}
293293
}

0 commit comments

Comments
 (0)