knowL: Knowledge Libraries
Loading...
Searching...
No Matches
ConverterManager.h
1#include "ValueToValueImplementation.h"
2
3namespace knowRuby
4{
6 {
7 public:
8 static knowCore::ReturnValue<VALUE> toRubyValue(const knowCore::Value& _value);
9 static knowCore::ReturnValue<knowCore::Value> toKnowCoreValue(VALUE _value);
10 static void registerConverter(const Interfaces::ValueToValue* _value);
11 template<typename _T_>
12 static void registerConverter()
13 {
14 registerConverter(new ValueToValueImplementation<_T_>());
15 }
16 private:
17 struct Private;
18 static Private* d();
19 };
20}
21
22#define KNOWRUBY_REGISTER_VALUE_TO_VALUE_NOT_POINTER(_TYPE_) \
23 namespace knowRuby \
24 { \
25 template<> \
26 struct ValueToValueImplementationTraits<_TYPE_> \
27 { \
28 static constexpr bool as_pointer = false; \
29 }; \
30 }
31
32#define __KNOWRUBY_REGISTER_VALUE_TO_VALUE(_FACTORY_NAME_, _TYPE_) \
33 namespace \
34 { \
35 class _FACTORY_NAME_ \
36 { \
37 public: \
38 _FACTORY_NAME_() \
39 { \
40 knowRuby::ConverterManager::registerConverter<_TYPE_>(); \
41 } \
42 static _FACTORY_NAME_ s_instance; \
43 }; \
44 _FACTORY_NAME_ _FACTORY_NAME_::s_instance; \
45 }
46#define KNOWRUBY_REGISTER_VALUE_TO_VALUE(_TYPE_) \
47 __KNOWRUBY_REGISTER_VALUE_TO_VALUE(__KNOWCORE_UNIQUE_STATIC_NAME(ValueToValueRegistration), _TYPE_)
Definition ReturnValue.h:29
Definition Value.h:13
Definition ConverterManager.h:6
Definition ValueToValue.h:9
Definition ValueToValueImplementation.h:16
Definition ConverterManager.cpp:6