summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '3rdParty/Boost/src/boost/parameter/value_type.hpp')
-rwxr-xr-x3rdParty/Boost/src/boost/parameter/value_type.hpp108
1 files changed, 108 insertions, 0 deletions
diff --git a/3rdParty/Boost/src/boost/parameter/value_type.hpp b/3rdParty/Boost/src/boost/parameter/value_type.hpp
new file mode 100755
index 0000000..7415a5c
--- /dev/null
+++ b/3rdParty/Boost/src/boost/parameter/value_type.hpp
@@ -0,0 +1,108 @@
+// Copyright Daniel Wallin 2006. Use, modification and distribution is
+// subject to 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 BOOST_PARAMETER_VALUE_TYPE_060921_HPP
+# define BOOST_PARAMETER_VALUE_TYPE_060921_HPP
+
+# include <boost/mpl/apply.hpp>
+# include <boost/mpl/assert.hpp>
+# include <boost/mpl/and.hpp>
+# include <boost/parameter/aux_/result_of0.hpp>
+# include <boost/parameter/aux_/void.hpp>
+# include <boost/type_traits/is_same.hpp>
+
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+# include <boost/mpl/eval_if.hpp>
+# endif
+
+namespace boost { namespace parameter {
+
+// A metafunction that, given an argument pack, returns the type of
+// the parameter identified by the given keyword. If no such
+// parameter has been specified, returns Default
+
+# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+template <class Parameters, class Keyword, class Default>
+struct value_type0
+{
+ typedef typename mpl::apply_wrap3<
+ typename Parameters::binding,Keyword,Default,mpl::false_
+ >::type type;
+
+ BOOST_MPL_ASSERT_NOT((
+ mpl::and_<
+ is_same<Default, void_>
+ , is_same<type, void_>
+ >
+ ));
+};
+# endif
+
+template <class Parameters, class Keyword, class Default = void_>
+# if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+struct value_type
+# else
+struct value_type_eti
+# endif
+{
+# if BOOST_WORKAROUND(BOOST_MSVC, <= 1300) \
+ || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+ typedef typename mpl::eval_if<
+ mpl::is_placeholder<Parameters>
+ , mpl::identity<int>
+ , value_type0<Parameters,Keyword,Default>
+ >::type type;
+# else
+ typedef typename mpl::apply_wrap3<
+ typename Parameters::binding,Keyword,Default,mpl::false_
+ >::type type;
+
+ BOOST_MPL_ASSERT_NOT((
+ mpl::and_<
+ is_same<Default, void_>
+ , is_same<type, void_>
+ >
+ ));
+# endif
+
+# if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3,value_type,(Parameters,Keyword,Default))
+# endif
+};
+
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+template <class Parameters, class Keyword, class Default = void_>
+struct value_type
+{
+ typedef typename mpl::eval_if<
+ is_same<Parameters, int>
+ , mpl::identity<int>
+ , value_type_eti<Parameters, Keyword, Default>
+ >::type type;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(3,value_type,(Parameters,Keyword,Default))
+};
+# endif
+
+// A metafunction that, given an argument pack, returns the type of
+// the parameter identified by the given keyword. If no such
+// parameter has been specified, returns the type returned by invoking
+// DefaultFn
+template <class Parameters, class Keyword, class DefaultFn>
+struct lazy_value_type
+{
+ typedef typename mpl::apply_wrap3<
+ typename Parameters::binding
+ , Keyword
+ , typename aux::result_of0<DefaultFn>::type
+ , mpl::false_
+ >::type type;
+};
+
+
+}} // namespace boost::parameter
+
+#endif // BOOST_PARAMETER_VALUE_TYPE_060921_HPP
+