diff options
| author | Remko Tronçon <git@el-tramo.be> | 2011-03-03 21:11:18 (GMT) | 
|---|---|---|
| committer | Remko Tronçon <git@el-tramo.be> | 2011-03-03 22:14:49 (GMT) | 
| commit | 12024229138787d7df91cb8101d0986996880e3d (patch) | |
| tree | 575ef4bd2104ce4a0531580ac78381dbb94f6c6e /3rdParty | |
| parent | a8cd6a5cbf74d0db4df0b7daa8e4b1b0e0bc00d0 (diff) | |
| download | swift-12024229138787d7df91cb8101d0986996880e3d.zip swift-12024229138787d7df91cb8101d0986996880e3d.tar.bz2 | |
Some more Sluift tweaks.
Diffstat (limited to '3rdParty')
| -rw-r--r-- | 3rdParty/Boost/src/boost/cast.hpp | 107 | ||||
| -rw-r--r-- | 3rdParty/Boost/src/boost/detail/select_type.hpp | 36 | ||||
| -rwxr-xr-x | 3rdParty/Boost/update.sh | 1 | 
3 files changed, 144 insertions, 0 deletions
| diff --git a/3rdParty/Boost/src/boost/cast.hpp b/3rdParty/Boost/src/boost/cast.hpp new file mode 100644 index 0000000..2615d18 --- /dev/null +++ b/3rdParty/Boost/src/boost/cast.hpp @@ -0,0 +1,107 @@ +//  boost cast.hpp header file  ----------------------------------------------// + +//  (C) Copyright Kevlin Henney and Dave Abrahams 1999. +//  Distributed under the Boost +//  Software License, Version 1.0. (See accompanying file +//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +//  See http://www.boost.org/libs/conversion for Documentation. + +//  Revision History +//  23 JUn 05  numeric_cast removed and redirected to the new verion (Fernando Cacciola) +//  02 Apr 01  Removed BOOST_NO_LIMITS workarounds and included +//             <boost/limits.hpp> instead (the workaround did not +//             actually compile when BOOST_NO_LIMITS was defined in +//             any case, so we loose nothing). (John Maddock) +//  21 Jan 01  Undid a bug I introduced yesterday. numeric_cast<> never +//             worked with stock GCC; trying to get it to do that broke +//             vc-stlport. +//  20 Jan 01  Moved BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS to config.hpp. +//             Removed unused BOOST_EXPLICIT_TARGET macro. Moved +//             boost::detail::type to boost/type.hpp. Made it compile with +//             stock gcc again (Dave Abrahams) +//  29 Nov 00  Remove nested namespace cast, cleanup spacing before Formal +//             Review (Beman Dawes) +//  19 Oct 00  Fix numeric_cast for floating-point types (Dave Abrahams) +//  15 Jul 00  Suppress numeric_cast warnings for GCC, Borland and MSVC +//             (Dave Abrahams) +//  30 Jun 00  More MSVC6 wordarounds.  See comments below.  (Dave Abrahams) +//  28 Jun 00  Removed implicit_cast<>.  See comment below. (Beman Dawes) +//  27 Jun 00  More MSVC6 workarounds +//  15 Jun 00  Add workarounds for MSVC6 +//   2 Feb 00  Remove bad_numeric_cast ";" syntax error (Doncho Angelov) +//  26 Jan 00  Add missing throw() to bad_numeric_cast::what(0 (Adam Levar) +//  29 Dec 99  Change using declarations so usages in other namespaces work +//             correctly (Dave Abrahams) +//  23 Sep 99  Change polymorphic_downcast assert to also detect M.I. errors +//             as suggested Darin Adler and improved by Valentin Bonnard. +//   2 Sep 99  Remove controversial asserts, simplify, rename. +//  30 Aug 99  Move to cast.hpp, replace value_cast with numeric_cast, +//             place in nested namespace. +//   3 Aug 99  Initial version + +#ifndef BOOST_CAST_HPP +#define BOOST_CAST_HPP + +# include <boost/config.hpp> +# include <boost/assert.hpp> +# include <typeinfo> +# include <boost/type.hpp> +# include <boost/limits.hpp> +# include <boost/detail/select_type.hpp> + +//  It has been demonstrated numerous times that MSVC 6.0 fails silently at link +//  time if you use a template function which has template parameters that don't +//  appear in the function's argument list. +// +//  TODO: Add this to config.hpp? +# if defined(BOOST_MSVC) && BOOST_MSVC < 1300 +#  define BOOST_EXPLICIT_DEFAULT_TARGET , ::boost::type<Target>* = 0 +# else +#  define BOOST_EXPLICIT_DEFAULT_TARGET +# endif + +namespace boost +{ +//  See the documentation for descriptions of how to choose between +//  static_cast<>, dynamic_cast<>, polymorphic_cast<> and polymorphic_downcast<> + +//  polymorphic_cast  --------------------------------------------------------// + +    //  Runtime checked polymorphic downcasts and crosscasts. +    //  Suggested in The C++ Programming Language, 3rd Ed, Bjarne Stroustrup, +    //  section 15.8 exercise 1, page 425. + +    template <class Target, class Source> +    inline Target polymorphic_cast(Source* x BOOST_EXPLICIT_DEFAULT_TARGET) +    { +        Target tmp = dynamic_cast<Target>(x); +        if ( tmp == 0 ) throw std::bad_cast(); +        return tmp; +    } + +//  polymorphic_downcast  ----------------------------------------------------// + +    //  BOOST_ASSERT() checked polymorphic downcast.  Crosscasts prohibited. + +    //  WARNING: Because this cast uses BOOST_ASSERT(), it violates +    //  the One Definition Rule if used in multiple translation units +    //  where BOOST_DISABLE_ASSERTS, BOOST_ENABLE_ASSERT_HANDLER +    //  NDEBUG are defined inconsistently. + +    //  Contributed by Dave Abrahams + +    template <class Target, class Source> +    inline Target polymorphic_downcast(Source* x BOOST_EXPLICIT_DEFAULT_TARGET) +    { +        BOOST_ASSERT( dynamic_cast<Target>(x) == x );  // detect logic error +        return static_cast<Target>(x); +    } + +#  undef BOOST_EXPLICIT_DEFAULT_TARGET + +} // namespace boost + +# include <boost/numeric/conversion/cast.hpp> + +#endif  // BOOST_CAST_HPP diff --git a/3rdParty/Boost/src/boost/detail/select_type.hpp b/3rdParty/Boost/src/boost/detail/select_type.hpp new file mode 100644 index 0000000..c13946f --- /dev/null +++ b/3rdParty/Boost/src/boost/detail/select_type.hpp @@ -0,0 +1,36 @@ +// (C) Copyright David Abrahams 2001. +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// See http://www.boost.org for most recent version including documentation. + +// Revision History +// 09 Feb 01  Applied John Maddock's Borland patch Moving <true> +//            specialization to unspecialized template (David Abrahams) +// 06 Feb 01  Created (David Abrahams) + +#ifndef SELECT_TYPE_DWA20010206_HPP +# define SELECT_TYPE_DWA20010206_HPP + +namespace boost { namespace detail { + +  // Template class if_true -- select among 2 types based on a bool constant expression +  // Usage: +  //   typename if_true<(bool_const_expression)>::template then<true_type, false_type>::type + +  // HP aCC cannot deal with missing names for template value parameters +  template <bool b> struct if_true +  { +      template <class T, class F> +      struct then { typedef T type; }; +  }; + +  template <> +  struct if_true<false> +  { +      template <class T, class F> +      struct then { typedef F type; }; +  }; +}} +#endif // SELECT_TYPE_DWA20010206_HPP diff --git a/3rdParty/Boost/update.sh b/3rdParty/Boost/update.sh index 006840b..6344d72 100755 --- a/3rdParty/Boost/update.sh +++ b/3rdParty/Boost/update.sh @@ -12,6 +12,7 @@ fi  ./bcp --boost="$1" \  	tools/bcp \  	bind.hpp \ +	cast.hpp \  	date_time/posix_time/posix_time.hpp \  	foreach.hpp \  	filesystem.hpp \ | 
 Swift
 Swift