#pragma once #include "il2cpp-windowsruntime-types.h" #include "utils/Expected.h" #include "utils/StringView.h" namespace il2cpp { namespace os { class LIBIL2CPP_CODEGEN_API WindowsRuntime { public: static il2cpp_hresult_t GetActivationFactory(Il2CppHString className, Il2CppIActivationFactory** activationFactory); static il2cpp_hresult_t CreateHStringReference(const utils::StringView& str, Il2CppHStringHeader* header, Il2CppHString* hstring); static il2cpp_hresult_t CreateHString(const utils::StringView& str, Il2CppHString* hstring); #if !IL2CPP_TARGET_WINDOWS // Il2CppChar and Il2CppNativeChar are the same on Windows static il2cpp_hresult_t CreateHString(const utils::StringView& str, Il2CppHString* hstring); #endif static il2cpp_hresult_t DuplicateHString(Il2CppHString hstring, Il2CppHString* duplicated); static il2cpp_hresult_t DeleteHString(Il2CppHString hstring); static utils::Expected GetHStringBuffer(Il2CppHString hstring, uint32_t* length); static utils::Expected GetNativeHStringBuffer(Il2CppHString hstring, uint32_t* length); static utils::Expected PreallocateHStringBuffer(uint32_t length, Il2CppNativeChar** mutableBuffer, void** bufferHandle); static utils::Expected PromoteHStringBuffer(void* bufferHandle, Il2CppHString* hstring); static utils::Expected DeleteHStringBuffer(void* bufferHandle); static Il2CppIRestrictedErrorInfo* GetRestrictedErrorInfo(); typedef Il2CppIUnknown* (*GetOrCreateFunc)(Il2CppObject* obj, const Il2CppGuid& iid); static void OriginateLanguageException(il2cpp_hresult_t hresult, Il2CppException* ex, Il2CppString* exceptionString, GetOrCreateFunc createCCWCallback); static void EnableErrorReporting(); }; } }