From 0f26ab693e82d1c56ea0be653a8cd670abeb8f89 Mon Sep 17 00:00:00 2001 From: Mike Buland Date: Fri, 3 Oct 2014 15:54:36 +0000 Subject: Tweaked Bu::Uuid loading to pad it's data more cleanly. This will help ensure that we don't get valgrind errors, and is probably safer in general. Added Bu::ArchiveStream. It could use some tweaks, but as a quick hack it's handy to allow systems that can only read/write from/to streams to work with archives. --- src/unstable/archivestream.cpp | 127 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 src/unstable/archivestream.cpp (limited to 'src/unstable/archivestream.cpp') diff --git a/src/unstable/archivestream.cpp b/src/unstable/archivestream.cpp new file mode 100644 index 0000000..aa45e50 --- /dev/null +++ b/src/unstable/archivestream.cpp @@ -0,0 +1,127 @@ +/* + * Copyright (C) 2007-2014 Xagasoft, All rights reserved. + * + * This file is part of the libbu++ library and is released under the + * terms of the license contained in the file LICENSE. + */ + +#include "bu/archivestream.h" + +Bu::ArchiveStream::ArchiveStream( Bu::ArchiveBase &ar ) : + ar( ar ), + iPos( 0 ) +{ +} + +Bu::ArchiveStream::~ArchiveStream() +{ +} + +void Bu::ArchiveStream::close() +{ + ar.close(); +} + +Bu::size Bu::ArchiveStream::read( void *pBuf, size iBytes ) +{ + ar.read( pBuf, iBytes ); + iPos += iBytes; + return iBytes; +} + +Bu::size Bu::ArchiveStream::write( const void *pBuf, size iBytes ) +{ + ar.write( pBuf, iBytes ); + iPos += iBytes; + return iBytes; +} + +Bu::size Bu::ArchiveStream::tell() +{ + return iPos; +} + +void Bu::ArchiveStream::seek( Bu::size ) +{ + throw Bu::UnsupportedException(); +} + +void Bu::ArchiveStream::setPos( Bu::size ) +{ + throw Bu::UnsupportedException(); +} + +void Bu::ArchiveStream::setPosEnd( Bu::size ) +{ + throw Bu::UnsupportedException(); +} + +bool Bu::ArchiveStream::isEos() +{ + return false; +} + +bool Bu::ArchiveStream::isOpen() +{ + return true; +} + +void Bu::ArchiveStream::flush() +{ +} + +bool Bu::ArchiveStream::canRead() +{ + return true; +} + +bool Bu::ArchiveStream::canWrite() +{ + return true; +} + +bool Bu::ArchiveStream::isReadable() +{ + return true; +} + +bool Bu::ArchiveStream::isWritable() +{ + return true; +} + +bool Bu::ArchiveStream::isSeekable() +{ + return false; +} + +bool Bu::ArchiveStream::isBlocking() +{ + return false; +} + +void Bu::ArchiveStream::setBlocking( bool ) +{ + throw Bu::UnsupportedException(); +} + +void Bu::ArchiveStream::setSize( Bu::size ) +{ + throw Bu::UnsupportedException(); +} + +Bu::size Bu::ArchiveStream::getSize() const +{ + return iPos; +} + +Bu::size Bu::ArchiveStream::getBlockSize() const +{ + return 1; +} + +Bu::String Bu::ArchiveStream::getLocation() const +{ + return "Archive"; +} + -- cgit v1.2.3