// file : xsd/cxx/xml/char-lcp.txx // copyright : Copyright (c) 2005-2011 Code Synthesis Tools CC // license : GNU GPL v2 + exceptions; see accompanying LICENSE file #include // std::memcpy #include #include // XSD_CXX11 #ifdef XSD_CXX11 # include // std::unique_ptr #else # include #endif #include namespace xsd { namespace cxx { namespace xml { template std::basic_string char_lcp_transcoder:: to (const XMLCh* s) { std_memory_manager mm; #ifdef XSD_CXX11 std::unique_ptr r ( #else auto_array r ( #endif xercesc::XMLString::transcode (s, &mm), mm); return std::basic_string (r.get ()); } template std::basic_string char_lcp_transcoder:: to (const XMLCh* s, std::size_t len) { #ifdef XSD_CXX11 std::unique_ptr tmp ( #else auto_array 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 r ( #else auto_array r ( #endif xercesc::XMLString::transcode (tmp.get (), &mm), mm); tmp.reset (); return std::basic_string (r.get ()); } template XMLCh* char_lcp_transcoder:: from (const C* s) { std_memory_manager mm; return xercesc::XMLString::transcode (s, &mm); } } } }