Add a close method to the win32 ifstream

master
Chris Robinson 2020-11-16 14:51:50 -08:00
parent 88cb398a83
commit 645d354ffa
2 changed files with 12 additions and 5 deletions

View File

@ -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}

View File

@ -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