| Index: core/fxcrt/fx_xml_parser.cpp
|
| diff --git a/core/fxcrt/fx_xml_parser.cpp b/core/fxcrt/fx_xml_parser.cpp
|
| index 803ba597e528127aa1627b8d161c99f7e83749cf..ab309263878fadf7df61d0ffa5f9c1fb5518c6e9 100644
|
| --- a/core/fxcrt/fx_xml_parser.cpp
|
| +++ b/core/fxcrt/fx_xml_parser.cpp
|
| @@ -74,7 +74,6 @@ class CXML_DataBufAcc : public IFX_BufferedReadStream {
|
| ~CXML_DataBufAcc() override;
|
|
|
| // IFX_BufferedReadStream
|
| - void Release() override;
|
| bool IsEOF() override;
|
| FX_FILESIZE GetPosition() override;
|
| size_t ReadBlock(void* buffer, size_t size) override;
|
| @@ -94,10 +93,6 @@ CXML_DataBufAcc::CXML_DataBufAcc(const uint8_t* pBuffer, size_t size)
|
|
|
| CXML_DataBufAcc::~CXML_DataBufAcc() {}
|
|
|
| -void CXML_DataBufAcc::Release() {
|
| - delete this;
|
| -}
|
| -
|
| bool CXML_DataBufAcc::IsEOF() {
|
| return m_dwCurPos >= m_dwSize;
|
| }
|
| @@ -135,11 +130,11 @@ FX_FILESIZE CXML_DataBufAcc::GetBlockOffset() {
|
|
|
| class CXML_DataStmAcc : public IFX_BufferedReadStream {
|
| public:
|
| - explicit CXML_DataStmAcc(IFX_SeekableReadStream* pFileRead);
|
| + explicit CXML_DataStmAcc(
|
| + const CFX_RetainPtr<IFX_SeekableReadStream>& pFileRead);
|
| ~CXML_DataStmAcc() override;
|
|
|
| // IFX_BufferedReadStream
|
| - void Release() override;
|
| bool IsEOF() override;
|
| FX_FILESIZE GetPosition() override;
|
| size_t ReadBlock(void* buffer, size_t size) override;
|
| @@ -149,13 +144,14 @@ class CXML_DataStmAcc : public IFX_BufferedReadStream {
|
| FX_FILESIZE GetBlockOffset() override;
|
|
|
| private:
|
| - IFX_SeekableReadStream* m_pFileRead;
|
| + CFX_RetainPtr<IFX_SeekableReadStream> m_pFileRead;
|
| uint8_t* m_pBuffer;
|
| FX_FILESIZE m_nStart;
|
| size_t m_dwSize;
|
| };
|
|
|
| -CXML_DataStmAcc::CXML_DataStmAcc(IFX_SeekableReadStream* pFileRead)
|
| +CXML_DataStmAcc::CXML_DataStmAcc(
|
| + const CFX_RetainPtr<IFX_SeekableReadStream>& pFileRead)
|
| : m_pFileRead(pFileRead), m_pBuffer(nullptr), m_nStart(0), m_dwSize(0) {
|
| ASSERT(m_pFileRead);
|
| }
|
| @@ -164,10 +160,6 @@ CXML_DataStmAcc::~CXML_DataStmAcc() {
|
| FX_Free(m_pBuffer);
|
| }
|
|
|
| -void CXML_DataStmAcc::Release() {
|
| - delete this;
|
| -}
|
| -
|
| bool CXML_DataStmAcc::IsEOF() {
|
| return m_nStart + (FX_FILESIZE)m_dwSize >= m_pFileRead->GetSize();
|
| }
|
| @@ -213,41 +205,34 @@ FX_FILESIZE CXML_DataStmAcc::GetBlockOffset() {
|
| } // namespace
|
|
|
| CXML_Parser::CXML_Parser()
|
| - : m_pDataAcc(nullptr),
|
| - m_bOwnedStream(false),
|
| - m_nOffset(0),
|
| + : 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();
|
| - }
|
| -}
|
| +CXML_Parser::~CXML_Parser() {}
|
|
|
| bool CXML_Parser::Init(uint8_t* pBuffer, size_t size) {
|
| - m_pDataAcc = new CXML_DataBufAcc(pBuffer, size);
|
| - return Init(true);
|
| + m_pDataAcc.Reset(new CXML_DataBufAcc(pBuffer, size));
|
| + return Init();
|
| }
|
|
|
| -bool CXML_Parser::Init(IFX_SeekableReadStream* pFileRead) {
|
| - m_pDataAcc = new CXML_DataStmAcc(pFileRead);
|
| - return Init(true);
|
| +bool CXML_Parser::Init(const CFX_RetainPtr<IFX_SeekableReadStream>& pFileRead) {
|
| + m_pDataAcc.Reset(new CXML_DataStmAcc(pFileRead));
|
| + return Init();
|
| }
|
|
|
| -bool CXML_Parser::Init(IFX_BufferedReadStream* pBuffer) {
|
| +bool CXML_Parser::Init(const CFX_RetainPtr<IFX_BufferedReadStream>& pBuffer) {
|
| if (!pBuffer)
|
| return false;
|
|
|
| m_pDataAcc = pBuffer;
|
| - return Init(false);
|
| + return Init();
|
| }
|
|
|
| -bool CXML_Parser::Init(bool bOwndedStream) {
|
| - m_bOwnedStream = bOwndedStream;
|
| +bool CXML_Parser::Init() {
|
| m_nOffset = 0;
|
| return ReadNextBlock();
|
| }
|
| @@ -701,24 +686,29 @@ CXML_Element* CXML_Element::Parse(const void* pBuffer,
|
| }
|
| return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize);
|
| }
|
| -CXML_Element* CXML_Element::Parse(IFX_SeekableReadStream* pFile,
|
| - bool bSaveSpaceChars,
|
| - FX_FILESIZE* pParsedSize) {
|
| +
|
| +CXML_Element* CXML_Element::Parse(
|
| + const CFX_RetainPtr<IFX_SeekableReadStream>& pFile,
|
| + bool bSaveSpaceChars,
|
| + FX_FILESIZE* pParsedSize) {
|
| CXML_Parser parser;
|
| - if (!parser.Init(pFile)) {
|
| + if (!parser.Init(pFile))
|
| return nullptr;
|
| - }
|
| +
|
| return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize);
|
| }
|
| -CXML_Element* CXML_Element::Parse(IFX_BufferedReadStream* pBuffer,
|
| - bool bSaveSpaceChars,
|
| - FX_FILESIZE* pParsedSize) {
|
| +
|
| +CXML_Element* CXML_Element::Parse(
|
| + const CFX_RetainPtr<IFX_BufferedReadStream>& pBuffer,
|
| + bool bSaveSpaceChars,
|
| + FX_FILESIZE* pParsedSize) {
|
| CXML_Parser parser;
|
| - if (!parser.Init(pBuffer)) {
|
| + if (!parser.Init(pBuffer))
|
| return nullptr;
|
| - }
|
| +
|
| return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize);
|
| }
|
| +
|
| CXML_Element::CXML_Element() : m_QSpaceName(), m_TagName(), m_AttrMap() {}
|
| CXML_Element::CXML_Element(const CFX_ByteStringC& qSpace,
|
| const CFX_ByteStringC& tagName)
|
|
|