knowL: Knowledge Libraries
Loading...
Searching...
No Matches
Values.h
1#pragma once
2
3#include <knowValues/ValuesDef.h>
4#include <knowCore/ObjectSharedRef.h>
5#include <knowCore/TypeDefinitions.h>
6
7#include "Forward.h"
8
9namespace knowValues::Values
10{
11 namespace details
12 {
13 template<typename _T_>
14 class Value : public knowCore::ObjectSharedRef<_T_>
15 {
16 public:
17 using Builder = typename _T_::Builder;
18 public:
19 using Definition = _T_;
20 Value(_T_* _t = nullptr) : knowCore::ObjectSharedRef<_T_>(_t, true)
21 {
22 }
24 {
25 }
26 Value(const Value& _rhs) : knowCore::ObjectSharedRef<_T_>(_rhs)
27 {
28 }
29 Value& operator=(const Value& _rhs)
30 {
32 return *this;
33 }
34 Value(Builder&& _builder) : Value((_T_*)(_builder))
35 {
36 }
37 static Builder create()
38 {
39 return _T_::create();
40 }
41 public:
42 static knowCore::ReturnValue<Value<_T_>> fromJsonValue(const QJsonValue& _value)
43 {
44 QString errMsg;
45 Value value = Value(Definition::fromJson(_value.toObject(), &errMsg));
46 if(value)
47 {
48 return kCrvSuccess(value);
49 } else {
50 return kCrvError("Failed to parse from Json: {}", errMsg);
51 }
52 }
53 static knowCore::ReturnValue<Value<_T_>> fromCborValue(const QCborValue& _value)
54 {
55 QString errMsg;
56 Value value = Value(Definition::fromCbor(_value.toMap(), &errMsg));
57 if(value)
58 {
59 return kCrvSuccess(value);
60 } else {
61 return kCrvError("Failed to parse from Cbor: {}", errMsg);
62 }
63 }
64
65 };
66 template<>
67 class Value<Definitions::Value> : public knowCore::ObjectSharedRef<Definitions::Value>
68 {
69 public:
70 using Definition = Definitions::Value;
71 Value(Definitions::Value* _t = nullptr) : knowCore::ObjectSharedRef<Definitions::Value>(_t, true)
72 {
73 }
75 {
76 }
78 {
79 }
80 Value& operator=(const Value& _rhs)
81 {
83 return *this;
84 }
85 public:
86 static knowCore::ReturnValue<Value<Definitions::Value>> fromJsonValue(const QJsonValue& _value)
87 {
88 QString errMsg;
89 Value value = Value(Definition::fromJson(_value.toObject(), &errMsg));
90 if(value)
91 {
92 return kCrvSuccess(value);
93 } else {
94 return kCrvError("Failed to parse from Json: {}", errMsg);
95 }
96 }
97 static knowCore::ReturnValue<Value<Definitions::Value>> fromCborValue(const QCborValue& _value)
98 {
99 QString errMsg;
100 Value value = Value(Definition::fromCbor(_value.toMap(), &errMsg));
101 if(value)
102 {
103 return kCrvSuccess(value);
104 } else {
105 return kCrvError("Failed to parse from Cbor: {}", errMsg);
106 }
107 }
108 };
109 }
110}
111
112#define __KNOWVALUES_DECLARE_VALUE(_VALUE_, _I_) \
113 KNOWCORE_DECLARE_FULL_METATYPE(knowValues::Values, _VALUE_)
114
115#define __KNOWVALUES_DECLARE_VALUES(...) \
116 KNOWCORE_FOREACH(__KNOWVALUES_DECLARE_VALUE, __VA_ARGS__)
117
118__KNOWVALUES_DECLARE_VALUES(KNOWVALUES_VALUES_LIST)
119
120#undef __KNOWVALUES_DECLARE_VALUES
121#undef __KNOWVALUES_DECLARE_VALUE
Definition ReturnValue.h:29
Definition SharedRef.h:22