Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r67341 - in sandbox/SOC/2009/fusion: boost/fusion/algorithm/transformation boost/fusion/container/detail boost/fusion/mpl/detail boost/fusion/sequence/intrinsic boost/proto libs/fusion/test/compile_time libs/fusion/test/compile_time/testcases/detail libs/fusion/test/suite1/algorithm
From: mr.chr.schmidt_at_[hidden]
Date: 2010-12-19 12:06:15


Author: cschmidt
Date: 2010-12-19 12:05:50 EST (Sun, 19 Dec 2010)
New Revision: 67341
URL: http://svn.boost.org/trac/boost/changeset/67341

Log:
minor update
Text files modified:
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/transform.hpp | 1
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/convert_impl.hpp | 33 ++++-----
   sandbox/SOC/2009/fusion/boost/fusion/mpl/detail/begin.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/mpl/detail/end.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/begin.hpp | 12 ++
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/end.hpp | 13 +++
   sandbox/SOC/2009/fusion/boost/proto/fusion.hpp | 139 ++++++++-------------------------------
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/Jamfile | 5 +
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/testcases/detail/main.hpp | 68 +++++++++++++------
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/fold.hpp | 1
   10 files changed, 120 insertions(+), 162 deletions(-)

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/transform.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/transform.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/transform.hpp 2010-12-19 12:05:50 EST (Sun, 19 Dec 2010)
@@ -75,7 +75,6 @@
     }
 
     //TODO boost config macro for default arguments for function templates
-
     template<typename IsAssociative,typename Seq, typename F>
     inline typename
         result_of::transform<

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/detail/convert_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/detail/convert_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/detail/convert_impl.hpp 2010-12-19 12:05:50 EST (Sun, 19 Dec 2010)
@@ -1,11 +1,11 @@
 /*==============================================================================
- Copyright (c) 2009 Christopher Schmidt
+ Copyright (c) 2009-2010 Christopher Schmidt
 
     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)
 ==============================================================================*/
 
-#ifdef BOOST_NO_VARIADIC_TEMPLATES
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || 1
 # include <boost/fusion/sequence/intrinsic/begin.hpp>
 # include <boost/fusion/sequence/intrinsic/size.hpp>
 #endif
@@ -15,13 +15,11 @@
 //cschmidt: mpl's maximum supported arity is set to 5 by default. We need more
 //for the variadic templates implementations though. Therefore we use the pp
 //implementation for now.
-//TODO: native variadic template unrolled workaround!.
-
-//#ifdef BOOST_NO_VARIADIC_TEMPLATES
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || 1
 # include <boost/fusion/container/detail/pp/as_seq.hpp>
-//#else
-//# include <boost/fusion/container/detail/variadic_templates/as_seq.hpp>
-//#endif
+#else
+# include <boost/fusion/container/detail/variadic_templates/as_seq.hpp>
+#endif
 
 namespace boost { namespace fusion
 {
@@ -36,7 +34,7 @@
             template<typename Seq>
             struct apply
             {
-//#ifdef BOOST_NO_VARIADIC_TEMPLATES
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || 1
                 typedef typename
                     detail::BOOST_PP_CAT(
                         BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME),_impl)<
@@ -45,14 +43,14 @@
                         typename result_of::begin<Seq>::type
>::type
                 type;
-//#else
-// typedef typename
-// detail::BOOST_PP_CAT(
-// BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME),_impl)<
-// Seq
-// >::type
-// type;
-//#endif
+#else
+ typedef typename
+ detail::BOOST_PP_CAT(
+ BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME),_impl)<
+ Seq
+ >::type
+ type;
+#endif
 
                 static type
                 call(Seq seq)
@@ -88,5 +86,4 @@
             BOOST_FUSION_R_ELSE_CLREF(Seq)
>::call(BOOST_FUSION_FORWARD(Seq,seq));
     }
-
 }}

