Initial unit test plus fixes
[shibboleth/cpp-xmltooling.git] / xmltooling / QName.cpp
index b087246..2c95801 100644 (file)
@@ -24,6 +24,7 @@
 #include "QName.h"\r
 \r
 using namespace xmltooling;\r
+using namespace std;\r
 \r
 QName::QName(const XMLCh* uri, const XMLCh* localPart, const XMLCh* prefix)\r
 {\r
@@ -101,13 +102,13 @@ QName& QName::operator=(const QName& src)
     m_local=XMLString::replicate(src.getLocalPart());\r
     return *this;\r
 }\r
+#endif\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
@@ -119,3 +120,20 @@ bool xmltooling::operator<(const QName& op1, const QName& op2)
     else\r
         return false;\r
 }\r
+\r
+string QName::toString() const\r
+{\r
+    if (!hasLocalPart())\r
+        return "";\r
+    auto_ptr_char local(getLocalPart());\r
+    if (hasPrefix()) {\r
+        auto_ptr_char pre(getPrefix());\r
+        return string(pre.get()) + ':' + local.get(); \r
+    }\r
+    else if (hasNamespaceURI()) {\r
+        auto_ptr_char ns(getNamespaceURI());\r
+        return string("{") + ns.get() + '}' + local.get(); \r
+    }\r
+    else\r
+        return local.get();\r
+}\r