| Index: core/fxcrt/fx_xml_parser.cpp
|
| diff --git a/core/fxcrt/fx_xml_parser.cpp b/core/fxcrt/fx_xml_parser.cpp
|
| index 6017bd8fda4b4e91d55ac980ffc3d91fc112060e..9412cdde04192ee4a3611c1bf4b0aaa8930dd7a8 100644
|
| --- a/core/fxcrt/fx_xml_parser.cpp
|
| +++ b/core/fxcrt/fx_xml_parser.cpp
|
| @@ -12,11 +12,121 @@
|
| #include "core/fxcrt/include/fx_xml.h"
|
| #include "third_party/base/stl_util.h"
|
|
|
| +CXML_DataBufAcc::CXML_DataBufAcc(const uint8_t* pBuffer, size_t size)
|
| + : m_pBuffer(pBuffer), m_dwSize(size), m_dwCurPos(0) {}
|
| +
|
| +CXML_DataBufAcc::~CXML_DataBufAcc() {}
|
| +
|
| +void CXML_DataBufAcc::Release() {
|
| + delete this;
|
| +}
|
| +
|
| +FX_BOOL CXML_DataBufAcc::IsEOF() {
|
| + return m_dwCurPos >= m_dwSize;
|
| +}
|
| +
|
| +FX_FILESIZE CXML_DataBufAcc::GetPosition() {
|
| + return (FX_FILESIZE)m_dwCurPos;
|
| +}
|
| +
|
| +size_t CXML_DataBufAcc::ReadBlock(void* buffer, size_t size) {
|
| + return 0;
|
| +}
|
| +
|
| +FX_BOOL CXML_DataBufAcc::ReadNextBlock(FX_BOOL bRestart) {
|
| + if (bRestart) {
|
| + m_dwCurPos = 0;
|
| + }
|
| + if (m_dwCurPos < m_dwSize) {
|
| + m_dwCurPos = m_dwSize;
|
| + return TRUE;
|
| + }
|
| + return FALSE;
|
| +}
|
| +
|
| +const uint8_t* CXML_DataBufAcc::GetBlockBuffer() {
|
| + return m_pBuffer;
|
| +}
|
| +
|
| +size_t CXML_DataBufAcc::GetBlockSize() {
|
| + return m_dwSize;
|
| +}
|
| +
|
| +FX_FILESIZE CXML_DataBufAcc::GetBlockOffset() {
|
| + return 0;
|
| +}
|
| +
|
| +CXML_DataStmAcc::CXML_DataStmAcc(IFX_FileRead* pFileRead)
|
| + : m_pFileRead(pFileRead), m_pBuffer(nullptr), m_nStart(0), m_dwSize(0) {
|
| + ASSERT(m_pFileRead);
|
| +}
|
| +
|
| +CXML_DataStmAcc::~CXML_DataStmAcc() {
|
| + FX_Free(m_pBuffer);
|
| +}
|
| +
|
| +void CXML_DataStmAcc::Release() {
|
| + delete this;
|
| +}
|
| +
|
| +FX_BOOL CXML_DataStmAcc::IsEOF() {
|
| + return m_nStart + (FX_FILESIZE)m_dwSize >= m_pFileRead->GetSize();
|
| +}
|
| +
|
| +FX_FILESIZE CXML_DataStmAcc::GetPosition() {
|
| + return m_nStart + (FX_FILESIZE)m_dwSize;
|
| +}
|
| +
|
| +size_t CXML_DataStmAcc::ReadBlock(void* buffer, size_t size) {
|
| + return 0;
|
| +}
|
| +
|
| +FX_BOOL CXML_DataStmAcc::ReadNextBlock(FX_BOOL bRestart) {
|
| + if (bRestart) {
|
| + m_nStart = 0;
|
| + }
|
| + FX_FILESIZE nLength = m_pFileRead->GetSize();
|
| + m_nStart += (FX_FILESIZE)m_dwSize;
|
| + if (m_nStart >= nLength) {
|
| + return FALSE;
|
| + }
|
| + static const FX_FILESIZE FX_XMLDATASTREAM_BufferSize = 32 * 1024;
|
| + m_dwSize = static_cast<size_t>(
|
| + std::min(FX_XMLDATASTREAM_BufferSize, nLength - m_nStart));
|
| + if (!m_pBuffer) {
|
| + m_pBuffer = FX_Alloc(uint8_t, m_dwSize);
|
| + }
|
| + return m_pFileRead->ReadBlock(m_pBuffer, m_nStart, m_dwSize);
|
| +}
|
| +
|
| +const uint8_t* CXML_DataStmAcc::GetBlockBuffer() {
|
| + return (const uint8_t*)m_pBuffer;
|
| +}
|
| +
|
| +size_t CXML_DataStmAcc::GetBlockSize() {
|
| + return m_dwSize;
|
| +}
|
| +
|
| +FX_FILESIZE CXML_DataStmAcc::GetBlockOffset() {
|
| + return m_nStart;
|
| +}
|
| +
|
| +CXML_Parser::CXML_Parser()
|
| + : m_pDataAcc(nullptr),
|
| + m_bOwnedStream(FALSE),
|
| + m_nOffset(0),
|
| + m_bSaveSpaceChars(FALSE),
|
| + m_pBuffer(nullptr),
|
| + m_dwBufferSize(0),
|
| + m_nBufferOffset(0),
|
| + m_dwIndex(0) {}
|
| +
|
| CXML_Parser::~CXML_Parser() {
|
| if (m_bOwnedStream) {
|
| m_pDataAcc->Release();
|
| }
|
| }
|
| +
|
| FX_BOOL CXML_Parser::Init(uint8_t* pBuffer, size_t size) {
|
| m_pDataAcc = new CXML_DataBufAcc(pBuffer, size);
|
| return Init(TRUE);
|
| @@ -764,6 +874,10 @@ bool CXML_AttrItem::Matches(const CFX_ByteString& space,
|
| return (space.IsEmpty() || m_QSpaceName == space) && m_AttrName == name;
|
| }
|
|
|
| +CXML_AttrMap::CXML_AttrMap() {}
|
| +
|
| +CXML_AttrMap::~CXML_AttrMap() {}
|
| +
|
| const CFX_WideString* CXML_AttrMap::Lookup(const CFX_ByteString& space,
|
| const CFX_ByteString& name) const {
|
| if (!m_pMap)
|
|
|