diff options
Diffstat (limited to 'third_party/libjingle/overrides/talk/xmllite/qname.cc')
-rw-r--r-- | third_party/libjingle/overrides/talk/xmllite/qname.cc | 65 |
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 |