55 lines
1.4 KiB
C++
55 lines
1.4 KiB
C++
|
// file : xsd/cxx/xml/char-lcp.hxx
|
||
|
// license : GNU GPL v2 + exceptions; see accompanying LICENSE file
|
||
|
|
||
|
#ifndef XSD_CXX_XML_TRANSCODER
|
||
|
#define XSD_CXX_XML_TRANSCODER
|
||
|
#define XSD_CXX_XML_TRANSCODER_CHAR_LCP
|
||
|
|
||
|
#include <string>
|
||
|
#include <cstddef> // std::size_t
|
||
|
|
||
|
#include <xercesc/util/XercesDefs.hpp> // XMLCh
|
||
|
|
||
|
namespace xsd
|
||
|
{
|
||
|
namespace cxx
|
||
|
{
|
||
|
namespace xml
|
||
|
{
|
||
|
// UTF-16 to/from Xerces-C++ local code page (LCP) transcoder.
|
||
|
//
|
||
|
// Note that this transcoder has a custom interface due to Xerces-C++
|
||
|
// idiosyncrasies. Don't use it as a base for your custom transcoder.
|
||
|
//
|
||
|
template <typename C>
|
||
|
struct char_lcp_transcoder
|
||
|
{
|
||
|
static std::basic_string<C>
|
||
|
to (const XMLCh* s);
|
||
|
|
||
|
static std::basic_string<C>
|
||
|
to (const XMLCh* s, std::size_t length);
|
||
|
|
||
|
static XMLCh*
|
||
|
from (const C* s);
|
||
|
};
|
||
|
|
||
|
typedef char_lcp_transcoder<char> char_transcoder;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#include <xsd/cxx/xml/char-lcp.txx>
|
||
|
|
||
|
#else
|
||
|
# ifndef XSD_CXX_XML_TRANSCODER_CHAR_LCP
|
||
|
//
|
||
|
// If you get this error, it usually means that either you compiled
|
||
|
// your schemas with different --char-encoding values or you included
|
||
|
// some of the libxsd headers (e.g., xsd/cxx/xml/string.hxx) directly
|
||
|
// without first including the correct xsd/cxx/xml/char-*.hxx header.
|
||
|
//
|
||
|
# error conflicting character encoding detected
|
||
|
# endif
|
||
|
#endif // XSD_CXX_XML_TRANSCODER
|