knowL: Knowledge Libraries
Loading...
Searching...
No Matches
ValueMarshal.h
1#pragma once
2
3#include <knowCore/Value.h>
4#include <knowCore/ValueList.h>
5#include <knowRDF/Literal.h>
6#include <knowCore/Uris/askcore_types.h>
7
8namespace knowRDF
9{
10 template<typename _T_>
11 struct ValueMarshal;
12
13 template<typename _T_, typename _DO_NOT_SPECIALISED_ = void>
14 knowCore::ReturnValue<knowCore::Value> toValue(const _T_& _t)
15 {
16 return ValueMarshal<_T_>::convert(_t);
17 }
18
19 template<typename _T_>
21 {
22 return ValueMarshal<_T_>::convert(_t);
23 }
24
25 template<typename _T_>
27 {
28 static knowCore::ReturnValue<knowCore::Value> convert(const _T_& _t)
29 {
30 return kCrvReturnResult(knowCore::Value::fromValue(_t));
31 }
32 static knowCore::ReturnValue<_T_> convert(const knowCore::Value& _t)
33 {
34 return _t.value<_T_>();
35 }
36 };
37 template<>
38 struct ValueMarshal<knowCore::Value>
39 {
41 {
42 return kCrvSuccess(_t);
43 }
44 };
45 template<typename _T_>
46 struct ValueMarshal<QList<_T_>>
47 {
49 {
51 for(const _T_& st : _t)
52 {
53 KNOWCORE_RETURN_VALUE_TRY(value, toValue(st));
54 values.append(value);
55 }
56 return kCrvReturnResult(knowCore::Value::fromValue(knowCore::ValueList(values)));
57 }
58 static knowCore::ReturnValue<QList<_T_>> convert(const knowCore::Value& _t)
59 {
60 QList<_T_> list;
61 KNOWCORE_RETURN_VALUE_TRY(value_list, _t.toList());
62 for(const knowCore::Value val : value_list.values())
63 {
64 KNOWCORE_RETURN_VALUE_TRY(val_t, fromValue<_T_>(val));
65 list.append(val_t);
66 }
67 return kCrvSuccess(list);
68 }
69 };
70}
71
72
Definition Forward.h:12
Definition ReturnValue.h:29
Definition ValueList.h:8
Definition Value.h:13
static Value fromValue(const _T_ &_value)
Definition Value.h:184
ReturnValue< _T_ > value(TypeCheckingMode _conversion=TypeCheckingMode::Safe) const
Definition Value.h:229
ReturnValue< ValueList > toList() const
Definition Value.cpp:232
Definition ValueMarshal.h:27