LCOV - code coverage report
Current view: top level - opt/homebrew/include/boost - lexical_cast.hpp (source / functions) Hit Total Coverage
Test: total_coverage.info Lines: 4 6 66.7 %
Date: 2026-06-25 07:23:43 Functions: 2 3 66.7 %

          Line data    Source code
       1             : // Copyright Kevlin Henney, 2000-2005.
       2             : // Copyright Alexander Nasonov, 2006-2010.
       3             : // Copyright Antony Polukhin, 2011-2025.
       4             : //
       5             : // Distributed under the Boost Software License, Version 1.0. (See
       6             : // accompanying file LICENSE_1_0.txt or copy at
       7             : // http://www.boost.org/LICENSE_1_0.txt)
       8             : //
       9             : // what:  lexical_cast custom keyword cast
      10             : // who:   contributed by Kevlin Henney,
      11             : //        enhanced with contributions from Terje Slettebo,
      12             : //        with additional fixes and suggestions from Gennaro Prota,
      13             : //        Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
      14             : //        Alexander Nasonov, Antony Polukhin, Justin Viiret, Michael Hofmann,
      15             : //        Cheng Yang, Matthew Bradbury, David W. Birdsall, Pavel Korzh and other Boosters
      16             : // when:  November 2000, March 2003, June 2005, June 2006, March 2011 - 2014
      17             : 
      18             : #ifndef BOOST_LEXICAL_CAST_INCLUDED
      19             : #define BOOST_LEXICAL_CAST_INCLUDED
      20             : 
      21             : #include <boost/config.hpp>
      22             : #ifdef BOOST_HAS_PRAGMA_ONCE
      23             : #   pragma once
      24             : #endif
      25             : 
      26             : #if defined(BOOST_NO_STRINGSTREAM) || defined(BOOST_NO_STD_WSTRING)
      27             : #define BOOST_LCAST_NO_WCHAR_T
      28             : #endif
      29             : 
      30             : #include <boost/lexical_cast/detail/buffer_view.hpp>
      31             : 
      32             : #include <boost/lexical_cast/bad_lexical_cast.hpp>
      33             : #include <boost/lexical_cast/try_lexical_convert.hpp>
      34             : 
      35             : namespace boost
      36             : {
      37             :     template <typename Target, typename Source>
      38       15000 :     inline Target lexical_cast(const Source &arg)
      39             :     {
      40       15000 :         Target result = Target();
      41             : 
      42       15000 :         if (!boost::conversion::detail::try_lexical_convert(arg, result)) {
      43           0 :             boost::conversion::detail::throw_bad_cast<Source, Target>();
      44           0 :         }
      45             : 
      46       15000 :         return result;
      47             :     }
      48             : 
      49             :     template <typename Target>
      50             :     inline Target lexical_cast(const char* chars, std::size_t count)
      51             :     {
      52             :         return ::boost::lexical_cast<Target>(
      53             :             ::boost::conversion::detail::make_buffer_view(chars, chars + count)
      54             :         );
      55             :     }
      56             : 
      57             :     template <typename Target>
      58             :     inline Target lexical_cast(const unsigned char* chars, std::size_t count)
      59             :     {
      60             :         return ::boost::lexical_cast<Target>(
      61             :             ::boost::conversion::detail::make_buffer_view(chars, chars + count)
      62             :         );
      63             :     }
      64             : 
      65             :     template <typename Target>
      66             :     inline Target lexical_cast(const signed char* chars, std::size_t count)
      67             :     {
      68             :         return ::boost::lexical_cast<Target>(
      69             :             ::boost::conversion::detail::make_buffer_view(chars, chars + count)
      70             :         );
      71             :     }
      72             : 
      73             : #ifndef BOOST_LCAST_NO_WCHAR_T
      74             :     template <typename Target>
      75             :     inline Target lexical_cast(const wchar_t* chars, std::size_t count)
      76             :     {
      77             :         return ::boost::lexical_cast<Target>(
      78             :             ::boost::conversion::detail::make_buffer_view(chars, chars + count)
      79             :         );
      80             :     }
      81             : #endif
      82             :     template <typename Target>
      83             :     inline Target lexical_cast(const char16_t* chars, std::size_t count)
      84             :     {
      85             :         return ::boost::lexical_cast<Target>(
      86             :             ::boost::conversion::detail::make_buffer_view(chars, chars + count)
      87             :         );
      88             :     }
      89             :     template <typename Target>
      90             :     inline Target lexical_cast(const char32_t* chars, std::size_t count)
      91             :     {
      92             :         return ::boost::lexical_cast<Target>(
      93             :             ::boost::conversion::detail::make_buffer_view(chars, chars + count)
      94             :         );
      95             :     }
      96             : 
      97             : } // namespace boost
      98             : 
      99             : #undef BOOST_LCAST_NO_WCHAR_T
     100             : 
     101             : #endif // BOOST_LEXICAL_CAST_INCLUDED
     102             : 

Generated by: LCOV version 1.16