aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2022-01-25 17:42:19 +0800
committercrupest <crupest@outlook.com>2022-01-25 17:42:19 +0800
commit839292efaaf8d997b2cbca7abae8c6e575f6c01a (patch)
tree0f0354fca793e75b90f9d02e86351b2a86601f34
parent2ed65999ef6f3e1156427dd3efe04353ae657882 (diff)
downloadcru-839292efaaf8d997b2cbca7abae8c6e575f6c01a.tar.gz
cru-839292efaaf8d997b2cbca7abae8c6e575f6c01a.tar.bz2
cru-839292efaaf8d997b2cbca7abae8c6e575f6c01a.zip
...
-rw-r--r--include/cru/common/io/FileStream.hpp4
-rw-r--r--include/cru/common/platform/win/Exception.hpp6
-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.hpp1
-rw-r--r--include/cru/win/Exception.hpp1
-rw-r--r--src/common/CMakeLists.txt2
-rw-r--r--src/common/platform/win/Exception.cpp7
-rw-r--r--src/common/platform/win/Win32FileStream.cpp (renamed from src/common/io/Win32FileStream.cpp)20
-rw-r--r--test/common/io/Win32FileStreamTest.cpp3
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")