From fad4a7ebeb0a2e16de226f25dcd6e72d9976f455 Mon Sep 17 00:00:00 2001 From: Joel de Guzman Date: Sat, 21 Apr 2012 06:09:54 +0000 Subject: [PATCH] rearranging files [SVN r78106] --- .../fusion/container/deque/cpp11_deque.hpp | 87 ------------------- .../container/deque/cpp11_deque_fwd.hpp | 19 ---- .../boost/fusion/container/deque/deque.hpp | 84 +++++++++++++++++- .../fusion/container/deque/deque_fwd.hpp | 17 +++- .../deque/{ => detail}/cpp03_deque.hpp | 0 .../deque/{ => detail}/cpp03_deque_fwd.hpp | 0 .../deque/detail/cpp11_deque_keyed_values.hpp | 4 +- 7 files changed, 97 insertions(+), 114 deletions(-) delete mode 100644 include/boost/fusion/container/deque/cpp11_deque.hpp delete mode 100644 include/boost/fusion/container/deque/cpp11_deque_fwd.hpp rename include/boost/fusion/container/deque/{ => detail}/cpp03_deque.hpp (100%) rename include/boost/fusion/container/deque/{ => detail}/cpp03_deque_fwd.hpp (100%) diff --git a/include/boost/fusion/container/deque/cpp11_deque.hpp b/include/boost/fusion/container/deque/cpp11_deque.hpp deleted file mode 100644 index 23f3e9a8..00000000 --- a/include/boost/fusion/container/deque/cpp11_deque.hpp +++ /dev/null @@ -1,87 +0,0 @@ -/*============================================================================= - Copyright (c) 2005-2012 Joel de Guzman - Copyright (c) 2005-2006 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(BOOST_CPP03_FUSION_DEQUE_26112006_1649) -#define BOOST_CPP03_FUSION_DEQUE_26112006_1649 - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -namespace boost { namespace fusion -{ - struct deque_tag; - - template - struct deque : detail::nil_keyed_element - { - }; - - template - struct deque - : detail::deque_keyed_values::type - , sequence_base> - { - typedef deque_tag fusion_tag; - typedef bidirectional_traversal_tag category; - typedef typename detail::deque_keyed_values::type base; - typedef mpl::int_<(sizeof ...(Tail) + 1)> size; - typedef mpl::int_ next_up; - typedef mpl::int_::type::value> next_down; - typedef mpl::false_ is_view; - - deque() - {} - - template - deque(deque const& seq) - : base(seq) - {} - - explicit deque(typename detail::call_param::type head - , typename detail::call_param::type... tail) - : base(detail::deque_keyed_values::call(head, tail...)) - {} - - template - explicit deque(Sequence const& seq - , typename disable_if >::type* /*dummy*/ = 0) - : base(base::from_iterator(fusion::begin(seq))) - {} - - template - deque& operator=(deque const& rhs) - { - base::operator=(rhs); - return *this; - } - - template - deque& operator=(T const& rhs) - { - base::operator=(rhs); - return *this; - } - }; -}} - -#endif diff --git a/include/boost/fusion/container/deque/cpp11_deque_fwd.hpp b/include/boost/fusion/container/deque/cpp11_deque_fwd.hpp deleted file mode 100644 index 420fe611..00000000 --- a/include/boost/fusion/container/deque/cpp11_deque_fwd.hpp +++ /dev/null @@ -1,19 +0,0 @@ -/*============================================================================= - Copyright (c) 2005-2012 Joel de Guzman - Copyright (c) 2005-2007 Dan Marsden - - 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) -==============================================================================*/ -#if !defined(FUSION_CPP11_DEQUE_FORWARD_04072012_0355) -#define FUSION_CPP11_DEQUE_FORWARD_04072012_0355 - -namespace boost { namespace fusion -{ - struct void_; - - template - struct deque; -}} - -#endif diff --git a/include/boost/fusion/container/deque/deque.hpp b/include/boost/fusion/container/deque/deque.hpp index 0a3353b7..215981e4 100644 --- a/include/boost/fusion/container/deque/deque.hpp +++ b/include/boost/fusion/container/deque/deque.hpp @@ -10,15 +10,93 @@ #include +/////////////////////////////////////////////////////////////////////////////// +// With no decltype and variadics, we will use the C++03 version +/////////////////////////////////////////////////////////////////////////////// #if (defined(BOOST_NO_DECLTYPE) \ || defined(BOOST_NO_VARIADIC_TEMPLATES) \ || defined(BOOST_NO_RVALUE_REFERENCES)) -# include +# include #else # if !defined(BOOST_FUSION_HAS_CPP11_DEQUE) # define BOOST_FUSION_HAS_CPP11_DEQUE # endif -# include -#endif + +/////////////////////////////////////////////////////////////////////////////// +// C++11 interface +/////////////////////////////////////////////////////////////////////////////// +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +namespace boost { namespace fusion +{ + struct deque_tag; + + template + struct deque : detail::nil_keyed_element + { + }; + + template + struct deque + : detail::deque_keyed_values::type + , sequence_base> + { + typedef deque_tag fusion_tag; + typedef bidirectional_traversal_tag category; + typedef typename detail::deque_keyed_values::type base; + typedef mpl::int_<(sizeof ...(Tail) + 1)> size; + typedef mpl::int_ next_up; + typedef mpl::int_::type::value> next_down; + typedef mpl::false_ is_view; + + deque() + {} + + template + deque(deque const& seq) + : base(seq) + {} + + explicit deque(typename detail::call_param::type head + , typename detail::call_param::type... tail) + : base(detail::deque_keyed_values::call(head, tail...)) + {} + + template + explicit deque(Sequence const& seq + , typename disable_if >::type* /*dummy*/ = 0) + : base(base::from_iterator(fusion::begin(seq))) + {} + + template + deque& operator=(deque const& rhs) + { + base::operator=(rhs); + return *this; + } + + template + deque& operator=(T const& rhs) + { + base::operator=(rhs); + return *this; + } + }; +}} #endif +#endif diff --git a/include/boost/fusion/container/deque/deque_fwd.hpp b/include/boost/fusion/container/deque/deque_fwd.hpp index d1696936..19ca8f8f 100644 --- a/include/boost/fusion/container/deque/deque_fwd.hpp +++ b/include/boost/fusion/container/deque/deque_fwd.hpp @@ -10,15 +10,26 @@ #include +/////////////////////////////////////////////////////////////////////////////// +// With no decltype and variadics, we will use the C++03 version +/////////////////////////////////////////////////////////////////////////////// #if (defined(BOOST_NO_DECLTYPE) \ || defined(BOOST_NO_VARIADIC_TEMPLATES) \ || defined(BOOST_NO_RVALUE_REFERENCES)) -# include +# include #else # if !defined(BOOST_FUSION_HAS_CPP11_DEQUE) # define BOOST_FUSION_HAS_CPP11_DEQUE # endif -# include -#endif + +/////////////////////////////////////////////////////////////////////////////// +// C++11 interface +/////////////////////////////////////////////////////////////////////////////// +namespace boost { namespace fusion +{ + template + struct deque; +}} #endif +#endif diff --git a/include/boost/fusion/container/deque/cpp03_deque.hpp b/include/boost/fusion/container/deque/detail/cpp03_deque.hpp similarity index 100% rename from include/boost/fusion/container/deque/cpp03_deque.hpp rename to include/boost/fusion/container/deque/detail/cpp03_deque.hpp diff --git a/include/boost/fusion/container/deque/cpp03_deque_fwd.hpp b/include/boost/fusion/container/deque/detail/cpp03_deque_fwd.hpp similarity index 100% rename from include/boost/fusion/container/deque/cpp03_deque_fwd.hpp rename to include/boost/fusion/container/deque/detail/cpp03_deque_fwd.hpp diff --git a/include/boost/fusion/container/deque/detail/cpp11_deque_keyed_values.hpp b/include/boost/fusion/container/deque/detail/cpp11_deque_keyed_values.hpp index e8ae0fa1..43ed5360 100644 --- a/include/boost/fusion/container/deque/detail/cpp11_deque_keyed_values.hpp +++ b/include/boost/fusion/container/deque/detail/cpp11_deque_keyed_values.hpp @@ -29,8 +29,8 @@ namespace boost { namespace fusion { namespace detail typedef keyed_element type; static type call( - typename add_reference::type>::type head - , typename add_reference::type>::type... tail) + typename detail::call_param::type head + , typename detail::call_param::type... tail) { return type( head