diff --git a/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-header.mustache b/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-header.mustache index 2319c59b3fa1..f4810ba58888 100644 --- a/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-header.mustache @@ -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}} diff --git a/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-source.mustache b/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-source.mustache index 07b557157ea2..4d262483e1f3 100644 --- a/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-source.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-ue4/api-operations-source.mustache @@ -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 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& JsonValue, {{classname FString TmpValue; if (JsonValue->TryGetString(TmpValue)) { - static TMap 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; diff --git a/modules/openapi-generator/src/main/resources/cpp-ue4/model-header.mustache b/modules/openapi-generator/src/main/resources/cpp-ue4/model-header.mustache index 900dcf7f3189..8742ad7a85f5 100644 --- a/modules/openapi-generator/src/main/resources/cpp-ue4/model-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-ue4/model-header.mustache @@ -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}} diff --git a/modules/openapi-generator/src/main/resources/cpp-ue4/model-source.mustache b/modules/openapi-generator/src/main/resources/cpp-ue4/model-source.mustache index d084f8a80339..3022a7a935d7 100644 --- a/modules/openapi-generator/src/main/resources/cpp-ue4/model-source.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-ue4/model-source.mustache @@ -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 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& JsonValue, {{classname FString TmpValue; if (JsonValue->TryGetString(TmpValue)) { - static TMap 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 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& JsonValue, {{classname FString TmpValue; if (JsonValue->TryGetString(TmpValue)) { - static TMap 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;