Image.h 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #pragma once
  2. #include <stdint.h>
  3. #include <string>
  4. #include <vector>
  5. #include "il2cpp-config.h"
  6. struct Il2CppClass;
  7. struct MethodInfo;
  8. struct Il2CppAssembly;
  9. struct Il2CppDelegate;
  10. struct Il2CppImage;
  11. struct Il2CppType;
  12. struct Il2CppGenericContext;
  13. struct Il2CppGenericContainer;
  14. struct Il2CppReflectionAssembly;
  15. struct Il2CppArray;
  16. class AssemblyVector;
  17. namespace il2cpp
  18. {
  19. namespace vm
  20. {
  21. typedef std::vector<const Il2CppClass*> TypeVector;
  22. class TypeNameParseInfo;
  23. struct EmbeddedResourceRecord
  24. {
  25. EmbeddedResourceRecord(const Il2CppImage* image, const std::string& name, uint32_t offset, uint32_t size)
  26. : image(image), name(name), offset(offset), size(size)
  27. {}
  28. const Il2CppImage* image;
  29. std::string name;
  30. uint32_t offset;
  31. uint32_t size;
  32. };
  33. class LIBIL2CPP_CODEGEN_API Image
  34. {
  35. // exported
  36. public:
  37. static Il2CppImage* GetCorlib();
  38. public:
  39. static const char * GetName(const Il2CppImage* image);
  40. static const char * GetFileName(const Il2CppImage* image);
  41. static const Il2CppAssembly* GetAssembly(const Il2CppImage* image);
  42. static const MethodInfo* GetEntryPoint(const Il2CppImage* image);
  43. static const Il2CppImage* GetExecutingImage();
  44. static const Il2CppImage* GetCallingImage();
  45. static uint32_t GetNumTypes(const Il2CppImage* image);
  46. static const Il2CppClass* GetType(const Il2CppImage* image, AssemblyTypeIndex index);
  47. static Il2CppClass* FromTypeNameParseInfo(const Il2CppImage* image, const TypeNameParseInfo &info, bool ignoreCase);
  48. static Il2CppClass* ClassFromName(const Il2CppImage* image, const char* namespaze, const char *name);
  49. static void GetTypes(const Il2CppImage* image, bool exportedOnly, TypeVector* target);
  50. struct EmbeddedResourceData
  51. {
  52. EmbeddedResourceData(EmbeddedResourceRecord record, void* data)
  53. : record(record), data(data)
  54. {}
  55. EmbeddedResourceRecord record;
  56. void* data;
  57. };
  58. static void CacheMemoryMappedResourceFile(Il2CppReflectionAssembly* assembly, void* memoryMappedFile);
  59. static void* GetCachedMemoryMappedResourceFile(Il2CppReflectionAssembly* assembly);
  60. static void CacheResourceData(EmbeddedResourceRecord record, void* data);
  61. static void* GetCachedResourceData(const Il2CppImage* image, const std::string& name);
  62. static void ClearCachedResourceData();
  63. static void InitNestedTypes(const Il2CppImage *image);
  64. };
  65. } /* namespace vm */
  66. } /* namespace il2cpp */