ae388db7b4dcdaa90c3096a877ed7748cd7f25f2
[shibboleth/cpp-xmltooling.git] / xmltooling / Namespace.cpp
1 /*
2  *  Copyright 2001-2010 Internet2
3  * 
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 /**
18  * Namespace.cpp
19  * 
20  * Representing XML namespace attributes.
21  */
22
23 #include "internal.h"
24 #include "Namespace.h"
25
26 using namespace xmltooling;
27
28 using xercesc::XMLString;
29
30 Namespace::Namespace(const XMLCh* uri, const XMLCh* prefix, bool alwaysDeclare, namespace_usage_t usage)
31     : m_pinned(alwaysDeclare), m_usage(usage)
32 {
33     setNamespaceURI(uri);
34     setNamespacePrefix(prefix);
35 }
36
37 Namespace::~Namespace()
38 {
39 }
40
41 void Namespace::setNamespacePrefix(const XMLCh* prefix)
42 {
43     if (prefix)
44         m_prefix=prefix;
45     else
46         m_prefix.erase();
47 }
48
49 void Namespace::setNamespaceURI(const XMLCh* uri)
50 {
51     if (uri)
52         m_uri=uri;
53     else
54         m_uri.erase();
55 }
56
57 bool xmltooling::operator<(const Namespace& op1, const Namespace& op2)
58 {
59     int i=XMLString::compareString(op1.getNamespaceURI(),op2.getNamespaceURI());
60     if (i<0)
61         return true;
62     else if (i==0)
63         return (XMLString::compareString(op1.getNamespacePrefix(),op2.getNamespacePrefix())<0);
64     else
65         return false;
66 }
67
68 bool xmltooling::operator==(const Namespace& op1, const Namespace& op2)
69 {
70     return (XMLString::equals(op1.getNamespacePrefix(), op2.getNamespacePrefix()) &&
71             XMLString::equals(op1.getNamespaceURI(), op2.getNamespaceURI()));
72 }