BsManagedSerializableListRTTI.h 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "BsScriptEnginePrerequisites.h"
  5. #include "Reflection/BsRTTIType.h"
  6. #include "Serialization/BsManagedSerializableList.h"
  7. namespace bs
  8. {
  9. /** @cond RTTI */
  10. /** @addtogroup RTTI-Impl-SEngine
  11. * @{
  12. */
  13. class BS_SCR_BE_EXPORT ManagedSerializableListRTTI : public RTTIType<ManagedSerializableList, IReflectable, ManagedSerializableListRTTI>
  14. {
  15. private:
  16. SPtr<ManagedSerializableTypeInfoList> getTypeInfo(ManagedSerializableList* obj)
  17. {
  18. return obj->mListTypeInfo;
  19. }
  20. void setTypeInfo(ManagedSerializableList* obj, SPtr<ManagedSerializableTypeInfoList> val)
  21. {
  22. obj->mListTypeInfo = val;
  23. }
  24. UINT32& getNumElements(ManagedSerializableList* obj)
  25. {
  26. return (UINT32&)obj->mNumElements;
  27. }
  28. void setNumElements(ManagedSerializableList* obj, UINT32& numElements)
  29. {
  30. obj->mNumElements = numElements;
  31. }
  32. SPtr<ManagedSerializableFieldData> getListEntry(ManagedSerializableList* obj, UINT32 arrayIdx)
  33. {
  34. return obj->getFieldData(arrayIdx);
  35. }
  36. void setListEntry(ManagedSerializableList* obj, UINT32 arrayIdx, SPtr<ManagedSerializableFieldData> val)
  37. {
  38. obj->setFieldData(arrayIdx, val);
  39. }
  40. UINT32 getNumListEntries(ManagedSerializableList* obj)
  41. {
  42. return (UINT32)obj->mNumElements;
  43. }
  44. void setNumListEntries(ManagedSerializableList* obj, UINT32 numEntries)
  45. {
  46. obj->mCachedEntries = Vector<SPtr<ManagedSerializableFieldData>>(numEntries);
  47. }
  48. public:
  49. ManagedSerializableListRTTI()
  50. {
  51. addReflectablePtrField("mListTypeInfo", 0, &ManagedSerializableListRTTI::getTypeInfo, &ManagedSerializableListRTTI::setTypeInfo);
  52. addPlainField("mNumElements", 1, &ManagedSerializableListRTTI::getNumElements, &ManagedSerializableListRTTI::setNumElements);
  53. addReflectablePtrArrayField("mListEntries", 2, &ManagedSerializableListRTTI::getListEntry, &ManagedSerializableListRTTI::getNumListEntries,
  54. &ManagedSerializableListRTTI::setListEntry, &ManagedSerializableListRTTI::setNumListEntries);
  55. }
  56. const String& getRTTIName() override
  57. {
  58. static String name = "ScriptSerializableList";
  59. return name;
  60. }
  61. UINT32 getRTTIId() override
  62. {
  63. return TID_ScriptSerializableList;
  64. }
  65. SPtr<IReflectable> newRTTIObject() override
  66. {
  67. return ManagedSerializableList::createEmpty();
  68. }
  69. };
  70. /** @} */
  71. /** @endcond */
  72. }