148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org/* 248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org * Copyright 2004 The WebRTC Project Authors. All rights reserved. 348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org * 448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org * Use of this source code is governed by a BSD-style license 548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org * that can be found in the LICENSE file in the root of the source 648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org * tree. An additional intellectual property rights grant can be found 748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org * in the file PATENTS. All contributing project authors may 848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org * be found in the AUTHORS file in the root of the source tree. 948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org */ 1048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org 1148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org#include "webrtc/libjingle/xmllite/qname.h" 1248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org 1348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgnamespace buzz { 1448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org 1548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgQName::QName() { 1648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org} 1748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org 1848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgQName::QName(const QName& qname) 1948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org : namespace_(qname.namespace_), 2048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org local_part_(qname.local_part_) { 2148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org} 2248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org 2348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgQName::QName(const StaticQName& const_value) 2448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org : namespace_(const_value.ns), 2548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org local_part_(const_value.local) { 2648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org} 2748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org 2848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgQName::QName(const std::string& ns, const std::string& local) 2948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org : namespace_(ns), 3048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org local_part_(local) { 3148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org} 3248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org 3348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgQName::QName(const std::string& merged_or_local) { 3448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org size_t i = merged_or_local.rfind(':'); 3548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org if (i == std::string::npos) { 3648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org local_part_ = merged_or_local; 3748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org } else { 3848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org namespace_ = merged_or_local.substr(0, i); 3948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org local_part_ = merged_or_local.substr(i + 1); 4048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org } 4148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org} 4248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org 4348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgQName::~QName() { 4448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org} 4548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org 4648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgstd::string QName::Merged() const { 4748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org if (namespace_[0] == '\0') 4848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org return local_part_; 4948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org 5048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org std::string result; 5148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org result.reserve(namespace_.length() + 1 + local_part_.length()); 5248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org result += namespace_; 5348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org result += ':'; 5448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org result += local_part_; 5548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org return result; 5648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org} 5748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org 5848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgbool QName::IsEmpty() const { 5948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org return namespace_.empty() && local_part_.empty(); 6048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org} 6148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org 6248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgint QName::Compare(const StaticQName& other) const { 6348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org int result = local_part_.compare(other.local); 6448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org if (result != 0) 6548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org return result; 6648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org 6748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org return namespace_.compare(other.ns); 6848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org} 6948a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org 7048a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.orgint QName::Compare(const QName& other) const { 7148a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org int result = local_part_.compare(other.local_part_); 7248a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org if (result != 0) 7348a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org return result; 7448a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org 7548a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org return namespace_.compare(other.namespace_); 7648a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org} 7748a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org 7848a7b2e84057589be933b5182cded67c9885f8e8henrike@webrtc.org} // namespace buzz 79