From ccf48eb93a101ba2412497ad5f3966e4f31d2178 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Fri, 7 Nov 2025 00:11:38 +0800 Subject: Win Resource.h to Base.h. --- include/cru/base/platform/win/Base.h | 49 +++++++++++++++++++++++++ include/cru/base/platform/win/ComAutoInit.h | 9 ++--- include/cru/base/platform/win/DebugLogTarget.h | 6 +-- include/cru/base/platform/win/Exception.h | 43 ---------------------- include/cru/base/platform/win/StreamConvert.h | 6 +-- include/cru/base/platform/win/Win32FileStream.h | 6 +-- include/cru/base/platform/win/WinPreConfig.h | 12 ------ 7 files changed, 61 insertions(+), 70 deletions(-) create mode 100644 include/cru/base/platform/win/Base.h delete mode 100644 include/cru/base/platform/win/Exception.h delete mode 100644 include/cru/base/platform/win/WinPreConfig.h (limited to 'include/cru/base/platform') diff --git a/include/cru/base/platform/win/Base.h b/include/cru/base/platform/win/Base.h new file mode 100644 index 00000000..83420461 --- /dev/null +++ b/include/cru/base/platform/win/Base.h @@ -0,0 +1,49 @@ +#pragma once + +#ifndef _WIN32 +#error "This file can only be included on Windows." +#endif + +#include "../../Base.h" + +#define NOMINMAX +#define WIN32_LEAN_AND_MEAN +#include +#undef CreateWindow +#undef DrawText +#undef CreateFont +#undef CreateEvent + +namespace cru::platform::win { +class CRU_BASE_API HResultError : public Exception { + public: + explicit HResultError(HRESULT h_result); + HResultError(HRESULT h_result, std::string_view message); + + HRESULT GetHResult() const { return h_result_; } + + private: + HRESULT h_result_; +}; + +inline void ThrowIfFailed(const HRESULT h_result) { + if (FAILED(h_result)) throw HResultError(h_result); +} + +inline void ThrowIfFailed(const HRESULT h_result, std::string_view message) { + if (FAILED(h_result)) throw HResultError(h_result, message); +} + +class CRU_BASE_API Win32Error : public Exception { + public: + // ::GetLastError is automatically called to get the error code. + // The same as Win32Error(::GetLastError(), message) + explicit Win32Error(std::string_view message); + Win32Error(DWORD error_code, std::string_view message); + + DWORD GetErrorCode() const { return error_code_; } + + private: + DWORD error_code_; +}; +} // namespace cru::platform::win diff --git a/include/cru/base/platform/win/ComAutoInit.h b/include/cru/base/platform/win/ComAutoInit.h index cef819a5..524cd026 100644 --- a/include/cru/base/platform/win/ComAutoInit.h +++ b/include/cru/base/platform/win/ComAutoInit.h @@ -1,9 +1,10 @@ #pragma once -#ifdef CRU_PLATFORM_WINDOWS +#ifndef _WIN32 +#error "This file can only be included on Windows." +#endif -#include "WinPreConfig.h" -#include "cru/base/Base.h" +#include "Base.h" namespace cru::platform::win { class CRU_BASE_API ComAutoInit { @@ -16,5 +17,3 @@ class CRU_BASE_API ComAutoInit { ~ComAutoInit(); }; } // namespace cru::platform::win - -#endif diff --git a/include/cru/base/platform/win/DebugLogTarget.h b/include/cru/base/platform/win/DebugLogTarget.h index cabfa7e5..333e764f 100644 --- a/include/cru/base/platform/win/DebugLogTarget.h +++ b/include/cru/base/platform/win/DebugLogTarget.h @@ -1,15 +1,13 @@ #pragma once #ifndef _WIN32 -#error "This file can only be used on Windows." +#error "This file can only be included on Windows." #endif -#include "WinPreConfig.h" - +#include "Base.h" #include "../../log/Logger.h" namespace cru::platform::win { - class CRU_BASE_API WinDebugLogTarget : public ::cru::log::ILogTarget { public: void Write(::cru::log::LogLevel level, std::string s) override; diff --git a/include/cru/base/platform/win/Exception.h b/include/cru/base/platform/win/Exception.h deleted file mode 100644 index db98e7b6..00000000 --- a/include/cru/base/platform/win/Exception.h +++ /dev/null @@ -1,43 +0,0 @@ -#pragma once - -#ifndef _WIN32 -#error "This file can only be used on Windows." -#endif - -#include "WinPreConfig.h" - -#include "../../Base.h" - -namespace cru::platform::win { -class CRU_BASE_API HResultError : public Exception { - public: - explicit HResultError(HRESULT h_result); - HResultError(HRESULT h_result, std::string_view message); - - HRESULT GetHResult() const { return h_result_; } - - private: - HRESULT h_result_; -}; - -inline void ThrowIfFailed(const HRESULT h_result) { - if (FAILED(h_result)) throw HResultError(h_result); -} - -inline void ThrowIfFailed(const HRESULT h_result, std::string_view message) { - if (FAILED(h_result)) throw HResultError(h_result, message); -} - -class CRU_BASE_API Win32Error : public Exception { - public: - // ::GetLastError is automatically called to get the error code. - // The same as Win32Error(::GetLastError(), message) - explicit Win32Error(std::string_view message); - Win32Error(DWORD error_code, std::string_view message); - - DWORD GetErrorCode() const { return error_code_; } - - private: - DWORD error_code_; -}; -} // namespace cru::platform::win diff --git a/include/cru/base/platform/win/StreamConvert.h b/include/cru/base/platform/win/StreamConvert.h index 17552c31..085e94e6 100644 --- a/include/cru/base/platform/win/StreamConvert.h +++ b/include/cru/base/platform/win/StreamConvert.h @@ -1,6 +1,8 @@ #pragma once -#ifdef CRU_PLATFORM_WINDOWS +#ifndef _WIN32 +#error "This file can only be included on Windows." +#endif #include "../../io/Stream.h" @@ -9,5 +11,3 @@ namespace cru::platform::win { CRU_BASE_API IStream* ConvertStreamToComStream(io::Stream* stream); } - -#endif diff --git a/include/cru/base/platform/win/Win32FileStream.h b/include/cru/base/platform/win/Win32FileStream.h index d0339b11..2980d059 100644 --- a/include/cru/base/platform/win/Win32FileStream.h +++ b/include/cru/base/platform/win/Win32FileStream.h @@ -1,6 +1,8 @@ #pragma once -#ifdef CRU_PLATFORM_WINDOWS +#ifndef _WIN32 +#error "This file can only be included on Windows." +#endif #include "../../io/OpenFileFlag.h" #include "../../io/Stream.h" @@ -38,5 +40,3 @@ class CRU_BASE_API Win32FileStream : public io::Stream { details::Win32FileStreamPrivate* p_; }; } // namespace cru::platform::win - -#endif diff --git a/include/cru/base/platform/win/WinPreConfig.h b/include/cru/base/platform/win/WinPreConfig.h deleted file mode 100644 index 03e0c03c..00000000 --- a/include/cru/base/platform/win/WinPreConfig.h +++ /dev/null @@ -1,12 +0,0 @@ -#pragma once -#ifdef CRU_PLATFORM_WINDOWS - -#define NOMINMAX -#define WIN32_LEAN_AND_MEAN -#include -#undef CreateWindow -#undef DrawText -#undef CreateFont -#undef CreateEvent - -#endif -- cgit v1.2.3