\r
#include <xmltooling/XMLObject.h>\r
\r
-#pragma warning( push )\r
-#pragma warning( disable : 4250 4251 )\r
+#if defined (_MSC_VER)\r
+ #pragma warning( push )\r
+ #pragma warning( disable : 4250 4251 )\r
+#endif\r
\r
namespace xmltooling {\r
\r
* @see XMLObject::addNamespace()\r
*/\r
void addNamespace(const Namespace& ns) {\r
- m_namespaces.insert(ns);\r
+ if (ns.alwaysDeclare() || m_namespaces.find(ns)==m_namespaces.end()) {\r
+ m_namespaces.insert(ns);\r
+ }\r
}\r
\r
/**\r
* @param namespaceURI the namespace the element is in\r
* @param elementLocalName the local name of the XML element this Object represents\r
*/\r
- explicit AbstractXMLObject(const XMLCh* namespaceURI, const XMLCh* elementLocalName)\r
- : m_elementQname(namespaceURI,elementLocalName), m_typeQname(NULL), m_parent(NULL) {}\r
+ AbstractXMLObject(const XMLCh* namespaceURI=NULL, const XMLCh* elementLocalName=NULL, const XMLCh* namespacePrefix=NULL)\r
+ : m_elementQname(namespaceURI,elementLocalName, namespacePrefix), m_typeQname(NULL), m_parent(NULL) {\r
+ addNamespace(Namespace(namespaceURI, namespacePrefix));\r
+ }\r
\r
private:\r
XMLObject* m_parent;\r
\r
};\r
\r
-#pragma warning( pop )\r
+#if defined (_MSC_VER)\r
+ #pragma warning( pop )\r
+#endif\r
\r
#endif /* __xmltooling_abstractxmlobj_h__ */\r