aboutsummaryrefslogtreecommitdiff
path: root/src/base/platform/win/Win32FileStream.cpp
diff options
context:
space:
mode:
authorYuqian Yang <crupest@crupest.life>2025-09-08 01:46:00 +0800
committerYuqian Yang <crupest@crupest.life>2025-09-08 21:34:37 +0800
commit593b658eb1491d4b3103971aba6592aff2765f0e (patch)
tree526bc88c6a895c215015926c90ff38c106a94604 /src/base/platform/win/Win32FileStream.cpp
parentdf550874cd546a85074edc35bebeb3cd0530622b (diff)
downloadcru-593b658eb1491d4b3103971aba6592aff2765f0e.tar.gz
cru-593b658eb1491d4b3103971aba6592aff2765f0e.tar.bz2
cru-593b658eb1491d4b3103971aba6592aff2765f0e.zip
Fix some compile errors on Windows.
Diffstat (limited to 'src/base/platform/win/Win32FileStream.cpp')
-rw-r--r--src/base/platform/win/Win32FileStream.cpp37
1 files changed, 9 insertions, 28 deletions
diff --git a/src/base/platform/win/Win32FileStream.cpp b/src/base/platform/win/Win32FileStream.cpp
index 54e6ae45..f3809b3e 100644
--- a/src/base/platform/win/Win32FileStream.cpp
+++ b/src/base/platform/win/Win32FileStream.cpp
@@ -14,7 +14,8 @@ namespace cru::platform::win {
using namespace cru::io;
Win32FileStream::Win32FileStream(String path, OpenFileFlag flags)
- : path_(std::move(path)),
+ : Stream(true, true, true),
+ path_(std::move(path)),
flags_(flags),
p_(new details::Win32FileStreamPrivate()) {
DWORD grfMode = STGM_SHARE_DENY_NONE;
@@ -46,15 +47,11 @@ Win32FileStream::Win32FileStream(String path, OpenFileFlag flags)
}
Win32FileStream::~Win32FileStream() {
- Close();
+ DoClose();
delete p_;
}
-bool Win32FileStream::CanSeek() { return true; }
-
-Index Win32FileStream::Seek(Index offset, SeekOrigin origin) {
- CheckClosed();
-
+Index Win32FileStream::DoSeek(Index offset, SeekOrigin origin) {
DWORD dwOrigin = 0;
if (origin == SeekOrigin::Current) {
@@ -74,23 +71,13 @@ Index Win32FileStream::Seek(Index offset, SeekOrigin origin) {
return n_new_offset.QuadPart;
}
-bool Win32FileStream::CanRead() { return true; }
-
-Index Win32FileStream::Read(std::byte* buffer, Index offset, Index size) {
- if (size < 0) {
- throw Exception(u"Size must be greater than 0.");
- }
-
- CheckClosed();
-
+Index Win32FileStream::DoRead(std::byte* buffer, Index offset, Index size) {
ULONG n_read;
ThrowIfFailed(p_->stream_->Read(buffer + offset, size, &n_read));
return n_read;
}
-bool Win32FileStream::CanWrite() { return true; }
-
-Index Win32FileStream::Write(const std::byte* buffer, Index offset,
+Index Win32FileStream::DoWrite(const std::byte* buffer, Index offset,
Index size) {
if (size < 0) {
throw Exception(u"Size must be greater than 0.");
@@ -104,19 +91,13 @@ Index Win32FileStream::Write(const std::byte* buffer, Index offset,
return n_written;
}
-void Win32FileStream::Close() {
- if (closed_) return;
+void Win32FileStream::DoClose() {
+ CRU_STREAM_BEGIN_CLOSE
- if (p_->stream_) {
+ if (p_->stream_) {
p_->stream_->Release();
p_->stream_ = nullptr;
}
- closed_ = true;
}
-
-void Win32FileStream::CheckClosed() {
- if (closed_) throw Exception(u"Stream is closed.");
-}
-
} // namespace cru::platform::win