Object.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. #include <stdint.h>
  3. #include "il2cpp-config.h"
  4. struct Il2CppString;
  5. struct Il2CppObject;
  6. struct Il2CppClass;
  7. struct MethodInfo;
  8. namespace il2cpp
  9. {
  10. namespace vm
  11. {
  12. class LIBIL2CPP_CODEGEN_API Object
  13. {
  14. public:
  15. static Il2CppObject* Box(Il2CppClass *klass, void* data);
  16. static Il2CppClass* GetClass(Il2CppObject* obj);
  17. static int32_t GetHash(Il2CppObject* obj);
  18. static uint32_t GetSize(Il2CppObject* obj);
  19. static const MethodInfo* GetVirtualMethod(Il2CppObject *obj, const MethodInfo *virtualMethod);
  20. static Il2CppObject * IsInst(Il2CppObject *obj, Il2CppClass *klass);
  21. static Il2CppObject* New(Il2CppClass *klass);
  22. static void* Unbox(Il2CppObject* obj);
  23. static void UnboxNullable(Il2CppObject* obj, Il2CppClass* nullableArgumentClass, void* storage);
  24. static void UnboxNullableWithWriteBarrier(Il2CppObject* obj, Il2CppClass* nullableArgumentClass, void* storage);
  25. static Il2CppObject * Clone(Il2CppObject *obj);
  26. static Il2CppObject* NewPinned(Il2CppClass *klass);
  27. static void NullableInit(uint8_t* buf, Il2CppObject* value, Il2CppClass* klass);
  28. static bool NullableHasValue(Il2CppClass* klass, void* data);
  29. private:
  30. static Il2CppObject * NewAllocSpecific(Il2CppClass *klass);
  31. static Il2CppObject* NewPtrFree(Il2CppClass *klass);
  32. static Il2CppObject* Allocate(size_t size, Il2CppClass *typeInfo);
  33. static Il2CppObject* AllocatePtrFree(size_t size, Il2CppClass *typeInfo);
  34. static Il2CppObject* AllocateSpec(size_t size, Il2CppClass *typeInfo);
  35. // Yo! Don't call this function! See the comments in the implementation if you do.
  36. static uint32_t UnboxNullableGCUnsafe(Il2CppObject* obj, Il2CppClass* nullableArgumentClass, void* storage);
  37. friend class Array;
  38. friend class RCW;
  39. friend class String;
  40. };
  41. } /* namespace vm */
  42. } /* namespace il2cpp */