Skip to content
Extraits de code Groupes Projets
Vérifiée Valider ae356980 rédigé par Kubat's avatar Kubat
Parcourir les fichiers

UTILS: Add a json builder object to hold some useful functionalities like...

UTILS: Add a json builder object to hold some useful functionalities like create a QJsonArray that will be interpreted as an ordered QJsonObject by the property viewer
parent e4f6d130
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!18Implement the VivyDocument specification
#include "JsonBuilder.hh"
using namespace Vivy;
QJsonArray
JsonBuilder::createOrderedJsonObject(
std::initializer_list<QPair<QString, QJsonValue>> elements) noexcept
{
QJsonArray ret;
int index = 0;
for (const QPair<QString, QJsonValue> &elem : elements) {
ret.insert(index, QJsonObject({ elem }));
++index;
}
return ret;
}
QJsonDocument
JsonBuilder::createOrderedJsonDocument(
std::initializer_list<QPair<QString, QJsonValue>> elements) noexcept
{
return QJsonDocument(createOrderedJsonObject(elements));
}
#pragma once
#include "Utils.hh"
namespace Vivy
{
// Struct used to englobe all json build facilities. This is a class used as a
// private-able namespace that can't be 'using' and thus create unreadable
// code. You can't build this thing, everything is static inside.
struct JsonBuilder final {
VIVY_UNMOVABLE_OBJECT(JsonBuilder)
static QJsonArray
createOrderedJsonObject(std::initializer_list<QPair<QString, QJsonValue>> elements) noexcept;
static QJsonDocument
createOrderedJsonDocument(std::initializer_list<QPair<QString, QJsonValue>> elements) noexcept;
template <PropertyConstViewable T> static QPair<QString, QJsonValue>
getSubDocumentJson(const QString &name, std::shared_ptr<T> subDocPtr) noexcept
{
if (subDocPtr == nullptr)
return QPair{ name, QJsonValue() };
else
return QPair{ name, subDocPtr->getProperties().object() };
}
private:
JsonBuilder() noexcept {}
};
}
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter