mono-structs.cpp 1017 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include "mono-structs.h"
  2. #include "os/c-api/il2cpp-config-platforms.h"
  3. #include "os/c-api/Allocator.h"
  4. MonoGPtrArray* void_ptr_array_to_gptr_array(const VoidPtrArray& array)
  5. {
  6. MonoGPtrArray *pRetVal;
  7. pRetVal = (MonoGPtrArray*)Allocator::Allocate(sizeof(MonoGPtrArray));
  8. pRetVal->len = (unsigned int)array.size();
  9. if (pRetVal->len > 0)
  10. {
  11. size_t numBytes = sizeof(void*) * pRetVal->len;
  12. pRetVal->pdata = Allocator::Allocate(numBytes);
  13. memcpy(pRetVal->pdata, array.data(), numBytes);
  14. }
  15. else
  16. {
  17. pRetVal->pdata = NULL;
  18. }
  19. return pRetVal;
  20. }
  21. MonoGPtrArray* empty_gptr_array()
  22. {
  23. MonoGPtrArray *pRetVal = (MonoGPtrArray*)Allocator::Allocate(sizeof(MonoGPtrArray));
  24. pRetVal->len = 0;
  25. pRetVal->pdata = NULL;
  26. return pRetVal;
  27. }
  28. void free_gptr_array(MonoGPtrArray *pArray)
  29. {
  30. if (!pArray)
  31. return;
  32. if (pArray->pdata)
  33. {
  34. IL2CPP_FREE(pArray->pdata);
  35. pArray->pdata = NULL;
  36. }
  37. IL2CPP_FREE(pArray);
  38. }