/* * Copyright (C) 2007-2019 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::Archive &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"; }