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