4#include "zipios++/zipios-config.h"
6#include "zipios++/meta-iostreams.h"
22 inline VirtualSeeker(
int start_offset = 0,
int end_offset = 0) ;
23 inline void setOffsets(
int start_offset,
int end_offset ) ;
24 inline void getOffsets(
int &start_offset,
int &end_offset )
const ;
25 inline int startOffset()
const ;
26 inline int endOffset()
const ;
27 inline void vseekg( istream &is,
int offset, ios::seekdir sd )
const ;
28 inline int vtellg( istream &is )
const ;
36VirtualSeeker::VirtualSeeker(
int start_offset,
int end_offset )
37 : _s_off( start_offset ),
42void VirtualSeeker::setOffsets(
int start_offset,
int end_offset ) {
43 _s_off = start_offset ;
48void VirtualSeeker::getOffsets(
int &start_offset,
int &end_offset )
const {
49 start_offset = _s_off ;
54int VirtualSeeker::startOffset()
const {
59int VirtualSeeker::endOffset()
const {
63void VirtualSeeker::vseekg( istream &is,
int offset, ios::seekdir sd )
const {
65 is.seekg( offset, sd ) ;
66 else if ( sd == ios::beg )
67 is.seekg( offset + _s_off, sd ) ;
68 else if ( sd == ios::end )
69 is.seekg( offset - _e_off, sd ) ;
71 cerr <<
"VirtualSeekManager::seekg: error - not supposed to happen!" << endl ;
75int VirtualSeeker::vtellg( istream &is )
const {
76 return static_cast< int >( is.tellg() ) - _s_off ;
VirtualSeeker is a simple class that keeps track of a set of specified 'virtual' file endings that ma...