123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- //
- // SerializeTraits.h
- // cocos2d_libs
- //
- // Created by 徐俊杰 on 2020/6/22.
- //
- #ifndef SerializeTraits_h
- #define SerializeTraits_h
- #include "rparticle/Macros/RParticleMacros.h"
- #include "rparticle/Serialize/SerializeTraitsBase.h"
- NS_RRP_BEGIN
- #define DEFINE_GET_TYPESTRING_IS_ANIMATION_CHANNEL_TRAITS(x) \
- inline static const char* GetTypeString (void* p = 0) { return #x; } \
- inline static bool IsAnimationChannel () { return true; } \
- inline static bool MightContainPPtr () { return false; } \
- inline static bool AllowTransferOptimization () { return true; }
- template<>
- struct SerializeTraits<float> : public SerializeTraitsBaseForBasicType<float>
- {
- DEFINE_GET_TYPESTRING_IS_ANIMATION_CHANNEL_TRAITS (float)
- };
- template<>
- struct SerializeTraits<double> : public SerializeTraitsBaseForBasicType<double>
- {
- DEFINE_GET_TYPESTRING_IS_ANIMATION_CHANNEL_TRAITS (double)
- };
- template<>
- struct SerializeTraits<int> : public SerializeTraitsBaseForBasicType<int>
- {
- // We use "int" rather than "SInt32" here for backwards-compatibility reasons.
- // "SInt32" and "int" used to be two different types (as were "UInt32" and "unsigned int")
- // that we now serialize through same path. We use "int" instead of "SInt32" as the common
- // identifier as it was more common.
- DEFINE_GET_TYPESTRING_IS_ANIMATION_CHANNEL_TRAITS (int)
- };
- template<>
- struct SerializeTraits<long> : public SerializeTraitsBaseForBasicType<long>
- {
- DEFINE_GET_TYPESTRING_IS_ANIMATION_CHANNEL_TRAITS (int)
- };
- template<>
- struct SerializeTraits<unsigned int> : public SerializeTraitsBaseForBasicType<unsigned int>
- {
- DEFINE_GET_TYPESTRING_IS_ANIMATION_CHANNEL_TRAITS (unsigned int) // See definition of "int" above.
- };
- template<>
- struct SerializeTraits<unsigned long> : public SerializeTraitsBaseForBasicType<unsigned long>
- {
- DEFINE_GET_TYPESTRING_IS_ANIMATION_CHANNEL_TRAITS (unsigned int) // See definition of "int" above.
- };
- template<>
- struct SerializeTraits<SInt64> : public SerializeTraitsBaseForBasicType<SInt64>
- {
- DEFINE_GET_TYPESTRING_IS_ANIMATION_CHANNEL_TRAITS (SInt64)
- };
- template<>
- struct SerializeTraits<UInt64> : public SerializeTraitsBaseForBasicType<UInt64>
- {
- DEFINE_GET_TYPESTRING_IS_ANIMATION_CHANNEL_TRAITS (UInt64)
- };
- template<>
- struct SerializeTraits<SInt16> : public SerializeTraitsBaseForBasicType<SInt16>
- {
- DEFINE_GET_TYPESTRING_IS_ANIMATION_CHANNEL_TRAITS (SInt16)
- };
- template<>
- struct SerializeTraits<UInt16> : public SerializeTraitsBaseForBasicType<UInt16>
- {
- DEFINE_GET_TYPESTRING_IS_ANIMATION_CHANNEL_TRAITS (UInt16)
- };
- template<>
- struct SerializeTraits<SInt8> : public SerializeTraitsBaseForBasicType<SInt8>
- {
- DEFINE_GET_TYPESTRING_IS_ANIMATION_CHANNEL_TRAITS (SInt8)
- };
- template<>
- struct SerializeTraits<UInt8> : public SerializeTraitsBaseForBasicType<UInt8>
- {
- DEFINE_GET_TYPESTRING_IS_ANIMATION_CHANNEL_TRAITS (UInt8)
- };
- template<>
- struct SerializeTraits<char> : public SerializeTraitsBaseForBasicType<char>
- {
- DEFINE_GET_TYPESTRING_IS_ANIMATION_CHANNEL_TRAITS (char)
- };
- template<>
- struct SerializeTraits<bool> : public SerializeTraitsBaseForBasicType<bool>
- {
- DEFINE_GET_TYPESTRING_IS_ANIMATION_CHANNEL_TRAITS (bool)
- };
- template<>
- struct SerializeTraits<std::string> : public SerializeTraitsBaseForBasicType<std::string>
- {
- DEFINE_GET_TYPESTRING_IS_ANIMATION_CHANNEL_TRAITS (std::string)
- };
- template<class T, size_t align>
- class SerializeTraits<dynamic_array<T, align> > : public SerializeTraitsBase<dynamic_array<T, align> >
- {
- public:
-
- typedef dynamic_array<T, align> value_type;
- DEFINE_GET_TYPESTRING_CONTAINER (vector)
-
- template<class TransferFunction> inline
- static void Transfer (value_type& data, TransferFunction& transfer)
- {
- transfer.TransferSTLStyleArray (data);
- }
-
- static bool IsContinousMemoryArray () { return true; }
- static void ResizeSTLStyleArray (value_type& data, int rs) { data.resize_initialized(rs); }
-
- static void resource_image_assign_external (value_type& data, void* begin, void* end)
- {
- data.assign_external(reinterpret_cast<T*> (begin), reinterpret_cast<T*> (end));
- }
- };
- NS_RRP_END
- #endif /* SerializeTraits_h */
|