knowL: Knowledge Libraries
Loading...
Searching...
No Matches
knowl
src
knowValues
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
9
namespace
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
}
23
Value
(
const
knowCore::ObjectSharedRef<_T_>
& _rhs) :
knowCore::ObjectSharedRef<_T_>
(_rhs)
24
{
25
}
26
Value
(
const
Value
& _rhs) :
knowCore::ObjectSharedRef<_T_>
(_rhs)
27
{
28
}
29
Value
& operator=(
const
Value
& _rhs)
30
{
31
knowCore::ObjectSharedRef<_T_>::operator=
(_rhs);
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
}
74
Value
(
const
knowCore::ObjectSharedRef<Definitions::Value>
& _rhs) :
knowCore::ObjectSharedRef<Definitions::Value>
(_rhs)
75
{
76
}
77
Value
(
const
Value
& _rhs) :
knowCore::ObjectSharedRef<Definitions::Value>
(_rhs)
78
{
79
}
80
Value
& operator=(
const
Value
& _rhs)
81
{
82
knowCore::ObjectSharedRef<Definitions::Value>::operator=
(_rhs);
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
knowCore::ReturnValue
Definition
ReturnValue.h:29
knowCore::SharedRef
Definition
SharedRef.h:22
knowValues::Values::details::Value
Definition
Values.h:15
Generated by
1.12.0