LCOV - code coverage report
Current view: top level - /usr/include/xsd/cxx/xml - string.ixx (source / functions) Coverage Total Hit
Test: mu2edaq.info.cleaned Lines: 0.0 % 12 0
Test Date: 2026-07-30 01:56:44 Functions: 0.0 % 4 0

            Line data    Source code
       1              : // file      : xsd/cxx/xml/string.ixx
       2              : // copyright : Copyright (c) 2005-2017 Code Synthesis Tools CC
       3              : // license   : GNU GPL v2 + exceptions; see accompanying LICENSE file
       4              : 
       5              : #ifndef XSD_CXX_XML_STRING_IXX
       6              : #define XSD_CXX_XML_STRING_IXX
       7              : 
       8              : #include <xercesc/util/XMLString.hpp>
       9              : 
      10              : // If no transcoder has been included, use the default UTF-8.
      11              : //
      12              : #ifndef XSD_CXX_XML_TRANSCODER
      13              : #  include <xsd/cxx/xml/char-utf8.hxx>
      14              : #endif
      15              : 
      16              : // We sometimes need this functionality even if we are building for
      17              : // wchar_t.
      18              : //
      19              : namespace xsd
      20              : {
      21              :   namespace cxx
      22              :   {
      23              :     namespace xml
      24              :     {
      25              :       template <>
      26              :       inline std::basic_string<char>
      27            0 :       transcode<char> (const XMLCh* s)
      28              :       {
      29            0 :         if (s == 0 || *s == XMLCh (0))
      30            0 :           return std::basic_string<char> ();
      31              : 
      32              : #ifndef XSD_CXX_XML_TRANSCODER_CHAR_LCP
      33            0 :         return char_transcoder::to (s, xercesc::XMLString::stringLen (s));
      34              : #else
      35              :         return char_transcoder::to (s);
      36              : #endif
      37              :       }
      38              : 
      39              :       template <>
      40              :       inline std::basic_string<char>
      41            0 :       transcode<char> (const XMLCh* s, std::size_t len)
      42              :       {
      43            0 :         if (s == 0 || len == 0)
      44            0 :           return std::basic_string<char> ();
      45              : 
      46            0 :         return char_transcoder::to (s, len);
      47              :       }
      48              : 
      49              :       template <>
      50              :       inline XMLCh*
      51            0 :       transcode_to_xmlch (const char* s)
      52              :       {
      53              : #ifndef XSD_CXX_XML_TRANSCODER_CHAR_LCP
      54            0 :         return char_transcoder::from (s, std::char_traits<char>::length (s));
      55              : #else
      56              :         return char_transcoder::from (s);
      57              : #endif
      58              :       }
      59              : 
      60              :       template <>
      61              :       inline XMLCh*
      62            0 :       transcode_to_xmlch (const std::basic_string<char>& s)
      63              :       {
      64              : #ifndef XSD_CXX_XML_TRANSCODER_CHAR_LCP
      65            0 :         return char_transcoder::from (s.c_str (), s.length ());
      66              : #else
      67              :         return char_transcoder::from (s.c_str ());
      68              : #endif
      69              :       }
      70              :     }
      71              :   }
      72              : }
      73              : 
      74              : #endif // XSD_CXX_XML_STRING_IXX
      75              : 
      76              : 
      77              : #if defined(XSD_USE_CHAR) || !defined(XSD_USE_WCHAR)
      78              : 
      79              : #ifndef XSD_CXX_XML_STRING_IXX_CHAR
      80              : #define XSD_CXX_XML_STRING_IXX_CHAR
      81              : 
      82              : #endif // XSD_CXX_XML_STRING_IXX_CHAR
      83              : #endif // XSD_USE_CHAR
      84              : 
      85              : 
      86              : #if defined(XSD_USE_WCHAR) || !defined(XSD_USE_CHAR)
      87              : 
      88              : #ifndef XSD_CXX_XML_STRING_IXX_WCHAR
      89              : #define XSD_CXX_XML_STRING_IXX_WCHAR
      90              : 
      91              : namespace xsd
      92              : {
      93              :   namespace cxx
      94              :   {
      95              :     namespace xml
      96              :     {
      97              :       namespace bits
      98              :       {
      99              :         template <typename W, std::size_t S>
     100              :         struct wchar_transcoder;
     101              : 
     102              :         // Specialization for 2-byte wchar_t (resulting encoding is UTF-16).
     103              :         //
     104              :         template <typename W>
     105              :         struct wchar_transcoder<W, 2>
     106              :         {
     107              :           static std::basic_string<W>
     108              :           to (const XMLCh* s, std::size_t length);
     109              : 
     110              :           static XMLCh*
     111              :           from (const W* s, std::size_t length);
     112              :         };
     113              : 
     114              : 
     115              :         // Specialization for 4-byte wchar_t (resulting encoding is UCS-4).
     116              :         //
     117              :         template <typename W>
     118              :         struct wchar_transcoder<W, 4>
     119              :         {
     120              :           static std::basic_string<W>
     121              :           to (const XMLCh* s, std::size_t length);
     122              : 
     123              :           static XMLCh*
     124              :           from (const W* s, std::size_t length);
     125              :         };
     126              :       }
     127              : 
     128              :       template <>
     129              :       inline std::basic_string<wchar_t>
     130              :       transcode<wchar_t> (const XMLCh* s)
     131              :       {
     132              :         if (s == 0)
     133              :           return std::basic_string<wchar_t> ();
     134              : 
     135              :         return bits::wchar_transcoder<wchar_t, sizeof (wchar_t)>::to (
     136              :           s, xercesc::XMLString::stringLen (s));
     137              :       }
     138              : 
     139              :       template <>
     140              :       inline std::basic_string<wchar_t>
     141              :       transcode<wchar_t> (const XMLCh* s, std::size_t len)
     142              :       {
     143              :         if (s == 0 || len == 0)
     144              :           return std::basic_string<wchar_t> ();
     145              : 
     146              :         return bits::wchar_transcoder<wchar_t, sizeof (wchar_t)>::to (
     147              :           s, len);
     148              :       }
     149              : 
     150              :       template <>
     151              :       inline XMLCh*
     152              :       transcode_to_xmlch (const wchar_t* s)
     153              :       {
     154              :         return bits::wchar_transcoder<wchar_t, sizeof (wchar_t)>::from (
     155              :           s, std::char_traits<wchar_t>::length (s));
     156              :       }
     157              : 
     158              :       template <>
     159              :       inline XMLCh*
     160              :       transcode_to_xmlch (const std::basic_string<wchar_t>& s)
     161              :       {
     162              :         return bits::wchar_transcoder<wchar_t, sizeof (wchar_t)>::from (
     163              :           s.c_str (), s.length ());
     164              :       }
     165              :     }
     166              :   }
     167              : }
     168              : 
     169              : #endif // XSD_CXX_XML_STRING_IXX_WCHAR
     170              : #endif // XSD_USE_WCHAR
        

Generated by: LCOV version 2.0-1