LCOV - code coverage report
Current view: top level - usr/include/boost/spirit/home/classic/meta - as_parser.hpp (source / functions) Hit Total Coverage
Test: ROSE Lines: 0 1 0.0 %
Date: 2022-12-08 13:48:47 Functions: 0 0 -
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*=============================================================================
       2             :     Copyright (c) 2002-2003 Joel de Guzman
       3             :     Copyright (c) 2002-2003 Hartmut Kaiser
       4             :     http://spirit.sourceforge.net/
       5             : 
       6             :   Distributed under the Boost Software License, Version 1.0. (See accompanying
       7             :   file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       8             : =============================================================================*/
       9             : #if !defined(BOOST_SPIRIT_AS_PARSER_HPP)
      10             : #define BOOST_SPIRIT_AS_PARSER_HPP
      11             : 
      12             : #include <boost/spirit/home/classic/namespace.hpp>
      13             : #include <boost/spirit/home/classic/core/primitives/primitives.hpp>
      14             : 
      15             : namespace boost { namespace spirit {
      16             : 
      17             : BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN
      18             : 
      19             :     ///////////////////////////////////////////////////////////////////////////
      20             :     //
      21             :     //  Helper templates to derive the parser type from an auxilliary type
      22             :     //  and to generate an object of the required parser type given an
      23             :     //  auxilliary object. Supported types to convert are parsers,
      24             :     //  single characters and character strings.
      25             :     //
      26             :     ///////////////////////////////////////////////////////////////////////////
      27             :     namespace impl
      28             :     {
      29             :         template<typename T>
      30             :         struct default_as_parser
      31             :         {
      32             :             typedef T type;
      33           0 :             static type const& convert(type const& p)
      34             :             {
      35             :                 return p;
      36             :             }
      37             :         };
      38             : 
      39             :         struct char_as_parser
      40             :         {
      41             :             typedef chlit<char> type;
      42             :             static type convert(char ch)
      43             :             {
      44             :                 return type(ch);
      45             :             }
      46             :         };
      47             : 
      48             :         struct wchar_as_parser
      49             :         {
      50             :             typedef chlit<wchar_t> type;
      51             :             static type convert(wchar_t ch)
      52             :             {
      53             :                 return type(ch);
      54             :             }
      55             :         };
      56             : 
      57             :         struct string_as_parser
      58             :         {
      59             :             typedef strlit<char const*> type;
      60             :             static type convert(char const* str)
      61             :             {
      62             :                 return type(str);
      63             :             }
      64             :         };
      65             : 
      66             :         struct wstring_as_parser
      67             :         {
      68             :             typedef strlit<wchar_t const*> type;
      69             :             static type convert(wchar_t const* str)
      70             :             {
      71             :                 return type(str);
      72             :             }
      73             :         };
      74             :     }
      75             : 
      76             :     template<typename T>
      77             :     struct as_parser : impl::default_as_parser<T> {};
      78             : 
      79             :     template<>
      80             :     struct as_parser<char> : impl::char_as_parser {};
      81             : 
      82             :     template<>
      83             :     struct as_parser<wchar_t> : impl::wchar_as_parser {};
      84             : 
      85             :     template<>
      86             :     struct as_parser<char*> : impl::string_as_parser {};
      87             : 
      88             :     template<>
      89             :     struct as_parser<char const*> : impl::string_as_parser {};
      90             : 
      91             :     template<>
      92             :     struct as_parser<wchar_t*> : impl::wstring_as_parser {};
      93             : 
      94             :     template<>
      95             :     struct as_parser<wchar_t const*> : impl::wstring_as_parser {};
      96             : 
      97             :     template<int N>
      98             :     struct as_parser<char[N]> : impl::string_as_parser {};
      99             : 
     100             :     template<int N>
     101             :     struct as_parser<wchar_t[N]> : impl::wstring_as_parser {};
     102             : 
     103             :     template<int N>
     104             :     struct as_parser<char const[N]> : impl::string_as_parser {};
     105             : 
     106             :     template<int N>
     107             :     struct as_parser<wchar_t const[N]> : impl::wstring_as_parser {};
     108             : 
     109             : BOOST_SPIRIT_CLASSIC_NAMESPACE_END
     110             : 
     111             : }} // namespace BOOST_SPIRIT_CLASSIC_NS
     112             : 
     113             : #endif

Generated by: LCOV version 1.14