1 /* 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. 3 * 4 * Use of this source code is governed by a BSD-style license 5 * that can be found in the LICENSE file in the root of the source 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #include "webrtc/libjingle/xmllite/qname.h" 12 13 namespace buzz { 14 QName()15QName::QName() { 16 } 17 QName(const QName & qname)18QName::QName(const QName& qname) 19 : namespace_(qname.namespace_), 20 local_part_(qname.local_part_) { 21 } 22 QName(const StaticQName & const_value)23QName::QName(const StaticQName& const_value) 24 : namespace_(const_value.ns), 25 local_part_(const_value.local) { 26 } 27 QName(const std::string & ns,const std::string & local)28QName::QName(const std::string& ns, const std::string& local) 29 : namespace_(ns), 30 local_part_(local) { 31 } 32 QName(const std::string & merged_or_local)33QName::QName(const std::string& merged_or_local) { 34 size_t i = merged_or_local.rfind(':'); 35 if (i == std::string::npos) { 36 local_part_ = merged_or_local; 37 } else { 38 namespace_ = merged_or_local.substr(0, i); 39 local_part_ = merged_or_local.substr(i + 1); 40 } 41 } 42 ~QName()43QName::~QName() { 44 } 45 Merged() const46std::string QName::Merged() const { 47 if (namespace_[0] == '\0') 48 return local_part_; 49 50 std::string result; 51 result.reserve(namespace_.length() + 1 + local_part_.length()); 52 result += namespace_; 53 result += ':'; 54 result += local_part_; 55 return result; 56 } 57 IsEmpty() const58bool QName::IsEmpty() const { 59 return namespace_.empty() && local_part_.empty(); 60 } 61 Compare(const StaticQName & other) const62int QName::Compare(const StaticQName& other) const { 63 int result = local_part_.compare(other.local); 64 if (result != 0) 65 return result; 66 67 return namespace_.compare(other.ns); 68 } 69 Compare(const QName & other) const70int QName::Compare(const QName& other) const { 71 int result = local_part_.compare(other.local_part_); 72 if (result != 0) 73 return result; 74 75 return namespace_.compare(other.namespace_); 76 } 77 78 } // namespace buzz 79