#include <cstreamsxpdfreader.h>
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 |
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.
| typedef std::vector<boost::shared_ptr<CStream> > pdfobjects::CStreamsXpdfReader< Container >::CStreams |
| pdfobjects::CStreamsXpdfReader< Container >::CStreamsXpdfReader | ( | Container & | strs | ) | [inline] |
| pdfobjects::CStreamsXpdfReader< Container >::CStreamsXpdfReader | ( | boost::shared_ptr< CStream > | str | ) | [inline] |
| void pdfobjects::CStreamsXpdfReader< Container >::close | ( | Ctr & | parsedstreams | ) | [inline] |
Close. Save parsed streams to container.
| 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.
| void pdfobjects::CStreamsXpdfReader< Container >::close | ( | ) | [inline] |
| 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.
| 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.
| void pdfobjects::CStreamsXpdfReader< Container >::getXpdfObject | ( | ::Object & | obj | ) | [inline] |
Get xpdf object.
| MalformedFormatExeption | if not able to parse object. |
References pdfobjects::CStreamsXpdfReader< Container >::curobj, debug::DBG_ERR, kernelPrintDbg, and pdfobjects::CStreamsXpdfReader< Container >::parser.
| ::Stream* pdfobjects::CStreamsXpdfReader< Container >::getXpdfStream | ( | ) | [inline] |
Get xpdf stream.
References pdfobjects::CStreamsXpdfReader< Container >::parser.
| 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.
| void pdfobjects::CStreamsXpdfReader< Container >::open | ( | ) | [inline] |
Open.
References pdfobjects::CStreamsXpdfReader< Container >::curobj, pdfobjects::IndiRef::gen, pdfobjects::XPdfObjectFactory::getInstance(), pdfobjects::utils::getXRef(), pdfobjects::hasValidPdf(), pdfobjects::hasValidRef(), pdfobjects::CStreamsXpdfReader< Container >::lexer, pdfobjects::IndiRef::num, pdfobjects::CStreamsXpdfReader< Container >::parser, pdfobjects::CStreamsXpdfReader< Container >::streams, and pdfobjects::CStreamsXpdfReader< Container >::xarr.
boost::shared_ptr< ::Object> pdfobjects::CStreamsXpdfReader< Container >::curobj [private] |
Current object.
Referenced by pdfobjects::CStreamsXpdfReader< Container >::close(), pdfobjects::CStreamsXpdfReader< Container >::CStreamsXpdfReader(), pdfobjects::CStreamsXpdfReader< Container >::eof(), pdfobjects::CStreamsXpdfReader< Container >::getXpdfObject(), and pdfobjects::CStreamsXpdfReader< Container >::open().
::Lexer* pdfobjects::CStreamsXpdfReader< Container >::lexer [private] |
Xpdf lexer.
Referenced by pdfobjects::CStreamsXpdfReader< Container >::close(), and pdfobjects::CStreamsXpdfReader< Container >::open().
boost::shared_ptr<Parser> pdfobjects::CStreamsXpdfReader< Container >::parser [private] |
Xpdf parser.
Referenced by pdfobjects::CStreamsXpdfReader< Container >::close(), pdfobjects::CStreamsXpdfReader< Container >::eofOfActualStream(), pdfobjects::CStreamsXpdfReader< Container >::getXpdfObject(), pdfobjects::CStreamsXpdfReader< Container >::getXpdfStream(), pdfobjects::CStreamsXpdfReader< Container >::lookXpdfObject(), and pdfobjects::CStreamsXpdfReader< Container >::open().
CStreams pdfobjects::CStreamsXpdfReader< Container >::streams [private] |
boost::shared_ptr< ::Object> pdfobjects::CStreamsXpdfReader< Container >::xarr [private] |
Xpdf array of streams.
Referenced by pdfobjects::CStreamsXpdfReader< Container >::close(), pdfobjects::CStreamsXpdfReader< Container >::CStreamsXpdfReader(), and pdfobjects::CStreamsXpdfReader< Container >::open().