Index: third_party/boost/boost/mpl/vector/aux_/item.hpp |
diff --git a/third_party/boost/boost/mpl/vector/aux_/item.hpp b/third_party/boost/boost/mpl/vector/aux_/item.hpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b5377b63ecc32e66730471f1e6157f016d888b9b |
--- /dev/null |
+++ b/third_party/boost/boost/mpl/vector/aux_/item.hpp |
@@ -0,0 +1,103 @@ |
+ |
+#ifndef BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED |
+#define BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED |
+ |
+// Copyright Aleksey Gurtovoy 2000-2004 |
+// |
+// 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/mpl for documentation. |
+ |
+// $Source$ |
+// $Date: 2005-05-14 20:39:04 -0400 (Sat, 14 May 2005) $ |
+// $Revision: 28913 $ |
+ |
+#include <boost/mpl/long.hpp> |
+#include <boost/mpl/void.hpp> |
+#include <boost/mpl/next_prior.hpp> |
+#include <boost/mpl/aux_/type_wrapper.hpp> |
+#include <boost/mpl/aux_/config/typeof.hpp> |
+#include <boost/mpl/aux_/config/ctps.hpp> |
+ |
+namespace boost { namespace mpl { |
+ |
+#if defined(BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES) |
+ |
+template< |
+ typename T |
+ , typename Base |
+ , int at_front = 0 |
+ > |
+struct v_item |
+ : Base |
+{ |
+ typedef typename Base::upper_bound_ index_; |
+ typedef typename next<index_>::type upper_bound_; |
+ typedef typename next<typename Base::size>::type size; |
+ typedef Base base; |
+ typedef v_item type; |
+ |
+ // agurt 10/sep/04: MWCW <= 9.3 workaround here and below; the compiler |
+ // breaks if using declaration comes _before_ the new overload |
+ static aux::type_wrapper<T> item_(index_); |
+ using Base::item_; |
+}; |
+ |
+template< |
+ typename T |
+ , typename Base |
+ > |
+struct v_item<T,Base,1> |
+ : Base |
+{ |
+ typedef typename prior<typename Base::lower_bound_>::type index_; |
+ typedef index_ lower_bound_; |
+ typedef typename next<typename Base::size>::type size; |
+ typedef Base base; |
+ typedef v_item type; |
+ |
+ static aux::type_wrapper<T> item_(index_); |
+ using Base::item_; |
+}; |
+ |
+// "erasure" item |
+template< |
+ typename Base |
+ , int at_front |
+ > |
+struct v_mask |
+ : Base |
+{ |
+ typedef typename prior<typename Base::upper_bound_>::type index_; |
+ typedef index_ upper_bound_; |
+ typedef typename prior<typename Base::size>::type size; |
+ typedef Base base; |
+ typedef v_mask type; |
+ |
+ static aux::type_wrapper<void_> item_(index_); |
+ using Base::item_; |
+}; |
+ |
+template< |
+ typename Base |
+ > |
+struct v_mask<Base,1> |
+ : Base |
+{ |
+ typedef typename Base::lower_bound_ index_; |
+ typedef typename next<index_>::type lower_bound_; |
+ typedef typename prior<typename Base::size>::type size; |
+ typedef Base base; |
+ typedef v_mask type; |
+ |
+ static aux::type_wrapper<void_> item_(index_); |
+ using Base::item_; |
+}; |
+ |
+#endif // BOOST_MPL_CFG_TYPEOF_BASED_SEQUENCES |
+ |
+}} |
+ |
+#endif // BOOST_MPL_VECTOR_AUX_ITEM_HPP_INCLUDED |