diff options
author | orivej <orivej@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
commit | 718c552901d703c502ccbefdfc3c9028d608b947 (patch) | |
tree | 46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/libs/poco/Foundation/include/Poco/TeeStream.h | |
parent | e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff) | |
download | ydb-718c552901d703c502ccbefdfc3c9028d608b947.tar.gz |
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/poco/Foundation/include/Poco/TeeStream.h')
-rw-r--r-- | contrib/libs/poco/Foundation/include/Poco/TeeStream.h | 264 |
1 files changed, 132 insertions, 132 deletions
diff --git a/contrib/libs/poco/Foundation/include/Poco/TeeStream.h b/contrib/libs/poco/Foundation/include/Poco/TeeStream.h index 07744d8341..06c1a340a9 100644 --- a/contrib/libs/poco/Foundation/include/Poco/TeeStream.h +++ b/contrib/libs/poco/Foundation/include/Poco/TeeStream.h @@ -1,132 +1,132 @@ -// -// TeeStream.h -// -// Library: Foundation -// Package: Streams -// Module: TeeStream -// -// Definition of the TeeStream class. -// -// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. -// and Contributors. -// -// SPDX-License-Identifier: BSL-1.0 -// - - -#ifndef Foundation_TeeStream_INCLUDED -#define Foundation_TeeStream_INCLUDED - - -#include "Poco/Foundation.h" -#include "Poco/UnbufferedStreamBuf.h" -#include <vector> -#include <istream> -#include <ostream> - - -namespace Poco { - - -class Foundation_API TeeStreamBuf: public UnbufferedStreamBuf - /// This stream buffer copies all data written to or - /// read from it to one or multiple output streams. -{ -public: - TeeStreamBuf(); - /// Creates an unconnected CountingStreamBuf. - /// Use addStream() to attach output streams. - - TeeStreamBuf(std::istream& istr); - /// Creates the CountingStreamBuf and connects it - /// to the given input stream. - - TeeStreamBuf(std::ostream& ostr); - /// Creates the CountingStreamBuf and connects it - /// to the given output stream. - - ~TeeStreamBuf(); - /// Destroys the CountingStream. - - void addStream(std::ostream& ostr); - /// Adds the given output stream. - -protected: - int readFromDevice(); - int writeToDevice(char c); - -private: - typedef std::vector<std::ostream*> StreamVec; - - std::istream* _pIstr; - StreamVec _streams; -}; - - -class Foundation_API TeeIOS: public virtual std::ios - /// The base class for TeeInputStream and TeeOutputStream. - /// - /// This class is needed to ensure the correct initialization - /// order of the stream buffer and base classes. -{ -public: - TeeIOS(); - /// Creates the basic stream and leaves it unconnected. - - TeeIOS(std::istream& istr); - /// Creates the basic stream and connects it - /// to the given input stream. - - TeeIOS(std::ostream& ostr); - /// Creates the basic stream and connects it - /// to the given output stream. - - ~TeeIOS(); - /// Destroys the stream. - - void addStream(std::ostream& ostr); - /// Adds the given output stream. - - TeeStreamBuf* rdbuf(); - /// Returns a pointer to the underlying streambuf. - -protected: - TeeStreamBuf _buf; -}; - - -class Foundation_API TeeInputStream: public TeeIOS, public std::istream - /// This stream copies all characters read through it - /// to one or multiple output streams. -{ -public: - TeeInputStream(std::istream& istr); - /// Creates the TeeInputStream and connects it - /// to the given input stream. - - ~TeeInputStream(); - /// Destroys the TeeInputStream. -}; - - -class Foundation_API TeeOutputStream: public TeeIOS, public std::ostream - /// This stream copies all characters written to it - /// to one or multiple output streams. -{ -public: - TeeOutputStream(); - /// Creates an unconnected TeeOutputStream. - - TeeOutputStream(std::ostream& ostr); - /// Creates the TeeOutputStream and connects it - /// to the given input stream. - - ~TeeOutputStream(); - /// Destroys the TeeOutputStream. -}; - - -} // namespace Poco - - -#endif // Foundation_TeeStream_INCLUDED +// +// TeeStream.h +// +// Library: Foundation +// Package: Streams +// Module: TeeStream +// +// Definition of the TeeStream class. +// +// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef Foundation_TeeStream_INCLUDED +#define Foundation_TeeStream_INCLUDED + + +#include "Poco/Foundation.h" +#include "Poco/UnbufferedStreamBuf.h" +#include <vector> +#include <istream> +#include <ostream> + + +namespace Poco { + + +class Foundation_API TeeStreamBuf: public UnbufferedStreamBuf + /// This stream buffer copies all data written to or + /// read from it to one or multiple output streams. +{ +public: + TeeStreamBuf(); + /// Creates an unconnected CountingStreamBuf. + /// Use addStream() to attach output streams. + + TeeStreamBuf(std::istream& istr); + /// Creates the CountingStreamBuf and connects it + /// to the given input stream. + + TeeStreamBuf(std::ostream& ostr); + /// Creates the CountingStreamBuf and connects it + /// to the given output stream. + + ~TeeStreamBuf(); + /// Destroys the CountingStream. + + void addStream(std::ostream& ostr); + /// Adds the given output stream. + +protected: + int readFromDevice(); + int writeToDevice(char c); + +private: + typedef std::vector<std::ostream*> StreamVec; + + std::istream* _pIstr; + StreamVec _streams; +}; + + +class Foundation_API TeeIOS: public virtual std::ios + /// The base class for TeeInputStream and TeeOutputStream. + /// + /// This class is needed to ensure the correct initialization + /// order of the stream buffer and base classes. +{ +public: + TeeIOS(); + /// Creates the basic stream and leaves it unconnected. + + TeeIOS(std::istream& istr); + /// Creates the basic stream and connects it + /// to the given input stream. + + TeeIOS(std::ostream& ostr); + /// Creates the basic stream and connects it + /// to the given output stream. + + ~TeeIOS(); + /// Destroys the stream. + + void addStream(std::ostream& ostr); + /// Adds the given output stream. + + TeeStreamBuf* rdbuf(); + /// Returns a pointer to the underlying streambuf. + +protected: + TeeStreamBuf _buf; +}; + + +class Foundation_API TeeInputStream: public TeeIOS, public std::istream + /// This stream copies all characters read through it + /// to one or multiple output streams. +{ +public: + TeeInputStream(std::istream& istr); + /// Creates the TeeInputStream and connects it + /// to the given input stream. + + ~TeeInputStream(); + /// Destroys the TeeInputStream. +}; + + +class Foundation_API TeeOutputStream: public TeeIOS, public std::ostream + /// This stream copies all characters written to it + /// to one or multiple output streams. +{ +public: + TeeOutputStream(); + /// Creates an unconnected TeeOutputStream. + + TeeOutputStream(std::ostream& ostr); + /// Creates the TeeOutputStream and connects it + /// to the given input stream. + + ~TeeOutputStream(); + /// Destroys the TeeOutputStream. +}; + + +} // namespace Poco + + +#endif // Foundation_TeeStream_INCLUDED |