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.cpp | |
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.cpp')
-rw-r--r-- | core/fpdfapi/parser/cpdf_syntax_parser.cpp | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/core/fpdfapi/parser/cpdf_syntax_parser.cpp b/core/fpdfapi/parser/cpdf_syntax_parser.cpp index af5ff488db..3acad525f7 100644 --- a/core/fpdfapi/parser/cpdf_syntax_parser.cpp +++ b/core/fpdfapi/parser/cpdf_syntax_parser.cpp @@ -70,7 +70,29 @@ class ReadableSubStream : public IFX_SeekableReadStream { // static int CPDF_SyntaxParser::s_CurrentRecursionDepth = 0; -CPDF_SyntaxParser::CPDF_SyntaxParser() = default; +// static +std::unique_ptr<CPDF_SyntaxParser> CPDF_SyntaxParser::CreateForTesting( + const RetainPtr<IFX_SeekableReadStream>& pFileAccess, + FX_FILESIZE HeaderOffset) { + return pdfium::MakeUnique<CPDF_SyntaxParser>( + pdfium::MakeRetain<CPDF_ReadValidator>(pFileAccess, nullptr), + HeaderOffset); +} + +CPDF_SyntaxParser::CPDF_SyntaxParser( + const RetainPtr<IFX_SeekableReadStream>& pFileAccess) + : CPDF_SyntaxParser( + pdfium::MakeRetain<CPDF_ReadValidator>(pFileAccess, nullptr), + 0) {} + +CPDF_SyntaxParser::CPDF_SyntaxParser( + const RetainPtr<CPDF_ReadValidator>& validator, + FX_FILESIZE HeaderOffset) + : m_pFileAccess(validator), + m_HeaderOffset(HeaderOffset), + m_FileLen(m_pFileAccess->GetSize()) { + ASSERT(m_HeaderOffset <= m_FileLen); +} CPDF_SyntaxParser::~CPDF_SyntaxParser() = default; @@ -702,28 +724,6 @@ std::unique_ptr<CPDF_Stream> CPDF_SyntaxParser::ReadStream( return pStream; } -void CPDF_SyntaxParser::InitParser( - const RetainPtr<IFX_SeekableReadStream>& pFileAccess, - uint32_t HeaderOffset) { - ASSERT(pFileAccess); - return InitParserWithValidator( - pdfium::MakeRetain<CPDF_ReadValidator>(pFileAccess, nullptr), - HeaderOffset); -} - -void CPDF_SyntaxParser::InitParserWithValidator( - const RetainPtr<CPDF_ReadValidator>& validator, - uint32_t HeaderOffset) { - ASSERT(validator); - m_pFileBuf.clear(); - m_HeaderOffset = HeaderOffset; - m_FileLen = validator->GetSize(); - ASSERT(m_HeaderOffset <= m_FileLen); - m_Pos = 0; - m_pFileAccess = validator; - m_BufOffset = 0; -} - uint32_t CPDF_SyntaxParser::GetDirectNum() { bool bIsNumber; GetNextWordInternal(&bIsNumber); |