summaryrefslogtreecommitdiff
path: root/core/fxcrt/xml/cxml_element.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/fxcrt/xml/cxml_element.cpp')
-rw-r--r--core/fxcrt/xml/cxml_element.cpp165
1 files changed, 0 insertions, 165 deletions
diff --git a/core/fxcrt/xml/cxml_element.cpp b/core/fxcrt/xml/cxml_element.cpp
deleted file mode 100644
index 1d42e8eac3..0000000000
--- a/core/fxcrt/xml/cxml_element.cpp
+++ /dev/null
@@ -1,165 +0,0 @@
-// Copyright 2017 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 "core/fxcrt/xml/cxml_element.h"
-
-#include "core/fxcrt/xml/cxml_content.h"
-#include "core/fxcrt/xml/cxml_parser.h"
-
-namespace {
-
-void SplitQualifiedName(const ByteStringView& bsFullName,
- ByteStringView* bsSpace,
- ByteStringView* bsName) {
- if (bsFullName.IsEmpty())
- return;
-
- auto iStart = bsFullName.Find(':');
- if (iStart.has_value()) {
- *bsSpace = bsFullName.Left(iStart.value());
- *bsName = bsFullName.Right(bsFullName.GetLength() - (iStart.value() + 1));
- } else {
- *bsName = bsFullName;
- }
-}
-
-} // namespace
-
-// static
-std::unique_ptr<CXML_Element> CXML_Element::Parse(const void* pBuffer,
- size_t size) {
- CXML_Parser parser;
- if (!parser.Init(static_cast<const uint8_t*>(pBuffer), size))
- return nullptr;
- return parser.ParseElement(nullptr, false);
-}
-
-CXML_Element::CXML_Element(const CXML_Element* pParent,
- const ByteStringView& qSpace,
- const ByteStringView& tagname)
- : m_pParent(pParent), m_QSpaceName(qSpace), m_TagName(tagname) {}
-
-CXML_Element::~CXML_Element() {}
-
-CXML_Element* CXML_Element::AsElement() {
- return this;
-}
-
-const CXML_Element* CXML_Element::AsElement() const {
- return this;
-}
-
-ByteString CXML_Element::GetTagName() const {
- return m_TagName;
-}
-
-ByteString CXML_Element::GetNamespaceURI(const ByteString& qName) const {
- const CXML_Element* pElement = this;
- do {
- const WideString* pwsSpace;
- if (qName.IsEmpty())
- pwsSpace = pElement->Lookup("", "xmlns");
- else
- pwsSpace = pElement->Lookup("xmlns", qName);
- if (pwsSpace)
- return pwsSpace->UTF8Encode();
-
- pElement = pElement->GetParent();
- } while (pElement);
- return ByteString();
-}
-
-void CXML_Element::GetAttrByIndex(size_t index,
- ByteString* space,
- ByteString* name,
- WideString* value) const {
- if (index >= m_AttrMap.size())
- return;
-
- const CXML_AttrItem& item = m_AttrMap[index];
- *space = item.m_QSpaceName;
- *name = item.m_AttrName;
- *value = item.m_Value;
-}
-
-WideString CXML_Element::GetAttrValue(const ByteStringView& name) const {
- ByteStringView bsSpace;
- ByteStringView bsName;
- SplitQualifiedName(name, &bsSpace, &bsName);
-
- WideString attr;
- const WideString* pValue = Lookup(ByteString(bsSpace), ByteString(bsName));
- if (pValue)
- attr = *pValue;
- return attr;
-}
-
-int CXML_Element::GetAttrInteger(const ByteStringView& name) const {
- ByteStringView bsSpace;
- ByteStringView bsName;
- SplitQualifiedName(name, &bsSpace, &bsName);
-
- const WideString* pwsValue = Lookup(ByteString(bsSpace), ByteString(bsName));
- return pwsValue ? pwsValue->GetInteger() : 0;
-}
-
-size_t CXML_Element::CountElements(const ByteStringView& space,
- const ByteStringView& tag) const {
- size_t count = 0;
- for (const auto& pChild : m_Children) {
- const CXML_Element* pKid = pChild->AsElement();
- if (MatchesElement(pKid, space, tag))
- count++;
- }
- return count;
-}
-
-CXML_Object* CXML_Element::GetChild(size_t index) const {
- return index < m_Children.size() ? m_Children[index].get() : nullptr;
-}
-
-CXML_Element* CXML_Element::GetElement(const ByteStringView& space,
- const ByteStringView& tag,
- size_t nth) const {
- for (const auto& pChild : m_Children) {
- CXML_Element* pKid = pChild->AsElement();
- if (MatchesElement(pKid, space, tag)) {
- if (nth == 0)
- return pKid;
- --nth;
- }
- }
- return nullptr;
-}
-
-void CXML_Element::SetAttribute(const ByteString& space,
- const ByteString& name,
- const WideString& value) {
- for (CXML_AttrItem& item : m_AttrMap) {
- if (item.Matches(space, name)) {
- item.m_Value = value;
- return;
- }
- }
- m_AttrMap.push_back({space, name, WideString(value)});
-}
-
-// static
-bool CXML_Element::MatchesElement(const CXML_Element* pKid,
- const ByteStringView& space,
- const ByteStringView& tag) {
- return pKid && pKid->m_TagName == tag &&
- (space.IsEmpty() || pKid->m_QSpaceName == space);
-}
-
-const WideString* CXML_Element::Lookup(const ByteString& space,
- const ByteString& name) const {
- for (const CXML_AttrItem& item : m_AttrMap) {
- if (item.Matches(space, name))
- return &item.m_Value;
- }
- return nullptr;
-}