diff DEPENDENCIES/generic/include/boost/python/detail/if_else.hpp @ 16:2665513ce2d3

Add boost headers
author Chris Cannam
date Tue, 05 Aug 2014 11:11:38 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DEPENDENCIES/generic/include/boost/python/detail/if_else.hpp	Tue Aug 05 11:11:38 2014 +0100
@@ -0,0 +1,116 @@
+// Copyright David Abrahams 2002.
+// 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)
+#ifndef IF_ELSE_DWA2002322_HPP
+# define IF_ELSE_DWA2002322_HPP
+# include <boost/config.hpp>
+
+namespace boost { namespace python { namespace detail { 
+
+template <class T> struct elif_selected;
+
+template <class T>
+struct if_selected
+{
+    template <bool b>
+    struct elif : elif_selected<T>
+    {
+    };
+
+    template <class U>
+    struct else_
+    {
+        typedef T type;
+    };
+};
+
+# if defined(BOOST_MSVC) && (BOOST_MSVC == 1300)
+namespace msvc70_aux {
+
+template< bool > struct inherit_from
+{
+    template< typename T > struct result
+    {
+        typedef T type;
+    };
+};
+
+template<> struct inherit_from<true>
+{
+    template< typename T > struct result
+    {
+        struct type {};
+    };
+};
+
+template< typename T >
+struct never_true
+{
+    BOOST_STATIC_CONSTANT(bool, value = false);
+};
+
+} // namespace msvc70_aux
+
+#endif // # if defined(BOOST_MSVC) && (BOOST_MSVC == 1300)
+
+template <class T>
+struct elif_selected
+{
+# if !(defined(BOOST_MSVC) && BOOST_MSVC <= 1300 || defined(__MWERKS__) && __MWERKS__ <= 0x2407)
+    template <class U> class then;
+# elif defined(BOOST_MSVC) && (BOOST_MSVC == 1300)
+    template <class U>
+    struct then : msvc70_aux::inherit_from< msvc70_aux::never_true<U>::value >
+        ::template result< if_selected<T> >::type
+    {
+    };
+# else
+    template <class U>
+    struct then : if_selected<T>
+    {
+    };
+# endif 
+};
+
+# if !(defined(BOOST_MSVC) && BOOST_MSVC <= 1300 || defined(__MWERKS__) && __MWERKS__ <= 0x2407)
+template <class T>
+template <class U>
+class elif_selected<T>::then : public if_selected<T>
+{
+};
+# endif 
+
+template <bool b> struct if_
+{
+    template <class T>
+    struct then : if_selected<T>
+    {
+    };
+};
+
+struct if_unselected
+{
+    template <bool b> struct elif : if_<b>
+    {
+    };
+
+    template <class U>
+    struct else_
+    {
+        typedef U type;
+    };
+};
+
+template <>
+struct if_<false>
+{
+    template <class T>
+    struct then : if_unselected
+    {
+    };
+};
+
+}}} // namespace boost::python::detail
+
+#endif // IF_ELSE_DWA2002322_HPP