Skip to content
Snippets Groups Projects
Commit 8d957b7b authored by Cyrille Berger's avatar Cyrille Berger
Browse files

add convenient function to convert ValueHash/ValueList to VariantHash/Map/VariantList

parent b5aa15e9
No related branches found
No related tags found
No related merge requests found
Pipeline #130610 failed
......@@ -197,6 +197,33 @@ ReturnValue<QString> ValueHash::printable() const
return kCrvSuccess(clog_qt::qformat("[{}]", strings));
}
QVariantHash ValueHash::toVariantHash() const
{
QVariantHash values;
QHash<QString, Value> values_ = hash();
for(auto it = values_.begin(); it != values_.end(); ++it)
{
values[it.key()] = it.value().toVariant();
}
return values;
}
QVariantMap ValueHash::toVariantMap() const
{
QVariantMap values;
QHash<QString, Value> values_ = hash();
for(auto it = values_.begin(); it != values_.end(); ++it)
{
values[it.key()] = it.value().toVariant();
}
return values;
}
QVariant ValueHash::toVariant() const
{
return toVariantHash();
}
QHash<QString, Value> ValueHash::hash() const
{
return d->values;
......
......@@ -110,6 +110,15 @@ namespace knowCore
ReturnValue<QCborValue> toCborValue(const SerialisationContexts& _contexts) const;
static ReturnValue<ValueHash> fromCborValue(const QCborValue& _value, const DeserialisationContexts& _contexts);
ReturnValue<QString> printable() const;
/**
* @return a variant hash representation
*/
QVariantHash toVariantHash() const;
/**
* @return a variant map representation
*/
QVariantMap toVariantMap() const;
QVariant toVariant() const;
/**
* Check that the list only contains value of type \ref _uri.
* It returns success if that is true.
......@@ -228,7 +237,7 @@ namespace knowCore
inline ReturnValue<QHash<QString, _T_>> ValueHash::hash() const
{
QHash<QString, _T_> values;
QHash<QString, Value> values_;
QHash<QString, Value> values_ = hash();
for(auto it = values_.begin(); it != values_.end(); ++it)
{
KNOWCORE_RETURN_VALUE_TRY(value, it.value().value<_T_>());
......@@ -240,7 +249,7 @@ namespace knowCore
inline ReturnValue<QMap<QString, _T_>> ValueHash::map() const
{
QMap<QString, _T_> values;
QHash<QString, Value> values_;
QHash<QString, Value> values_ = hash();
for(auto it = values_.begin(); it != values_.end(); ++it)
{
KNOWCORE_RETURN_VALUE_TRY(value, it.value().value<_T_>());
......@@ -251,7 +260,7 @@ namespace knowCore
inline QMap<QString, Value> ValueHash::map() const
{
QMap<QString, Value> values;
QHash<QString, Value> values_;
QHash<QString, Value> values_ = hash();
for(auto it = values_.begin(); it != values_.end(); ++it)
{
values[it.key()] = it.value();
......
......@@ -208,6 +208,19 @@ ReturnValue<ValueList> ValueList::fromVariants(const QVariantList& _t)
return kCrvSuccess(ValueList(values));
}
QVariantList ValueList::toVariantList() const
{
QVariantList l;
std::transform(d->values.begin(), d->values.end(), std::back_inserter(l), [](const Value& v) { return v.toVariant(); });
return l;
}
QVariant ValueList::toVariant() const
{
return toVariantList();
}
#include <knowCore/Uris/askcore_types.h>
#include "MetaTypeImplementation.h"
......
......@@ -70,6 +70,14 @@ namespace knowCore
template<typename _T_>
inline static const ValueList fromValues(const QList<_T_>& _t);
static ReturnValue<ValueList> fromVariants(const QVariantList& _t);
/**
* @return a list of variant
*/
QVariantList toVariantList() const;
/**
* @return a variant
*/
QVariant toVariant() const;
private:
struct Private;
QSharedDataPointer<Private> d;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment