Add a close method to the win32 ifstream
parent
88cb398a83
commit
645d354ffa
|
@ -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}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue