2 * Copyright 2001-2009 Internet2
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 * @file xmltooling/Namespace.h
20 * Representing XML namespace attributes
23 #if !defined(__xmltooling_namespace_h__)
24 #define __xmltooling_namespace_h__
26 #include <xmltooling/unicode.h>
28 namespace xmltooling {
30 #if defined (_MSC_VER)
31 #pragma warning( push )
32 #pragma warning( disable : 4251 )
36 * A data structure for encapsulating XML Namespace attributes
38 class XMLTOOL_API Namespace
43 * @param uri namespace URI
44 * @param prefix namespace prefix (without the colon)
45 * @param alwaysDeclare true iff the namespace should always be declared regardless of in-scope declarations
47 Namespace(const XMLCh* uri=NULL, const XMLCh* prefix=NULL, bool alwaysDeclare=false);
52 * Returns the namespace prefix
53 * @return Null-terminated Unicode string containing the prefix, without the colon
55 const XMLCh* getNamespacePrefix() const { return m_prefix.c_str(); }
58 * Returns the namespace URI
59 * @return Null-terminated Unicode string containing the URI
61 const XMLCh* getNamespaceURI() const { return m_uri.c_str(); }
64 * Returns true iff the namespace should always be declared regardless of in-scope declarations
65 * @return the alwaysDeclared setting
67 const bool alwaysDeclare() const { return m_pinned; }
70 * Sets the namespace prefix
71 * @param prefix Null-terminated Unicode string containing the prefix, without the colon
73 void setNamespacePrefix(const XMLCh* prefix);
76 * Sets the namespace URI
77 * @param uri Null-terminated Unicode string containing the URI
79 void setNamespaceURI(const XMLCh* uri);
82 * Sets the alwaysDeclared property
83 * @param alwaysDeclare true iff the namespace should always be declared regardless of in-scope declarations
85 void setAlwaysDeclare(bool alwaysDeclare) { m_pinned = alwaysDeclare; }
93 #if defined (_MSC_VER)
94 #pragma warning( pop )
98 * Returns true iff op1's namespace lexically compares less than op2's namespace,
99 * or if equal, iff op1's prefix lexically compares less than op2's prefix.
101 * Needed for use with sorted STL containers.
103 * @param op1 First namspace to compare
104 * @param op2 Second namespace to compare
106 extern XMLTOOL_API bool operator<(const Namespace& op1, const Namespace& op2);
109 * Returns true iff op1's namespace and prefix are equal to op2's namespace and prefix.
110 * @param op1 First namspace to compare
111 * @param op2 Second namespace to compare
113 extern XMLTOOL_API bool operator==(const Namespace& op1, const Namespace& op2);
117 #endif /* __xmltooling_namespace_h__ */