X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2FQName.h;h=02ce2100fca308f7c3de328a19ddfc57b365d76d;hb=faaf2a9a49c38235306e11019f3edca1a7718fc8;hp=296a58ac777b1ac40afa7afcb33ea8f974ccbf23;hpb=f37cfd9ac949d9e61b39b3a39251c9f151e24ff0;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltooling/QName.h b/xmltooling/QName.h index 296a58a..02ce210 100644 --- a/xmltooling/QName.h +++ b/xmltooling/QName.h @@ -1,21 +1,25 @@ -/* - * 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 +/** + * 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. * - * http://www.apache.org/licenses/LICENSE-2.0 + * 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 * - * 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. + * 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. */ /** - * @file QName.h + * @file xmltooling/QName.h * * Representing XML QNames */ @@ -27,7 +31,12 @@ #include namespace xmltooling { - + +#if defined (_MSC_VER) + #pragma warning( push ) + #pragma warning( disable : 4251 ) +#endif + /** * A data structure for encapsulating XML QNames. * The Xerces class is too limited to use at the moment. @@ -37,26 +46,24 @@ namespace xmltooling { public: /** * Constructor + * * @param uri namespace URI * @param localPart local name * @param prefix namespace prefix (without the colon) */ - QName(const XMLCh* uri=NULL, const XMLCh* localPart=NULL, const XMLCh* prefix=NULL); - - ~QName(); -#ifndef HAVE_GOOD_STL - /** - * Deep copy constructor - */ - QName(const QName& src); + QName(const XMLCh* uri=nullptr, const XMLCh* localPart=nullptr, const XMLCh* prefix=nullptr); /** - * Deep assignment operator + * Constructor + * + * @param uri namespace URI + * @param localPart local name + * @param prefix namespace prefix (without the colon) */ - QName& operator=(const QName& src); -#endif + QName(const char* uri, const char* localPart, const char* prefix=nullptr); + + ~QName(); -#ifdef HAVE_GOOD_STL /** * Indicates whether the QName has a prefix. * @return true iff the prefix is non-empty @@ -92,61 +99,42 @@ namespace xmltooling { * @return Null-terminated Unicode string containing the local name */ const XMLCh* getLocalPart() const { return m_local.c_str(); } -#else - /** - * Indicates whether the QName has a prefix. - * @return true iff the prefix is non-empty - */ - bool hasPrefix() const { return m_prefix && *m_prefix; } - - /** - * Indicates whether the QName has a non-empty namespace. - * @return true iff the namespace is non-empty - */ - bool hasNamespaceURI() const { return m_uri && *m_uri; } - - /** - * Indicates whether the QName has a non-empty local name. - * @return true iff the local name is non-empty - */ - bool hasLocalPart() const { return m_local && *m_local; } /** - * Returns the namespace prefix - * @return Null-terminated Unicode string containing the prefix, without the colon + * Sets the namespace prefix + * @param prefix Null-terminated Unicode string containing the prefix, without the colon */ - const XMLCh* getPrefix() const { return m_prefix; } + void setPrefix(const XMLCh* prefix); /** - * Returns the namespace URI - * @return Null-terminated Unicode string containing the URI + * Sets the namespace URI + * @param uri Null-terminated Unicode string containing the URI */ - const XMLCh* getNamespaceURI() const { return m_uri; } - + void setNamespaceURI(const XMLCh* uri); + /** - * Returns the local part of the name - * @return Null-terminated Unicode string containing the local name + * Sets the local part of the name + * @param localPart Null-terminated Unicode string containing the local name */ - const XMLCh* getLocalPart() const { return m_local; } -#endif - + void setLocalPart(const XMLCh* localPart); + /** * Sets the namespace prefix - * @param prefix Null-terminated Unicode string containing the prefix, without the colon + * @param prefix Null-terminated ASCII string containing the prefix, without the colon */ - void setPrefix(const XMLCh* prefix); + void setPrefix(const char* prefix); /** * Sets the namespace URI - * @param uri Null-terminated Unicode string containing the URI + * @param uri Null-terminated ASCII string containing the URI */ - void setNamespaceURI(const XMLCh* uri); + void setNamespaceURI(const char* uri); /** * Sets the local part of the name - * @param localPart Null-terminated Unicode string containing the local name + * @param localPart Null-terminated ASCII string containing the local name */ - void setLocalPart(const XMLCh* localPart); + void setLocalPart(const char* localPart); /** * Gets a string representation of the QName for logging, etc. @@ -157,17 +145,15 @@ namespace xmltooling { std::string toString() const; private: -#ifdef HAVE_GOOD_STL xstring m_uri; xstring m_local; xstring m_prefix; -#else - XMLCh* m_uri; - XMLCh* m_local; - XMLCh* m_prefix; -#endif }; +#if defined (_MSC_VER) + #pragma warning( pop ) +#endif + /** * Returns true iff op1's namespace lexically compares less than op2's namespace, * or if equal, iff op1's prefix lexically compares less than op2's prefix.