JsonSerializeTraits.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. //
  2. // JsonSerializeTraits.h
  3. // cocos2d_libs
  4. //
  5. // Created by 徐俊杰 on 2020/6/11.
  6. //
  7. #ifndef JsonSerializeTraits_h
  8. #define JsonSerializeTraits_h
  9. #include "rparticle/Macros/RParticleMacros.h"
  10. #include "rparticle/Utilities/dynamic_array.h"
  11. #include "rparticle/Serialize/SerializeTraits.h"
  12. NS_RRP_BEGIN
  13. template<class T>
  14. class JsonSerializeTraits
  15. {
  16. public:
  17. template<class TransferFunction> inline
  18. static void Transfer (T& data, TransferFunction& transfer)
  19. {
  20. SerializeTraits<T>::Transfer (data, transfer);
  21. // data.Transfer (transfer);
  22. // transfer.TransferDeepData(data);
  23. }
  24. };
  25. /*
  26. template<class T>
  27. class JsonSerializeTraitsForBasicType
  28. {
  29. public:
  30. template<class TransferFunction> inline
  31. static void Transfer (T& data, TransferFunction& transfer)
  32. {
  33. transfer.TransferBasicData(data);
  34. }
  35. };
  36. template<>
  37. class JsonSerializeTraits<UInt16> : public JsonSerializeTraitsForBasicType<UInt16> {};
  38. template<>
  39. class JsonSerializeTraits<SInt16> : public JsonSerializeTraitsForBasicType<SInt16> {};
  40. template<>
  41. class JsonSerializeTraits<UInt32> : public JsonSerializeTraitsForBasicType<UInt32> {};
  42. template<>
  43. class JsonSerializeTraits<SInt32> : public JsonSerializeTraitsForBasicType<SInt32> {};
  44. template<>
  45. class JsonSerializeTraits<UInt64> : public JsonSerializeTraitsForBasicType<UInt64> {};
  46. template<>
  47. class JsonSerializeTraits<SInt64> : public JsonSerializeTraitsForBasicType<SInt64> {};
  48. template<>
  49. class JsonSerializeTraits<UInt8> : public JsonSerializeTraitsForBasicType<UInt8> {};
  50. template<>
  51. class JsonSerializeTraits<SInt8> : public JsonSerializeTraitsForBasicType<SInt8> {};
  52. template<>
  53. class JsonSerializeTraits<char> : public JsonSerializeTraitsForBasicType<char> {};
  54. template<>
  55. class JsonSerializeTraits<bool> : public JsonSerializeTraitsForBasicType<bool> {};
  56. template<>
  57. class JsonSerializeTraits<float> : public JsonSerializeTraitsForBasicType<float> {};
  58. template<>
  59. class JsonSerializeTraits<double> : public JsonSerializeTraitsForBasicType<double> {};
  60. template<>
  61. class JsonSerializeTraits<std::string> : public JsonSerializeTraitsForBasicType<std::string> {};
  62. template<class T, size_t align>
  63. class JsonSerializeTraits<dynamic_array<T, align> >// : public JsonSerializeTraitsBase<dynamic_array<T, align> >
  64. {
  65. public:
  66. typedef dynamic_array<T, align> value_type;
  67. // DEFINE_GET_TYPESTRING_CONTAINER (vector)
  68. template<class TransferFunction> inline
  69. static void Transfer (value_type& data, TransferFunction& transfer)
  70. {
  71. transfer.TransferSTLStyleArray (data);
  72. }
  73. static bool IsContinousMemoryArray () { return true; }
  74. static void ResizeSTLStyleArray (value_type& data, int rs) { data.resize_initialized(rs); }
  75. static void resource_image_assign_external (value_type& data, void* begin, void* end)
  76. {
  77. data.assign_external(reinterpret_cast<T*> (begin), reinterpret_cast<T*> (end));
  78. }
  79. };
  80. */
  81. NS_RRP_END
  82. #endif /* JsonSerializeTraits_h */