knowL: Knowledge Libraries
Loading...
Searching...
No Matches
ValueList.h
1#pragma once
2
3#include "Value.h"
4
5namespace knowCore
6{
8 {
9 public:
10 using const_iterator = QList<Value>::const_iterator;
11 public:
12 ValueList();
13 ValueList(const QList<Value>& _value);
14 ValueList(const ValueList& _list);
15 ValueList operator=(const ValueList& _list);
16 ~ValueList();
17 int size() const;
18 Value at(int _index) const;
19 template<typename _T_>
20 ReturnValue<_T_> at(int _index) const;
21 template<typename _T_>
22 ReturnValue<QList<_T_>> values() const;
23
24 bool operator==(const ValueList& _rhs) const;
25 bool operator==(const QList<Value>& _rhs) const;
26 Value operator[](std::size_t _index) const;
27
28 const_iterator begin() const;
29 const_iterator end() const;
30
34 bool contains(const knowCore::Value& _value) const;
35 template<typename _T_>
36 bool contains(const _T_& _value) const { return contains(knowCore::Value::fromValue(_value)); }
37
38 ReturnValue<QByteArray> md5() const;
39 ReturnValue<QJsonValue> toJsonValue(const SerialisationContexts& _contexts) const;
40 static ReturnValue<ValueList> fromJsonValue(const QJsonValue& _value, const DeserialisationContexts& _contexts);
41 ReturnValue<QCborValue> toCborValue(const SerialisationContexts& _contexts) const;
42 static ReturnValue<ValueList> fromCborValue(const QCborValue& _value, const DeserialisationContexts& _contexts);
43 ReturnValue<QString> printable() const;
44 QList<Value> values() const;
51 ReturnVoid checkContainsOnly(const Uri& _uri) const;
52 template<typename _T_>
53 inline ReturnVoid checkContainsOnly() const;
57 operator Value() const { return Value::fromValue(*this); }
64 bool canConvertAllTo(const Uri& _uri) const;
65 template<typename _T_>
66 bool canConvertAllTo() const;
70 template<typename _T_>
71 inline static const ValueList fromValues(const QList<_T_>& _t);
72 static ReturnValue<ValueList> fromVariants(const QVariantList& _t);
76 QVariantList toVariantList() const;
80 QVariant toVariant() const;
81 private:
82 struct Private;
83 QSharedDataPointer<Private> d;
84 };
85
86 template<typename _T_>
87 ReturnValue<_T_> ValueList::at(int _index) const
88 {
89 return at(_index).template value<_T_>();
90 }
91 template<typename _T_>
92 ReturnValue<QList<_T_>> ValueList::values() const
93 {
94 QList<_T_> list;
95 for(int i = 0; i < size(); ++i)
96 {
97 KNOWCORE_RETURN_VALUE_TRY(value, at<_T_>(i));
98 list.append(value);
99 }
100 return kCrvSuccess(list);
101 }
102 template<typename _T_>
103 ReturnVoid ValueList::checkContainsOnly() const
104 {
105 return checkContainsOnly(MetaTypeInformation<_T_>::uri());
106 }
107 template<typename _T_>
108 bool ValueList::canConvertAllTo() const
109 {
110 return canConvertAllTo(MetaTypeInformation<_T_>::uri());
111 }
112 template<typename _T_>
114 {
115 QList<Value> l;
116 std::transform(_t.begin(), _t.end(), std::back_inserter(l), [](const _T_& _t) -> Value { return Value::fromValue(_t); });
117 return l;
118 }
119
120}
121
122KNOWCORE_CORE_DECLARE_FORMATTER_PRINTABLE(knowCore::ValueList)
123KNOWCORE_DECLARE_FULL_METATYPE(knowCore, ValueList)
Definition Forward.h:12
Definition MetaType.h:114
Definition ReturnValue.h:85
Definition ReturnValue.h:29
Definition MetaType.h:145
Definition Uri.h:14
Definition ValueList.h:8
bool canConvertAllTo(const Uri &_uri) const
Definition ValueList.cpp:188
QVariantList toVariantList() const
Definition ValueList.cpp:211
static const ValueList fromValues(const QList< _T_ > &_t)
Definition ValueList.h:113
ReturnVoid checkContainsOnly(const Uri &_uri) const
Definition ValueList.cpp:176
QVariant toVariant() const
Definition ValueList.cpp:218
bool contains(const knowCore::Value &_value) const
Definition ValueList.cpp:74
Definition Value.h:13
static Value fromValue(const _T_ &_value)
Definition Value.h:184