BVB Source Codes

mars Show bad_lexical_cast.hpp Source code

Return Download mars: download bad_lexical_cast.hpp Source code - Download mars Source code - Type:.hpp
  1. // Copyright Kevlin Henney, 2000-2005.
  2. // Copyright Alexander Nasonov, 2006-2010.
  3. // Copyright Antony Polukhin, 2011-2014.
  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_BAD_LEXICAL_CAST_HPP
  19. #define BOOST_LEXICAL_CAST_BAD_LEXICAL_CAST_HPP
  20.  
  21. #include <boost/config.hpp>
  22. #ifdef BOOST_HAS_PRAGMA_ONCE
  23. #   pragma once
  24. #endif
  25.  
  26. #include <typeinfo>
  27. #include <exception>
  28. #include <boost/throw_exception.hpp>
  29.  
  30. namespace mars_boost {} namespace boost = mars_boost; namespace mars_boost
  31. {
  32.     // exception used to indicate runtime lexical_cast failure
  33.     class BOOST_SYMBOL_VISIBLE bad_lexical_cast :
  34.     // workaround MSVC bug with std::bad_cast when _HAS_EXCEPTIONS == 0
  35. #if defined(BOOST_MSVC) && defined(_HAS_EXCEPTIONS) && !_HAS_EXCEPTIONS
  36.         public std::exception
  37. #else
  38.         public std::bad_cast
  39. #endif
  40.  
  41. #if defined(__BORLANDC__) && BOOST_WORKAROUND( __BORLANDC__, < 0x560 )
  42.         // under bcc32 5.5.1 bad_cast doesn't derive from exception
  43.         , public std::exception
  44. #endif
  45.  
  46.     {
  47.     public:
  48.         bad_lexical_cast() BOOST_NOEXCEPT
  49. #ifndef BOOST_NO_TYPEID
  50.            : source(&typeid(void)), target(&typeid(void))
  51. #endif
  52.         {}
  53.  
  54.         virtual const char *what() const BOOST_NOEXCEPT_OR_NOTHROW {
  55.             return "bad lexical cast: "
  56.                    "source type value could not be interpreted as target";
  57.         }
  58.  
  59.         virtual ~bad_lexical_cast() BOOST_NOEXCEPT_OR_NOTHROW
  60.         {}
  61.  
  62. #ifndef BOOST_NO_TYPEID
  63.         bad_lexical_cast(
  64.                 const std::type_info &source_type_arg,
  65.                 const std::type_info &target_type_arg) BOOST_NOEXCEPT
  66.             : source(&source_type_arg), target(&target_type_arg)
  67.         {}
  68.  
  69.         const std::type_info &source_type() const BOOST_NOEXCEPT {
  70.             return *source;
  71.         }
  72.  
  73.         const std::type_info &target_type() const BOOST_NOEXCEPT {
  74.             return *target;
  75.         }
  76.  
  77.     private:
  78.         const std::type_info *source;
  79.         const std::type_info *target;
  80. #endif
  81.     };
  82.  
  83.     namespace conversion { namespace detail {
  84. #ifdef BOOST_NO_TYPEID
  85.         template <class S, class T>
  86.         inline void throw_bad_cast() {
  87.             mars_boost::throw_exception(bad_lexical_cast());
  88.         }
  89. #else
  90.         template <class S, class T>
  91.         inline void throw_bad_cast() {
  92.             mars_boost::throw_exception(bad_lexical_cast(typeid(S), typeid(T)));
  93.         }
  94. #endif
  95.     }} // namespace conversion::detail
  96.  
  97.  
  98. } // namespace mars_boost
  99.  
  100. #endif // BOOST_LEXICAL_CAST_BAD_LEXICAL_CAST_HPP
  101.  
  102.  
downloadbad_lexical_cast.hpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top