knowL: Knowledge Libraries
Loading...
Searching...
No Matches
MetaType_p.h
1#include "MetaType.h"
2
3namespace knowCore
4{
6 {
13 QHash<Uri, QList<Uri>> aliases_to_from;
14 QHash<Uri, Uri> aliases_from_to;
15 QList<knowCore::Uri> numeric_types;
16 QHash<Uri, AbstractToVariantMarshal*> to_variant_marshals;
17
18 knowCore::Uri unaliased(const Uri& _uri) { return aliases_from_to.value(_uri, _uri); }
19 const AbstractTypeConversion* converter(const Uri& _from, const Uri& _to,
20 TypeCheckingMode _conversionMode)
21 {
22 Uri from_u = unaliased(_from);
23 Uri to_u = unaliased(_to);
24
25 if(_conversionMode == TypeCheckingMode::Force)
26 {
27 const AbstractTypeConversion* conv = force_converters.value(from_u).value(to_u, nullptr);
28 if(conv)
29 return conv;
30 }
31 // If no weak conversion, fallback to strong
32 return safe_converters.value(from_u).value(to_u, nullptr);
33 }
34 const AbstractTypeComparator* comparator(ComparisonOperator _operator, const Uri& _from,
35 const Uri& _to)
36 {
37 return comparators.value((int)_operator)
38 .value(unaliased(_from))
39 .value(unaliased(_to), nullptr);
40 }
41 const AbstractArithmeticOperator* arithmeticOperator(ArithmeticOperator _operator,
42 const Uri& _from, const Uri& _to)
43 {
44 return operators.value((int)_operator).value(unaliased(_from)).value(unaliased(_to), nullptr);
45 }
46 static MetaTypeRegistryPrivate* instance();
47 };
48} // namespace knowCore
Definition Forward.h:10
Definition Forward.h:14
Definition MetaType.h:281
Definition MetaType.h:272
Definition MetaType.h:264
Definition Uri.h:15
Definition MetaType_p.h:6