diff options
author | crupest <crupest@outlook.com> | 2022-01-25 17:42:19 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-01-25 17:42:19 +0800 |
commit | 839292efaaf8d997b2cbca7abae8c6e575f6c01a (patch) | |
tree | 0f0354fca793e75b90f9d02e86351b2a86601f34 | |
parent | 2ed65999ef6f3e1156427dd3efe04353ae657882 (diff) | |
download | cru-839292efaaf8d997b2cbca7abae8c6e575f6c01a.tar.gz cru-839292efaaf8d997b2cbca7abae8c6e575f6c01a.tar.bz2 cru-839292efaaf8d997b2cbca7abae8c6e575f6c01a.zip |
...
-rw-r--r-- | include/cru/common/io/FileStream.hpp | 4 | ||||
-rw-r--r-- | include/cru/common/platform/win/Exception.hpp | 6 | ||||
-rw-r--r-- | include/cru/common/platform/win/Win32FileStream.hpp (renamed from include/cru/common/io/Win32FileStream.hpp) | 17 | ||||
-rw-r--r-- | include/cru/osx/Exception.hpp | 1 | ||||
-rw-r--r-- | include/cru/win/Exception.hpp | 1 | ||||
-rw-r--r-- | src/common/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/common/platform/win/Exception.cpp | 7 | ||||
-rw-r--r-- | src/common/platform/win/Win32FileStream.cpp (renamed from src/common/io/Win32FileStream.cpp) | 20 | ||||
-rw-r--r-- | test/common/io/Win32FileStreamTest.cpp | 3 |
9 files changed, 37 insertions, 24 deletions
diff --git a/include/cru/common/io/FileStream.hpp b/include/cru/common/io/FileStream.hpp index fdde13fa..73c7b61e 100644 --- a/include/cru/common/io/FileStream.hpp +++ b/include/cru/common/io/FileStream.hpp @@ -6,8 +6,8 @@ namespace cru::io { using FileStream = UnixFileStream; } #elif CRU_PLATFORM_WINDOWS -#include "Win32FileStream.hpp" +#include "../platform/win/Win32FileStream.hpp" namespace cru::io { -using FileStream = Win32FileStream; +using FileStream = platform::win::Win32FileStream; } #endif diff --git a/include/cru/common/platform/win/Exception.hpp b/include/cru/common/platform/win/Exception.hpp index f90efe0a..0774327f 100644 --- a/include/cru/common/platform/win/Exception.hpp +++ b/include/cru/common/platform/win/Exception.hpp @@ -38,8 +38,10 @@ class CRU_BASE_API Win32Error : public platform::PlatformException { 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); + [[deprecated]] explicit Win32Error(std::string_view message); + explicit Win32Error(String message); + [[deprecated]] Win32Error(DWORD error_code, std::string_view message); + Win32Error(DWORD error_code, String message); CRU_DEFAULT_COPY(Win32Error) CRU_DEFAULT_MOVE(Win32Error) diff --git a/include/cru/common/io/Win32FileStream.hpp b/include/cru/common/platform/win/Win32FileStream.hpp index 08600a8e..231a7ec6 100644 --- a/include/cru/common/io/Win32FileStream.hpp +++ b/include/cru/common/platform/win/Win32FileStream.hpp @@ -1,22 +1,21 @@ #pragma once -#include "../PreConfig.hpp" +#include "../../PreConfig.hpp" #ifdef CRU_PLATFORM_WINDOWS -#include "../String.hpp" -#include "OpenFileFlag.hpp" -#include "Stream.hpp" -#include "cru/common/Base.hpp" +#include "../../String.hpp" +#include "../../io/OpenFileFlag.hpp" +#include "../../io/Stream.hpp" -namespace cru::io { +namespace cru::platform::win { namespace details { class Win32FileStreamPrivate; } -class CRU_BASE_API Win32FileStream : public Stream { +class CRU_BASE_API Win32FileStream : public io::Stream { public: - Win32FileStream(String path, OpenFileFlag flags); + Win32FileStream(String path, io::OpenFileFlag flags); CRU_DELETE_COPY(Win32FileStream) CRU_DELETE_MOVE(Win32FileStream) @@ -43,7 +42,7 @@ class CRU_BASE_API Win32FileStream : public Stream { private: String path_; - OpenFileFlag flags_; + io::OpenFileFlag flags_; bool closed_ = false; details::Win32FileStreamPrivate* p_; diff --git a/include/cru/osx/Exception.hpp b/include/cru/osx/Exception.hpp index 4123778b..5776ab72 100644 --- a/include/cru/osx/Exception.hpp +++ b/include/cru/osx/Exception.hpp @@ -1,2 +1,3 @@ #pragma once #include "cru/common/platform/osx/Exception.hpp" +#include "cru/platform/Exception.hpp" diff --git a/include/cru/win/Exception.hpp b/include/cru/win/Exception.hpp index d3ac69a7..3c42ff65 100644 --- a/include/cru/win/Exception.hpp +++ b/include/cru/win/Exception.hpp @@ -1,2 +1,3 @@ #pragma once #include "cru/common/platform/win/Exception.hpp" +#include "cru/platform/Exception.hpp" diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 0316d9e6..481205a0 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -34,7 +34,7 @@ endif() if (WIN32) target_sources(cru_base PRIVATE - io/Win32FileStream.cpp + platform/win/Win32FileStream.cpp platform/win/Exception.cpp ) endif() diff --git a/src/common/platform/win/Exception.cpp b/src/common/platform/win/Exception.cpp index 34ae8955..def12123 100644 --- a/src/common/platform/win/Exception.cpp +++ b/src/common/platform/win/Exception.cpp @@ -32,8 +32,15 @@ inline String Win32MakeMessage(DWORD error_code, String message) { Win32Error::Win32Error(std::string_view message) : Win32Error(::GetLastError(), message) {} +Win32Error::Win32Error(String message) + : Win32Error(::GetLastError(), message) {} + Win32Error::Win32Error(DWORD error_code, std::string_view message) : PlatformException(Win32MakeMessage( error_code, String::FromUtf8(message.data(), message.size()))), error_code_(error_code) {} + +Win32Error::Win32Error(DWORD error_code, String message) + : PlatformException(Win32MakeMessage(error_code, message)), + error_code_(error_code) {} } // namespace cru::platform::win diff --git a/src/common/io/Win32FileStream.cpp b/src/common/platform/win/Win32FileStream.cpp index e7ee0e6a..5997c570 100644 --- a/src/common/io/Win32FileStream.cpp +++ b/src/common/platform/win/Win32FileStream.cpp @@ -1,11 +1,13 @@ -#include "cru/common/io/Win32FileStream.hpp" +#include "cru/common/platform/win/Win32FileStream.hpp" -#include "cru/common/Exception.hpp" #include "cru/common/io/OpenFileFlag.hpp" +#include "cru/common/platform/win/Exception.hpp" #include <Windows.h> -namespace cru::io { +namespace cru::platform::win { +using namespace cru::io; + namespace details { struct Win32FileStreamPrivate { HANDLE handle; @@ -40,7 +42,7 @@ Win32FileStream::Win32FileStream(String path, OpenFileFlag flags) dwCreationDisposition, FILE_ATTRIBUTE_NORMAL, nullptr); if (p_->handle == INVALID_HANDLE_VALUE) { - throw Exception(u"Failed to call CreateFileW."); + throw Win32Error(u"Failed to call CreateFileW."); } } @@ -59,7 +61,7 @@ Index Win32FileStream::Tell() { LARGE_INTEGER file_pointer; if (::SetFilePointerEx(p_->handle, offset, &file_pointer, FILE_CURRENT) == 0) { - throw Exception(u"Failed to call SetFilePointerEx."); + throw Win32Error(u"Failed to call SetFilePointerEx."); } return file_pointer.QuadPart; @@ -81,7 +83,7 @@ void Win32FileStream::Seek(Index offset, SeekOrigin origin) { LARGE_INTEGER n_offset; n_offset.QuadPart = offset; if (::SetFilePointerEx(p_->handle, n_offset, nullptr, dwMoveMethod) == 0) { - throw Exception(u"Failed to call SetFilePointerEx."); + throw Win32Error(u"Failed to call SetFilePointerEx."); } } @@ -92,7 +94,7 @@ Index Win32FileStream::Read(std::byte* buffer, Index offset, Index size) { DWORD dwRead; if (::ReadFile(p_->handle, buffer + offset, size, &dwRead, nullptr) == 0) { - throw Exception(u"Failed to call ReadFile."); + throw Win32Error(u"Failed to call ReadFile."); } return dwRead; } @@ -106,7 +108,7 @@ Index Win32FileStream::Write(const std::byte* buffer, Index offset, DWORD dwWritten; if (::WriteFile(p_->handle, buffer + offset, size, &dwWritten, nullptr) == 0) { - throw Exception(u"Failed to call WriteFile."); + throw Win32Error(u"Failed to call WriteFile."); } return dwWritten; @@ -124,4 +126,4 @@ void Win32FileStream::CheckClosed() { if (closed_) throw Exception(u"Stream is closed."); } -} // namespace cru::io +} // namespace cru::platform::win diff --git a/test/common/io/Win32FileStreamTest.cpp b/test/common/io/Win32FileStreamTest.cpp index 6c3edb6f..0e35bb8d 100644 --- a/test/common/io/Win32FileStreamTest.cpp +++ b/test/common/io/Win32FileStreamTest.cpp @@ -1,5 +1,5 @@ #include "cru/common/io/OpenFileFlag.hpp" -#include "cru/common/io/Win32FileStream.hpp" +#include "cru/common/platform/win/Win32FileStream.hpp" #include <gtest/gtest.h> @@ -9,6 +9,7 @@ TEST(UnixFileStream, Work) { using namespace cru; using namespace cru::io; + using namespace cru::platform::win; auto temp_file_path = (std::filesystem::temp_directory_path() / "cru_test_temp.XXXXXX") |