summaryrefslogtreecommitdiffstats
path: root/third_party/libjingle/overrides/talk/xmllite/qname.cc
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libjingle/overrides/talk/xmllite/qname.cc')
-rw-r--r--third_party/libjingle/overrides/talk/xmllite/qname.cc65
1 files changed, 65 insertions, 0 deletions
diff --git a/third_party/libjingle/overrides/talk/xmllite/qname.cc b/third_party/libjingle/overrides/talk/xmllite/qname.cc
new file mode 100644
index 0000000..5c9e62d
--- /dev/null
+++ b/third_party/libjingle/overrides/talk/xmllite/qname.cc
@@ -0,0 +1,65 @@
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "talk/xmllite/qname.h"
+
+#include "talk/base/common.h"
+#include "talk/xmllite/xmlelement.h"
+#include "talk/xmllite/xmlconstants.h"
+
+namespace buzz {
+
+QName::QName() : namespace_(QN_EMPTY.namespace_),
+ local_part_(QN_EMPTY.local_part_) {}
+
+QName::QName(const std::string & ns, const std::string & local) :
+ namespace_(ns), local_part_(local) {}
+
+QName::QName(bool add, const std::string & ns, const std::string & local) :
+ namespace_(ns), local_part_(local) {}
+
+static std::string
+QName_LocalPart(const std::string & name) {
+ size_t i = name.rfind(':');
+ if (i == std::string::npos)
+ return name;
+ return name.substr(i + 1);
+}
+
+static std::string
+QName_Namespace(const std::string & name) {
+ size_t i = name.rfind(':');
+ if (i == std::string::npos)
+ return STR_EMPTY;
+ return name.substr(0, i);
+}
+
+QName::QName(const std::string & mergedOrLocal) :
+ namespace_(QName_Namespace(mergedOrLocal)),
+ local_part_(QName_LocalPart(mergedOrLocal)) {}
+
+std::string
+QName::Merged() const {
+ if (namespace_ == STR_EMPTY)
+ return local_part_;
+ return namespace_ + ':' + local_part_;
+}
+
+bool
+QName::operator==(const QName & other) const {
+ return
+ local_part_ == other.local_part_ &&
+ namespace_ == other.namespace_;
+}
+
+int
+QName::Compare(const QName & other) const {
+ int result = local_part_.compare(other.local_part_);
+ if (result)
+ return result;
+
+ return namespace_.compare(other.namespace_);
+}
+
+} // namespace buzz