ByteStream::ByteStream(const ByteStream & source): allocatedSize(source.getSize()), // only allocate what is really there, be opportinistic when grow()'ing data(source.data), size(source.getSize()) { source.data->ref(); beginReadIterator = ReadIterator(*this); }
ByteStream::ByteStream() : allocatedSize(0), beginReadIterator(), data(NULL), size(0) { data = Data::getNewData(); beginReadIterator = ReadIterator(*this); }
ByteStream::ByteStream(ReadIterator & source) : allocatedSize(0), size(0) { data = Data::getNewData(); put(source.getBuffer(), source.getSize()); source.advance(source.getSize()); beginReadIterator = ReadIterator(*this); }
ByteStream::ByteStream(const unsigned char * const newBuffer, const unsigned int bufferSize) : allocatedSize(bufferSize), data(0), size(bufferSize) { data = Data::getNewData(); if(data->size < size) { delete[] data->buffer; data->buffer = new unsigned char[size]; data->size = size; } memcpy(data->buffer, newBuffer, size); beginReadIterator = ReadIterator(*this); }
inline ReadIterator ReadCollection :: getReadRange ( uint64_t first, uint64_t count, Read :: ReadCategory categories ) const throw ( ErrorMsg ) { return ReadIterator ( ( ReadRef ) self -> getReadRange ( first, count, ( uint32_t ) categories ) ); }
inline ReadIterator ReadCollection :: getReadRange ( uint64_t first, uint64_t count ) const throw ( ErrorMsg ) { return ReadIterator ( ( ReadRef ) self -> getReadRange ( first, count ) ); }
inline ReadIterator ReadCollection :: getReads ( Read :: ReadCategory categories ) const throw ( ErrorMsg ) { return ReadIterator ( ( ReadRef ) self -> getReads ( ( uint32_t ) categories ) ); }