22 template<
typename _T_>
25 Value(
const Uri& _datatype,
const Uri& _maindatatype,
40 template<
typename _T_>
46 static inline cres_qresult<Value>
fromValue(
const QVariant& _value);
52 template<
typename _T_>
53 static inline cres_qresult<Value>
fromValue(
const Uri& _datatype,
const _T_& _value,
54 TypeCheckingMode _conversion
55 = TypeCheckingMode::Safe);
64 static cres_qresult<Value>
fromVariant(
const Uri& _datatype,
const QVariant& _value,
65 TypeCheckingMode _conversion = TypeCheckingMode::Safe);
70 static cres_qresult<Value>
fromVariant(
const QVariant& _variant);
77 static cres_qresult<Value>
parseVariant(
const QVariant& _value);
107 cres_qresult<bool>
compare(
const Value& _value, ComparisonOperators _operators)
const;
108 cres_qresult<Value> convert(
const Uri& _uri,
109 TypeCheckingMode _conversion = TypeCheckingMode::Safe)
const;
113 cres_qresult<Value>
compute(
const Value& _value, ArithmeticOperator _operator)
const;
119 template<
typename _T_>
120 inline cres_qresult<_T_>
value(TypeCheckingMode _conversion = TypeCheckingMode::Safe)
const;
128 template<
typename _T_>
129 inline _T_
value(
const _T_& _default,
130 TypeCheckingMode _conversion = TypeCheckingMode::Safe)
const;
134 template<
typename _T_>
135 inline bool canConvert(TypeCheckingMode _conversion = TypeCheckingMode::Safe)
const;
139 bool canConvert(
const Uri& _uri, TypeCheckingMode _conversion = TypeCheckingMode::Safe)
const;
140 template<
typename _T_>
141 inline bool is()
const;
142 cres_qresult<QByteArray> md5()
const;
144 = defaultSerialisationContext())
const;
145 static cres_qresult<Value> fromJsonValue(
const Uri& _datatype,
const QJsonValue& _value,
147 = defaultDeserialisationContext());
148 template<
typename _T_>
149 static cres_qresult<_T_> fromJsonValue(
const QJsonValue& _value,
151 = defaultDeserialisationContext());
153 = defaultSerialisationContext())
const;
154 static cres_qresult<Value> fromCborValue(
const Uri& _datatype,
const QCborValue& _value,
156 = defaultDeserialisationContext());
158 = defaultSerialisationContext())
const;
159 static cres_qresult<Value> fromRdfLiteral(
const Uri& _datatype,
const QString& _value,
161 = defaultDeserialisationContext());
162 cres_qresult<QString> printable()
const;
168 = defaultSerialisationContext())
const;
173 static cres_qresult<Value>
fromJsonObject(
const QJsonObject& _value,
175 = defaultDeserialisationContext());
180 = defaultSerialisationContext())
const;
185 static cres_qresult<Value>
fromCborMap(
const QCborMap& _value,
187 = defaultDeserialisationContext());
192 cres_qresult<ValueList>
toList()
const;
196 cres_qresult<ValueHash>
toHash()
const;
201 template<
typename _T_>
206 static const AbstractMetaTypeDefinition* getDefinition(
const Uri& _datatype);
207 static const AbstractMetaTypeDefinition* getDefinition(
int _id);
208 const void* data()
const;
209 template<
typename _T_>
210 const AbstractTypeConversion* converterTo(TypeCheckingMode _conversion)
const
212 return converterTo(MetaTypeInformation<_T_>::uri(), _conversion);
214 const AbstractTypeConversion* converterTo(
const Uri& _datatype,
215 TypeCheckingMode _conversion)
const;
216 template<
typename _T_>
217 const AbstractTypeConversion* converterFrom(TypeCheckingMode _conversion)
const
219 return converterFrom(MetaTypeInformation<_T_>::uri());
221 const AbstractTypeConversion* converterFrom(
const Uri& _datatype,
222 TypeCheckingMode _conversion)
const;
223 template<
typename _TFrom_,
typename _TTo_>
224 static const AbstractTypeConversion* converterBetween(TypeCheckingMode _conversion)
226 return converterBetween(MetaTypeInformation<_TFrom_>::uri(),
227 MetaTypeInformation<_TTo_>::uri(), _conversion);
229 static const AbstractTypeConversion* converterBetween(
const Uri& _from,
const Uri& _to,
230 TypeCheckingMode _conversion);
232 static const AbstractTypeConversion* converter(
const Uri& _from,
const Uri& _to,
233 TypeCheckingMode _conversion);
236 QSharedDataPointer<Private> d;
249 TypeCheckingMode _conversion)
259 void* data = def_2->allocate();
260 cres_try(cres_ignore, converter->convert(&_value, data), );
261 return cres_success(
Value(_datatype, def_2, data));
264 "{0} is not alias of type '{1}' with uri '{2}' and no conversion from '{2}' to '{0}'.",
269 return cres_success(
Value(_datatype, def_1, def_1->duplicate(&_value)));
273 return cres_failure(
"Type '{}' with datatype '{}' is not defined!", prettyTypename<_T_>(),
301 static cres_qresult<_T_> value(
const Value* _self, TypeCheckingMode _conversion)
304 or _self->getDefinition<_T_>() == _self->definition())
306 return cres_success(_T_(*
reinterpret_cast<const _T_*
>(_self->data())));
312 cres_try(cres_ignore, converter->convert(_self->data(), &r));
313 return cres_success(r);
319 cres_try(cres_ignore, converter->convert(_self->data(), &val));
320 return val.
value<_T_>();
327 cres_try(cres_ignore, converter->convert(_self, &val));
328 return cres_success(val);
330 return cres_failure(
"cannot convert from '{}' to '{}'", _self->
datatype(),
Definition MetaType.h:126
Definition MetaType.h:159