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);