SerializerTest.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // Copyright (C) 2009-2019, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. // WARNING: This file is auto generated.
  6. #pragma once
  7. #include <anki/util/Array.h>
  8. namespace anki
  9. {
  10. /// ClassB class.
  11. class ClassB
  12. {
  13. public:
  14. Array<U8, 3> m_array;
  15. U32* m_darray;
  16. U8 m_darraySize;
  17. template<typename TSerializer, typename TClass>
  18. static void serializeCommon(TSerializer& serializer, TClass self)
  19. {
  20. serializer.doArray("m_array", offsetof(ClassB, m_array), &self.m_array[0], 3);
  21. serializer.doValue("m_darraySize", offsetof(ClassB, m_darraySize), self.m_darraySize);
  22. serializer.doDynamicArray("m_darray", offsetof(ClassB, m_darray), self.m_darray, self.m_darraySize);
  23. }
  24. template<typename TDeserializer>
  25. void deserialize(TDeserializer& deserializer)
  26. {
  27. serializeCommon<TDeserializer, ClassB&>(deserializer, *this);
  28. }
  29. template<typename TSerializer>
  30. void serialize(TSerializer& serializer) const
  31. {
  32. serializeCommon<TSerializer, const ClassB&>(serializer, *this);
  33. }
  34. };
  35. /// ClassA class.
  36. class ClassA
  37. {
  38. public:
  39. Array<U8, 2> m_array;
  40. U32 m_u32;
  41. U64 m_u64;
  42. ClassB* m_darray;
  43. template<typename TSerializer, typename TClass>
  44. static void serializeCommon(TSerializer& serializer, TClass self)
  45. {
  46. serializer.doArray("m_array", offsetof(ClassA, m_array), &self.m_array[0], 2);
  47. serializer.doValue("m_u32", offsetof(ClassA, m_u32), self.m_u32);
  48. serializer.doValue("m_u64", offsetof(ClassA, m_u64), self.m_u64);
  49. serializer.doDynamicArray("m_darray", offsetof(ClassA, m_darray), self.m_darray, self.m_u32);
  50. }
  51. template<typename TDeserializer>
  52. void deserialize(TDeserializer& deserializer)
  53. {
  54. serializeCommon<TDeserializer, ClassA&>(deserializer, *this);
  55. }
  56. template<typename TSerializer>
  57. void serialize(TSerializer& serializer) const
  58. {
  59. serializeCommon<TSerializer, const ClassA&>(serializer, *this);
  60. }
  61. };
  62. } // end namespace anki