summaryrefslogtreecommitdiff
path: root/libxsd/xsd/cxx/xml
diff options
context:
space:
mode:
Diffstat (limited to 'libxsd/xsd/cxx/xml')
-rw-r--r--libxsd/xsd/cxx/xml/char-utf8.txx16
-rw-r--r--libxsd/xsd/cxx/xml/dom/auto-ptr.hxx3
-rw-r--r--libxsd/xsd/cxx/xml/dom/parsing-source.hxx1
-rw-r--r--libxsd/xsd/cxx/xml/dom/parsing-source.txx36
-rw-r--r--libxsd/xsd/cxx/xml/dom/serialization-header.txx4
-rw-r--r--libxsd/xsd/cxx/xml/dom/serialization-source.txx33
6 files changed, 59 insertions, 34 deletions
diff --git a/libxsd/xsd/cxx/xml/char-utf8.txx b/libxsd/xsd/cxx/xml/char-utf8.txx
index ba65397..76bba86 100644
--- a/libxsd/xsd/cxx/xml/char-utf8.txx
+++ b/libxsd/xsd/cxx/xml/char-utf8.txx
@@ -115,20 +115,24 @@ namespace xsd
rs[i + 3] = C ((u | 0x80UL) & 0xBFUL);
u >>= 6;
}
+ // Fall through.
case 3:
{
rs[i + 2] = C ((u | 0x80UL) & 0xBFUL);
u >>= 6;
}
+ // Fall through.
case 2:
{
rs[i + 1] = C ((u | 0x80UL) & 0xBFUL);
u >>= 6;
}
+ // Fall through.
case 1:
{
rs[i] = C (u | first_byte_mask_[count]);
}
+ // Fall through.
}
i += count;
@@ -216,7 +220,7 @@ namespace xsd
//
u = (c & 0x1F) << 6;
- c = *++p;
+ c = static_cast<unsigned char> (*++p);
if ((c >> 6) != 2)
{
valid = false;
@@ -231,7 +235,7 @@ namespace xsd
//
u = (c & 0x0F) << 6;
- c = *++p;
+ c = static_cast<unsigned char> (*++p);
if ((c >> 6) != 2)
{
valid = false;
@@ -239,7 +243,7 @@ namespace xsd
}
u = (u | (c & 0x3F)) << 6;
- c = *++p;
+ c = static_cast<unsigned char> (*++p);
if ((c >> 6) != 2)
{
valid = false;
@@ -254,7 +258,7 @@ namespace xsd
//
u = (c & 0x07) << 6;
- c = *++p;
+ c = static_cast<unsigned char> (*++p);
if ((c >> 6) != 2)
{
valid = false;
@@ -262,7 +266,7 @@ namespace xsd
}
u = (u | (c & 0x3F)) << 6;
- c = *++p;
+ c = static_cast<unsigned char> (*++p);
if ((c >> 6) != 2)
{
valid = false;
@@ -270,7 +274,7 @@ namespace xsd
}
u = (u | (c & 0x3F)) << 6;
- c = *++p;
+ c = static_cast<unsigned char> (*++p);
if ((c >> 6) != 2)
{
valid = false;
diff --git a/libxsd/xsd/cxx/xml/dom/auto-ptr.hxx b/libxsd/xsd/cxx/xml/dom/auto-ptr.hxx
index 97c9399..256f824 100644
--- a/libxsd/xsd/cxx/xml/dom/auto-ptr.hxx
+++ b/libxsd/xsd/cxx/xml/dom/auto-ptr.hxx
@@ -53,8 +53,11 @@ namespace xsd
unique_ptr (unique_ptr&& p): base (std::move (p)) {}
template <class T1>
unique_ptr (unique_ptr<T1>&& p): base (std::move (p)) {}
+
+#if !defined(__cplusplus) || __cplusplus < 201703L
template <class T1>
unique_ptr (std::auto_ptr<T1>&& p): base (std::move (p)) {}
+#endif
unique_ptr& operator= (unique_ptr&& p)
{
diff --git a/libxsd/xsd/cxx/xml/dom/parsing-source.hxx b/libxsd/xsd/cxx/xml/dom/parsing-source.hxx
index fc0bd71..e4cb37e 100644
--- a/libxsd/xsd/cxx/xml/dom/parsing-source.hxx
+++ b/libxsd/xsd/cxx/xml/dom/parsing-source.hxx
@@ -8,6 +8,7 @@
#include <xercesc/dom/DOMNode.hpp>
#include <xercesc/dom/DOMAttr.hpp>
+#include <xercesc/dom/DOMText.hpp>
#include <xercesc/dom/DOMElement.hpp>
#include <xercesc/dom/DOMDocument.hpp>
#include <xercesc/dom/DOMNamedNodeMap.hpp>
diff --git a/libxsd/xsd/cxx/xml/dom/parsing-source.txx b/libxsd/xsd/cxx/xml/dom/parsing-source.txx
index 6543671..2a2d6e2 100644
--- a/libxsd/xsd/cxx/xml/dom/parsing-source.txx
+++ b/libxsd/xsd/cxx/xml/dom/parsing-source.txx
@@ -105,7 +105,10 @@ namespace xsd
const properties<C>& prop,
unsigned long flags)
{
- using namespace xercesc;
+ // Note: explicitly qualifying everything with xerces:: to avoid
+ // conflicts with MSXML.
+ //
+ using xercesc::XMLUni;
// Instantiate the DOM parser.
//
@@ -115,13 +118,14 @@ namespace xsd
// Get an implementation of the Load-Store (LS) interface.
//
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls_id));
+ xercesc::DOMImplementation* impl (
+ xercesc::DOMImplementationRegistry::getDOMImplementation (ls_id));
- XSD_DOM_AUTO_PTR<DOMLSParser> parser (
- impl->createLSParser (DOMImplementationLS::MODE_SYNCHRONOUS, 0));
+ XSD_DOM_AUTO_PTR<xercesc::DOMLSParser> parser (
+ impl->createLSParser (
+ xercesc::DOMImplementationLS::MODE_SYNCHRONOUS, 0));
- DOMConfiguration* conf (parser->getDomConfig ());
+ xercesc::DOMConfiguration* conf (parser->getDomConfig ());
// Discard comment nodes in the document.
//
@@ -216,7 +220,7 @@ namespace xsd
xercesc::Wrapper4InputSource wrap (&is, false);
- XSD_DOM_AUTO_PTR<DOMDocument> doc;
+ XSD_DOM_AUTO_PTR<xercesc::DOMDocument> doc;
try
{
doc.reset (parser->parse (&wrap));
@@ -249,7 +253,10 @@ namespace xsd
const properties<C>& prop,
unsigned long flags)
{
- using namespace xercesc;
+ // Note: explicitly qualifying everything with xerces:: to avoid
+ // conflicts with MSXML.
+ //
+ using xercesc::XMLUni;
// Instantiate the DOM parser.
//
@@ -259,13 +266,14 @@ namespace xsd
// Get an implementation of the Load-Store (LS) interface.
//
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls_id));
+ xercesc::DOMImplementation* impl (
+ xercesc::DOMImplementationRegistry::getDOMImplementation (ls_id));
- XSD_DOM_AUTO_PTR<DOMLSParser> parser (
- impl->createLSParser(DOMImplementationLS::MODE_SYNCHRONOUS, 0));
+ XSD_DOM_AUTO_PTR<xercesc::DOMLSParser> parser (
+ impl->createLSParser(
+ xercesc::DOMImplementationLS::MODE_SYNCHRONOUS, 0));
- DOMConfiguration* conf (parser->getDomConfig ());
+ xercesc::DOMConfiguration* conf (parser->getDomConfig ());
// Discard comment nodes in the document.
//
@@ -359,7 +367,7 @@ namespace xsd
bits::error_handler_proxy<C> ehp (eh);
conf->setParameter (XMLUni::fgDOMErrorHandler, &ehp);
- XSD_DOM_AUTO_PTR<DOMDocument> doc;
+ XSD_DOM_AUTO_PTR<xercesc::DOMDocument> doc;
try
{
doc.reset (parser->parseURI (string (uri).c_str ()));
diff --git a/libxsd/xsd/cxx/xml/dom/serialization-header.txx b/libxsd/xsd/cxx/xml/dom/serialization-header.txx
index 997dfe9..4b9ebdd 100644
--- a/libxsd/xsd/cxx/xml/dom/serialization-header.txx
+++ b/libxsd/xsd/cxx/xml/dom/serialization-header.txx
@@ -174,7 +174,9 @@ namespace xsd
atts.push_back (a);
}
- for (std::vector<DOMAttr*>::iterator i (atts.begin ()),
+ // Qualify DOMAttr to work around MSVC 16.11 /std:c++20 issue.
+ //
+ for (std::vector<xercesc::DOMAttr*>::iterator i (atts.begin ()),
end (atts.end ()); i != end; ++i)
{
e.removeAttributeNode (*i);
diff --git a/libxsd/xsd/cxx/xml/dom/serialization-source.txx b/libxsd/xsd/cxx/xml/dom/serialization-source.txx
index b59e109..e663d7b 100644
--- a/libxsd/xsd/cxx/xml/dom/serialization-source.txx
+++ b/libxsd/xsd/cxx/xml/dom/serialization-source.txx
@@ -109,7 +109,10 @@ namespace xsd
add_namespaces (xercesc::DOMElement& el,
const namespace_infomap<C>& map)
{
- using namespace xercesc;
+ // Note: explicitly qualifying everything with xerces:: to avoid
+ // conflicts with MSXML.
+ //
+ using xercesc::XMLUni;
typedef std::basic_string<C> string;
typedef namespace_infomap<C> infomap;
@@ -159,14 +162,14 @@ namespace xsd
//
if (!i->second.name.empty ())
el.setAttributeNS (
- xercesc::XMLUni::fgXMLNSURIName,
+ XMLUni::fgXMLNSURIName,
xml::string (xmlns_prefix).c_str (),
xml::string (i->second.name).c_str ());
}
else
{
el.setAttributeNS (
- xercesc::XMLUni::fgXMLNSURIName,
+ XMLUni::fgXMLNSURIName,
xml::string (xmlns_prefix + colon + i->first).c_str (),
xml::string (i->second.name).c_str ());
}
@@ -236,7 +239,8 @@ namespace xsd
const namespace_infomap<C>& map,
unsigned long)
{
- using namespace xercesc;
+ // Note: explicitly qualifying everything with xerces:: to avoid
+ // conflicts with MSXML.
typedef std::basic_string<C> string;
typedef namespace_infomap<C> infomap;
@@ -268,10 +272,10 @@ namespace xsd
xercesc::chLatin_S,
xercesc::chNull};
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls));
+ xercesc::DOMImplementation* impl (
+ xercesc::DOMImplementationRegistry::getDOMImplementation (ls));
- XSD_DOM_AUTO_PTR<DOMDocument> doc (
+ XSD_DOM_AUTO_PTR<xercesc::DOMDocument> doc (
impl->createDocument (
(ns.empty () ? 0 : xml::string (ns).c_str ()),
xml::string ((prefix.empty ()
@@ -293,21 +297,24 @@ namespace xsd
xercesc::DOMErrorHandler& eh,
unsigned long flags)
{
- using namespace xercesc;
+ // Note: explicitly qualifying everything with xerces:: to avoid
+ // conflicts with MSXML.
+ //
+ using xercesc::XMLUni;
const XMLCh ls[] = {xercesc::chLatin_L,
xercesc::chLatin_S,
xercesc::chNull};
- DOMImplementation* impl (
- DOMImplementationRegistry::getDOMImplementation (ls));
+ xercesc::DOMImplementation* impl (
+ xercesc::DOMImplementationRegistry::getDOMImplementation (ls));
bits::error_handler_proxy<C> ehp (eh);
- XSD_DOM_AUTO_PTR<DOMLSSerializer> writer (
+ XSD_DOM_AUTO_PTR<xercesc::DOMLSSerializer> writer (
impl->createLSSerializer ());
- DOMConfiguration* conf (writer->getDomConfig ());
+ xercesc::DOMConfiguration* conf (writer->getDomConfig ());
conf->setParameter (XMLUni::fgDOMErrorHandler, &ehp);
@@ -334,7 +341,7 @@ namespace xsd
conf->canSetParameter (XMLUni::fgDOMXMLDeclaration, false))
conf->setParameter (XMLUni::fgDOMXMLDeclaration, false);
- XSD_DOM_AUTO_PTR<DOMLSOutput> out (impl->createLSOutput ());
+ XSD_DOM_AUTO_PTR<xercesc::DOMLSOutput> out (impl->createLSOutput ());
out->setEncoding (xml::string (encoding).c_str ());
out->setByteStream (&target);