diff options
Diffstat (limited to 'sdext/source/pdfimport/pdfparse/pdfparse.cxx')
-rw-r--r-- | sdext/source/pdfimport/pdfparse/pdfparse.cxx | 82 |
1 files changed, 41 insertions, 41 deletions
diff --git a/sdext/source/pdfimport/pdfparse/pdfparse.cxx b/sdext/source/pdfimport/pdfparse/pdfparse.cxx index b278021df6f8..5105ac5e2413 100644 --- a/sdext/source/pdfimport/pdfparse/pdfparse.cxx +++ b/sdext/source/pdfimport/pdfparse/pdfparse.cxx @@ -85,7 +85,7 @@ class StringEmitContext : public EmitContext } return 0; } - + OString getString() { return m_aBuf.makeStringAndClear(); } }; @@ -107,7 +107,7 @@ public: std::vector< PDFEntry* > m_aObjectStack; rtl::OString m_aErrorString; iteratorT m_aGlobalBegin; - + public: struct pdf_string_parser { @@ -117,7 +117,7 @@ public: operator()(ScannerT const& scan, result_t&) const { std::ptrdiff_t len = 0; - + int nBraceLevel = 0; while( ! scan.at_end() ) { @@ -150,11 +150,11 @@ public: definition( const PDFGrammar<iteratorT>& rSelf ) { PDFGrammar<iteratorT>* pSelf = const_cast< PDFGrammar<iteratorT>* >( &rSelf ); - + // workaround workshop compiler: comment_p doesn't work // comment = comment_p("%")[boost::bind(&PDFGrammar::pushComment, pSelf, _1, _2 )]; comment = lexeme_d[ (ch_p('%') >> *(~ch_p('\r') & ~ch_p('\n')) >> eol_p)[boost::bind(&PDFGrammar::pushComment, pSelf, _1, _2 )] ]; - + boolean = (str_p("true") | str_p("false"))[boost::bind(&PDFGrammar::pushBool, pSelf, _1, _2)]; // workaround workshop compiler: confix_p doesn't work @@ -170,13 +170,13 @@ public: //stringtype = ( confix_p("(",*anychar_p, ")") | // confix_p("<",*xdigit_p, ">") ) // [boost::bind(&PDFGrammar::pushString,pSelf, _1, _2)]; - + stringtype = ( ( ch_p('(') >> functor_parser<pdf_string_parser>() >> ch_p(')') ) | ( ch_p('<') >> *xdigit_p >> ch_p('>') ) ) [boost::bind(&PDFGrammar::pushString,pSelf, _1, _2)]; null_object = str_p( "null" )[boost::bind(&PDFGrammar::pushNull, pSelf, _1, _2)]; - + #ifdef USE_ASSIGN_ACTOR objectref = ( uint_p[push_back_a(pSelf->m_aUIntStack)] >> uint_p[push_back_a(pSelf->m_aUIntStack)] @@ -202,10 +202,10 @@ public: [boost::bind(&PDFGrammar::pushDouble, pSelf, _1, _2)] | stringtype | boolean | null_object; #endif - + dict_begin = str_p( "<<" )[boost::bind(&PDFGrammar::beginDict, pSelf, _1, _2)]; dict_end = str_p( ">>" )[boost::bind(&PDFGrammar::endDict, pSelf, _1, _2)]; - + array_begin = str_p("[")[boost::bind(&PDFGrammar::beginArray,pSelf, _1, _2)]; array_end = str_p("]")[boost::bind(&PDFGrammar::endArray,pSelf, _1, _2)]; @@ -219,7 +219,7 @@ public: >> str_p("obj" )[boost::bind(&PDFGrammar::beginObject, pSelf, _1, _2)]; #endif object_end = str_p( "endobj" )[boost::bind(&PDFGrammar::endObject, pSelf, _1, _2)]; - + xref = str_p( "xref" ) >> uint_p >> uint_p >> lexeme_d[ +( repeat_p(10)[digit_p] @@ -229,21 +229,21 @@ public: >> ( ch_p('n') | ch_p('f') ) >> repeat_p(2)[space_p] ) ]; - + dict_element= dict_begin | comment | simple_type | array_begin | array_end | dict_end; - + object = object_begin >> *dict_element >> !stream >> object_end; - + trailer = str_p( "trailer" )[boost::bind(&PDFGrammar::beginTrailer,pSelf,_1,_2)] >> *dict_element >> str_p("startxref") >> uint_p >> str_p("%%EOF")[boost::bind(&PDFGrammar::endTrailer,pSelf,_1,_2)]; - + #ifdef USE_ASSIGN_ACTOR pdfrule = ! (lexeme_d[ str_p( "%PDF-" ) @@ -270,10 +270,10 @@ public: objectref, array, value, dict_element, dict_begin, dict_end, array_begin, array_end, object, object_begin, object_end, xref, trailer, pdfrule; - + const rule< ScannerT >& start() const { return pdfrule; } }; - + #ifndef USE_ASSIGN_ACTOR void push_back_action_uint( unsigned int i ) { @@ -284,12 +284,12 @@ public: m_fDouble = d; } #endif - + void parseError( const char* pMessage, iteratorT pLocation ) { throw_( pLocation, pMessage ); } - + rtl::OString iteratorToString( iteratorT first, iteratorT last ) const { rtl::OStringBuffer aStr( 32 ); @@ -300,7 +300,7 @@ public: } return aStr.makeStringAndClear(); } - + void haveFile( iteratorT pBegin, iteratorT /*pEnd*/ ) { if( m_aObjectStack.empty() ) @@ -308,14 +308,14 @@ public: PDFFile* pFile = new PDFFile(); pFile->m_nMinor = m_aUIntStack.back(); m_aUIntStack.pop_back(); - pFile->m_nMajor = m_aUIntStack.back(); + pFile->m_nMajor = m_aUIntStack.back(); m_aUIntStack.pop_back(); m_aObjectStack.push_back( pFile ); } else parseError( "found file header in unusual place", pBegin ); } - + void pushComment( iteratorT first, iteratorT last ) { // add a comment to the current stack element @@ -328,7 +328,7 @@ public: parseError( "comment without container", first ); pContainer->m_aSubElements.push_back( pComment ); } - + void insertNewValue( PDFEntry* pNewValue, iteratorT pPos ) { PDFContainer* pContainer = NULL; @@ -382,7 +382,7 @@ public: parseError( pMsg, pPos ); } } - + void pushName( iteratorT first, iteratorT last ) { insertNewValue( new PDFName(iteratorToString(first,last)), first ); @@ -408,7 +408,7 @@ public: insertNewValue( new PDFNull(), first ); } - + void beginObject( iteratorT first, iteratorT /*last*/ ) { if( m_aObjectStack.empty() ) @@ -418,12 +418,12 @@ public: m_aUIntStack.pop_back(); unsigned int nObject = m_aUIntStack.back(); m_aUIntStack.pop_back(); - + PDFObject* pObj = new PDFObject( nObject, nGeneration ); pObj->m_nOffset = first - m_aGlobalBegin; PDFContainer* pContainer = dynamic_cast<PDFContainer*>(m_aObjectStack.back()); - if( pContainer && + if( pContainer && ( dynamic_cast<PDFFile*>(pContainer) || dynamic_cast<PDFPart*>(pContainer) ) ) { @@ -433,7 +433,7 @@ public: else parseError( "object in wrong place", first ); } - + void endObject( iteratorT first, iteratorT ) { if( m_aObjectStack.empty() ) @@ -443,7 +443,7 @@ public: else m_aObjectStack.pop_back(); } - + void pushObjectRef( iteratorT first, iteratorT ) { unsigned int nGeneration = m_aUIntStack.back(); @@ -452,7 +452,7 @@ public: m_aUIntStack.pop_back(); insertNewValue( new PDFObjectRef(nObject,nGeneration), first ); } - + void beginDict( iteratorT first, iteratorT ) { PDFDict* pDict = new PDFDict(); @@ -471,7 +471,7 @@ public: parseError( "spurious dictionary end", first ); else m_aObjectStack.pop_back(); - + PDFEntry* pOffender = pDict->buildMap(); if( pOffender ) { @@ -487,7 +487,7 @@ public: { PDFArray* pArray = new PDFArray(); pArray->m_nOffset = first - m_aGlobalBegin; - + insertNewValue( pArray, first ); // will not come here if insertion fails (exception) m_aObjectStack.push_back( pArray ); @@ -502,7 +502,7 @@ public: else m_aObjectStack.pop_back(); } - + void emitStream( iteratorT first, iteratorT last ) { if( m_aObjectStack.empty() ) @@ -512,7 +512,7 @@ public: { if( pObj->m_pStream ) parseError( "multiple streams in object", first ); - + PDFDict* pDict = dynamic_cast<PDFDict*>(pObj->m_pObject); if( pDict ) { @@ -535,7 +535,7 @@ public: pTrailer->m_nOffset = first - m_aGlobalBegin; PDFContainer* pContainer = dynamic_cast<PDFContainer*>(m_aObjectStack.back()); - if( pContainer && + if( pContainer && ( dynamic_cast<PDFFile*>(pContainer) || dynamic_cast<PDFPart*>(pContainer) ) ) { @@ -560,7 +560,7 @@ public: PDFEntry* PDFReader::read( const char* pBuffer, unsigned int nLen ) { PDFGrammar<const char*> aGrammar( pBuffer ); - + try { boost::spirit::parse_info<const char*> aInfo = @@ -588,7 +588,7 @@ PDFEntry* PDFReader::read( const char* pBuffer, unsigned int nLen ) } #endif } - + PDFEntry* pRet = NULL; unsigned int nEntries = aGrammar.m_aObjectStack.size(); if( nEntries == 1 ) @@ -600,7 +600,7 @@ PDFEntry* PDFReader::read( const char* pBuffer, unsigned int nLen ) else if( nEntries > 1 ) fprintf( stderr, "error got %u stack objects in parse\n", nEntries ); #endif - + return pRet; } @@ -611,7 +611,7 @@ PDFEntry* PDFReader::read( const char* pFileName ) since converting to boost 1.39 file_iterator does not work anymore on all Windows systems C++ stdlib istream_iterator does not allow "-" apparently using spirit 2.0 doesn't work in our environment with the MSC - + So for the time being bite the bullet and read the whole file. FIXME: give Spirit 2.x another try when we upgrade boost again. */ @@ -638,7 +638,7 @@ PDFEntry* PDFReader::read( const char* pFileName ) return NULL; file_iterator<> file_end = file_start.make_end(); PDFGrammar< file_iterator<> > aGrammar( file_start ); - + try { boost::spirit::parse_info< file_iterator<> > aInfo = @@ -666,7 +666,7 @@ PDFEntry* PDFReader::read( const char* pFileName ) } #endif } - + PDFEntry* pRet = NULL; unsigned int nEntries = aGrammar.m_aObjectStack.size(); if( nEntries == 1 ) @@ -697,7 +697,7 @@ PDFEntry* PDFReader::read( const char* pFileName ) #pragma enable_warn #elif defined _MSC_VER #pragma warning(pop) -#endif +#endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |