Axivion: Use type aliases from updated Axivion Dashboard DTO generator

Change-Id: I4e27c90d643d4e4ca33fde8dc0ae6e62e6a78fb6
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Andreas Loth
2023-08-22 15:55:28 +02:00
parent c8a25e8fd9
commit 020d4c72e4
4 changed files with 42 additions and 32 deletions

View File

@@ -150,9 +150,9 @@ void DashboardWidget::updateUi()
// not use the issue counts, thus the QtCreator Axivion Plugin // not use the issue counts, thus the QtCreator Axivion Plugin
// is going to stop using them, too. // is going to stop using them, too.
if (last.issueCounts.isMap()) { if (last.issueCounts.isMap()) {
for (const auto &issueCount : last.issueCounts.getMap()) { for (const Dto::Any::MapEntry &issueCount : last.issueCounts.getMap()) {
if (issueCount.second.isMap()) { if (issueCount.second.isMap()) {
const auto &counts = issueCount.second.getMap(); const Dto::Any::Map &counts = issueCount.second.getMap();
qint64 total = extract_value(counts, QStringLiteral(u"Total")); qint64 total = extract_value(counts, QStringLiteral(u"Total"));
allTotal += total; allTotal += total;
qint64 added = extract_value(counts, QStringLiteral(u"Added")); qint64 added = extract_value(counts, QStringLiteral(u"Added"));

View File

@@ -17,7 +17,8 @@
#include <utility> #include <utility>
template<typename Input, typename Output> template<typename Input, typename Output>
static Output concat(const std::initializer_list<const Input> &args) { static Output concat(const std::initializer_list<const Input> &args)
{
size_t size = 0; size_t size = 0;
for (const Input &arg : args) for (const Input &arg : args)
size += arg.size(); size += arg.size();
@@ -28,14 +29,17 @@ static Output concat(const std::initializer_list<const Input> &args) {
return output; return output;
} }
std::string concat(const std::initializer_list<const std::string_view> &args) { std::string concat(const std::initializer_list<const std::string_view> &args)
{
return concat<std::string_view, std::string>(args); return concat<std::string_view, std::string>(args);
} }
QString concat(const std::initializer_list<const QStringView> &args) { QString concat(const std::initializer_list<const QStringView> &args)
{
return concat<QStringView, QString>(args); return concat<QStringView, QString>(args);
} }
QByteArray concat_bytes(const std::initializer_list<const QByteArrayView> &args) { QByteArray concat_bytes(const std::initializer_list<const QByteArrayView> &args)
{
return concat<QByteArrayView, QByteArray>(args); return concat<QByteArrayView, QByteArray>(args);
} }

View File

@@ -597,11 +597,11 @@ namespace Axivion::Internal::Dto {
} }
if (json.isObject()) if (json.isObject())
{ {
return Any(deserialize_json<std::map<QString, Any>>(json)); return Any(deserialize_json<Any::Map>(json));
} }
if (json.isArray()) if (json.isArray())
{ {
return Any(deserialize_json<std::vector<Any>>(json)); return Any(deserialize_json<Any::Vector>(json));
} }
if (json.isBool()) if (json.isBool())
{ {
@@ -657,9 +657,9 @@ namespace Axivion::Internal::Dto {
Any::Any(double value) : data(std::move(value)) {} Any::Any(double value) : data(std::move(value)) {}
Any::Any(std::map<QString, Any> value) : data(std::move(value)) {} Any::Any(Map value) : data(std::move(value)) {}
Any::Any(std::vector<Any> value) : data(std::move(value)) {} Any::Any(Vector value) : data(std::move(value)) {}
Any::Any(bool value) : data(std::move(value)) {} Any::Any(bool value) : data(std::move(value)) {}
@@ -702,12 +702,12 @@ namespace Axivion::Internal::Dto {
return this->data.index() == 3; return this->data.index() == 3;
} }
std::map<QString, Any> &Any::getMap() Any::Map &Any::getMap()
{ {
return std::get<3>(this->data); return std::get<3>(this->data);
} }
const std::map<QString, Any> &Any::getMap() const const Any::Map &Any::getMap() const
{ {
return std::get<3>(this->data); return std::get<3>(this->data);
} }
@@ -717,12 +717,12 @@ namespace Axivion::Internal::Dto {
return this->data.index() == 4; return this->data.index() == 4;
} }
std::vector<Any> &Any::getList() Any::Vector &Any::getList()
{ {
return std::get<4>(this->data); return std::get<4>(this->data);
} }
const std::vector<Any> &Any::getList() const const Any::Vector &Any::getList() const
{ {
return std::get<4>(this->data); return std::get<4>(this->data);
} }

View File

@@ -62,18 +62,13 @@ namespace Axivion::Internal::Dto
virtual ~Serializable() = default; virtual ~Serializable() = default;
}; };
class Any : public Serializable { class Any : public Serializable
private: {
std::variant<
std::nullptr_t, // .index() == 0
QString, // .index() == 1
double, // .index() == 2
std::map<QString, Any>, // .index() == 3
std::vector<Any>, // .index() == 4
bool // .index() == 5
> data;
public: public:
using Map = std::map<QString, Any>;
using MapEntry = std::pair<const QString, Any>;
using Vector = std::vector<Any>;
// Throws Axivion::Internal::Dto::invalid_dto_exception // Throws Axivion::Internal::Dto::invalid_dto_exception
static Any deserialize(const QByteArray &json); static Any deserialize(const QByteArray &json);
@@ -83,9 +78,9 @@ namespace Axivion::Internal::Dto
Any(double value); Any(double value);
Any(std::map<QString, Any> value); Any(Map value);
Any(std::vector<Any> value); Any(Vector value);
Any(bool value); Any(bool value);
@@ -110,18 +105,18 @@ namespace Axivion::Internal::Dto
bool isMap() const; bool isMap() const;
// Throws std::bad_variant_access // Throws std::bad_variant_access
std::map<QString, Any> &getMap(); Map &getMap();
// Throws std::bad_variant_access // Throws std::bad_variant_access
const std::map<QString, Any> &getMap() const; const Map &getMap() const;
bool isList() const; bool isList() const;
// Throws std::bad_variant_access // Throws std::bad_variant_access
std::vector<Any> &getList(); Vector &getList();
// Throws std::bad_variant_access // Throws std::bad_variant_access
const std::vector<Any> &getList() const; const Vector &getList() const;
bool isBool() const; bool isBool() const;
@@ -132,9 +127,20 @@ namespace Axivion::Internal::Dto
const bool &getBool() const; const bool &getBool() const;
virtual QByteArray serialize() const override; virtual QByteArray serialize() const override;
private:
std::variant<
std::nullptr_t, // .index() == 0
QString, // .index() == 1
double, // .index() == 2
Map, // .index() == 3
Vector, // .index() == 4
bool // .index() == 5
> data;
}; };
class ApiVersion { class ApiVersion
{
public: public:
static const std::array<qint32, 4> number; static const std::array<qint32, 4> number;
static const QLatin1String string; static const QLatin1String string;