annotate DEPENDENCIES/generic/include/boost/lexical_cast.hpp @ 125:34e428693f5d vext

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