metawriters_p.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #ifndef QTJSONSERIALIZER_METAWRITERS_P_H
  2. #define QTJSONSERIALIZER_METAWRITERS_P_H
  3. #include "metawriters.h"
  4. #include <QtCore/QLoggingCategory>
  5. namespace QtJsonSerializer::MetaWriters {
  6. class MetaWritersPrivate
  7. {
  8. public:
  9. static QReadWriteLock sequenceLock;
  10. static QHash<int, SequentialWriterFactory*> sequenceFactories;
  11. static QHash<int, SequentialWriter::SequenceInfo> sequenceInfoCache;
  12. static QReadWriteLock associationLock;
  13. static QHash<int, AssociativeWriterFactory*> associationFactories;
  14. static QHash<int, AssociativeWriter::AssociationInfo> associationInfoCache;
  15. static SequentialWriter::SequenceInfo tryParseSequenceInfo(int metaTypeId);
  16. static AssociativeWriter::AssociationInfo tryParseAssociationInfo(int metaTypeId);
  17. };
  18. Q_DECLARE_LOGGING_CATEGORY(logSeqWriter)
  19. Q_DECLARE_LOGGING_CATEGORY(logAsocWriter)
  20. namespace Implementations {
  21. class SequentialWriterFactoryQStringList : public SequentialWriterFactory
  22. {
  23. public:
  24. QSharedPointer<SequentialWriter> create(void *data) const final {
  25. return QSharedPointer<SequentialWriterImpl<QList, QString>>::create(reinterpret_cast<QStringList*>(data));
  26. }
  27. };
  28. class SequentialWriterFactoryQByteArrayList : public SequentialWriterFactory
  29. {
  30. public:
  31. QSharedPointer<SequentialWriter> create(void *data) const final {
  32. return QSharedPointer<SequentialWriterImpl<QList, QByteArray>>::create(reinterpret_cast<QByteArrayList*>(data));
  33. }
  34. };
  35. class SequentialWriterFactoryQVariantList : public SequentialWriterFactory
  36. {
  37. public:
  38. QSharedPointer<SequentialWriter> create(void *data) const final {
  39. return QSharedPointer<SequentialWriterImpl<QList, QVariant>>::create(reinterpret_cast<QVariantList*>(data));
  40. }
  41. };
  42. class AssociativeWriterFactoryQVariantMap : public AssociativeWriterFactory
  43. {
  44. public:
  45. QSharedPointer<AssociativeWriter> create(void *data) const final {
  46. return QSharedPointer<AssociativeWriterImpl<QMap, QString, QVariant>>::create(reinterpret_cast<QVariantMap*>(data));
  47. }
  48. };
  49. class AssociativeWriterFactoryQVariantHash : public AssociativeWriterFactory
  50. {
  51. public:
  52. QSharedPointer<AssociativeWriter> create(void *data) const final {
  53. return QSharedPointer<AssociativeWriterImpl<QHash, QString, QVariant>>::create(reinterpret_cast<QVariantHash*>(data));
  54. }
  55. };
  56. }
  57. }
  58. #endif // QTJSONSERIALIZER_METAWRITERS_P_H