X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2FQName.cpp;h=d80d1a8747d20c091d4d62cf31b7f9fcc0c45ad8;hb=56a73c1c7b1e63f1ff1717b25a76ebd480594d5a;hp=2c958011ece7f86a13ba804671b3d333ec32000b;hpb=e963983abe628f963602015344ad8fd65e4fe406;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltooling/QName.cpp b/xmltooling/QName.cpp index 2c95801..d80d1a8 100644 --- a/xmltooling/QName.cpp +++ b/xmltooling/QName.cpp @@ -1,139 +1,146 @@ -/* - * Copyright 2001-2006 Internet2 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * QName.cpp - * - * Representing XML QNames - */ - -#include "internal.h" -#include "QName.h" - -using namespace xmltooling; -using namespace std; - -QName::QName(const XMLCh* uri, const XMLCh* localPart, const XMLCh* prefix) -{ -#ifndef HAVE_GOOD_STL - m_uri=m_prefix=m_local=NULL; -#endif - setNamespaceURI(uri); - setLocalPart(localPart); - setPrefix(prefix); -} - -QName::~QName() -{ -#ifndef HAVE_GOOD_STL - XMLString::release(&m_uri); - XMLString::release(&m_prefix); - XMLString::release(&m_local); -#endif -} - -void QName::setPrefix(const XMLCh* prefix) -{ -#ifdef HAVE_GOOD_STL - if (prefix) - m_prefix=prefix; - else - m_prefix.erase(); -#else - if (m_prefix) - XMLString::release(&m_prefix); - m_prefix=XMLString::replicate(prefix); -#endif -} - -void QName::setNamespaceURI(const XMLCh* uri) -{ -#ifdef HAVE_GOOD_STL - if (uri) - m_uri=uri; - else - m_uri.erase(); -#else - if (m_uri) - XMLString::release(&m_uri); - m_uri=XMLString::replicate(uri); -#endif -} - -void QName::setLocalPart(const XMLCh* localPart) -{ -#ifdef HAVE_GOOD_STL - if (localPart) - m_local=localPart; - else - m_local.erase(); -#else - if (m_local) - XMLString::release(&m_local); - m_local=XMLString::replicate(localPart); -#endif -} - -#ifndef HAVE_GOOD_STL -QName::QName(const QName& src) -{ - m_uri=XMLString::replicate(src.getNamespaceURI()); - m_prefix=XMLString::replicate(src.getPrefix()); - m_local=XMLString::replicate(src.getLocalPart()); -} - -QName& QName::operator=(const QName& src) -{ - m_uri=XMLString::replicate(src.getNamespaceURI()); - m_prefix=XMLString::replicate(src.getPrefix()); - m_local=XMLString::replicate(src.getLocalPart()); - return *this; -} -#endif - -bool xmltooling::operator==(const QName& op1, const QName& op2) -{ - return (!XMLString::compareString(op1.getNamespaceURI(),op2.getNamespaceURI()) && - !XMLString::compareString(op1.getLocalPart(),op2.getLocalPart())); -} - -bool xmltooling::operator<(const QName& op1, const QName& op2) -{ - int i=XMLString::compareString(op1.getNamespaceURI(),op2.getNamespaceURI()); - if (i<0) - return true; - else if (i==0) - return (XMLString::compareString(op1.getLocalPart(),op2.getLocalPart())<0); - else - return false; -} - -string QName::toString() const -{ - if (!hasLocalPart()) - return ""; - auto_ptr_char local(getLocalPart()); - if (hasPrefix()) { - auto_ptr_char pre(getPrefix()); - return string(pre.get()) + ':' + local.get(); - } - else if (hasNamespaceURI()) { - auto_ptr_char ns(getNamespaceURI()); - return string("{") + ns.get() + '}' + local.get(); - } - else - return local.get(); -} +/** + * Licensed to the University Corporation for Advanced Internet + * Development, Inc. (UCAID) under one or more contributor license + * agreements. See the NOTICE file distributed with this work for + * additional information regarding copyright ownership. + * + * UCAID licenses this file to you under the Apache License, + * Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the + * License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + */ + +/** + * QName.cpp + * + * Representing XML QNames + */ + +#include "internal.h" +#include "QName.h" + +using namespace xmltooling; +using namespace std; + +using xercesc::XMLString; + +QName::QName(const XMLCh* uri, const XMLCh* localPart, const XMLCh* prefix) +{ + setNamespaceURI(uri); + setLocalPart(localPart); + setPrefix(prefix); +} + +QName::QName(const char* uri, const char* localPart, const char* prefix) +{ + setNamespaceURI(uri); + setLocalPart(localPart); + setPrefix(prefix); +} + +QName::~QName() +{ +} + +void QName::setPrefix(const XMLCh* prefix) +{ + if (prefix) + m_prefix=prefix; + else + m_prefix.erase(); +} + +void QName::setNamespaceURI(const XMLCh* uri) +{ + if (uri) + m_uri=uri; + else + m_uri.erase(); +} + +void QName::setLocalPart(const XMLCh* localPart) +{ + if (localPart) + m_local=localPart; + else + m_local.erase(); +} + +void QName::setPrefix(const char* prefix) +{ + if (prefix) { + auto_ptr_XMLCh temp(prefix); + m_prefix=temp.get(); + } + else + m_prefix.erase(); +} + +void QName::setNamespaceURI(const char* uri) +{ + if (uri) { + auto_ptr_XMLCh temp(uri); + m_uri=temp.get(); + } + else + m_uri.erase(); +} + +void QName::setLocalPart(const char* localPart) +{ + if (localPart) { + auto_ptr_XMLCh temp(localPart); + m_local=temp.get(); + } + else + m_local.erase(); +} + +bool xmltooling::operator==(const QName& op1, const QName& op2) +{ + if (&op1 == &op2) + return true; + return (!XMLString::compareString(op1.getNamespaceURI(),op2.getNamespaceURI()) && + !XMLString::compareString(op1.getLocalPart(),op2.getLocalPart())); +} + +bool xmltooling::operator!=(const QName& op1, const QName& op2) +{ + return !(op1==op2); +} + +bool xmltooling::operator<(const QName& op1, const QName& op2) +{ + int i=XMLString::compareString(op1.getNamespaceURI(),op2.getNamespaceURI()); + if (i<0) + return true; + else if (i==0) + return (XMLString::compareString(op1.getLocalPart(),op2.getLocalPart())<0); + else + return false; +} + +string QName::toString() const +{ + if (!hasLocalPart()) + return ""; + auto_ptr_char local(getLocalPart()); + if (hasPrefix()) { + auto_ptr_char pre(getPrefix()); + return string(pre.get()) + ':' + local.get(); + } + else if (hasNamespaceURI()) { + auto_ptr_char ns(getNamespaceURI()); + return string("{") + ns.get() + '}' + local.get(); + } + else + return local.get(); +}