From d44ece9babc5d70e1194a29a54b72dae1fe70ceb Mon Sep 17 00:00:00 2001 From: Mike Buland Date: Thu, 22 Sep 2016 09:48:01 -0600 Subject: Included the experimental TeeStream. This allows you to write data to multiple streams simultaneously and easily. It's pretty much complete, but it feels like it could use more...features somehow. --- src/unstable/teestream.cpp | 117 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 src/unstable/teestream.cpp (limited to 'src/unstable/teestream.cpp') diff --git a/src/unstable/teestream.cpp b/src/unstable/teestream.cpp new file mode 100644 index 0000000..52802ef --- /dev/null +++ b/src/unstable/teestream.cpp @@ -0,0 +1,117 @@ +/* + Bu::TeeStream::* Copyright (C) 2007-2014 Xagasoft, All rights reserved. + Bu::TeeStream::* + Bu::TeeStream::* This file is part of the libbu++ library and is released under the + Bu::TeeStream::* terms of the license contained in the file LICENSE. + Bu::TeeStream::*/ + +#include "bu/teestream.h" + +Bu::TeeStream::TeeStream() +{ +} + +Bu::TeeStream::~TeeStream() +{ +} + +void Bu::TeeStream::addStream( Bu::Stream &rStream ) +{ + lStream.append( StreamWrapper( rStream ) ); +} + +#define delegate \ + for( StreamRefList::iterator i = lStream.begin(); i; i++ ) \ + (*i).rStream + +void Bu::TeeStream::close() +{ + delegate.close(); +} + +Bu::size Bu::TeeStream::tell() +{ + return 0; +} + +void Bu::TeeStream::seek( Bu::size ) +{ +} + +void Bu::TeeStream::setPos( Bu::size ) +{ +} + +void Bu::TeeStream::setPosEnd( Bu::size ) +{ +} + +bool Bu::TeeStream::isEos() +{ + return false; +} + +bool Bu::TeeStream::isOpen() +{ + return true; +} + +void Bu::TeeStream::flush() +{ + delegate.flush(); +} + +bool Bu::TeeStream::canRead() +{ + return false; +} + +bool Bu::TeeStream::canWrite() +{ + return true; +} + +bool Bu::TeeStream::isReadable() +{ + return false; +} + +bool Bu::TeeStream::isWritable() +{ + return true; +} + +bool Bu::TeeStream::isSeekable() +{ + return false; +} + +bool Bu::TeeStream::isBlocking() +{ + return true; +} + +void Bu::TeeStream::setBlocking( bool bBlocking ) +{ + delegate.setBlocking( bBlocking ); +} + +void Bu::TeeStream::setSize( Bu::size ) +{ +} + +Bu::size Bu::TeeStream::getSize() const +{ + return 0; +} + +Bu::size Bu::TeeStream::getBlockSize() const +{ + return 0; +} + +Bu::String Bu::TeeStream::getLocation() const +{ + return "Invalid"; +} + -- cgit v1.2.3