| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "core/fxcrt/xml_int.h" | 7 #include "core/fxcrt/xml_int.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 bool g_FXCRT_XML_IsNameIntro(uint8_t ch) { | 63 bool g_FXCRT_XML_IsNameIntro(uint8_t ch) { |
| 64 return !!(g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_NameIntro); | 64 return !!(g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_NameIntro); |
| 65 } | 65 } |
| 66 | 66 |
| 67 bool g_FXCRT_XML_IsNameChar(uint8_t ch) { | 67 bool g_FXCRT_XML_IsNameChar(uint8_t ch) { |
| 68 return !!(g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_NameChar); | 68 return !!(g_FXCRT_XML_ByteTypes[ch] & FXCRTM_XML_CHARTYPE_NameChar); |
| 69 } | 69 } |
| 70 | 70 |
| 71 class CXML_DataBufAcc : public IFX_BufferedReadStream { | 71 class CXML_DataBufAcc : public IFX_BufferedReadStream { |
| 72 public: | 72 public: |
| 73 CXML_DataBufAcc(const uint8_t* pBuffer, size_t size); | 73 template <typename T, typename... Args> |
| 74 ~CXML_DataBufAcc() override; | 74 friend CFX_RetainPtr<T> pdfium::MakeRetain(Args&&... args); |
| 75 | 75 |
| 76 // IFX_BufferedReadStream | 76 // IFX_BufferedReadStream |
| 77 bool IsEOF() override; | 77 bool IsEOF() override; |
| 78 FX_FILESIZE GetPosition() override; | 78 FX_FILESIZE GetPosition() override; |
| 79 size_t ReadBlock(void* buffer, size_t size) override; | 79 size_t ReadBlock(void* buffer, size_t size) override; |
| 80 bool ReadNextBlock(bool bRestart) override; | 80 bool ReadNextBlock(bool bRestart) override; |
| 81 const uint8_t* GetBlockBuffer() override; | 81 const uint8_t* GetBlockBuffer() override; |
| 82 size_t GetBlockSize() override; | 82 size_t GetBlockSize() override; |
| 83 FX_FILESIZE GetBlockOffset() override; | 83 FX_FILESIZE GetBlockOffset() override; |
| 84 | 84 |
| 85 private: | 85 private: |
| 86 CXML_DataBufAcc(const uint8_t* pBuffer, size_t size); |
| 87 ~CXML_DataBufAcc() override; |
| 88 |
| 86 const uint8_t* m_pBuffer; | 89 const uint8_t* m_pBuffer; |
| 87 size_t m_dwSize; | 90 size_t m_dwSize; |
| 88 size_t m_dwCurPos; | 91 size_t m_dwCurPos; |
| 89 }; | 92 }; |
| 90 | 93 |
| 91 CXML_DataBufAcc::CXML_DataBufAcc(const uint8_t* pBuffer, size_t size) | 94 CXML_DataBufAcc::CXML_DataBufAcc(const uint8_t* pBuffer, size_t size) |
| 92 : m_pBuffer(pBuffer), m_dwSize(size), m_dwCurPos(0) {} | 95 : m_pBuffer(pBuffer), m_dwSize(size), m_dwCurPos(0) {} |
| 93 | 96 |
| 94 CXML_DataBufAcc::~CXML_DataBufAcc() {} | 97 CXML_DataBufAcc::~CXML_DataBufAcc() {} |
| 95 | 98 |
| (...skipping 27 matching lines...) Expand all Loading... |
| 123 size_t CXML_DataBufAcc::GetBlockSize() { | 126 size_t CXML_DataBufAcc::GetBlockSize() { |
| 124 return m_dwSize; | 127 return m_dwSize; |
| 125 } | 128 } |
| 126 | 129 |
| 127 FX_FILESIZE CXML_DataBufAcc::GetBlockOffset() { | 130 FX_FILESIZE CXML_DataBufAcc::GetBlockOffset() { |
| 128 return 0; | 131 return 0; |
| 129 } | 132 } |
| 130 | 133 |
| 131 class CXML_DataStmAcc : public IFX_BufferedReadStream { | 134 class CXML_DataStmAcc : public IFX_BufferedReadStream { |
| 132 public: | 135 public: |
| 133 explicit CXML_DataStmAcc( | 136 template <typename T, typename... Args> |
| 134 const CFX_RetainPtr<IFX_SeekableReadStream>& pFileRead); | 137 friend CFX_RetainPtr<T> pdfium::MakeRetain(Args&&... args); |
| 135 ~CXML_DataStmAcc() override; | |
| 136 | 138 |
| 137 // IFX_BufferedReadStream | 139 // IFX_BufferedReadStream |
| 138 bool IsEOF() override; | 140 bool IsEOF() override; |
| 139 FX_FILESIZE GetPosition() override; | 141 FX_FILESIZE GetPosition() override; |
| 140 size_t ReadBlock(void* buffer, size_t size) override; | 142 size_t ReadBlock(void* buffer, size_t size) override; |
| 141 bool ReadNextBlock(bool bRestart) override; | 143 bool ReadNextBlock(bool bRestart) override; |
| 142 const uint8_t* GetBlockBuffer() override; | 144 const uint8_t* GetBlockBuffer() override; |
| 143 size_t GetBlockSize() override; | 145 size_t GetBlockSize() override; |
| 144 FX_FILESIZE GetBlockOffset() override; | 146 FX_FILESIZE GetBlockOffset() override; |
| 145 | 147 |
| 146 private: | 148 private: |
| 149 explicit CXML_DataStmAcc( |
| 150 const CFX_RetainPtr<IFX_SeekableReadStream>& pFileRead); |
| 151 ~CXML_DataStmAcc() override; |
| 152 |
| 147 CFX_RetainPtr<IFX_SeekableReadStream> m_pFileRead; | 153 CFX_RetainPtr<IFX_SeekableReadStream> m_pFileRead; |
| 148 uint8_t* m_pBuffer; | 154 uint8_t* m_pBuffer; |
| 149 FX_FILESIZE m_nStart; | 155 FX_FILESIZE m_nStart; |
| 150 size_t m_dwSize; | 156 size_t m_dwSize; |
| 151 }; | 157 }; |
| 152 | 158 |
| 153 CXML_DataStmAcc::CXML_DataStmAcc( | 159 CXML_DataStmAcc::CXML_DataStmAcc( |
| 154 const CFX_RetainPtr<IFX_SeekableReadStream>& pFileRead) | 160 const CFX_RetainPtr<IFX_SeekableReadStream>& pFileRead) |
| 155 : m_pFileRead(pFileRead), m_pBuffer(nullptr), m_nStart(0), m_dwSize(0) { | 161 : m_pFileRead(pFileRead), m_pBuffer(nullptr), m_nStart(0), m_dwSize(0) { |
| 156 ASSERT(m_pFileRead); | 162 ASSERT(m_pFileRead); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 208 : m_nOffset(0), | 214 : m_nOffset(0), |
| 209 m_bSaveSpaceChars(false), | 215 m_bSaveSpaceChars(false), |
| 210 m_pBuffer(nullptr), | 216 m_pBuffer(nullptr), |
| 211 m_dwBufferSize(0), | 217 m_dwBufferSize(0), |
| 212 m_nBufferOffset(0), | 218 m_nBufferOffset(0), |
| 213 m_dwIndex(0) {} | 219 m_dwIndex(0) {} |
| 214 | 220 |
| 215 CXML_Parser::~CXML_Parser() {} | 221 CXML_Parser::~CXML_Parser() {} |
| 216 | 222 |
| 217 bool CXML_Parser::Init(uint8_t* pBuffer, size_t size) { | 223 bool CXML_Parser::Init(uint8_t* pBuffer, size_t size) { |
| 218 m_pDataAcc.Reset(new CXML_DataBufAcc(pBuffer, size)); | 224 m_pDataAcc = pdfium::MakeRetain<CXML_DataBufAcc>(pBuffer, size); |
| 219 return Init(); | 225 return Init(); |
| 220 } | 226 } |
| 221 | 227 |
| 222 bool CXML_Parser::Init(const CFX_RetainPtr<IFX_SeekableReadStream>& pFileRead) { | 228 bool CXML_Parser::Init(const CFX_RetainPtr<IFX_SeekableReadStream>& pFileRead) { |
| 223 m_pDataAcc.Reset(new CXML_DataStmAcc(pFileRead)); | 229 m_pDataAcc = pdfium::MakeRetain<CXML_DataStmAcc>(pFileRead); |
| 224 return Init(); | 230 return Init(); |
| 225 } | 231 } |
| 226 | 232 |
| 227 bool CXML_Parser::Init(const CFX_RetainPtr<IFX_BufferedReadStream>& pBuffer) { | 233 bool CXML_Parser::Init(const CFX_RetainPtr<IFX_BufferedReadStream>& pBuffer) { |
| 228 if (!pBuffer) | 234 if (!pBuffer) |
| 229 return false; | 235 return false; |
| 230 | 236 |
| 231 m_pDataAcc = pBuffer; | 237 m_pDataAcc = pBuffer; |
| 232 return Init(); | 238 return Init(); |
| 233 } | 239 } |
| (...skipping 713 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 947 m_pMap->push_back({space, name, CFX_WideString(value)}); | 953 m_pMap->push_back({space, name, CFX_WideString(value)}); |
| 948 } | 954 } |
| 949 | 955 |
| 950 int CXML_AttrMap::GetSize() const { | 956 int CXML_AttrMap::GetSize() const { |
| 951 return m_pMap ? pdfium::CollectionSize<int>(*m_pMap) : 0; | 957 return m_pMap ? pdfium::CollectionSize<int>(*m_pMap) : 0; |
| 952 } | 958 } |
| 953 | 959 |
| 954 CXML_AttrItem& CXML_AttrMap::GetAt(int index) const { | 960 CXML_AttrItem& CXML_AttrMap::GetAt(int index) const { |
| 955 return (*m_pMap)[index]; | 961 return (*m_pMap)[index]; |
| 956 } | 962 } |
| OLD | NEW |