22 #include "../config.h"
25 #include <string_view>
26 #include <BlackBone/Process/Process.h>
27 #include "RMonoAPIBase_Def.h"
28 #include "RMonoTypes.h"
29 #include "RMonoHandle_Def.h"
30 #include "RMonoVariant_Def.h"
31 #include "RMonoVariantArray_Def.h"
32 #include "exception/RMonoException_Def.h"
33 #include "exception/RMonoUnsupportedAPIException_Def.h"
67 inline RMonoAPI(blackbone::Process& process);
107 inline void free(rmono_voidp p);
120 inline std::vector<RMonoDomainPtr> domainList();
121 inline RMonoDomainPtr domainCreateAppdomain (
const std::string_view& friendlyName,
122 const std::string_view& configFile = std::string_view());
137 inline std::vector<RMonoAssemblyPtr> assemblyList();
142 inline void assemblyNameFree(RMonoAssemblyNamePtrRaw name);
146 uint16_t* build, uint16_t* revision);
159 inline rmono_voidp imageRVAMap(
RMonoImagePtr image, uint32_t addr);
164 inline uint32_t metadataDecodeRowCol(
RMonoTableInfoPtr table, rmono_int idx, rmono_uint col);
165 inline rmono_voidp metadataGuidHeap(
RMonoImagePtr image, uint32_t idx, uint8_t* outGuid =
nullptr);
166 inline std::string metadataStringHeap(
RMonoImagePtr image, uint32_t idx);
167 inline rmono_voidp metadataStringHeapRaw(
RMonoImagePtr image, uint32_t idx);
168 inline rmono_voidp metadataBlobHeap(
RMonoImagePtr image, uint32_t idx);
169 inline std::string metadataUserString(
RMonoImagePtr image, uint32_t idx);
170 inline rmono_voidp metadataUserStringRaw(
RMonoImagePtr image, uint32_t idx);
171 inline uint32_t metadataDecodeBlobSize(rmono_voidp blobPtr, rmono_voidp* outBlobPtr);
207 inline std::vector<RMonoClassFieldPtr> classGetFields(
RMonoClassPtr cls);
208 inline std::vector<RMonoMethodPtr> classGetMethods(
RMonoClassPtr cls);
209 inline std::vector<RMonoPropertyPtr> classGetProperties(
RMonoClassPtr cls);
219 inline int32_t classValueSize(
RMonoClassPtr cls, uint32_t* align =
nullptr);
234 inline rmono_int typeSize(
RMonoTypePtr type, rmono_int* align =
nullptr);
235 inline rmono_int typeStackSize(
RMonoTypePtr type, rmono_int* align =
nullptr);
261 inline std::string methodFullName(
RMonoMethodPtr method,
bool signature);
262 inline uint32_t methodGetFlags(
RMonoMethodPtr method, uint32_t* iflags =
nullptr);
265 inline rmono_voidp methodHeaderGetCode(
RMonoMethodHeaderPtr header, uint32_t* codeSize, uint32_t* maxStack);
266 inline RMonoMethodDescPtr methodDescNew(
const std::string_view& name,
bool includeNamespace);
267 inline void methodDescFree(RMonoMethodDescPtrRaw desc);
328 inline RMonoStringPtr stringNewUTF16(
const std::u16string_view& str);
330 inline RMonoStringPtr stringNewUTF32(
const std::u32string_view& str);
344 const std::vector<rmono_intptr_t>& lowerBounds = {});
346 const std::vector<rmono_intptr_t>& lowerBounds = {});
348 inline rmono_voidp arrayAddrWithSize(
RMonoArrayPtr arr, rmono_int size, rmono_uintptr_t idx);
353 template <
typename T> T arrayGet(
RMonoArrayPtr arr, rmono_uintptr_t idx);
359 inline rmono_gchandle gchandleNew(
RMonoObjectPtr obj,
bool pinned);
360 inline rmono_gchandle gchandleNewRaw(RMonoObjectPtrRaw obj,
bool pinned);
361 inline rmono_gchandle gchandleNewWeakref(
RMonoObjectPtr obj,
bool trackResurrection);
362 inline rmono_gchandle gchandleNewWeakrefRaw(RMonoObjectPtrRaw obj,
bool trackResurrection);
363 inline RMonoObjectPtrRaw gchandleGetTarget(rmono_gchandle gchandle);
364 inline void gchandleFree(rmono_gchandle gchandle);
369 inline void gcCollect(rmono_int generation);
370 inline rmono_int gcMaxGeneration();
414 template <
typename T>
422 template <
typename T>
430 template <
typename T>
436 inline rmono_gchandle
gchandlePin(rmono_gchandle gchandle);
443 inline void selectABI();
445 template <
typename ABI>
446 blackbone::MemBlock prepareIterator();
448 inline void checkAttached();
450 template <
typename FuncT>
451 void checkAPIFunctionSupported(
const FuncT& f);