Index: webrtc/libjingle/xmllite/xmlelement.cc |
diff --git a/webrtc/libjingle/xmllite/xmlelement.cc b/webrtc/libjingle/xmllite/xmlelement.cc |
deleted file mode 100644 |
index 2d90836ec1d51099e1f42de8ae2210cfd043536f..0000000000000000000000000000000000000000 |
--- a/webrtc/libjingle/xmllite/xmlelement.cc |
+++ /dev/null |
@@ -1,496 +0,0 @@ |
-/* |
- * Copyright 2004 The WebRTC Project Authors. All rights reserved. |
- * |
- * Use of this source code is governed by a BSD-style license |
- * that can be found in the LICENSE file in the root of the source |
- * tree. An additional intellectual property rights grant can be found |
- * in the file PATENTS. All contributing project authors may |
- * be found in the AUTHORS file in the root of the source tree. |
- */ |
- |
-#include "webrtc/libjingle/xmllite/xmlelement.h" |
- |
-#include <ostream> |
-#include <sstream> |
-#include <string> |
-#include <vector> |
- |
-#include "webrtc/libjingle/xmllite/qname.h" |
-#include "webrtc/libjingle/xmllite/xmlbuilder.h" |
-#include "webrtc/libjingle/xmllite/xmlconstants.h" |
-#include "webrtc/libjingle/xmllite/xmlparser.h" |
-#include "webrtc/libjingle/xmllite/xmlprinter.h" |
-#include "webrtc/base/common.h" |
- |
-namespace buzz { |
- |
-XmlChild::~XmlChild() { |
-} |
- |
-bool XmlText::IsTextImpl() const { |
- return true; |
-} |
- |
-XmlElement* XmlText::AsElementImpl() const { |
- return NULL; |
-} |
- |
-XmlText* XmlText::AsTextImpl() const { |
- return const_cast<XmlText *>(this); |
-} |
- |
-void XmlText::SetText(const std::string& text) { |
- text_ = text; |
-} |
- |
-void XmlText::AddParsedText(const char* buf, int len) { |
- text_.append(buf, len); |
-} |
- |
-void XmlText::AddText(const std::string& text) { |
- text_ += text; |
-} |
- |
-XmlText::~XmlText() { |
-} |
- |
-XmlElement::XmlElement(const QName& name) : |
- name_(name), |
- first_attr_(NULL), |
- last_attr_(NULL), |
- first_child_(NULL), |
- last_child_(NULL), |
- cdata_(false) { |
-} |
- |
-XmlElement::XmlElement(const XmlElement& elt) : |
- XmlChild(), |
- name_(elt.name_), |
- first_attr_(NULL), |
- last_attr_(NULL), |
- first_child_(NULL), |
- last_child_(NULL), |
- cdata_(false) { |
- |
- // copy attributes |
- XmlAttr* attr; |
- XmlAttr ** plast_attr = &first_attr_; |
- XmlAttr* newAttr = NULL; |
- for (attr = elt.first_attr_; attr; attr = attr->NextAttr()) { |
- newAttr = new XmlAttr(*attr); |
- *plast_attr = newAttr; |
- plast_attr = &(newAttr->next_attr_); |
- } |
- last_attr_ = newAttr; |
- |
- // copy children |
- XmlChild* pChild; |
- XmlChild ** ppLast = &first_child_; |
- XmlChild* newChild = NULL; |
- |
- for (pChild = elt.first_child_; pChild; pChild = pChild->NextChild()) { |
- if (pChild->IsText()) { |
- newChild = new XmlText(*(pChild->AsText())); |
- } else { |
- newChild = new XmlElement(*(pChild->AsElement())); |
- } |
- *ppLast = newChild; |
- ppLast = &(newChild->next_child_); |
- } |
- last_child_ = newChild; |
- |
- cdata_ = elt.cdata_; |
-} |
- |
-XmlElement::XmlElement(const QName& name, bool useDefaultNs) : |
- name_(name), |
- first_attr_(useDefaultNs ? new XmlAttr(QN_XMLNS, name.Namespace()) : NULL), |
- last_attr_(first_attr_), |
- first_child_(NULL), |
- last_child_(NULL), |
- cdata_(false) { |
-} |
- |
-bool XmlElement::IsTextImpl() const { |
- return false; |
-} |
- |
-XmlElement* XmlElement::AsElementImpl() const { |
- return const_cast<XmlElement *>(this); |
-} |
- |
-XmlText* XmlElement::AsTextImpl() const { |
- return NULL; |
-} |
- |
-const std::string XmlElement::BodyText() const { |
- if (first_child_ && first_child_->IsText() && last_child_ == first_child_) { |
- return first_child_->AsText()->Text(); |
- } |
- |
- return std::string(); |
-} |
- |
-void XmlElement::SetBodyText(const std::string& text) { |
- if (text.empty()) { |
- ClearChildren(); |
- } else if (first_child_ == NULL) { |
- AddText(text); |
- } else if (first_child_->IsText() && last_child_ == first_child_) { |
- first_child_->AsText()->SetText(text); |
- } else { |
- ClearChildren(); |
- AddText(text); |
- } |
-} |
- |
-const QName XmlElement::FirstElementName() const { |
- const XmlElement* element = FirstElement(); |
- if (element == NULL) |
- return QName(); |
- return element->Name(); |
-} |
- |
-XmlAttr* XmlElement::FirstAttr() { |
- return first_attr_; |
-} |
- |
-const std::string XmlElement::Attr(const StaticQName& name) const { |
- XmlAttr* attr; |
- for (attr = first_attr_; attr; attr = attr->next_attr_) { |
- if (attr->name_ == name) |
- return attr->value_; |
- } |
- return std::string(); |
-} |
- |
-const std::string XmlElement::Attr(const QName& name) const { |
- XmlAttr* attr; |
- for (attr = first_attr_; attr; attr = attr->next_attr_) { |
- if (attr->name_ == name) |
- return attr->value_; |
- } |
- return std::string(); |
-} |
- |
-bool XmlElement::HasAttr(const StaticQName& name) const { |
- XmlAttr* attr; |
- for (attr = first_attr_; attr; attr = attr->next_attr_) { |
- if (attr->name_ == name) |
- return true; |
- } |
- return false; |
-} |
- |
-bool XmlElement::HasAttr(const QName& name) const { |
- XmlAttr* attr; |
- for (attr = first_attr_; attr; attr = attr->next_attr_) { |
- if (attr->name_ == name) |
- return true; |
- } |
- return false; |
-} |
- |
-void XmlElement::SetAttr(const QName& name, const std::string& value) { |
- XmlAttr* attr; |
- for (attr = first_attr_; attr; attr = attr->next_attr_) { |
- if (attr->name_ == name) |
- break; |
- } |
- if (!attr) { |
- attr = new XmlAttr(name, value); |
- if (last_attr_) |
- last_attr_->next_attr_ = attr; |
- else |
- first_attr_ = attr; |
- last_attr_ = attr; |
- return; |
- } |
- attr->value_ = value; |
-} |
- |
-void XmlElement::ClearAttr(const QName& name) { |
- XmlAttr* attr; |
- XmlAttr* last_attr = NULL; |
- for (attr = first_attr_; attr; attr = attr->next_attr_) { |
- if (attr->name_ == name) |
- break; |
- last_attr = attr; |
- } |
- if (!attr) |
- return; |
- if (!last_attr) |
- first_attr_ = attr->next_attr_; |
- else |
- last_attr->next_attr_ = attr->next_attr_; |
- if (last_attr_ == attr) |
- last_attr_ = last_attr; |
- delete attr; |
-} |
- |
-XmlChild* XmlElement::FirstChild() { |
- return first_child_; |
-} |
- |
-XmlElement* XmlElement::FirstElement() { |
- XmlChild* pChild; |
- for (pChild = first_child_; pChild; pChild = pChild->next_child_) { |
- if (!pChild->IsText()) |
- return pChild->AsElement(); |
- } |
- return NULL; |
-} |
- |
-XmlElement* XmlElement::NextElement() { |
- XmlChild* pChild; |
- for (pChild = next_child_; pChild; pChild = pChild->next_child_) { |
- if (!pChild->IsText()) |
- return pChild->AsElement(); |
- } |
- return NULL; |
-} |
- |
-XmlElement* XmlElement::FirstWithNamespace(const std::string& ns) { |
- XmlChild* pChild; |
- for (pChild = first_child_; pChild; pChild = pChild->next_child_) { |
- if (!pChild->IsText() && pChild->AsElement()->Name().Namespace() == ns) |
- return pChild->AsElement(); |
- } |
- return NULL; |
-} |
- |
-XmlElement * |
-XmlElement::NextWithNamespace(const std::string& ns) { |
- XmlChild* pChild; |
- for (pChild = next_child_; pChild; pChild = pChild->next_child_) { |
- if (!pChild->IsText() && pChild->AsElement()->Name().Namespace() == ns) |
- return pChild->AsElement(); |
- } |
- return NULL; |
-} |
- |
-XmlElement * |
-XmlElement::FirstNamed(const QName& name) { |
- XmlChild* pChild; |
- for (pChild = first_child_; pChild; pChild = pChild->next_child_) { |
- if (!pChild->IsText() && pChild->AsElement()->Name() == name) |
- return pChild->AsElement(); |
- } |
- return NULL; |
-} |
- |
-XmlElement * |
-XmlElement::FirstNamed(const StaticQName& name) { |
- XmlChild* pChild; |
- for (pChild = first_child_; pChild; pChild = pChild->next_child_) { |
- if (!pChild->IsText() && pChild->AsElement()->Name() == name) |
- return pChild->AsElement(); |
- } |
- return NULL; |
-} |
- |
-XmlElement * |
-XmlElement::NextNamed(const QName& name) { |
- XmlChild* pChild; |
- for (pChild = next_child_; pChild; pChild = pChild->next_child_) { |
- if (!pChild->IsText() && pChild->AsElement()->Name() == name) |
- return pChild->AsElement(); |
- } |
- return NULL; |
-} |
- |
-XmlElement * |
-XmlElement::NextNamed(const StaticQName& name) { |
- XmlChild* pChild; |
- for (pChild = next_child_; pChild; pChild = pChild->next_child_) { |
- if (!pChild->IsText() && pChild->AsElement()->Name() == name) |
- return pChild->AsElement(); |
- } |
- return NULL; |
-} |
- |
-XmlElement* XmlElement::FindOrAddNamedChild(const QName& name) { |
- XmlElement* child = FirstNamed(name); |
- if (!child) { |
- child = new XmlElement(name); |
- AddElement(child); |
- } |
- |
- return child; |
-} |
- |
-const std::string XmlElement::TextNamed(const QName& name) const { |
- XmlChild* pChild; |
- for (pChild = first_child_; pChild; pChild = pChild->next_child_) { |
- if (!pChild->IsText() && pChild->AsElement()->Name() == name) |
- return pChild->AsElement()->BodyText(); |
- } |
- return std::string(); |
-} |
- |
-void XmlElement::InsertChildAfter(XmlChild* predecessor, XmlChild* next) { |
- if (predecessor == NULL) { |
- next->next_child_ = first_child_; |
- first_child_ = next; |
- } |
- else { |
- next->next_child_ = predecessor->next_child_; |
- predecessor->next_child_ = next; |
- } |
-} |
- |
-void XmlElement::RemoveChildAfter(XmlChild* predecessor) { |
- XmlChild* next; |
- |
- if (predecessor == NULL) { |
- next = first_child_; |
- first_child_ = next->next_child_; |
- } |
- else { |
- next = predecessor->next_child_; |
- predecessor->next_child_ = next->next_child_; |
- } |
- |
- if (last_child_ == next) |
- last_child_ = predecessor; |
- |
- delete next; |
-} |
- |
-void XmlElement::AddAttr(const QName& name, const std::string& value) { |
- ASSERT(!HasAttr(name)); |
- |
- XmlAttr ** pprev = last_attr_ ? &(last_attr_->next_attr_) : &first_attr_; |
- last_attr_ = (*pprev = new XmlAttr(name, value)); |
-} |
- |
-void XmlElement::AddAttr(const QName& name, const std::string& value, |
- int depth) { |
- XmlElement* element = this; |
- while (depth--) { |
- element = element->last_child_->AsElement(); |
- } |
- element->AddAttr(name, value); |
-} |
- |
-void XmlElement::AddParsedText(const char* cstr, int len) { |
- if (len == 0) |
- return; |
- |
- if (last_child_ && last_child_->IsText()) { |
- last_child_->AsText()->AddParsedText(cstr, len); |
- return; |
- } |
- XmlChild ** pprev = last_child_ ? &(last_child_->next_child_) : &first_child_; |
- last_child_ = *pprev = new XmlText(cstr, len); |
-} |
- |
-void XmlElement::AddCDATAText(const char* buf, int len) { |
- cdata_ = true; |
- AddParsedText(buf, len); |
-} |
- |
-void XmlElement::AddText(const std::string& text) { |
- if (text == STR_EMPTY) |
- return; |
- |
- if (last_child_ && last_child_->IsText()) { |
- last_child_->AsText()->AddText(text); |
- return; |
- } |
- XmlChild ** pprev = last_child_ ? &(last_child_->next_child_) : &first_child_; |
- last_child_ = *pprev = new XmlText(text); |
-} |
- |
-void XmlElement::AddText(const std::string& text, int depth) { |
- // note: the first syntax is ambigious for msvc 6 |
- // XmlElement* pel(this); |
- XmlElement* element = this; |
- while (depth--) { |
- element = element->last_child_->AsElement(); |
- } |
- element->AddText(text); |
-} |
- |
-void XmlElement::AddElement(XmlElement *child) { |
- if (child == NULL) |
- return; |
- |
- XmlChild ** pprev = last_child_ ? &(last_child_->next_child_) : &first_child_; |
- *pprev = child; |
- last_child_ = child; |
- child->next_child_ = NULL; |
-} |
- |
-void XmlElement::AddElement(XmlElement *child, int depth) { |
- XmlElement* element = this; |
- while (depth--) { |
- element = element->last_child_->AsElement(); |
- } |
- element->AddElement(child); |
-} |
- |
-void XmlElement::ClearNamedChildren(const QName& name) { |
- XmlChild* prev_child = NULL; |
- XmlChild* next_child; |
- XmlChild* child; |
- for (child = FirstChild(); child; child = next_child) { |
- next_child = child->NextChild(); |
- if (!child->IsText() && child->AsElement()->Name() == name) |
- { |
- RemoveChildAfter(prev_child); |
- continue; |
- } |
- prev_child = child; |
- } |
-} |
- |
-void XmlElement::ClearAttributes() { |
- XmlAttr* attr; |
- for (attr = first_attr_; attr; ) { |
- XmlAttr* to_delete = attr; |
- attr = attr->next_attr_; |
- delete to_delete; |
- } |
- first_attr_ = last_attr_ = NULL; |
-} |
- |
-void XmlElement::ClearChildren() { |
- XmlChild* pchild; |
- for (pchild = first_child_; pchild; ) { |
- XmlChild* to_delete = pchild; |
- pchild = pchild->next_child_; |
- delete to_delete; |
- } |
- first_child_ = last_child_ = NULL; |
-} |
- |
-std::string XmlElement::Str() const { |
- std::stringstream ss; |
- XmlPrinter::PrintXml(&ss, this); |
- return ss.str(); |
-} |
- |
-XmlElement* XmlElement::ForStr(const std::string& str) { |
- XmlBuilder builder; |
- XmlParser::ParseXml(&builder, str); |
- return builder.CreateElement(); |
-} |
- |
-XmlElement::~XmlElement() { |
- XmlAttr* attr; |
- for (attr = first_attr_; attr; ) { |
- XmlAttr* to_delete = attr; |
- attr = attr->next_attr_; |
- delete to_delete; |
- } |
- |
- XmlChild* pchild; |
- for (pchild = first_child_; pchild; ) { |
- XmlChild* to_delete = pchild; |
- pchild = pchild->next_child_; |
- delete to_delete; |
- } |
-} |
- |
-} // namespace buzz |