--- /dev/null
+/*\r
+ * Copyright 2001-2006 Internet2\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ */\r
+\r
+/**\r
+ * @file QName.cpp\r
+ * \r
+ * Representing XML QNames \r
+ */\r
+\r
+#include "internal.h"\r
+#include "QName.h"\r
+\r
+using namespace xmltooling;\r
+\r
+QName::QName(const XMLCh* uri, const XMLCh* localPart, const XMLCh* prefix)\r
+{\r
+#ifndef HAVE_GOOD_STL\r
+ m_uri=m_prefix=m_local=NULL;\r
+#endif\r
+ setNamespaceURI(uri);\r
+ setLocalPart(localPart);\r
+ setPrefix(prefix);\r
+}\r
+\r
+QName::~QName()\r
+{\r
+#ifndef HAVE_GOOD_STL\r
+ XMLString::release(&m_uri);\r
+ XMLString::release(&m_prefix);\r
+ XMLString::release(&m_local);\r
+#endif\r
+}\r
+\r
+void QName::setPrefix(const XMLCh* prefix)\r
+{\r
+#ifdef HAVE_GOOD_STL\r
+ if (prefix)\r
+ m_prefix=prefix;\r
+ else\r
+ m_prefix.erase();\r
+#else\r
+ if (m_prefix)\r
+ XMLString::release(&m_prefix);\r
+ m_prefix=XMLString::replicate(prefix);\r
+#endif\r
+}\r
+\r
+void QName::setNamespaceURI(const XMLCh* uri)\r
+{\r
+#ifdef HAVE_GOOD_STL\r
+ if (uri)\r
+ m_uri=uri;\r
+ else\r
+ m_uri.erase();\r
+#else\r
+ if (m_uri)\r
+ XMLString::release(&m_uri);\r
+ m_uri=XMLString::replicate(uri);\r
+#endif\r
+}\r
+\r
+void QName::setLocalPart(const XMLCh* localPart)\r
+{\r
+#ifdef HAVE_GOOD_STL\r
+ if (localPart)\r
+ m_local=localPart;\r
+ else\r
+ m_local.erase();\r
+#else\r
+ if (m_local)\r
+ XMLString::release(&m_local);\r
+ m_local=XMLString::replicate(localPart);\r
+#endif\r
+}\r
+\r
+#ifndef HAVE_GOOD_STL\r
+QName::QName(const QName& src)\r
+{\r
+ m_uri=XMLString::replicate(src.getNamespaceURI());\r
+ m_prefix=XMLString::replicate(src.getPrefix());\r
+ m_local=XMLString::replicate(src.getLocalPart());\r
+}\r
+\r
+QName& QName::operator=(const QName& src)\r
+{\r
+ m_uri=XMLString::replicate(src.getNamespaceURI());\r
+ m_prefix=XMLString::replicate(src.getPrefix());\r
+ m_local=XMLString::replicate(src.getLocalPart());\r
+ return *this;\r
+}\r
+\r
+bool xmltooling::operator==(const QName& op1, const QName& op2)\r
+{\r
+ return (!XMLString::compareString(op1.getNamespaceURI(),op2.getNamespaceURI()) &&\r
+ !XMLString::compareString(op1.getLocalPart(),op2.getLocalPart()));\r
+}\r
+#endif\r
+\r
+bool xmltooling::operator<(const QName& op1, const QName& op2)\r
+{\r
+ int i=XMLString::compareString(op1.getNamespaceURI(),op2.getNamespaceURI());\r
+ if (i<0)\r
+ return true;\r
+ else if (i==0)\r
+ return (XMLString::compareString(op1.getLocalPart(),op2.getLocalPart())<0);\r
+ else\r
+ return false;\r
+}\r