diff options
author | Devtools Arcadia <arcadia-devtools@yandex-team.ru> | 2022-02-07 18:08:42 +0300 |
---|---|---|
committer | Devtools Arcadia <arcadia-devtools@mous.vla.yp-c.yandex.net> | 2022-02-07 18:08:42 +0300 |
commit | 1110808a9d39d4b808aef724c861a2e1a38d2a69 (patch) | |
tree | e26c9fed0de5d9873cce7e00bc214573dc2195b7 /contrib/libs/poco/Foundation/src/FileStream.cpp | |
download | ydb-1110808a9d39d4b808aef724c861a2e1a38d2a69.tar.gz |
intermediate changes
ref:cde9a383711a11544ce7e107a78147fb96cc4029
Diffstat (limited to 'contrib/libs/poco/Foundation/src/FileStream.cpp')
-rw-r--r-- | contrib/libs/poco/Foundation/src/FileStream.cpp | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/contrib/libs/poco/Foundation/src/FileStream.cpp b/contrib/libs/poco/Foundation/src/FileStream.cpp new file mode 100644 index 0000000000..4f94a24908 --- /dev/null +++ b/contrib/libs/poco/Foundation/src/FileStream.cpp @@ -0,0 +1,121 @@ +// +// FileStream.cpp +// +// Library: Foundation +// Package: Streams +// Module: FileStream +// +// Copyright (c) 2007, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "Poco/FileStream.h" +#include "Poco/Exception.h" +#if defined(POCO_OS_FAMILY_WINDOWS) +#include "FileStream_WIN32.cpp" +#else +#include "FileStream_POSIX.cpp" +#endif + + +namespace Poco { + + +FileIOS::FileIOS(std::ios::openmode defaultMode): + _defaultMode(defaultMode) +{ + poco_ios_init(&_buf); +} + + +FileIOS::~FileIOS() +{ +} + + +void FileIOS::open(const std::string& path, std::ios::openmode mode) +{ + clear(); + _buf.open(path, mode | _defaultMode); +} + + +void FileIOS::close() +{ + if (!_buf.close()) + { + setstate(ios_base::badbit); + } +} + + +FileStreamBuf* FileIOS::rdbuf() +{ + return &_buf; +} + + +FileInputStream::FileInputStream(): + FileIOS(std::ios::in), + std::istream(&_buf) +{ +} + + +FileInputStream::FileInputStream(const std::string& path, std::ios::openmode mode): + FileIOS(std::ios::in), + std::istream(&_buf) +{ + open(path, mode); +} + + +FileInputStream::~FileInputStream() +{ +} + + +FileOutputStream::FileOutputStream(): + FileIOS(std::ios::out), + std::ostream(&_buf) +{ +} + + +FileOutputStream::FileOutputStream(const std::string& path, std::ios::openmode mode): + FileIOS(std::ios::out), + std::ostream(&_buf) +{ + open(path, mode); +} + + +FileOutputStream::~FileOutputStream() +{ +} + + +FileStream::FileStream(): + FileIOS(std::ios::in | std::ios::out), + std::iostream(&_buf) +{ +} + + +FileStream::FileStream(const std::string& path, std::ios::openmode mode): + FileIOS(std::ios::in | std::ios::out), + std::iostream(&_buf) +{ + open(path, mode); +} + + +FileStream::~FileStream() +{ +} + + +} // namespace Poco |