File::~File()
{
- close();
-}
-
-void File::close()
-{
- if(!handle)
- return;
-
signal_flush_required.emit();
-
sys_close(handle);
-
- handle = Handle();
signal_closed.emit();
}
void File::set_block(bool b)
{
- check_access(M_NONE);
-
mode = (mode&~M_NONBLOCK);
if(b)
mode = (mode|M_NONBLOCK);
SeekOffset File::seek(SeekOffset off, SeekType type)
{
- check_access(M_NONE);
-
signal_flush_required.emit();
off = sys_seek(handle, off, type);
eof_flag = false;
SeekOffset File::tell() const
{
- check_access(M_NONE);
-
return sys_seek(const_cast<Handle &>(handle), 0, S_CUR);
}
-void File::check_access(Mode m) const
-{
- if(!handle || (m && !(mode&m)))
- throw invalid_access(m);
-}
-
} // namespace IO
} // namespace Msp