diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java index f6cacde238a..1c4aa5c6085 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/CppQt5AbstractCodegen.java @@ -105,6 +105,7 @@ public class CppQt5AbstractCodegen extends AbstractCppCodegen implements Codegen typeMapping.put("number", "double"); typeMapping.put("array", "QList"); typeMapping.put("map", "QMap"); + typeMapping.put("set", "QSet"); typeMapping.put("object", PREFIX + "Object"); // mapped as "file" type for OAS 3.0 typeMapping.put("ByteArray", "QByteArray"); @@ -122,6 +123,7 @@ public class CppQt5AbstractCodegen extends AbstractCppCodegen implements Codegen systemIncludes.add("QString"); systemIncludes.add("QList"); systemIncludes.add("QMap"); + systemIncludes.add("QSet"); systemIncludes.add("QDate"); systemIncludes.add("QDateTime"); systemIncludes.add("QByteArray"); diff --git a/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache b/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache index 0a8e6b8b214..994ae817630 100644 --- a/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache +++ b/modules/openapi-generator/src/main/resources/cpp-qt5-client/helpers-header.mustache @@ -25,21 +25,33 @@ bool setDateTimeFormat(const QString&); template QString toStringValue(const QList &val); +template +QString toStringValue(const QSet &val); + template bool fromStringValue(const QList &inStr, QList &val); +template +bool fromStringValue(const QSet &inStr, QList &val); + template bool fromStringValue(const QMap &inStr, QMap &val); template QJsonValue toJsonValue(const QList &val); +template +QJsonValue toJsonValue(const QSet &val); + template QJsonValue toJsonValue(const QMap &val); template bool fromJsonValue(QList &val, const QJsonValue &jval); +template +bool fromJsonValue(QSet &val, const QJsonValue &jval); + template bool fromJsonValue(QMap &val, const QJsonValue &jval); @@ -68,6 +80,18 @@ QString toStringValue(const QList &val) { return strArray; } +template +QString toStringValue(const QSet &val) { + QString strArray; + for (const auto &item : val) { + strArray.append(toStringValue(item) + ","); + } + if (val.count() > 0) { + strArray.chop(1); + } + return strArray; +} + QJsonValue toJsonValue(const QString &value); QJsonValue toJsonValue(const QDateTime &value); QJsonValue toJsonValue(const QByteArray &value); @@ -90,6 +114,15 @@ QJsonValue toJsonValue(const QList &val) { return jArray; } +template +QJsonValue toJsonValue(const QSet &val) { + QJsonArray jArray; + for (const auto &item : val) { + jArray.append(toJsonValue(item)); + } + return jArray; +} + template QJsonValue toJsonValue(const QMap &val) { QJsonObject jObject; @@ -123,6 +156,17 @@ bool fromStringValue(const QList &inStr, QList &val) { return ok; } +template +bool fromStringValue(const QSet &inStr, QList &val) { + bool ok = (inStr.count() > 0); + for (const auto &item : inStr) { + T itemVal; + ok &= fromStringValue(item, itemVal); + val.push_back(itemVal); + } + return ok; +} + template bool fromStringValue(const QMap &inStr, QMap &val) { bool ok = (inStr.count() > 0); @@ -162,6 +206,21 @@ bool fromJsonValue(QList &val, const QJsonValue &jval) { return ok; } +template +bool fromJsonValue(QSet &val, const QJsonValue &jval) { + bool ok = true; + if (jval.isArray()) { + for (const auto jitem : jval.toArray()) { + T item; + ok &= fromJsonValue(item, jitem); + val.insert(item); + } + } else { + ok = false; + } + return ok; +} + template bool fromJsonValue(QMap &val, const QJsonValue &jval) { bool ok = true; diff --git a/samples/client/petstore/cpp-qt5/client/PFXHelpers.h b/samples/client/petstore/cpp-qt5/client/PFXHelpers.h index 8bed4f0e80c..a0d2c4d47a4 100644 --- a/samples/client/petstore/cpp-qt5/client/PFXHelpers.h +++ b/samples/client/petstore/cpp-qt5/client/PFXHelpers.h @@ -33,21 +33,33 @@ bool setDateTimeFormat(const QString&); template QString toStringValue(const QList &val); +template +QString toStringValue(const QSet &val); + template bool fromStringValue(const QList &inStr, QList &val); +template +bool fromStringValue(const QSet &inStr, QList &val); + template bool fromStringValue(const QMap &inStr, QMap &val); template QJsonValue toJsonValue(const QList &val); +template +QJsonValue toJsonValue(const QSet &val); + template QJsonValue toJsonValue(const QMap &val); template bool fromJsonValue(QList &val, const QJsonValue &jval); +template +bool fromJsonValue(QSet &val, const QJsonValue &jval); + template bool fromJsonValue(QMap &val, const QJsonValue &jval); @@ -76,6 +88,18 @@ QString toStringValue(const QList &val) { return strArray; } +template +QString toStringValue(const QSet &val) { + QString strArray; + for (const auto &item : val) { + strArray.append(toStringValue(item) + ","); + } + if (val.count() > 0) { + strArray.chop(1); + } + return strArray; +} + QJsonValue toJsonValue(const QString &value); QJsonValue toJsonValue(const QDateTime &value); QJsonValue toJsonValue(const QByteArray &value); @@ -98,6 +122,15 @@ QJsonValue toJsonValue(const QList &val) { return jArray; } +template +QJsonValue toJsonValue(const QSet &val) { + QJsonArray jArray; + for (const auto &item : val) { + jArray.append(toJsonValue(item)); + } + return jArray; +} + template QJsonValue toJsonValue(const QMap &val) { QJsonObject jObject; @@ -131,6 +164,17 @@ bool fromStringValue(const QList &inStr, QList &val) { return ok; } +template +bool fromStringValue(const QSet &inStr, QList &val) { + bool ok = (inStr.count() > 0); + for (const auto &item : inStr) { + T itemVal; + ok &= fromStringValue(item, itemVal); + val.push_back(itemVal); + } + return ok; +} + template bool fromStringValue(const QMap &inStr, QMap &val) { bool ok = (inStr.count() > 0); @@ -170,6 +214,21 @@ bool fromJsonValue(QList &val, const QJsonValue &jval) { return ok; } +template +bool fromJsonValue(QSet &val, const QJsonValue &jval) { + bool ok = true; + if (jval.isArray()) { + for (const auto jitem : jval.toArray()) { + T item; + ok &= fromJsonValue(item, jitem); + val.insert(item); + } + } else { + ok = false; + } + return ok; +} + template bool fromJsonValue(QMap &val, const QJsonValue &jval) { bool ok = true;