Index: webrtc/libjingle/xmllite/qname.cc |
diff --git a/webrtc/libjingle/xmllite/qname.cc b/webrtc/libjingle/xmllite/qname.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6abde32186050aed0f03f4c4f56a6d1d756857cd |
--- /dev/null |
+++ b/webrtc/libjingle/xmllite/qname.cc |
@@ -0,0 +1,78 @@ |
+/* |
+ * 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/qname.h" |
+ |
+namespace buzz { |
+ |
+QName::QName() { |
+} |
+ |
+QName::QName(const QName& qname) |
+ : namespace_(qname.namespace_), |
+ local_part_(qname.local_part_) { |
+} |
+ |
+QName::QName(const StaticQName& const_value) |
+ : namespace_(const_value.ns), |
+ local_part_(const_value.local) { |
+} |
+ |
+QName::QName(const std::string& ns, const std::string& local) |
+ : namespace_(ns), |
+ local_part_(local) { |
+} |
+ |
+QName::QName(const std::string& merged_or_local) { |
+ size_t i = merged_or_local.rfind(':'); |
+ if (i == std::string::npos) { |
+ local_part_ = merged_or_local; |
+ } else { |
+ namespace_ = merged_or_local.substr(0, i); |
+ local_part_ = merged_or_local.substr(i + 1); |
+ } |
+} |
+ |
+QName::~QName() { |
+} |
+ |
+std::string QName::Merged() const { |
+ if (namespace_[0] == '\0') |
+ return local_part_; |
+ |
+ std::string result; |
+ result.reserve(namespace_.length() + 1 + local_part_.length()); |
+ result += namespace_; |
+ result += ':'; |
+ result += local_part_; |
+ return result; |
+} |
+ |
+bool QName::IsEmpty() const { |
+ return namespace_.empty() && local_part_.empty(); |
+} |
+ |
+int QName::Compare(const StaticQName& other) const { |
+ int result = local_part_.compare(other.local); |
+ if (result != 0) |
+ return result; |
+ |
+ return namespace_.compare(other.ns); |
+} |
+ |
+int QName::Compare(const QName& other) const { |
+ int result = local_part_.compare(other.local_part_); |
+ if (result != 0) |
+ return result; |
+ |
+ return namespace_.compare(other.namespace_); |
+} |
+ |
+} // namespace buzz |