forked from loafle/openapi-generator-original
[cpp-ue4] Added public methods to process enums in string form (#9569)
* [cpp-ue4] Added public methods to process enums in string form as it may be useful for the user code * [cpp-ue4] Fixed linker errors in some configurations
This commit is contained in:
@@ -35,6 +35,9 @@ public:
|
||||
{{/enumVars}}
|
||||
};
|
||||
{{/allowableValues}}
|
||||
|
||||
static FString EnumToString(const {{{enumName}}}& EnumValue);
|
||||
static bool EnumFromString(const FString& EnumAsString, {{{enumName}}}& EnumValue);
|
||||
{{#description}}/* {{{description}}} */
|
||||
{{/description}}{{^required}}TOptional<{{/required}}{{{datatypeWithEnum}}}{{^required}}>{{/required}} {{paramName}}{{#required}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}{{/required}};
|
||||
{{/isEnum}}
|
||||
|
||||
@@ -32,6 +32,28 @@ inline FString ToString(const {{classname}}::{{operationIdCamelCase}}Request::{{
|
||||
return TEXT("");
|
||||
}
|
||||
|
||||
FString {{classname}}::{{operationIdCamelCase}}Request::EnumToString(const {{classname}}::{{operationIdCamelCase}}Request::{{{enumName}}}& EnumValue)
|
||||
{
|
||||
return ToString(EnumValue);
|
||||
}
|
||||
|
||||
inline bool FromString(const FString& EnumAsString, {{classname}}::{{operationIdCamelCase}}Request::{{{enumName}}}& Value)
|
||||
{
|
||||
static TMap<FString, {{classname}}::{{operationIdCamelCase}}Request::{{{enumName}}}> StringToEnum = { {{#allowableValues}}{{#enumVars}}
|
||||
{ TEXT("{{{value}}}"), {{classname}}::{{operationIdCamelCase}}Request::{{{enumName}}}::{{name}} },{{/enumVars}}{{/allowableValues}} };
|
||||
|
||||
const auto Found = StringToEnum.Find(EnumAsString);
|
||||
if(Found)
|
||||
Value = *Found;
|
||||
|
||||
return Found != nullptr;
|
||||
}
|
||||
|
||||
bool {{classname}}::{{operationIdCamelCase}}Request::EnumFromString(const FString& EnumAsString, {{classname}}::{{operationIdCamelCase}}Request::{{{enumName}}}& EnumValue)
|
||||
{
|
||||
return FromString(EnumAsString, EnumValue);
|
||||
}
|
||||
|
||||
inline FStringFormatArg ToStringFormatArg(const {{classname}}::{{operationIdCamelCase}}Request::{{{enumName}}}& Value)
|
||||
{
|
||||
return FStringFormatArg(ToString(Value));
|
||||
@@ -48,15 +70,8 @@ inline bool TryGetJsonValue(const TSharedPtr<FJsonValue>& JsonValue, {{classname
|
||||
FString TmpValue;
|
||||
if (JsonValue->TryGetString(TmpValue))
|
||||
{
|
||||
static TMap<FString, {{classname}}::{{operationIdCamelCase}}Request::{{{enumName}}}> StringToEnum = { {{#enumVars}}
|
||||
{ TEXT("{{{value}}}"), {{classname}}::{{operationIdCamelCase}}Request::{{{enumName}}}::{{name}} },{{/enumVars}} };
|
||||
|
||||
const auto Found = StringToEnum.Find(TmpValue);
|
||||
if(Found)
|
||||
{
|
||||
Value = *Found;
|
||||
if(FromString(TmpValue, Value))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
{{/allowableValues}}
|
||||
return false;
|
||||
|
||||
@@ -36,6 +36,9 @@ public:
|
||||
|
||||
Values Value{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}};
|
||||
{{/allowableValues}}
|
||||
|
||||
static FString EnumToString(const Values& EnumValue);
|
||||
static bool EnumFromString(const FString& EnumAsString, Values& EnumValue);
|
||||
{{/isEnum}}
|
||||
{{^isEnum}}
|
||||
FString Value{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}};
|
||||
@@ -51,6 +54,9 @@ public:
|
||||
{{/enumVars}}
|
||||
};
|
||||
{{/allowableValues}}
|
||||
|
||||
static FString EnumToString(const {{{enumName}}}& EnumValue);
|
||||
static bool EnumFromString(const FString& EnumAsString, {{{enumName}}}& EnumValue);
|
||||
{{#description}}/* {{{description}}} */
|
||||
{{/description}}{{^required}}TOptional<{{/required}}{{{datatypeWithEnum}}}{{^required}}>{{/required}} {{name}}{{#required}}{{#defaultValue}} = {{{defaultValue}}}{{/defaultValue}}{{/required}};
|
||||
{{/isEnum}}
|
||||
|
||||
@@ -28,6 +28,28 @@ inline FString ToString(const {{classname}}::Values& Value)
|
||||
return TEXT("");
|
||||
}
|
||||
|
||||
FString {{classname}}::EnumToString(const {{classname}}::Values& EnumValue)
|
||||
{
|
||||
return ToString(EnumValue);
|
||||
}
|
||||
|
||||
inline bool FromString(const FString& EnumAsString, {{classname}}::Values& Value)
|
||||
{
|
||||
static TMap<FString, {{classname}}::Values> StringToEnum = { {{#allowableValues}}{{#enumVars}}
|
||||
{ TEXT("{{{value}}}"), {{classname}}::Values::{{name}} },{{/enumVars}}{{/allowableValues}} };
|
||||
|
||||
const auto Found = StringToEnum.Find(EnumAsString);
|
||||
if(Found)
|
||||
Value = *Found;
|
||||
|
||||
return Found != nullptr;
|
||||
}
|
||||
|
||||
bool {{classname}}::EnumFromString(const FString& EnumAsString, {{classname}}::Values& EnumValue)
|
||||
{
|
||||
return FromString(EnumAsString, EnumValue);
|
||||
}
|
||||
|
||||
inline FStringFormatArg ToStringFormatArg(const {{classname}}::Values& Value)
|
||||
{
|
||||
return FStringFormatArg(ToString(Value));
|
||||
@@ -44,15 +66,8 @@ inline bool TryGetJsonValue(const TSharedPtr<FJsonValue>& JsonValue, {{classname
|
||||
FString TmpValue;
|
||||
if (JsonValue->TryGetString(TmpValue))
|
||||
{
|
||||
static TMap<FString, {{classname}}::Values> StringToEnum = { {{#enumVars}}
|
||||
{ TEXT("{{{value}}}"), {{classname}}::Values::{{name}} },{{/enumVars}} };
|
||||
|
||||
const auto Found = StringToEnum.Find(TmpValue);
|
||||
if(Found)
|
||||
{
|
||||
Value = *Found;
|
||||
if(FromString(TmpValue, Value))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
{{/allowableValues}}
|
||||
return false;
|
||||
@@ -78,6 +93,28 @@ inline FString ToString(const {{classname}}::{{{enumName}}}& Value)
|
||||
return TEXT("");
|
||||
}
|
||||
|
||||
FString {{classname}}::EnumToString(const {{classname}}::{{{enumName}}}& EnumValue)
|
||||
{
|
||||
return ToString(EnumValue);
|
||||
}
|
||||
|
||||
inline bool FromString(const FString& EnumAsString, {{classname}}::{{{enumName}}}& Value)
|
||||
{
|
||||
static TMap<FString, {{classname}}::{{{enumName}}}> StringToEnum = { {{#allowableValues}}{{#enumVars}}
|
||||
{ TEXT("{{{value}}}"), {{classname}}::{{{enumName}}}::{{name}} },{{/enumVars}}{{/allowableValues}} };
|
||||
|
||||
const auto Found = StringToEnum.Find(EnumAsString);
|
||||
if(Found)
|
||||
Value = *Found;
|
||||
|
||||
return Found != nullptr;
|
||||
}
|
||||
|
||||
bool {{classname}}::EnumFromString(const FString& EnumAsString, {{classname}}::{{{enumName}}}& EnumValue)
|
||||
{
|
||||
return FromString(EnumAsString, EnumValue);
|
||||
}
|
||||
|
||||
inline FStringFormatArg ToStringFormatArg(const {{classname}}::{{{enumName}}}& Value)
|
||||
{
|
||||
return FStringFormatArg(ToString(Value));
|
||||
@@ -94,15 +131,8 @@ inline bool TryGetJsonValue(const TSharedPtr<FJsonValue>& JsonValue, {{classname
|
||||
FString TmpValue;
|
||||
if (JsonValue->TryGetString(TmpValue))
|
||||
{
|
||||
static TMap<FString, {{classname}}::{{{enumName}}}> StringToEnum = { {{#enumVars}}
|
||||
{ TEXT("{{{value}}}"), {{classname}}::{{{enumName}}}::{{name}} },{{/enumVars}} };
|
||||
|
||||
const auto Found = StringToEnum.Find(TmpValue);
|
||||
if(Found)
|
||||
{
|
||||
Value = *Found;
|
||||
if(FromString(TmpValue, Value))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
{{/allowableValues}}
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user