added QSet as datatype for unique items (#8830)

This commit is contained in:
basyskom-dege 2021-03-02 18:44:22 +01:00 committed by GitHub
parent 83a5c3db1e
commit 950bb3d18f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 120 additions and 0 deletions

View File

@ -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");

View File

@ -25,21 +25,33 @@ bool setDateTimeFormat(const QString&);
template <typename T>
QString toStringValue(const QList<T> &val);
template <typename T>
QString toStringValue(const QSet<T> &val);
template <typename T>
bool fromStringValue(const QList<QString> &inStr, QList<T> &val);
template <typename T>
bool fromStringValue(const QSet<QString> &inStr, QList<T> &val);
template <typename T>
bool fromStringValue(const QMap<QString, QString> &inStr, QMap<QString, T> &val);
template <typename T>
QJsonValue toJsonValue(const QList<T> &val);
template <typename T>
QJsonValue toJsonValue(const QSet<T> &val);
template <typename T>
QJsonValue toJsonValue(const QMap<QString, T> &val);
template <typename T>
bool fromJsonValue(QList<T> &val, const QJsonValue &jval);
template <typename T>
bool fromJsonValue(QSet<T> &val, const QJsonValue &jval);
template <typename T>
bool fromJsonValue(QMap<QString, T> &val, const QJsonValue &jval);
@ -68,6 +80,18 @@ QString toStringValue(const QList<T> &val) {
return strArray;
}
template <typename T>
QString toStringValue(const QSet<T> &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<T> &val) {
return jArray;
}
template <typename T>
QJsonValue toJsonValue(const QSet<T> &val) {
QJsonArray jArray;
for (const auto &item : val) {
jArray.append(toJsonValue(item));
}
return jArray;
}
template <typename T>
QJsonValue toJsonValue(const QMap<QString, T> &val) {
QJsonObject jObject;
@ -123,6 +156,17 @@ bool fromStringValue(const QList<QString> &inStr, QList<T> &val) {
return ok;
}
template <typename T>
bool fromStringValue(const QSet<QString> &inStr, QList<T> &val) {
bool ok = (inStr.count() > 0);
for (const auto &item : inStr) {
T itemVal;
ok &= fromStringValue(item, itemVal);
val.push_back(itemVal);
}
return ok;
}
template <typename T>
bool fromStringValue(const QMap<QString, QString> &inStr, QMap<QString, T> &val) {
bool ok = (inStr.count() > 0);
@ -162,6 +206,21 @@ bool fromJsonValue(QList<T> &val, const QJsonValue &jval) {
return ok;
}
template <typename T>
bool fromJsonValue(QSet<T> &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 <typename T>
bool fromJsonValue(QMap<QString, T> &val, const QJsonValue &jval) {
bool ok = true;

View File

@ -33,21 +33,33 @@ bool setDateTimeFormat(const QString&);
template <typename T>
QString toStringValue(const QList<T> &val);
template <typename T>
QString toStringValue(const QSet<T> &val);
template <typename T>
bool fromStringValue(const QList<QString> &inStr, QList<T> &val);
template <typename T>
bool fromStringValue(const QSet<QString> &inStr, QList<T> &val);
template <typename T>
bool fromStringValue(const QMap<QString, QString> &inStr, QMap<QString, T> &val);
template <typename T>
QJsonValue toJsonValue(const QList<T> &val);
template <typename T>
QJsonValue toJsonValue(const QSet<T> &val);
template <typename T>
QJsonValue toJsonValue(const QMap<QString, T> &val);
template <typename T>
bool fromJsonValue(QList<T> &val, const QJsonValue &jval);
template <typename T>
bool fromJsonValue(QSet<T> &val, const QJsonValue &jval);
template <typename T>
bool fromJsonValue(QMap<QString, T> &val, const QJsonValue &jval);
@ -76,6 +88,18 @@ QString toStringValue(const QList<T> &val) {
return strArray;
}
template <typename T>
QString toStringValue(const QSet<T> &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<T> &val) {
return jArray;
}
template <typename T>
QJsonValue toJsonValue(const QSet<T> &val) {
QJsonArray jArray;
for (const auto &item : val) {
jArray.append(toJsonValue(item));
}
return jArray;
}
template <typename T>
QJsonValue toJsonValue(const QMap<QString, T> &val) {
QJsonObject jObject;
@ -131,6 +164,17 @@ bool fromStringValue(const QList<QString> &inStr, QList<T> &val) {
return ok;
}
template <typename T>
bool fromStringValue(const QSet<QString> &inStr, QList<T> &val) {
bool ok = (inStr.count() > 0);
for (const auto &item : inStr) {
T itemVal;
ok &= fromStringValue(item, itemVal);
val.push_back(itemVal);
}
return ok;
}
template <typename T>
bool fromStringValue(const QMap<QString, QString> &inStr, QMap<QString, T> &val) {
bool ok = (inStr.count() > 0);
@ -170,6 +214,21 @@ bool fromJsonValue(QList<T> &val, const QJsonValue &jval) {
return ok;
}
template <typename T>
bool fromJsonValue(QSet<T> &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 <typename T>
bool fromJsonValue(QMap<QString, T> &val, const QJsonValue &jval) {
bool ok = true;