2
0

BsScriptSerializableProperty.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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 void internal_CreateInstance(MonoObject* instance, MonoReflectionType* reflType);
  34. static MonoObject* internal_createObject(ScriptSerializableProperty* nativeInstance);
  35. static MonoObject* internal_createArray(ScriptSerializableProperty* nativeInstance);
  36. static MonoObject* internal_createList(ScriptSerializableProperty* nativeInstance);
  37. static MonoObject* internal_createDictionary(ScriptSerializableProperty* nativeInstance);
  38. static MonoObject* internal_createManagedObjectInstance(ScriptSerializableProperty* nativeInstance);
  39. static MonoObject* internal_createManagedArrayInstance(ScriptSerializableProperty* nativeInstance, MonoArray* sizes);
  40. static MonoObject* internal_createManagedListInstance(ScriptSerializableProperty* nativeInstance, int size);
  41. static MonoObject* internal_createManagedDictionaryInstance(ScriptSerializableProperty* nativeInstance);
  42. };
  43. }