BsManagedSerializableListRTTI.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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 "BsRTTIType.h"
  6. #include "BsManagedSerializableList.h"
  7. namespace BansheeEngine
  8. {
  9. /** @addtogroup RTTI-Impl-SEngine
  10. * @{
  11. */
  12. class BS_SCR_BE_EXPORT ManagedSerializableListRTTI : public RTTIType<ManagedSerializableList, IReflectable, ManagedSerializableListRTTI>
  13. {
  14. private:
  15. ManagedSerializableTypeInfoListPtr getTypeInfo(ManagedSerializableList* obj)
  16. {
  17. return obj->mListTypeInfo;
  18. }
  19. void setTypeInfo(ManagedSerializableList* obj, ManagedSerializableTypeInfoListPtr val)
  20. {
  21. obj->mListTypeInfo = val;
  22. }
  23. UINT32& getNumElements(ManagedSerializableList* obj)
  24. {
  25. return (UINT32&)obj->mNumElements;
  26. }
  27. void setNumElements(ManagedSerializableList* obj, UINT32& numElements)
  28. {
  29. obj->mNumElements = numElements;
  30. }
  31. ManagedSerializableFieldDataPtr getListEntry(ManagedSerializableList* obj, UINT32 arrayIdx)
  32. {
  33. return obj->getFieldData(arrayIdx);
  34. }
  35. void setListEntry(ManagedSerializableList* obj, UINT32 arrayIdx, ManagedSerializableFieldDataPtr val)
  36. {
  37. obj->setFieldData(arrayIdx, val);
  38. }
  39. UINT32 getNumListEntries(ManagedSerializableList* obj)
  40. {
  41. return (UINT32)obj->mNumElements;
  42. }
  43. void setNumListEntries(ManagedSerializableList* obj, UINT32 numEntries)
  44. {
  45. obj->mCachedEntries = Vector<ManagedSerializableFieldDataPtr>(numEntries);
  46. }
  47. public:
  48. ManagedSerializableListRTTI()
  49. {
  50. addReflectablePtrField("mListTypeInfo", 0, &ManagedSerializableListRTTI::getTypeInfo, &ManagedSerializableListRTTI::setTypeInfo);
  51. addPlainField("mNumElements", 1, &ManagedSerializableListRTTI::getNumElements, &ManagedSerializableListRTTI::setNumElements);
  52. addReflectablePtrArrayField("mListEntries", 2, &ManagedSerializableListRTTI::getListEntry, &ManagedSerializableListRTTI::getNumListEntries,
  53. &ManagedSerializableListRTTI::setListEntry, &ManagedSerializableListRTTI::setNumListEntries);
  54. }
  55. const String& getRTTIName() override
  56. {
  57. static String name = "ScriptSerializableList";
  58. return name;
  59. }
  60. UINT32 getRTTIId() override
  61. {
  62. return TID_ScriptSerializableList;
  63. }
  64. std::shared_ptr<IReflectable> newRTTIObject() override
  65. {
  66. return ManagedSerializableList::createEmpty();
  67. }
  68. };
  69. /** @} */
  70. }