| Index: core/include/fpdfapi/fpdf_parser.h
|
| diff --git a/core/include/fpdfapi/fpdf_parser.h b/core/include/fpdfapi/fpdf_parser.h
|
| index b554673d80c029f7bba02e16d0d6b3fc8230b3fa..ff0c6be5512ea92cb1c4e7194ea76505c99b61a2 100644
|
| --- a/core/include/fpdfapi/fpdf_parser.h
|
| +++ b/core/include/fpdfapi/fpdf_parser.h
|
| @@ -28,6 +28,7 @@ class CPDF_Object;
|
| class CPDF_Parser;
|
| class CPDF_Pattern;
|
| class CPDF_StandardSecurityHandler;
|
| +class CPDF_SyntaxParser;
|
| class IPDF_SecurityHandler;
|
|
|
| #define FPDFPERM_PRINT 0x0004
|
| @@ -231,81 +232,6 @@ class CPDF_SimpleParser {
|
| FX_DWORD m_dwCurPos;
|
| };
|
|
|
| -class CPDF_SyntaxParser {
|
| - public:
|
| - CPDF_SyntaxParser();
|
| - ~CPDF_SyntaxParser();
|
| -
|
| - void InitParser(IFX_FileRead* pFileAccess, FX_DWORD HeaderOffset);
|
| -
|
| - FX_FILESIZE SavePos() const { return m_Pos; }
|
| - void RestorePos(FX_FILESIZE pos) { m_Pos = pos; }
|
| -
|
| - CPDF_Object* GetObject(CPDF_IndirectObjectHolder* pObjList,
|
| - FX_DWORD objnum,
|
| - FX_DWORD gennum,
|
| - FX_BOOL bDecrypt);
|
| - CPDF_Object* GetObjectByStrict(CPDF_IndirectObjectHolder* pObjList,
|
| - FX_DWORD objnum,
|
| - FX_DWORD gennum);
|
| - CFX_ByteString GetKeyword();
|
| -
|
| - void ToNextLine();
|
| - void ToNextWord();
|
| -
|
| - FX_BOOL SearchWord(const CFX_ByteStringC& word,
|
| - FX_BOOL bWholeWord,
|
| - FX_BOOL bForward,
|
| - FX_FILESIZE limit);
|
| - int SearchMultiWord(const CFX_ByteStringC& words,
|
| - FX_BOOL bWholeWord,
|
| - FX_FILESIZE limit);
|
| - FX_FILESIZE FindTag(const CFX_ByteStringC& tag, FX_FILESIZE limit);
|
| -
|
| - void SetEncrypt(std::unique_ptr<CPDF_CryptoHandler> pCryptoHandler);
|
| -
|
| - FX_BOOL ReadBlock(uint8_t* pBuf, FX_DWORD size);
|
| - FX_BOOL GetCharAt(FX_FILESIZE pos, uint8_t& ch);
|
| - CFX_ByteString GetNextWord(bool* bIsNumber);
|
| -
|
| - private:
|
| - friend class CPDF_Parser;
|
| - friend class CPDF_DataAvail;
|
| - friend class fpdf_parser_parser_ReadHexString_Test;
|
| -
|
| - static const int kParserMaxRecursionDepth = 64;
|
| - static int s_CurrentRecursionDepth;
|
| -
|
| - uint32_t GetDirectNum();
|
| -
|
| - FX_BOOL GetNextChar(uint8_t& ch);
|
| - FX_BOOL GetCharAtBackward(FX_FILESIZE pos, uint8_t& ch);
|
| - void GetNextWordInternal(bool* bIsNumber);
|
| - bool IsWholeWord(FX_FILESIZE startpos,
|
| - FX_FILESIZE limit,
|
| - const CFX_ByteStringC& tag,
|
| - FX_BOOL checkKeyword);
|
| -
|
| - CFX_ByteString ReadString();
|
| - CFX_ByteString ReadHexString();
|
| - unsigned int ReadEOLMarkers(FX_FILESIZE pos);
|
| - CPDF_Stream* ReadStream(CPDF_Dictionary* pDict,
|
| - FX_DWORD objnum,
|
| - FX_DWORD gennum);
|
| -
|
| - FX_FILESIZE m_Pos;
|
| - int m_MetadataObjnum;
|
| - IFX_FileRead* m_pFileAccess;
|
| - FX_DWORD m_HeaderOffset;
|
| - FX_FILESIZE m_FileLen;
|
| - uint8_t* m_pFileBuf;
|
| - FX_DWORD m_BufSize;
|
| - FX_FILESIZE m_BufOffset;
|
| - std::unique_ptr<CPDF_CryptoHandler> m_pCryptoHandler;
|
| - uint8_t m_WordBuffer[257];
|
| - FX_DWORD m_WordSize;
|
| -};
|
| -
|
| class CPDF_Parser {
|
| public:
|
| enum Error {
|
| @@ -324,11 +250,6 @@ class CPDF_Parser {
|
|
|
| void SetPassword(const FX_CHAR* password) { m_Password = password; }
|
| CFX_ByteString GetPassword() { return m_Password; }
|
| -
|
| - CPDF_CryptoHandler* GetCryptoHandler() {
|
| - return m_Syntax.m_pCryptoHandler.get();
|
| - }
|
| -
|
| CPDF_Dictionary* GetTrailer() const { return m_pTrailer; }
|
| FX_FILESIZE GetLastXRefOffset() const { return m_LastXRefOffset; }
|
| CPDF_Document* GetDocument() const { return m_pDocument; }
|
| @@ -350,12 +271,13 @@ class CPDF_Parser {
|
| bool IsVersionUpdated() const { return m_bVersionUpdated; }
|
| bool IsObjectFreeOrNull(FX_DWORD objnum) const;
|
| FX_BOOL IsFormStream(FX_DWORD objnum, FX_BOOL& bForm);
|
| + CPDF_CryptoHandler* GetCryptoHandler();
|
| + IFX_FileRead* GetFileAccess() const;
|
|
|
| FX_FILESIZE GetObjectOffset(FX_DWORD objnum) const;
|
| FX_FILESIZE GetObjectSize(FX_DWORD objnum) const;
|
|
|
| void GetIndirectBinary(FX_DWORD objnum, uint8_t*& pBuffer, FX_DWORD& size);
|
| - IFX_FileRead* GetFileAccess() const { return m_Syntax.m_pFileAccess; }
|
| int GetFileVersion() const { return m_FileVersion; }
|
| FX_BOOL IsXRefStream() const { return m_bXRefStream; }
|
|
|
| @@ -402,7 +324,7 @@ class CPDF_Parser {
|
| void ShrinkObjectMap(FX_DWORD size);
|
|
|
| CPDF_Document* m_pDocument;
|
| - CPDF_SyntaxParser m_Syntax;
|
| + std::unique_ptr<CPDF_SyntaxParser> m_pSyntax;
|
| bool m_bOwnFileRead;
|
| int m_FileVersion;
|
| CPDF_Dictionary* m_pTrailer;
|
|
|