pdfobjects::CStreamsXpdfReader< Container > Class Template Reference

#include <cstreamsxpdfreader.h>

List of all members.

Public Types

typedef std::vector
< boost::shared_ptr< CStream > > 
CStreams

Public Member Functions

 CStreamsXpdfReader (Container &strs)
 CStreamsXpdfReader (boost::shared_ptr< CStream > str)
void open ()
void close ()
template<typename Ctr >
void close (Ctr &parsedstreams)
void getXpdfObject (::Object &obj)
void lookXpdfObject (::Object &obj)
bool eof ()
::Stream * getXpdfStream ()
bool eofOfActualStream ()

Private Attributes

CStreams streams
boost::shared_ptr< ::Object > xarr
boost::shared_ptr< ::Object > curobj
boost::shared_ptr< Parser > parser
::Lexer * lexer

Detailed Description

template<typename Container>
class pdfobjects::CStreamsXpdfReader< Container >

Adapter which is able to read sequentially from more cstreams.

It stores a container of streams and when the actual stream does not contain more objects, tries to read the next one if any.

This class is an example of Adapter design pattern. We have to be able to read from more streams sequentially and this class provides us with the interface.


Member Typedef Documentation

template<typename Container >
typedef std::vector<boost::shared_ptr<CStream> > pdfobjects::CStreamsXpdfReader< Container >::CStreams

Constructor & Destructor Documentation

template<typename Container >
pdfobjects::CStreamsXpdfReader< Container >::CStreamsXpdfReader ( Container &  strs  )  [inline]
template<typename Container >
pdfobjects::CStreamsXpdfReader< Container >::CStreamsXpdfReader ( boost::shared_ptr< CStream str  )  [inline]

Member Function Documentation

template<typename Container >
template<typename Ctr >
void pdfobjects::CStreamsXpdfReader< Container >::close ( Ctr &  parsedstreams  )  [inline]

Close. Save parsed streams to container.

Parameters:
parsedstreams Output buffer that will contain all streams we have really parsed.

References pdfobjects::CStreamsXpdfReader< Container >::close(), pdfobjects::CStreamsXpdfReader< Container >::lexer, and pdfobjects::CStreamsXpdfReader< Container >::streams.

template<typename Container >
void pdfobjects::CStreamsXpdfReader< Container >::close (  )  [inline]
template<typename Container >
bool pdfobjects::CStreamsXpdfReader< Container >::eof (  )  [inline]

Is end of all streams.

We can not cache and due to this fact we can not tell if a stream is empty without fetching an object.

References pdfobjects::CStreamsXpdfReader< Container >::curobj.

template<typename Container >
bool pdfobjects::CStreamsXpdfReader< Container >::eofOfActualStream (  )  [inline]

Are we at the end of actual stream. We need to ask parser, because of object caching.

References pdfobjects::CStreamsXpdfReader< Container >::parser.

template<typename Container >
void pdfobjects::CStreamsXpdfReader< Container >::getXpdfObject ( ::Object &  obj  )  [inline]
template<typename Container >
::Stream* pdfobjects::CStreamsXpdfReader< Container >::getXpdfStream (  )  [inline]
template<typename Container >
void pdfobjects::CStreamsXpdfReader< Container >::lookXpdfObject ( ::Object &  obj  )  [inline]

Look at next xpdf object. It need not return the real next object, but it does at the start of a stream.

References pdfobjects::CStreamsXpdfReader< Container >::parser.

template<typename Container >
void pdfobjects::CStreamsXpdfReader< Container >::open (  )  [inline]

Member Data Documentation

template<typename Container >
boost::shared_ptr< ::Object> pdfobjects::CStreamsXpdfReader< Container >::curobj [private]
template<typename Container >
::Lexer* pdfobjects::CStreamsXpdfReader< Container >::lexer [private]
template<typename Container >
boost::shared_ptr<Parser> pdfobjects::CStreamsXpdfReader< Container >::parser [private]
template<typename Container >
CStreams pdfobjects::CStreamsXpdfReader< Container >::streams [private]
template<typename Container >
boost::shared_ptr< ::Object> pdfobjects::CStreamsXpdfReader< Container >::xarr [private]

The documentation for this class was generated from the following file: