From b5697421bbc73ed17ef3a8bc003571d1b6351b5c Mon Sep 17 00:00:00 2001 From: Marc Sunet Date: Wed, 19 Nov 2025 19:42:04 -0800 Subject: Rename dxcommon -> dxg --- dxg/dxcommon.ixx | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 dxg/dxcommon.ixx (limited to 'dxg/dxcommon.ixx') diff --git a/dxg/dxcommon.ixx b/dxg/dxcommon.ixx new file mode 100644 index 0000000..b06ae95 --- /dev/null +++ b/dxg/dxcommon.ixx @@ -0,0 +1,53 @@ +module; + +#include +#include + +export module dxcommon; + +using Microsoft::WRL::ComPtr; + +namespace dx { + +export { + +class exception : public std::exception +{ +public: + exception() noexcept = default; + + exception(HRESULT result, const char* file, int line) noexcept + { + sprintf_s(m_error, sizeof(m_error), "%s:%d Failed with HRESULT = %08X", + file, line, static_cast(result)); + } + + exception(const char* error, const char* file, int line) noexcept + { + sprintf_s(m_error, sizeof(m_error), "%s:%d %s", file, line, error); + } + + [[nodiscard]] const char* what() const noexcept final + { + return m_error; + } + +private: + static thread_local char m_error[1024]; +}; + +template +void SafeRelease(ComPtr& ptr) +{ + if (ptr) + { + ptr->Release(); + ptr = nullptr; + } +} + +} // export + +thread_local char exception::m_error[1024]; + +} // dx -- cgit v1.2.3