aboutsummaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2020-11-16 14:51:50 -0800
committerChris Robinson <[email protected]>2020-11-16 14:51:50 -0800
commit645d354ffa214cf366521e7f601b401d8f2c5879 (patch)
tree07a62c9ec3c833012bedf8d0d961f6cacd364f46 /common
parent88cb398a836bb8b2d4038edcedff5167886e2d51 (diff)
Add a close method to the win32 ifstream
Diffstat (limited to 'common')
-rw-r--r--common/alfstream.cpp13
-rw-r--r--common/alfstream.h4
2 files changed, 12 insertions, 5 deletions
diff --git a/common/alfstream.cpp b/common/alfstream.cpp
index 7378c678..3beda833 100644
--- a/common/alfstream.cpp
+++ b/common/alfstream.cpp
@@ -88,11 +88,7 @@ auto filebuf::seekpos(pos_type pos, std::ios_base::openmode mode) -> pos_type
}
filebuf::~filebuf()
-{
- if(mFile != INVALID_HANDLE_VALUE)
- CloseHandle(mFile);
- mFile = INVALID_HANDLE_VALUE;
-}
+{ close(); }
bool filebuf::open(const wchar_t *filename, std::ios_base::openmode mode)
{
@@ -115,6 +111,13 @@ bool filebuf::open(const char *filename, std::ios_base::openmode mode)
return open(wname.c_str(), mode);
}
+void filebuf::close()
+{
+ if(mFile != INVALID_HANDLE_VALUE)
+ CloseHandle(mFile);
+ mFile = INVALID_HANDLE_VALUE;
+}
+
ifstream::ifstream(const wchar_t *filename, std::ios_base::openmode mode)
: std::istream{nullptr}
diff --git a/common/alfstream.h b/common/alfstream.h
index 046a6e2a..353fd2de 100644
--- a/common/alfstream.h
+++ b/common/alfstream.h
@@ -34,6 +34,8 @@ public:
bool open(const char *filename, std::ios_base::openmode mode);
bool is_open() const noexcept { return mFile != INVALID_HANDLE_VALUE; }
+
+ void close();
};
// Inherit from std::istream to use our custom streambuf
@@ -50,6 +52,8 @@ public:
~ifstream() override;
bool is_open() const noexcept { return mStreamBuf.is_open(); }
+
+ void close() { mStreamBuf.close(); }
};
} // namespace al