diff options
Diffstat (limited to 'libxsd/xsd/cxx/xml/char-lcp.txx')
-rw-r--r-- | libxsd/xsd/cxx/xml/char-lcp.txx | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/libxsd/xsd/cxx/xml/char-lcp.txx b/libxsd/xsd/cxx/xml/char-lcp.txx index 7bd8862..21c85d0 100644 --- a/libxsd/xsd/cxx/xml/char-lcp.txx +++ b/libxsd/xsd/cxx/xml/char-lcp.txx @@ -7,7 +7,14 @@ #include <xercesc/util/XMLString.hpp> -#include <xsd/cxx/auto-array.hxx> +#include <xsd/cxx/config.hxx> // XSD_CXX11 + +#ifdef XSD_CXX11 +# include <memory> // std::unique_ptr +#else +# include <xsd/cxx/auto-array.hxx> +#endif + #include <xsd/cxx/xml/std-memory-manager.hxx> namespace xsd @@ -21,7 +28,11 @@ namespace xsd to (const XMLCh* s) { std_memory_manager mm; +#ifdef XSD_CXX11 + std::unique_ptr<C[], std_memory_manager&> r ( +#else auto_array<C, std_memory_manager> r ( +#endif xercesc::XMLString::transcode (s, &mm), mm); return std::basic_string<C> (r.get ()); } @@ -30,12 +41,21 @@ namespace xsd std::basic_string<C> char_lcp_transcoder<C>:: to (const XMLCh* s, std::size_t len) { - auto_array<XMLCh> tmp (new XMLCh[len + 1]); +#ifdef XSD_CXX11 + std::unique_ptr<XMLCh[]> tmp ( +#else + auto_array<XMLCh> tmp ( +#endif + new XMLCh[len + 1]); std::memcpy (tmp.get (), s, len * sizeof (XMLCh)); tmp[len] = XMLCh (0); std_memory_manager mm; +#ifdef XSD_CXX11 + std::unique_ptr<C[], std_memory_manager&> r ( +#else auto_array<C, std_memory_manager> r ( +#endif xercesc::XMLString::transcode (tmp.get (), &mm), mm); tmp.reset (); |