Modified: sandbox/SOC/2009/fusion/boost/fusion/mpl/detail/begin.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/mpl/detail/begin.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/detail/begin.hpp 2010-12-19 12:05:50 EST (Sun, 19 Dec 2010)
@@ -1,5 +1,6 @@
 /*==============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2009-2010 Christopher Schmidt
 
     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)
@@ -25,9 +26,7 @@
         {
             typedef
                 fusion_iterator<
- typename fusion::result_of::begin<
- typename fusion::result_of::as_vector<Seq>::type
- >::type
+ typename fusion::result_of::begin<Seq>::type
>
             type;
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/mpl/detail/end.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/mpl/detail/end.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/detail/end.hpp 2010-12-19 12:05:50 EST (Sun, 19 Dec 2010)
@@ -1,5 +1,6 @@
 /*==============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2009-2010 Christopher Schmidt
 
     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)
@@ -25,9 +26,7 @@
         {
             typedef
                 fusion_iterator<
- typename fusion::result_of::end<
- typename fusion::result_of::as_vector<Seq>::type
- >::type
+ typename fusion::result_of::end<Seq>::type
>
             type;
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/begin.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/begin.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/begin.hpp 2010-12-19 12:05:50 EST (Sun, 19 Dec 2010)
@@ -11,6 +11,8 @@
 
 #include <boost/fusion/support/internal/base.hpp>
 #include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/utility/enable_if.hpp>
 
 namespace boost { namespace fusion
 {
@@ -34,7 +36,10 @@
     }
 
     template<typename Seq>
- inline typename result_of::begin<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
+ inline typename lazy_enable_if<
+ traits::is_sequence<BOOST_FUSION_R_ELSE_CLREF(Seq)>
+ , result_of::begin<BOOST_FUSION_R_ELSE_CLREF(Seq)>
+ >::type
     begin(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
         return result_of::begin<BOOST_FUSION_R_ELSE_CLREF(Seq)>::call(
@@ -43,7 +48,10 @@
 
 #ifdef BOOST_FUSION_NO_RVALUE_REFERENCES
     template<typename Seq>
- inline typename result_of::begin<Seq&>::type
+ inline typename lazy_enable_if<
+ traits::is_sequence<Seq&>
+ , result_of::begin<Seq&>
+ >::type
     begin(Seq& seq)
     {
         return result_of::begin<Seq&>::call(seq);

Modified: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/end.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/end.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/end.hpp 2010-12-19 12:05:50 EST (Sun, 19 Dec 2010)
@@ -1,5 +1,6 @@
 /*==============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2009-2010 Christopher Schmidt
 
     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)
@@ -10,6 +11,8 @@
 
 #include <boost/fusion/support/internal/base.hpp>
 #include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/utility/enable_if.hpp>
 
 namespace boost { namespace fusion
 {
@@ -32,7 +35,10 @@
     }
 
     template<typename Seq>
- inline typename result_of::end<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
+ inline typename lazy_enable_if<
+ traits::is_sequence<BOOST_FUSION_R_ELSE_CLREF(Seq)>
+ , result_of::end<BOOST_FUSION_R_ELSE_CLREF(Seq)>
+ >::type
     end(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
         return result_of::end<BOOST_FUSION_R_ELSE_CLREF(Seq)>::call(
@@ -41,7 +47,10 @@
 
 #ifdef BOOST_FUSION_NO_RVALUE_REFERENCES
     template<typename Seq>
- inline typename result_of::end<Seq&>::type
+ inline typename lazy_enable_if<
+ traits::is_sequence<Seq&>
+ , result_of::end<Seq&>
+ >::type
     end(Seq& seq)
     {
         return result_of::end<Seq&>::call(seq);

Modified: sandbox/SOC/2009/fusion/boost/proto/fusion.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/proto/fusion.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/proto/fusion.hpp 2010-12-19 12:05:50 EST (Sun, 19 Dec 2010)
@@ -18,8 +18,6 @@
 #include <boost/fusion/include/category_of.hpp>
 #include <boost/fusion/include/iterator_base.hpp>
 #include <boost/fusion/include/intrinsic.hpp>
-#include <boost/fusion/include/pop_front.hpp>
-#include <boost/fusion/include/reverse.hpp>
 #include <boost/fusion/include/single_view.hpp>
 #include <boost/fusion/include/transform_view.hpp>
 #include <boost/fusion/support/ext_/is_segmented.hpp>
@@ -40,10 +38,8 @@
 
 namespace boost { namespace proto
 {
-
     namespace detail
     {
-
         template<typename Expr, long Pos>
         struct expr_iterator
           : fusion::iterator_base<expr_iterator<Expr, Pos> >
@@ -172,92 +168,6 @@
                 return proto::detail::flat_view<Expr const>(e);
             }
         };
-
- /// \brief A PolymorphicFunctionObject type that invokes the
- /// \c fusion::pop_front() algorithm on its argument.
- ///
- /// A PolymorphicFunctionObject type that invokes the
- /// \c fusion::pop_front() algorithm on its argument. This is
- /// useful for defining a CallableTransform like \c pop_front(_)
- /// which removes the first child from a Proto expression node.
- /// Such a transform might be used as the first argument to the
- /// \c proto::fold\<\> transform; that is, fold all but
- /// the first child.
- struct pop_front
- {
- BOOST_PROTO_CALLABLE()
-
- template<typename Sig>
- struct result;
-
- template<typename This, typename Expr>
- struct result<This(Expr)>
- : result<This(Expr const &)>
- {};
-
- template<typename This, typename Expr>
- struct result<This(Expr &)>
- : fusion::result_of::pop_front<Expr>
- {};
-
- template<typename Expr>
- typename fusion::result_of::pop_front<Expr>::type
- operator ()(Expr &e) const
- {
- // Work around a const-correctness issue in Fusion
- typedef typename fusion::result_of::pop_front<Expr>::type result_type;
- return result_type(fusion::next(fusion::begin(e)), fusion::end(e));
- }
-
- template<typename Expr>
- typename fusion::result_of::pop_front<Expr const>::type
- operator ()(Expr const &e) const
- {
- return fusion::pop_front(e);
- }
- };
-
- /// \brief A PolymorphicFunctionObject type that invokes the
- /// \c fusion::reverse() algorithm on its argument.
- ///
- /// A PolymorphicFunctionObject type that invokes the
- /// \c fusion::reverse() algorithm on its argument. This is
- /// useful for defining a CallableTransform like \c reverse(_)
- /// which reverses the order of the children of a Proto
- /// expression node.
- struct reverse
- {
- BOOST_PROTO_CALLABLE()
-
- template<typename Sig>
- struct result;
-
- template<typename This, typename Expr>
- struct result<This(Expr)>
- : result<This(Expr const &)>
- {};
-
- template<typename This, typename Expr>
- struct result<This(Expr &)>
- : fusion::result_of::reverse<Expr>
- {};
-
- template<typename Expr>
- typename fusion::result_of::reverse<Expr>::type
- operator ()(Expr &e) const
- {
- // Work around a const-correctness issue in Fusion
- typedef typename fusion::result_of::reverse<Expr>::type result_type;
- return result_type(e);
- }
-
- template<typename Expr>
- typename fusion::result_of::reverse<Expr const>::type
- operator ()(Expr const &e) const
- {
- return fusion::reverse(e);
- }
- };
     }
 
     /// \brief A function that returns a "flattened"
@@ -289,29 +199,9 @@
 
     /// INTERNAL ONLY
     ///
- template<>
- struct is_callable<functional::flatten>
- : mpl::true_
- {};
-
- /// INTERNAL ONLY
- ///
- template<>
- struct is_callable<functional::pop_front>
- : mpl::true_
- {};
-
- /// INTERNAL ONLY
- ///
- template<>
- struct is_callable<functional::reverse>
- : mpl::true_
- {};
-
- /// INTERNAL ONLY
- ///
     template<typename Context>
     struct eval_fun
+ : proto::callable
     {
         explicit eval_fun(Context &ctx)
           : ctx_(ctx)
@@ -347,12 +237,39 @@
     private:
         Context &ctx_;
     };
+
+ /// INTERNAL ONLY
+ ///
+ template<typename Context>
+ struct is_callable<eval_fun<Context> >
+ : mpl::true_
+ {};
 }}
 
 namespace boost { namespace fusion
 {
     namespace extension
     {
+ template<typename Tag>
+ struct is_sequence_impl;
+
+ template<>
+ struct is_sequence_impl<proto::tag::proto_flat_view>
+ {
+ template<typename Sequence>
+ struct apply
+ : mpl::true_
+ {};
+ };
+
+ template<>
+ struct is_sequence_impl<proto::tag::proto_expr>
+ {
+ template<typename Sequence>
+ struct apply
+ : mpl::true_
+ {};
+ };
 
         template<typename Tag>
         struct is_view_impl;

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/Jamfile
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/Jamfile (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/Jamfile 2010-12-19 12:05:50 EST (Sun, 19 Dec 2010)
@@ -122,7 +122,10 @@
 
 #Plotter
 exe plotter
- : plotter/main.cpp /boost/date_time//boost_date_time
+ : plotter/main.cpp
+ /boost/date_time//boost_date_time
+#fix warnings in Boost.DateTime
+ : <toolset>gcc:<cxxflags>-Wno-long-long
   ;
 JAM_SEMAPHORE on plotter = fusion-compile-time-test ;
 

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/testcases/detail/main.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/testcases/detail/main.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/testcases/detail/main.hpp 2010-12-19 12:05:50 EST (Sun, 19 Dec 2010)
@@ -5,62 +5,88 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-template<int X, int Y, int Z>
-struct frame_z
+#ifdef TWO_DIMENSIONAL
+template<int X, int Y>
+struct frame_last_it
+{
+ static void
+ call()
+ {
+ test_impl<X, Y>();
+
+ frame_last_it<X, Y+1>();
+ }
+};
+
+template<int X, int Y>
+struct frame_last_it<X, TWO_DIMENSIONAL>
+{
+ static void
+ call()
+ {}
+};
+#endif
+
+template<int A, int B, int C>
+struct frame_abc
 {
     static void
     call()
     {
- test_impl<
- X*BOOST_FUSION_COMPILE_TIME_TEST_RES*
+ static const int it=
+ A*BOOST_FUSION_COMPILE_TIME_TEST_RES*
                 BOOST_FUSION_COMPILE_TIME_TEST_RES+
- Y*BOOST_FUSION_COMPILE_TIME_TEST_RES+
- Z
- >();
+ B*BOOST_FUSION_COMPILE_TIME_TEST_RES+
+ C;
+#ifdef TWO_DIMENSIONAL
+ frame_last_it<it, 0>();
+#else
+ test_impl<it>();
+#endif
     }
 };
 
 
-template<int X, int Y>
-struct frame_z<X, Y, BOOST_FUSION_COMPILE_TIME_TEST_RES>
+template<int A, int B>
+struct frame_abc<A, B, BOOST_FUSION_COMPILE_TIME_TEST_RES>
 {
     static void
     call()
     {}
 };
 
-template<int X, int Y>
-struct frame_y
+template<int A, int B>
+struct frame_ab
 {
     static void
     call()
     {
- frame_z<X, Y, 0>::call();
- frame_y<X, Y+1>::call();
+ frame_abc<A, B, 0>::call();
+ frame_ab<A, B+1>::call();
     }
 };
 
-template<int X>
-struct frame_y<X, BOOST_FUSION_COMPILE_TIME_TEST_RES>
+template<int A>
+struct frame_ab<A, BOOST_FUSION_COMPILE_TIME_TEST_RES>
 {
     static void
     call()
     {}
 };
 
-template<int X>
-struct frame_x
+template<int A>
+struct frame_a
 {
     static void
     call()
     {
- frame_y<X, 0>::call();
- frame_x<X+1>::call();
+ frame_ab<A, 0>::call();
+ frame_a<A+1>::call();
     }
 };
 
 template<>
-struct frame_x<BOOST_FUSION_COMPILE_TIME_TEST_RES>
+struct frame_a<BOOST_FUSION_COMPILE_TIME_TEST_RES>
 {
     static void
     call()
@@ -69,7 +95,7 @@
 
 int main()
 {
- frame_x<0>::call();
+ frame_a<0>::call();
 
     return result;
 }

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/fold.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/fold.hpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/fold.hpp 2010-12-19 12:05:50 EST (Sun, 19 Dec 2010)
@@ -143,6 +143,7 @@
 
         {
             mpl::range_c<int, 1, n+1> init_range;
+
             typename fusion::result_of::as_vector<
                 typename mpl::transform<
                     range


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk