@@ -98,8 +98,11 @@ class QX_CORE_EXPORT File
9898
9999class QX_CORE_EXPORT Data
100100{
101+ private:
102+ QString mDataError ;
103+
101104public:
102- Data ();
105+ Data (const QString& dataError = {} );
103106
104107 QString string () const ;
105108};
@@ -227,7 +230,7 @@ namespace QxJson
227230template <typename T>
228231struct Converter ;
229232
230- template <class Struct , Qx::StringLiteral member>
233+ template <class Struct , Qx::CStringLiteral member>
231234struct MemberOverrideCoverter ;
232235
233236template <typename SelfType, typename DelayedSelfType>
@@ -258,7 +261,7 @@ concept json_convertible = requires(T& tValue) {
258261 { Converter<T>::toJson (tValue) } -> qjson_type;
259262};
260263
261- template <class K , typename T, Qx::StringLiteral N>
264+ template <class K , typename T, Qx::CStringLiteral N>
262265concept json_override_convertible = requires (T& tValue) {
263266 { MemberOverrideCoverter<K, N>::fromJson (tValue, QJsonValue ()) } -> std::same_as<Qx::JsonError>;
264267 { MemberOverrideCoverter<K, N>::toJson (tValue) } -> qjson_type;
@@ -303,16 +306,16 @@ static inline const QString ERR_READ_DATA = u"JSON Error: Could not read JSON da
303306static inline const QString ERR_WRITE_FILE = u" JSON Error: Could not write JSON file." _s;
304307
305308// -Structs---------------------------------------------------------------
306- template <Qx::StringLiteral MemberN, typename MemberT, class Struct >
309+ template <Qx::CStringLiteral MemberN, typename MemberT, class Struct >
307310struct MemberMetadata
308311{
309- constexpr static Qx::StringLiteral M_NAME = MemberN;
312+ constexpr static Qx::CStringLiteral M_NAME = MemberN;
310313 typedef MemberT M_TYPE;
311314 MemberT Struct::* mPtr ;
312315};
313316
314317// -Functions-------------------------------------------------------------
315- template <Qx::StringLiteral N, typename T, class S >
318+ template <Qx::CStringLiteral N, typename T, class S >
316319constexpr MemberMetadata<N, T, S> makeMemberMetadata (T S::*memberPtr)
317320{
318321 return {memberPtr};
@@ -374,14 +377,14 @@ constexpr auto getMemberMeta()
374377 return QxJson::QxJsonMetaStructOutside<K, K>::memberMetadata ();
375378}
376379
377- template <class K , typename T, Qx::StringLiteral N>
380+ template <class K , typename T, Qx::CStringLiteral N>
378381 requires QxJson::json_override_convertible<K, T, N>
379382Qx::JsonError overrideParse (T& value, const QJsonValue& jv)
380383{
381384 return QxJson::MemberOverrideCoverter<K, N>::fromJson (value, jv);
382385}
383386
384- template <class K , typename T, Qx::StringLiteral N>
387+ template <class K , typename T, Qx::CStringLiteral N>
385388 requires QxJson::json_override_convertible<K, T, N>
386389auto overrideSerialize (const T& value)
387390{
@@ -462,7 +465,7 @@ struct Converter<T>
462465 ([&]{
463466 // Meta
464467 static constexpr auto mName = std::remove_reference<decltype (memberMeta)>::type::M_NAME;
465- constexpr QLatin1StringView mKey (mName . value );
468+ constexpr QLatin1StringView mKey (mName );
466469 using mType = typename std::remove_reference<decltype (memberMeta)>::type::M_TYPE;
467470 auto & mRef = value.*(memberMeta.mPtr );
468471
@@ -511,7 +514,7 @@ struct Converter<T>
511514 ([&]{
512515 // Meta
513516 static constexpr auto mName = std::remove_reference<decltype (memberMeta)>::type::M_NAME;
514- constexpr QLatin1StringView mKey (mName . value );
517+ constexpr QLatin1StringView mKey (mName );
515518 using mType = typename std::remove_reference<decltype (memberMeta)>::type::M_TYPE;
516519 auto & mRef = value.*(memberMeta.mPtr );
517520
@@ -812,7 +815,7 @@ JsonError parseJson(T& parsed, const QByteArray& data)
812815 QJsonDocument jd = QJsonDocument::fromJson (data, &jpe);
813816
814817 if (jpe.error != jpe.NoError )
815- return JsonError (QxJsonPrivate::ERR_READ_DATA, JsonError::InvalidData).withContext (QxJson::Data ());
818+ return JsonError (QxJsonPrivate::ERR_READ_DATA, JsonError::InvalidData).withContext (QxJson::Data (jpe. errorString () ));
816819
817820 // True parse
818821 return parseJson (parsed, jd).withContext (QxJson::Data ());
0 commit comments