X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2FAbstractXMLObject.cpp;h=4ba5d7c48a7483736a3c19ec4d0c4023865b7c7c;hb=4fd97a9fce699269ef44adf0ff64985742cd8d10;hp=33f6cd5f1c59b0c1fa1bccd6aa0338615a53423c;hpb=81b488b2790e7bdeb2f43560b1d4a7d22c3dfdf5;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltooling/AbstractXMLObject.cpp b/xmltooling/AbstractXMLObject.cpp index 33f6cd5..4ba5d7c 100644 --- a/xmltooling/AbstractXMLObject.cpp +++ b/xmltooling/AbstractXMLObject.cpp @@ -56,14 +56,44 @@ void XMLObject::releaseThisAndChildrenDOM() const releaseDOM(); } +const XMLCh* XMLObject::getLang() const +{ + return nullptr; +} + +void XMLObject::setNil(const XMLCh* value) +{ + if (value) { + switch (*value) { + case xercesc::chLatin_t: + nil(xmlconstants::XML_BOOL_TRUE); + break; + case xercesc::chLatin_f: + nil(xmlconstants::XML_BOOL_FALSE); + break; + case xercesc::chDigit_1: + nil(xmlconstants::XML_BOOL_ONE); + break; + case xercesc::chDigit_0: + nil(xmlconstants::XML_BOOL_ZERO); + break; + default: + nil(xmlconstants::XML_BOOL_NULL); + } + } + else { + nil(xmlconstants::XML_BOOL_NULL); + } +} + AbstractXMLObject::AbstractXMLObject(const XMLCh* nsURI, const XMLCh* localName, const XMLCh* prefix, const QName* schemaType) : m_log(logging::Category::getInstance(XMLTOOLING_LOGCAT".XMLObject")), m_schemaLocation(nullptr), m_noNamespaceSchemaLocation(nullptr), m_nil(xmlconstants::XML_BOOL_NULL), - m_parent(nullptr), m_elementQname(nsURI, localName, prefix), m_typeQname(nullptr) + m_parent(nullptr), m_elementQname(nsURI, localName, prefix) { addNamespace(Namespace(nsURI, prefix, false, Namespace::VisiblyUsed)); if (schemaType) { - m_typeQname = new QName(*schemaType); + m_typeQname.reset(new QName(*schemaType)); addNamespace(Namespace(m_typeQname->getNamespaceURI(), m_typeQname->getPrefix(), false, Namespace::NonVisiblyUsed)); } } @@ -71,15 +101,13 @@ AbstractXMLObject::AbstractXMLObject(const XMLCh* nsURI, const XMLCh* localName, AbstractXMLObject::AbstractXMLObject(const AbstractXMLObject& src) : m_namespaces(src.m_namespaces), m_log(src.m_log), m_schemaLocation(XMLString::replicate(src.m_schemaLocation)), m_noNamespaceSchemaLocation(XMLString::replicate(src.m_noNamespaceSchemaLocation)), m_nil(src.m_nil), - m_parent(nullptr), m_elementQname(src.m_elementQname), m_typeQname(nullptr) + m_parent(nullptr), m_elementQname(src.m_elementQname), + m_typeQname(src.m_typeQname.get() ? new QName(*src.m_typeQname) : nullptr) { - if (src.m_typeQname) - m_typeQname=new QName(*src.m_typeQname); } AbstractXMLObject::~AbstractXMLObject() { - delete m_typeQname; xercesc::XMLString::release(&m_schemaLocation); xercesc::XMLString::release(&m_noNamespaceSchemaLocation); } @@ -107,31 +135,6 @@ const set& AbstractXMLObject::getNamespaces() const return m_namespaces; } -void XMLObject::setNil(const XMLCh* value) -{ - if (value) { - switch (*value) { - case xercesc::chLatin_t: - nil(xmlconstants::XML_BOOL_TRUE); - break; - case xercesc::chLatin_f: - nil(xmlconstants::XML_BOOL_FALSE); - break; - case xercesc::chDigit_1: - nil(xmlconstants::XML_BOOL_ONE); - break; - case xercesc::chDigit_0: - nil(xmlconstants::XML_BOOL_ZERO); - break; - default: - nil(xmlconstants::XML_BOOL_NULL); - } - } - else { - nil(xmlconstants::XML_BOOL_NULL); - } -} - void AbstractXMLObject::addNamespace(const Namespace& ns) const { for (set::const_iterator n = m_namespaces.begin(); n != m_namespaces.end(); ++n) { @@ -168,7 +171,7 @@ void AbstractXMLObject::removeNamespace(const Namespace& ns) const QName* AbstractXMLObject::getSchemaType() const { - return m_typeQname; + return m_typeQname.get(); } const XMLCh* AbstractXMLObject::getXMLID() const