Index: core/src/fxcrt/fx_xml_parser.cpp |
diff --git a/core/src/fxcrt/fx_xml_parser.cpp b/core/src/fxcrt/fx_xml_parser.cpp |
index b7e58a04e1b21e06c53c862a9651a9a51803a6c4..d41880a6c45180f73982a3fe6f8a5ed8f46c4cc8 100644 |
--- a/core/src/fxcrt/fx_xml_parser.cpp |
+++ b/core/src/fxcrt/fx_xml_parser.cpp |
@@ -1,24 +1,20 @@ |
// Copyright 2014 PDFium Authors. All rights reserved. |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
- |
+ |
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
#include "../../include/fxcrt/fx_xml.h" |
#include "xml_int.h" |
CXML_Parser::~CXML_Parser() |
{ |
- if (m_bOwnedStream && m_pDataAcc) { |
+ if (m_bOwnedStream) { |
m_pDataAcc->Release(); |
} |
} |
FX_BOOL CXML_Parser::Init(FX_LPBYTE pBuffer, size_t size) |
{ |
- if (m_pAllocator) { |
- m_pDataAcc = FX_NewAtAllocator(m_pAllocator)CXML_DataBufAcc(pBuffer, size, m_pAllocator); |
- } else { |
- m_pDataAcc = FX_NEW CXML_DataBufAcc(pBuffer, size, NULL); |
- } |
+ m_pDataAcc = FX_NEW CXML_DataBufAcc(pBuffer, size); |
if (!m_pDataAcc) { |
return FALSE; |
} |
@@ -26,11 +22,7 @@ FX_BOOL CXML_Parser::Init(FX_LPBYTE pBuffer, size_t size) |
} |
FX_BOOL CXML_Parser::Init(IFX_FileRead *pFileRead) |
{ |
- if (m_pAllocator) { |
- m_pDataAcc = FX_NewAtAllocator(m_pAllocator)CXML_DataStmAcc(pFileRead, m_pAllocator); |
- } else { |
- m_pDataAcc = FX_NEW CXML_DataStmAcc(pFileRead, NULL); |
- } |
+ m_pDataAcc = FX_NEW CXML_DataStmAcc(pFileRead); |
if (!m_pDataAcc) { |
return FALSE; |
} |
@@ -136,19 +128,19 @@ void CXML_Parser::SkipWhiteSpaces() |
} |
} while (ReadNextBlock()); |
} |
-void CXML_Parser::GetName(CFX_ByteStringL &space, CFX_ByteStringL &name) |
+void CXML_Parser::GetName(CFX_ByteString &space, CFX_ByteString &name) |
{ |
m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; |
if (IsEOF()) { |
return; |
} |
- CFX_ByteTextBuf buf(m_pAllocator); |
+ CFX_ByteTextBuf buf; |
FX_BYTE ch; |
do { |
while (m_dwIndex < m_dwBufferSize) { |
ch = m_pBuffer[m_dwIndex]; |
if (ch == ':') { |
- buf.GetByteStringL(space); |
+ space = buf.GetByteString(); |
buf.Clear(); |
} else if (g_FXCRT_XML_IsNameChar(ch)) { |
buf.AppendChar(ch); |
@@ -162,7 +154,7 @@ void CXML_Parser::GetName(CFX_ByteStringL &space, CFX_ByteStringL &name) |
break; |
} |
} while (ReadNextBlock()); |
- buf.GetByteStringL(name); |
+ name = buf.GetByteString(); |
} |
void CXML_Parser::SkipLiterals(FX_BSTR str) |
{ |
@@ -204,7 +196,7 @@ FX_DWORD CXML_Parser::GetCharRef() |
} |
FX_BYTE ch; |
FX_INT32 iState = 0; |
- CFX_ByteTextBuf buf(m_pAllocator); |
+ CFX_ByteTextBuf buf; |
FX_DWORD code = 0; |
do { |
while (m_dwIndex < m_dwBufferSize) { |
@@ -283,13 +275,13 @@ FX_DWORD CXML_Parser::GetCharRef() |
} while (ReadNextBlock()); |
return code; |
} |
-void CXML_Parser::GetAttrValue(CFX_WideStringL &value) |
+void CXML_Parser::GetAttrValue(CFX_WideString &value) |
{ |
m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; |
if (IsEOF()) { |
return; |
} |
- CFX_UTF8Decoder decoder(m_pAllocator); |
+ CFX_UTF8Decoder decoder; |
FX_BYTE mark = 0, ch; |
do { |
while (m_dwIndex < m_dwBufferSize) { |
@@ -310,7 +302,7 @@ void CXML_Parser::GetAttrValue(CFX_WideStringL &value) |
if (ch == '&') { |
decoder.AppendChar(GetCharRef()); |
if (IsEOF()) { |
- decoder.GetResult(value); |
+ value = decoder.GetResult(); |
return; |
} |
} else { |
@@ -322,9 +314,9 @@ void CXML_Parser::GetAttrValue(CFX_WideStringL &value) |
break; |
} |
} while (ReadNextBlock()); |
- decoder.GetResult(value); |
+ value = decoder.GetResult(); |
} |
-void CXML_Parser::GetTagName(CFX_ByteStringL &space, CFX_ByteStringL &name, FX_BOOL &bEndTag, FX_BOOL bStartTag) |
+void CXML_Parser::GetTagName(CFX_ByteString &space, CFX_ByteString &name, FX_BOOL &bEndTag, FX_BOOL bStartTag) |
{ |
m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; |
if (IsEOF()) { |
@@ -379,30 +371,23 @@ CXML_Element* CXML_Parser::ParseElement(CXML_Element* pParent, FX_BOOL bStartTag |
if (IsEOF()) { |
return NULL; |
} |
- CFX_ByteStringL tag_name, tag_space; |
+ CFX_ByteString tag_name, tag_space; |
FX_BOOL bEndTag; |
GetTagName(tag_space, tag_name, bEndTag, bStartTag); |
if (tag_name.IsEmpty() || bEndTag) { |
- tag_space.Empty(m_pAllocator); |
return NULL; |
} |
CXML_Element* pElement; |
- if (m_pAllocator) { |
- pElement = FX_NewAtAllocator(m_pAllocator)CXML_Element(m_pAllocator); |
- } else { |
- pElement = FX_NEW CXML_Element; |
- } |
+ pElement = FX_NEW CXML_Element; |
if (pElement) { |
pElement->m_pParent = pParent; |
pElement->SetTag(tag_space, tag_name); |
} |
- tag_space.Empty(m_pAllocator); |
- tag_name.Empty(m_pAllocator); |
if (!pElement) { |
return NULL; |
} |
do { |
- CFX_ByteStringL attr_space, attr_name; |
+ CFX_ByteString attr_space, attr_name; |
while (m_dwIndex < m_dwBufferSize) { |
SkipWhiteSpaces(); |
if (IsEOF()) { |
@@ -411,8 +396,6 @@ CXML_Element* CXML_Parser::ParseElement(CXML_Element* pParent, FX_BOOL bStartTag |
if (!g_FXCRT_XML_IsNameIntro(m_pBuffer[m_dwIndex])) { |
break; |
} |
- attr_space.Empty(m_pAllocator); |
- attr_name.Empty(m_pAllocator); |
GetName(attr_space, attr_name); |
SkipWhiteSpaces(); |
if (IsEOF()) { |
@@ -426,13 +409,10 @@ CXML_Element* CXML_Parser::ParseElement(CXML_Element* pParent, FX_BOOL bStartTag |
if (IsEOF()) { |
break; |
} |
- CFX_WideStringL attr_value; |
+ CFX_WideString attr_value; |
GetAttrValue(attr_value); |
- pElement->m_AttrMap.SetAt(attr_space, attr_name, attr_value, m_pAllocator); |
- attr_value.Empty(m_pAllocator); |
+ pElement->m_AttrMap.SetAt(attr_space, attr_name, attr_value); |
} |
- attr_space.Empty(m_pAllocator); |
- attr_name.Empty(m_pAllocator); |
m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; |
if (m_dwIndex < m_dwBufferSize || IsEOF()) { |
break; |
@@ -450,19 +430,15 @@ CXML_Element* CXML_Parser::ParseElement(CXML_Element* pParent, FX_BOOL bStartTag |
} |
if (ch != '>') { |
m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; |
- if (m_pAllocator) { |
- FX_DeleteAtAllocator(pElement, m_pAllocator, CXML_Element); |
- } else { |
- delete pElement; |
- } |
+ delete pElement; |
return NULL; |
} |
SkipWhiteSpaces(); |
if (IsEOF()) { |
return pElement; |
} |
- CFX_UTF8Decoder decoder(m_pAllocator); |
- CFX_WideTextBuf content(m_pAllocator); |
+ CFX_UTF8Decoder decoder; |
+ CFX_WideTextBuf content; |
FX_BOOL bCDATA = FALSE; |
FX_INT32 iState = 0; |
do { |
@@ -487,22 +463,18 @@ CXML_Element* CXML_Parser::ParseElement(CXML_Element* pParent, FX_BOOL bStartTag |
SkipWhiteSpaces(); |
iState = 0; |
} else if (ch == '/') { |
- CFX_ByteStringL space, name; |
+ CFX_ByteString space, name; |
GetName(space, name); |
- space.Empty(m_pAllocator); |
- name.Empty(m_pAllocator); |
SkipWhiteSpaces(); |
m_dwIndex ++; |
iState = 10; |
} else { |
content << decoder.GetResult(); |
- CFX_WideStringL dataStr; |
- content.GetWideStringL(dataStr); |
+ CFX_WideString dataStr = content.GetWideString(); |
if (!bCDATA && !m_bSaveSpaceChars) { |
dataStr.TrimRight((FX_LPCWSTR)L" \t\r\n"); |
} |
InsertContentSegment(bCDATA, dataStr, pElement); |
- dataStr.Empty(m_pAllocator); |
content.Clear(); |
decoder.Clear(); |
bCDATA = FALSE; |
@@ -542,13 +514,11 @@ CXML_Element* CXML_Parser::ParseElement(CXML_Element* pParent, FX_BOOL bStartTag |
} |
} while (ReadNextBlock()); |
content << decoder.GetResult(); |
- CFX_WideStringL dataStr; |
- content.GetWideStringL(dataStr); |
+ CFX_WideString dataStr = content.GetWideString(); |
if (!m_bSaveSpaceChars) { |
dataStr.TrimRight((FX_LPCWSTR)L" \t\r\n"); |
} |
InsertContentSegment(bCDATA, dataStr, pElement); |
- dataStr.Empty(m_pAllocator); |
content.Clear(); |
decoder.Clear(); |
bCDATA = FALSE; |
@@ -560,15 +530,11 @@ void CXML_Parser::InsertContentSegment(FX_BOOL bCDATA, FX_WSTR content, CXML_Ele |
return; |
} |
CXML_Content* pContent; |
- if (m_pAllocator) { |
- pContent = FX_NewAtAllocator(m_pAllocator)CXML_Content; |
- } else { |
- pContent = FX_NEW CXML_Content; |
- } |
+ pContent = FX_NEW CXML_Content; |
if (!pContent) { |
return; |
} |
- pContent->Set(bCDATA, content, m_pAllocator); |
+ pContent->Set(bCDATA, content); |
pElement->m_Children.Add((FX_LPVOID)CXML_Element::Content); |
pElement->m_Children.Add(pContent); |
} |
@@ -581,54 +547,49 @@ static CXML_Element* XML_ContinueParse(CXML_Parser &parser, FX_BOOL bSaveSpaceCh |
} |
return pElement; |
} |
-CXML_Element* CXML_Element::Parse(const void* pBuffer, size_t size, FX_BOOL bSaveSpaceChars, FX_FILESIZE* pParsedSize, IFX_Allocator* pAllocator) |
+CXML_Element* CXML_Element::Parse(const void* pBuffer, size_t size, FX_BOOL bSaveSpaceChars, FX_FILESIZE* pParsedSize) |
{ |
- CXML_Parser parser(pAllocator); |
+ CXML_Parser parser; |
if (!parser.Init((FX_LPBYTE)pBuffer, size)) { |
return NULL; |
} |
return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize); |
} |
-CXML_Element* CXML_Element::Parse(IFX_FileRead *pFile, FX_BOOL bSaveSpaceChars, FX_FILESIZE* pParsedSize, IFX_Allocator* pAllocator) |
+CXML_Element* CXML_Element::Parse(IFX_FileRead *pFile, FX_BOOL bSaveSpaceChars, FX_FILESIZE* pParsedSize) |
{ |
- CXML_Parser parser(pAllocator); |
+ CXML_Parser parser; |
if (!parser.Init(pFile)) { |
return NULL; |
} |
return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize); |
} |
-CXML_Element* CXML_Element::Parse(IFX_BufferRead *pBuffer, FX_BOOL bSaveSpaceChars, FX_FILESIZE* pParsedSize, IFX_Allocator* pAllocator) |
+CXML_Element* CXML_Element::Parse(IFX_BufferRead *pBuffer, FX_BOOL bSaveSpaceChars, FX_FILESIZE* pParsedSize) |
{ |
- CXML_Parser parser(pAllocator); |
+ CXML_Parser parser; |
if (!parser.Init(pBuffer)) { |
return NULL; |
} |
return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize); |
} |
-CXML_Element::CXML_Element(IFX_Allocator* pAllocator) |
- : m_pParent(NULL) |
- , m_QSpaceName() |
+CXML_Element::CXML_Element() |
+ : m_QSpaceName() |
, m_TagName() |
, m_AttrMap() |
- , m_Children(pAllocator) |
{ |
} |
-CXML_Element::CXML_Element(FX_BSTR qSpace, FX_BSTR tagName, IFX_Allocator* pAllocator) |
- : m_pParent(NULL) |
- , m_QSpaceName() |
+CXML_Element::CXML_Element(FX_BSTR qSpace, FX_BSTR tagName) |
+ : m_QSpaceName() |
, m_TagName() |
, m_AttrMap() |
- , m_Children(pAllocator) |
{ |
- m_QSpaceName.Set(qSpace, pAllocator); |
- m_TagName.Set(tagName, pAllocator); |
+ m_QSpaceName = qSpace; |
+ m_TagName = tagName; |
} |
-CXML_Element::CXML_Element(FX_BSTR qTagName, IFX_Allocator* pAllocator) |
+CXML_Element::CXML_Element(FX_BSTR qTagName) |
: m_pParent(NULL) |
, m_QSpaceName() |
, m_TagName() |
, m_AttrMap() |
- , m_Children(pAllocator) |
{ |
SetTag(qTagName); |
} |
@@ -638,32 +599,19 @@ CXML_Element::~CXML_Element() |
} |
void CXML_Element::Empty() |
{ |
- IFX_Allocator* pAllocator = m_Children.m_pAllocator; |
- m_QSpaceName.Empty(pAllocator); |
- m_TagName.Empty(pAllocator); |
- m_AttrMap.RemoveAll(pAllocator); |
RemoveChildren(); |
} |
void CXML_Element::RemoveChildren() |
{ |
- IFX_Allocator* pAllocator = m_Children.m_pAllocator; |
for (int i = 0; i < m_Children.GetSize(); i += 2) { |
ChildType type = (ChildType)(FX_UINTPTR)m_Children.GetAt(i); |
if (type == Content) { |
CXML_Content* content = (CXML_Content*)m_Children.GetAt(i + 1); |
- if (pAllocator) { |
- FX_DeleteAtAllocator(content, pAllocator, CXML_Content); |
- } else { |
- delete content; |
- } |
+ delete content; |
} else if (type == Element) { |
CXML_Element* child = (CXML_Element*)m_Children.GetAt(i + 1); |
child->RemoveChildren(); |
- if (pAllocator) { |
- FX_DeleteAtAllocator(child, pAllocator, CXML_Element); |
- } else { |
- delete child; |
- } |
+ delete child; |
} |
} |
m_Children.RemoveAll(); |
@@ -678,25 +626,6 @@ CFX_ByteString CXML_Element::GetTagName(FX_BOOL bQualified) const |
bsTag += m_TagName; |
return bsTag; |
} |
-void CXML_Element::GetTagName(CFX_ByteStringL &tagName, FX_BOOL bQualified) const |
-{ |
- IFX_Allocator* pAllocator = m_Children.m_pAllocator; |
- if (!bQualified || m_QSpaceName.IsEmpty()) { |
- tagName.Set(m_TagName, pAllocator); |
- return; |
- } |
- FX_LPSTR str = tagName.AllocBuffer(m_QSpaceName.GetLength() + m_TagName.GetLength() + 2, pAllocator); |
- if (!str) { |
- return; |
- } |
- FXSYS_memcpy32(str, m_QSpaceName.GetCStr(), m_QSpaceName.GetLength()); |
- str += m_QSpaceName.GetLength(); |
- *str = ':'; |
- str ++; |
- FXSYS_memcpy32(str, m_TagName.GetCStr(), m_TagName.GetLength()); |
- str += m_TagName.GetLength(); |
- *str = '\0'; |
-} |
CFX_ByteString CXML_Element::GetNamespace(FX_BOOL bQualified) const |
{ |
if (bQualified) { |
@@ -704,18 +633,9 @@ CFX_ByteString CXML_Element::GetNamespace(FX_BOOL bQualified) const |
} |
return GetNamespaceURI(m_QSpaceName); |
} |
-void CXML_Element::GetNamespace(CFX_ByteStringL &nameSpace, FX_BOOL bQualified) const |
-{ |
- IFX_Allocator* pAllocator = m_Children.m_pAllocator; |
- if (bQualified) { |
- nameSpace.Set(m_QSpaceName, pAllocator); |
- return; |
- } |
- GetNamespaceURI(m_QSpaceName, nameSpace); |
-} |
CFX_ByteString CXML_Element::GetNamespaceURI(FX_BSTR qName) const |
{ |
- const CFX_WideStringL* pwsSpace; |
+ const CFX_WideString* pwsSpace; |
const CXML_Element *pElement = this; |
do { |
if (qName.IsEmpty()) { |
@@ -730,26 +650,6 @@ CFX_ByteString CXML_Element::GetNamespaceURI(FX_BSTR qName) const |
} while(pElement); |
return pwsSpace ? FX_UTF8Encode(*pwsSpace) : CFX_ByteString(); |
} |
-void CXML_Element::GetNamespaceURI(FX_BSTR qName, CFX_ByteStringL &uri) const |
-{ |
- IFX_Allocator* pAllocator = m_Children.m_pAllocator; |
- const CFX_WideStringL* pwsSpace; |
- const CXML_Element *pElement = this; |
- do { |
- if (qName.IsEmpty()) { |
- pwsSpace = pElement->m_AttrMap.Lookup(FX_BSTRC(""), FX_BSTRC("xmlns")); |
- } else { |
- pwsSpace = pElement->m_AttrMap.Lookup(FX_BSTRC("xmlns"), qName); |
- } |
- if (pwsSpace) { |
- break; |
- } |
- pElement = pElement->GetParent(); |
- } while(pElement); |
- if (pwsSpace) { |
- FX_UTF8Encode(pwsSpace->GetPtr(), pwsSpace->GetLength(), uri, pAllocator); |
- } |
-} |
void CXML_Element::GetAttrByIndex(int index, CFX_ByteString& space, CFX_ByteString& name, CFX_WideString& value) const |
{ |
if (index < 0 || index >= m_AttrMap.GetSize()) { |
@@ -760,17 +660,6 @@ void CXML_Element::GetAttrByIndex(int index, CFX_ByteString& space, CFX_ByteStri |
name = item.m_AttrName; |
value = item.m_Value; |
} |
-void CXML_Element::GetAttrByIndex(int index, CFX_ByteStringL &space, CFX_ByteStringL &name, CFX_WideStringL &value) const |
-{ |
- if (index < 0 || index >= m_AttrMap.GetSize()) { |
- return; |
- } |
- IFX_Allocator* pAllocator = m_Children.m_pAllocator; |
- CXML_AttrItem& item = m_AttrMap.GetAt(index); |
- space.Set(item.m_QSpaceName, pAllocator); |
- name.Set(item.m_AttrName, pAllocator); |
- value.Set(item.m_Value, pAllocator); |
-} |
FX_BOOL CXML_Element::HasAttr(FX_BSTR name) const |
{ |
CFX_ByteStringC bsSpace, bsName; |
@@ -781,37 +670,27 @@ FX_BOOL CXML_Element::GetAttrValue(FX_BSTR name, CFX_WideString& attribute) cons |
{ |
CFX_ByteStringC bsSpace, bsName; |
FX_XML_SplitQualifiedName(name, bsSpace, bsName); |
- const CFX_WideStringL* pValue = m_AttrMap.Lookup(bsSpace, bsName); |
+ const CFX_WideString* pValue = m_AttrMap.Lookup(bsSpace, bsName); |
if (pValue) { |
- attribute = CFX_WideString(pValue->GetPtr(), pValue->GetLength()); |
+ attribute = CFX_WideString((FX_LPCWSTR)pValue, pValue->GetLength()); |
return TRUE; |
} |
return FALSE; |
} |
-const CFX_WideStringL* CXML_Element::GetAttrValuePtr(FX_BSTR name) const |
-{ |
- CFX_ByteStringC bsSpace, bsName; |
- FX_XML_SplitQualifiedName(name, bsSpace, bsName); |
- return m_AttrMap.Lookup(bsSpace, bsName); |
-} |
FX_BOOL CXML_Element::GetAttrValue(FX_BSTR space, FX_BSTR name, CFX_WideString& attribute) const |
{ |
- const CFX_WideStringL* pValue = m_AttrMap.Lookup(space, name); |
+ const CFX_WideString* pValue = m_AttrMap.Lookup(space, name); |
if (pValue) { |
- attribute = CFX_WideString(pValue->GetPtr(), pValue->GetLength()); |
+ attribute = CFX_WideString((FX_LPCWSTR)pValue, pValue->GetLength()); |
return TRUE; |
} |
return FALSE; |
} |
-const CFX_WideStringL* CXML_Element::GetAttrValuePtr(FX_BSTR space, FX_BSTR name) const |
-{ |
- return m_AttrMap.Lookup(space, name); |
-} |
FX_BOOL CXML_Element::GetAttrInteger(FX_BSTR name, int& attribute) const |
{ |
CFX_ByteStringC bsSpace, bsName; |
FX_XML_SplitQualifiedName(name, bsSpace, bsName); |
- const CFX_WideStringL* pwsValue = m_AttrMap.Lookup(bsSpace, bsName); |
+ const CFX_WideString* pwsValue = m_AttrMap.Lookup(bsSpace, bsName); |
if (pwsValue) { |
attribute = pwsValue->GetInteger(); |
return TRUE; |
@@ -820,7 +699,7 @@ FX_BOOL CXML_Element::GetAttrInteger(FX_BSTR name, int& attribute) const |
} |
FX_BOOL CXML_Element::GetAttrInteger(FX_BSTR space, FX_BSTR name, int& attribute) const |
{ |
- const CFX_WideStringL* pwsValue = m_AttrMap.Lookup(space, name); |
+ const CFX_WideString* pwsValue = m_AttrMap.Lookup(space, name); |
if (pwsValue) { |
attribute = pwsValue->GetInteger(); |
return TRUE; |
@@ -835,8 +714,7 @@ FX_BOOL CXML_Element::GetAttrFloat(FX_BSTR name, FX_FLOAT& attribute) const |
} |
FX_BOOL CXML_Element::GetAttrFloat(FX_BSTR space, FX_BSTR name, FX_FLOAT& attribute) const |
{ |
- CFX_WideString value; |
- const CFX_WideStringL* pValue = m_AttrMap.Lookup(space, name); |
+ const CFX_WideString* pValue = m_AttrMap.Lookup(space, name); |
if (pValue) { |
attribute = pValue->GetFloat(); |
return TRUE; |
@@ -868,19 +746,6 @@ CFX_WideString CXML_Element::GetContent(FX_DWORD index) const |
} |
return CFX_WideString(); |
} |
-const CFX_WideStringL* CXML_Element::GetContentPtr(FX_DWORD index) const |
-{ |
- index <<= 1; |
- if (index >= (FX_DWORD)m_Children.GetSize() || |
- (ChildType)(FX_UINTPTR)m_Children.GetAt(index) != Content) { |
- return NULL; |
- } |
- CXML_Content* pContent = (CXML_Content*)m_Children.GetAt(index + 1); |
- if (pContent) { |
- return &pContent->m_Content; |
- } |
- return NULL; |
-} |
CXML_Element* CXML_Element::GetElement(FX_DWORD index) const |
{ |
index <<= 1; |
@@ -935,7 +800,7 @@ FX_DWORD CXML_Element::FindElement(CXML_Element *pChild) const |
} |
return (FX_DWORD) - 1; |
} |
-const CFX_WideStringL* CXML_AttrMap::Lookup(FX_BSTR space, FX_BSTR name) const |
+const CFX_WideString* CXML_AttrMap::Lookup(FX_BSTR space, FX_BSTR name) const |
{ |
if (m_pMap == NULL) { |
return NULL; |
@@ -948,21 +813,17 @@ const CFX_WideStringL* CXML_AttrMap::Lookup(FX_BSTR space, FX_BSTR name) const |
} |
return NULL; |
} |
-void CXML_AttrMap::SetAt(FX_BSTR space, FX_BSTR name, FX_WSTR value, IFX_Allocator* pAllocator) |
+void CXML_AttrMap::SetAt(FX_BSTR space, FX_BSTR name, FX_WSTR value) |
{ |
- for (int i = 0; i < GetSize(); i ++) { |
+ for (int i = 0; i < GetSize(); i++) { |
CXML_AttrItem& item = GetAt(i); |
if ((space.IsEmpty() || item.m_QSpaceName == space) && item.m_AttrName == name) { |
- item.m_Value.Set(value, pAllocator); |
+ item.m_Value = value; |
return; |
} |
} |
if (!m_pMap) { |
- if (pAllocator) { |
- m_pMap = FX_NewAtAllocator(pAllocator)CFX_ObjectArray<CXML_AttrItem>(pAllocator); |
- } else { |
- m_pMap = FX_NEW CFX_ObjectArray<CXML_AttrItem>; |
- } |
+ m_pMap = FX_NEW CFX_ObjectArray < CXML_AttrItem > ; |
} |
if (!m_pMap) { |
return; |
@@ -971,11 +832,11 @@ void CXML_AttrMap::SetAt(FX_BSTR space, FX_BSTR name, FX_WSTR value, IFX_Allocat |
if (!pItem) { |
return; |
} |
- pItem->m_QSpaceName.Set(space, pAllocator); |
- pItem->m_AttrName.Set(name, pAllocator); |
- pItem->m_Value.Set(value, pAllocator); |
+ pItem->m_QSpaceName = space; |
+ pItem->m_AttrName = name; |
+ pItem->m_Value = value; |
} |
-void CXML_AttrMap::RemoveAt(FX_BSTR space, FX_BSTR name, IFX_Allocator* pAllocator) |
+void CXML_AttrMap::RemoveAt(FX_BSTR space, FX_BSTR name) |
{ |
if (m_pMap == NULL) { |
return; |
@@ -983,7 +844,6 @@ void CXML_AttrMap::RemoveAt(FX_BSTR space, FX_BSTR name, IFX_Allocator* pAllocat |
for (int i = 0; i < m_pMap->GetSize(); i ++) { |
CXML_AttrItem& item = GetAt(i); |
if ((space.IsEmpty() || item.m_QSpaceName == space) && item.m_AttrName == name) { |
- item.Empty(pAllocator); |
m_pMap->RemoveAt(i); |
return; |
} |
@@ -998,20 +858,15 @@ CXML_AttrItem& CXML_AttrMap::GetAt(int index) const |
ASSERT(m_pMap != NULL); |
return (*m_pMap)[index]; |
} |
-void CXML_AttrMap::RemoveAll(IFX_Allocator* pAllocator) |
+void CXML_AttrMap::RemoveAll() |
{ |
if (!m_pMap) { |
return; |
} |
for (int i = 0; i < m_pMap->GetSize(); i ++) { |
CXML_AttrItem& item = (*m_pMap)[i]; |
- item.Empty(pAllocator); |
} |
m_pMap->RemoveAll(); |
- if (pAllocator) { |
- FX_DeleteAtAllocator(m_pMap, pAllocator, CFX_ObjectArray<CXML_AttrItem>); |
- } else { |
- delete m_pMap; |
- } |
+ delete m_pMap; |
m_pMap = NULL; |
} |