BsMonoArray.h 775 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #pragma once
  2. #include "BsMonoPrerequisites.h"
  3. #include "BsScriptMeta.h"
  4. #include <mono/jit/jit.h>
  5. namespace BansheeEngine
  6. {
  7. class BS_MONO_EXPORT ScriptArray
  8. {
  9. public:
  10. ScriptArray(MonoArray* existingArray);
  11. ScriptArray(MonoClass& klass, UINT32 size);
  12. template<class T>
  13. T get(UINT32 idx)
  14. {
  15. return mono_array_get(mInternal, T, idx);
  16. }
  17. template<class T>
  18. void set(UINT32 idx, const T& value)
  19. {
  20. mono_array_set(mInternal, T, idx, value);
  21. }
  22. template<class T>
  23. static ScriptArray create(UINT32 size)
  24. {
  25. return ScriptArray(*T::getMetaData()->scriptClass, size);
  26. }
  27. UINT32 size() const;
  28. MonoArray* getInternal() const { return mInternal; }
  29. private:
  30. MonoArray* createArray(MonoClass& klass, UINT32 size);
  31. MonoArray* mInternal;
  32. };
  33. }