diff options
author | Lei Zhang <thestig@chromium.org> | 2018-07-25 17:35:18 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-07-25 17:35:18 +0000 |
commit | 5b322338073162afab98bb28c920692c73b995ed (patch) | |
tree | 87a3bcc964b484e4e6c8956d4d7aab465d9914f9 /core/fpdfapi/parser/cpdf_syntax_parser.h | |
parent | 1b54bc1474af7923f6b82496924978cb87844ff0 (diff) | |
download | pdfium-5b322338073162afab98bb28c920692c73b995ed.tar.xz |
Move CPDF_SyntaxParser init methods into ctor.
- CPDF_SyntaxParser can no longer be initialized multiple times.
- Make the file length and header offset const.
- Make the header offset type FX_FILESIZE consistently.
- Simplify for the common case where the header offset is 0.
Change-Id: I7138db1fbcec3b7578b0239b92fc1154fa4dc4ce
Reviewed-on: https://pdfium-review.googlesource.com/38850
Reviewed-by: Art Snake <art-snake@yandex-team.ru>
Commit-Queue: Lei Zhang <thestig@chromium.org>
Diffstat (limited to 'core/fpdfapi/parser/cpdf_syntax_parser.h')
-rw-r--r-- | core/fpdfapi/parser/cpdf_syntax_parser.h | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/core/fpdfapi/parser/cpdf_syntax_parser.h b/core/fpdfapi/parser/cpdf_syntax_parser.h index ebd844c3e0..92f28d9874 100644 --- a/core/fpdfapi/parser/cpdf_syntax_parser.h +++ b/core/fpdfapi/parser/cpdf_syntax_parser.h @@ -27,15 +27,16 @@ class CPDF_SyntaxParser { public: enum class ParseType { kStrict, kLoose }; - CPDF_SyntaxParser(); + static std::unique_ptr<CPDF_SyntaxParser> CreateForTesting( + const RetainPtr<IFX_SeekableReadStream>& pFileAccess, + FX_FILESIZE HeaderOffset); + + explicit CPDF_SyntaxParser( + const RetainPtr<IFX_SeekableReadStream>& pFileAccess); + CPDF_SyntaxParser(const RetainPtr<CPDF_ReadValidator>& pValidator, + FX_FILESIZE HeaderOffset); ~CPDF_SyntaxParser(); - void InitParser(const RetainPtr<IFX_SeekableReadStream>& pFileAccess, - uint32_t HeaderOffset); - - void InitParserWithValidator(const RetainPtr<CPDF_ReadValidator>& pValidator, - uint32_t HeaderOffset); - void SetReadBufferSize(uint32_t read_buffer_size) { m_ReadBufferSize = read_buffer_size; } @@ -104,17 +105,17 @@ class CPDF_SyntaxParser { CPDF_IndirectObjectHolder* pObjList, ParseType parse_type); - FX_FILESIZE m_Pos; + RetainPtr<CPDF_ReadValidator> m_pFileAccess; // The syntax parser use position relative to header offset. // The header contains at file start, and can follow after some stuff. We // ignore this stuff. - FX_FILESIZE m_HeaderOffset; - FX_FILESIZE m_FileLen; + const FX_FILESIZE m_HeaderOffset; + const FX_FILESIZE m_FileLen; + FX_FILESIZE m_Pos = 0; WeakPtr<ByteStringPool> m_pPool; std::vector<uint8_t> m_pFileBuf; - RetainPtr<CPDF_ReadValidator> m_pFileAccess; - FX_FILESIZE m_BufOffset; - uint32_t m_WordSize; + FX_FILESIZE m_BufOffset = 0; + uint32_t m_WordSize = 0; uint8_t m_WordBuffer[257]; uint32_t m_ReadBufferSize = CPDF_ModuleMgr::kFileBufSize; }; |