2 * Copyright 2001-2006 Internet2
\r
4 * Licensed under the Apache License, Version 2.0 (the "License");
\r
5 * you may not use this file except in compliance with the License.
\r
6 * You may obtain a copy of the License at
\r
8 * http://www.apache.org/licenses/LICENSE-2.0
\r
10 * Unless required by applicable law or agreed to in writing, software
\r
11 * distributed under the License is distributed on an "AS IS" BASIS,
\r
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
13 * See the License for the specific language governing permissions and
\r
14 * limitations under the License.
\r
20 * Representing XML QNames
\r
23 #include "internal.h"
\r
26 using namespace xmltooling;
\r
27 using namespace std;
\r
29 QName::QName(const XMLCh* uri, const XMLCh* localPart, const XMLCh* prefix)
\r
31 #ifndef HAVE_GOOD_STL
\r
32 m_uri=m_prefix=m_local=NULL;
\r
34 setNamespaceURI(uri);
\r
35 setLocalPart(localPart);
\r
41 #ifndef HAVE_GOOD_STL
\r
42 XMLString::release(&m_uri);
\r
43 XMLString::release(&m_prefix);
\r
44 XMLString::release(&m_local);
\r
48 void QName::setPrefix(const XMLCh* prefix)
\r
50 #ifdef HAVE_GOOD_STL
\r
57 XMLString::release(&m_prefix);
\r
58 m_prefix=XMLString::replicate(prefix);
\r
62 void QName::setNamespaceURI(const XMLCh* uri)
\r
64 #ifdef HAVE_GOOD_STL
\r
71 XMLString::release(&m_uri);
\r
72 m_uri=XMLString::replicate(uri);
\r
76 void QName::setLocalPart(const XMLCh* localPart)
\r
78 #ifdef HAVE_GOOD_STL
\r
85 XMLString::release(&m_local);
\r
86 m_local=XMLString::replicate(localPart);
\r
90 #ifndef HAVE_GOOD_STL
\r
91 QName::QName(const QName& src)
\r
93 m_uri=XMLString::replicate(src.getNamespaceURI());
\r
94 m_prefix=XMLString::replicate(src.getPrefix());
\r
95 m_local=XMLString::replicate(src.getLocalPart());
\r
98 QName& QName::operator=(const QName& src)
\r
100 m_uri=XMLString::replicate(src.getNamespaceURI());
\r
101 m_prefix=XMLString::replicate(src.getPrefix());
\r
102 m_local=XMLString::replicate(src.getLocalPart());
\r
107 bool xmltooling::operator==(const QName& op1, const QName& op2)
\r
109 return (!XMLString::compareString(op1.getNamespaceURI(),op2.getNamespaceURI()) &&
\r
110 !XMLString::compareString(op1.getLocalPart(),op2.getLocalPart()));
\r
113 bool xmltooling::operator!=(const QName& op1, const QName& op2)
\r
115 return !(op1==op2);
\r
118 bool xmltooling::operator<(const QName& op1, const QName& op2)
\r
120 int i=XMLString::compareString(op1.getNamespaceURI(),op2.getNamespaceURI());
\r
124 return (XMLString::compareString(op1.getLocalPart(),op2.getLocalPart())<0);
\r
129 string QName::toString() const
\r
131 if (!hasLocalPart())
\r
133 auto_ptr_char local(getLocalPart());
\r
135 auto_ptr_char pre(getPrefix());
\r
136 return string(pre.get()) + ':' + local.get();
\r
138 else if (hasNamespaceURI()) {
\r
139 auto_ptr_char ns(getNamespaceURI());
\r
140 return string("{") + ns.get() + '}' + local.get();
\r
143 return local.get();
\r