BsScriptSerializableProperty.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "BsScriptObject.h"
  4. namespace BansheeEngine
  5. {
  6. /**
  7. * @brief Interop class between C++ & CLR for SerializableProperty (not implemented as its
  8. * own class, but instead implemented directly in the inerop object). Serializable property
  9. * wraps all types of serializable entries, whether they're object fields, array entries, dictionary
  10. * entries, etc. and offers a simple interface to access them.
  11. */
  12. class BS_SCR_BE_EXPORT ScriptSerializableProperty : public ScriptObject<ScriptSerializableProperty>
  13. {
  14. public:
  15. SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "SerializableProperty")
  16. /**
  17. * @brief Creates a new managed serializable property object for the specified type.
  18. *
  19. * @param typeInfo Data about the type the property references.
  20. */
  21. static ScriptSerializableProperty* create(const ManagedSerializableTypeInfoPtr& typeInfo);
  22. /**
  23. * @brief Returns the data about the type the property is referencing.
  24. */
  25. ManagedSerializableTypeInfoPtr getTypeInfo() const { return mTypeInfo; }
  26. ~ScriptSerializableProperty() {}
  27. private:
  28. ScriptSerializableProperty(MonoObject* instance, const ManagedSerializableTypeInfoPtr& typeInfo);
  29. ManagedSerializableTypeInfoPtr mTypeInfo;
  30. /************************************************************************/
  31. /* CLR HOOKS */
  32. /************************************************************************/
  33. static MonoObject* internal_createObject(ScriptSerializableProperty* nativeInstance);
  34. static MonoObject* internal_createArray(ScriptSerializableProperty* nativeInstance);
  35. static MonoObject* internal_createList(ScriptSerializableProperty* nativeInstance);
  36. static MonoObject* internal_createDictionary(ScriptSerializableProperty* nativeInstance);
  37. static MonoObject* internal_createManagedObjectInstance(ScriptSerializableProperty* nativeInstance);
  38. static MonoObject* internal_createManagedArrayInstance(ScriptSerializableProperty* nativeInstance, MonoArray* sizes);
  39. static MonoObject* internal_createManagedListInstance(ScriptSerializableProperty* nativeInstance, int size);
  40. static MonoObject* internal_createManagedDictionaryInstance(ScriptSerializableProperty* nativeInstance);
  41. };
  42. }