Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r66388 - in sandbox/SOC/2009/fusion: boost/fusion/support/internal/base libs/fusion/example/extension/struct libs/fusion/example/extension/triple libs/fusion/example/extension/vtuple libs/fusion/example/performance libs/fusion/test/compile_time libs/fusion/test/compile_time/plotter libs/fusion/test/compile_time/testcases libs/fusion/test/compile_time/testcases/detail libs/fusion/test/suite1 libs/fusion/test/suite1/algorithm libs/fusion/test/suite2
From: mr.chr.schmidt_at_[hidden]
Date: 2010-11-03 17:12:02


Author: cschmidt
Date: 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
New Revision: 66388
URL: http://svn.boost.org/trac/boost/changeset/66388

Log:
new compile time driver
Added:
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/base/ref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/plotter/
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/plotter/main.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/testcases/
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/testcases/detail/
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/testcases/detail/main.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/testcases/reference.cpp (contents, props changed)
Removed:
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/driver.hpp
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/fold.cpp
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/transform.cpp
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_construction.cpp
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_intrinsic.cpp
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_iteration.cpp
Text files modified:
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/base/ref.hpp | 128 -----------------------------------
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/Jamfile | 1
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple/Jamfile | 1
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple/triple.cpp | 15 +--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/vtuple/Jamfile | 1
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/vtuple/tuple142plus.cpp | 20 ++--
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/vtuple/vtuple_.cpp | 3
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/Jamfile | 1
   sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/Jamfile | 143 ++++++++++++++++++++++++++++++++++-----
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/Jamfile | 1
   sandbox/SOC/2009/fusion/libs/fusion/test/suite1/algorithm/fold.hpp | 9 +-
   sandbox/SOC/2009/fusion/libs/fusion/test/suite2/Jamfile | 1
   12 files changed, 148 insertions(+), 176 deletions(-)

Modified: sandbox/SOC/2009/fusion/boost/fusion/support/internal/base/ref.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/support/internal/base/ref.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/internal/base/ref.hpp 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
@@ -15,7 +15,6 @@
 # include <boost/mpl/or.hpp>
 # include <boost/mpl/identity.hpp>
 #endif
-#include <boost/mpl/bool.hpp>
 
 #include <boost/type_traits/is_class.hpp>
 #include <boost/type_traits/is_array.hpp>
@@ -36,6 +35,8 @@
 # include <utility>
 #endif
 
+#include "ref_impl.hpp"
+
 //cschmidt: We ignore volatile in the BOOST_FUSION_ALL_CV_*-Macros, as we would
 //get a lot of problems with older compilers. On top of that, fusion
 //types are not meant to be volatile anyway.
@@ -73,131 +74,6 @@
 
 namespace boost { namespace fusion { namespace detail
 {
- //cschmidt: workaround until boost::is_reference supports rvalues
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1600)
- template<typename T>
- struct is_lrref_stage2
- : mpl::false_
- {};
-
- template<typename T>
- struct is_lrref_stage2<T&&>
- : mpl::true_
- {};
-
- template<typename T>
- struct is_lrref
- : is_lrref_stage2<T>
- {};
-#else
- template<typename T>
- struct is_lrref
- : mpl::false_
- {};
-
-# ifndef BOOST_FUSION_NO_RVALUE_REFERENCES
- template<typename T>
- struct is_lrref<T&&>
- : mpl::true_
- {};
-# endif
-#endif
-
- template<typename T>
- struct is_lrref<T&>
- : mpl::true_
- {};
-
-#ifndef BOOST_FUSION_NO_RVALUE_REFERENCES
- template<typename T>
- struct is_rref
- : mpl::false_
- {};
-
- template<typename T>
- struct is_rref<T&&>
- : mpl::true_
- {};
-#endif
-
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1600)
- template<typename T>
- struct remove_reference_stage2
- {
- typedef T type;
- };
-
- template<typename T>
- struct remove_reference_stage2<T&&>
- {
- typedef T type;
- };
-
- template<typename T>
- struct remove_reference
- : remove_reference_stage2<T>
- {};
-#else
- template<typename T>
- struct remove_reference
- {
- typedef T type;
- };
-
-# ifndef BOOST_FUSION_NO_RVALUE_REFERENCES
- template<typename T>
- struct remove_reference<T&&>
- {
- typedef T type;
- };
-# endif
-#endif
-
- template<typename T>
- struct remove_reference<T&>
- {
- typedef T type;
- };
-
-#if BOOST_WORKAROUND(BOOST_MSVC, == 1600)
- template<typename T>
- struct add_lref_stage2
- {
- typedef T& type;
- };
-
- template<typename T>
- struct add_lref_stage2<T&&>
- {
- typedef T&& type;
- };
-
- template<typename T>
- struct add_lref
- : add_lref_stage2<T>
- {};
-#else
- template<typename T>
- struct add_lref
- {
- typedef T& type;
- };
-
-# ifndef BOOST_FUSION_NO_RVALUE_REFERENCES
- template<typename T>
- struct add_lref<T&&>
- {
- typedef T&& type;
- };
-# endif
-#endif
-
- template<typename T>
- struct add_lref<T&>
- {
- typedef T& type;
- };
-
     template<typename T>
     struct identity
       :

Added: sandbox/SOC/2009/fusion/boost/fusion/support/internal/base/ref_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/support/internal/base/ref_impl.hpp 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
@@ -0,0 +1,141 @@
+/*==============================================================================
+ Copyright (c) 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_SUPPORT_INTERNAL_BASE_REF_IMPL_HPP
+#define BOOST_FUSION_SUPPORT_INTERNAL_BASE_REF_IMPL_HPP
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ //cschmidt: workaround until boost::is_reference supports rvalues
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1600)
+ template<typename T>
+ struct is_lrref_stage2
+ : mpl::false_
+ {};
+
+ template<typename T>
+ struct is_lrref_stage2<T&&>
+ : mpl::true_
+ {};
+
+ template<typename T>
+ struct is_lrref
+ : is_lrref_stage2<T>
+ {};
+#else
+ template<typename T>
+ struct is_lrref
+ : mpl::false_
+ {};
+
+# ifndef BOOST_FUSION_NO_RVALUE_REFERENCES
+ template<typename T>
+ struct is_lrref<T&&>
+ : mpl::true_
+ {};
+# endif
+#endif
+
+ template<typename T>
+ struct is_lrref<T&>
+ : mpl::true_
+ {};
+
+#ifndef BOOST_FUSION_NO_RVALUE_REFERENCES
+ template<typename T>
+ struct is_rref
+ : mpl::false_
+ {};
+
+ template<typename T>
+ struct is_rref<T&&>
+ : mpl::true_
+ {};
+#endif
+
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1600)
+ template<typename T>
+ struct remove_reference_stage2
+ {
+ typedef T type;
+ };
+
+ template<typename T>
+ struct remove_reference_stage2<T&&>
+ {
+ typedef T type;
+ };
+
+ template<typename T>
+ struct remove_reference
+ : remove_reference_stage2<T>
+ {};
+#else
+ template<typename T>
+ struct remove_reference
+ {
+ typedef T type;
+ };
+
+# ifndef BOOST_FUSION_NO_RVALUE_REFERENCES
+ template<typename T>
+ struct remove_reference<T&&>
+ {
+ typedef T type;
+ };
+# endif
+#endif
+
+ template<typename T>
+ struct remove_reference<T&>
+ {
+ typedef T type;
+ };
+
+#if BOOST_WORKAROUND(BOOST_MSVC, == 1600)
+ template<typename T>
+ struct add_lref_stage2
+ {
+ typedef T& type;
+ };
+
+ template<typename T>
+ struct add_lref_stage2<T&&>
+ {
+ typedef T&& type;
+ };
+
+ template<typename T>
+ struct add_lref
+ : add_lref_stage2<T>
+ {};
+#else
+ template<typename T>
+ struct add_lref
+ {
+ typedef T& type;
+ };
+
+# ifndef BOOST_FUSION_NO_RVALUE_REFERENCES
+ template<typename T>
+ struct add_lref<T&&>
+ {
+ typedef T&& type;
+ };
+# endif
+#endif
+
+ template<typename T>
+ struct add_lref<T&>
+ {
+ typedef T& type;
+ };
+}}}
+
+#endif

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/Jamfile
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/Jamfile (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/struct/Jamfile 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
@@ -15,7 +15,6 @@
   : requirements
         <define>BOOST_FUSION_ENABLE_STATIC_ASSERTS
         <warnings>all
- <toolset>gcc:<cxxflags>-Wno-long-long
   ;
     
 {

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple/Jamfile
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple/Jamfile (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple/Jamfile 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
@@ -15,7 +15,6 @@
   : requirements
         <define>BOOST_FUSION_ENABLE_STATIC_ASSERTS
         <warnings>all
- <toolset>gcc:<cxxflags>-Wno-long-long
   ;
     
 {

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple/triple.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple/triple.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple/triple.cpp 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
@@ -16,7 +16,6 @@
 
 #include <boost/config.hpp>
 #include <boost/detail/lightweight_test.hpp>
-
 #include <boost/fusion/sequence.hpp>
 #include <boost/fusion/iterator.hpp>
 #include <boost/fusion/support.hpp>
@@ -25,6 +24,7 @@
 #include <boost/mpl/assert.hpp>
 #include <boost/type_traits/is_const.hpp>
 #include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/remove_reference.hpp>
 #include <string>
 
 namespace mpl = boost::mpl;
@@ -41,9 +41,8 @@
     {
         typedef mpl::int_<N> index;
         typedef SeqRef seq_type;
- //TODO
         typedef typename
- fusion::detail::remove_reference<SeqRef>::type
+ boost::remove_reference<SeqRef>::type
         seq_nonref_type;
 
         triple_iterator(SeqRef seq)
@@ -167,8 +166,8 @@
         template<typename ItRef1, typename ItRef2>
         struct distance
           : mpl::minus<
- typename fusion::detail::remove_reference<ItRef2>::type::index
- , typename fusion::detail::remove_reference<ItRef1>::type::index
+ typename boost::remove_reference<ItRef2>::type::index
+ , typename boost::remove_reference<ItRef1>::type::index
>
         {};
 
@@ -274,7 +273,7 @@
         template<typename SeqRef>
         struct at<SeqRef, mpl::int_<0> >
         {
- typedef typename fusion::detail::remove_reference<SeqRef>::type seq;
+ typedef typename boost::remove_reference<SeqRef>::type seq;
 
             typedef typename
                 mpl::if_<boost::is_const<seq>, T0 const&, T0&>::type
@@ -290,7 +289,7 @@
         template<typename SeqRef>
         struct at<SeqRef, mpl::int_<1> >
         {
- typedef typename fusion::detail::remove_reference<SeqRef>::type seq;
+ typedef typename boost::remove_reference<SeqRef>::type seq;
 
             typedef typename
                 mpl::if_<boost::is_const<seq>, T1 const&, T1&>::type
@@ -306,7 +305,7 @@
         template<typename SeqRef>
         struct at<SeqRef, mpl::int_<2> >
         {
- typedef typename fusion::detail::remove_reference<SeqRef>::type seq;
+ typedef typename boost::remove_reference<SeqRef>::type seq;
 
             typedef typename
                 mpl::if_<boost::is_const<seq>, T2 const&, T2&>::type

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/vtuple/Jamfile
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/vtuple/Jamfile (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/vtuple/Jamfile 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
@@ -13,7 +13,6 @@
   : requirements
         <define>BOOST_FUSION_ENABLE_STATIC_ASSERTS
         <warnings>all
- <toolset>gcc:<cxxflags>-Wno-long-long
   ;
     
 {

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/vtuple/tuple142plus.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/vtuple/tuple142plus.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/vtuple/tuple142plus.cpp 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
@@ -50,7 +50,7 @@
 #include <boost/type_traits/is_reference.hpp>
 #include <boost/type_traits/add_reference.hpp>
 #include <boost/type_traits/is_same.hpp>
-
+#include <boost/type_traits/remove_reference.hpp>
 
 #include <string>
 
@@ -102,7 +102,7 @@
         typedef mpl::int_<NN> index;
         typedef SeqRef sequence_type;
         typedef typename
- fusion::detail::remove_reference<SeqRef>::type
+ boost::remove_reference<SeqRef>::type
         seq_nonref_type;
 
         vtuple_iterator(SeqRef seq)
@@ -134,7 +134,7 @@
         struct value_of<vtuple_iterator<SeqRef_, N> >
         {
             typedef typename
- fusion::detail::remove_reference<SeqRef_>::type
+ boost::remove_reference<SeqRef_>::type
             seq_;
             BOOST_MPL_ASSERT_NOT((VARIADIC_TUPLE_INDEX_TOO_LARGE<seq_,N>));
             typedef typename std::tuple_element<N,
@@ -165,7 +165,7 @@
         struct deref<vtuple_iterator<SeqRef_, N> >
         {
             typedef typename
- fusion::detail::remove_reference<SeqRef_>::type
+ boost::remove_reference<SeqRef_>::type
             seq_;
             BOOST_MPL_ASSERT_NOT((VARIADIC_TUPLE_INDEX_TOO_LARGE<seq_,N>));
             typedef typename std::tuple_element<N,typename seq_::base_type>::type typeN;
@@ -187,8 +187,8 @@
         template<typename ItRef1, typename ItRef2>
         struct distance
           : mpl::minus<
- typename fusion::detail::remove_reference<ItRef2>::type::index
- , typename fusion::detail::remove_reference<ItRef1>::type::index
+ typename boost::remove_reference<ItRef2>::type::index
+ , typename boost::remove_reference<ItRef1>::type::index
>
         {};
 
@@ -355,7 +355,7 @@
         struct end
         {
            typedef typename
- fusion::detail::remove_reference<Sq>::type
+ boost::remove_reference<Sq>::type
             seq;
             typedef variadic_tuple::vtuple_iterator<
                 Sq,
@@ -374,7 +374,7 @@
         // >
         {
             typedef typename
- fusion::detail::remove_reference<Sq>::type
+ boost::remove_reference<Sq>::type
             seq;
             typedef typename mpl::int_<
           std::tuple_size<typename seq::base_type>::value>::type type;
@@ -388,7 +388,7 @@
         struct value_at<Sq, mpl::int_<N> >
         {
             typedef typename
- fusion::detail::remove_reference<Sq>::type
+ boost::remove_reference<Sq>::type
             seq;
             BOOST_MPL_ASSERT_NOT((VARIADIC_TUPLE_INDEX_TOO_LARGE<seq,N>));
           typedef typename std::tuple_element<N,
@@ -405,7 +405,7 @@
         struct at<Sq, mpl::int_<N> >
         {
             typedef typename
- fusion::detail::remove_reference<Sq>::type
+ boost::remove_reference<Sq>::type
             seq;
              BOOST_MPL_ASSERT_NOT((VARIADIC_TUPLE_INDEX_TOO_LARGE<seq,N>));
           typedef typename std::tuple_element<N,

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/extension/vtuple/vtuple_.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/extension/vtuple/vtuple_.cpp (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/extension/vtuple/vtuple_.cpp 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
@@ -29,6 +29,7 @@
 # include <boost/type_traits/remove_reference.hpp>
 # include <boost/type_traits/is_const.hpp>
 # include <boost/type_traits/is_same.hpp>
+# include <boost/type_traits/remove_reference.hpp>
 
 # include <tuple>
 # include <string>
@@ -327,7 +328,7 @@
         struct end
         {
            typedef typename
- fusion::detail::remove_reference<Sq>::type
+ boost::remove_reference<Sq>::type
             seq;
             typedef variadic_tuple::vtuple_iterator<
                 Sq,

Modified: sandbox/SOC/2009/fusion/libs/fusion/example/performance/Jamfile
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/example/performance/Jamfile (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/example/performance/Jamfile 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
@@ -12,7 +12,6 @@
   : requirements
         <define>BOOST_FUSION_ENABLE_STATIC_ASSERTS
         <warnings>all
- <toolset>gcc:<cxxflags>-Wno-long-long
   ;
     
 {

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-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
@@ -1,6 +1,4 @@
 #==============================================================================
-# Copyright (c) 2003-2006 Joel de Guzman
-# Copyright (c) 2006 Dan Marsden
 # Copyright (c) 2010 Christopher Schmidt
 #
 # Use, modification and distribution is subject to the Boost Software
@@ -8,39 +6,142 @@
 # http://www.boost.org/LICENSE_1_0.txt)
 #==============================================================================
 
-import notfile ;
+#cschmidt: This is one big, ugly hack!
+
+import targets ;
+import type ;
+import generators ;
+import feature ;
+import common ;
+
+variant minimal
+ : <optimization>off <inlining>off <debug-symbols>off <profiling>off
+ ;
 
 project
   : requirements
- <define>BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# <define>BOOST_FUSION_ENABLE_STATIC_ASSERTS
+ <define>BOOST_FUSION_COMPILE_TIME_TEST_RES=35
         <warnings>all
- <toolset>gcc:<cxxflags>-Wno-long-long
+ <variant>minimal
   ;
-
+
+#Capturing compile time of an individual source file
+type.register TIMING : timing ;
+generators.register-standard make-timing : OBJ : TIMING ;
+
+feature.feature category : : free ;
+feature.feature desc : : free ;
+
 module timing-module
 {
- rule timing-callback ( target-id * : target : start end user system )
+ import feature ;
+
+ rule timing-callback ( target : source-id : start end user system )
+ {
+ START on $(target) = $(start) ;
+ END on $(target) = $(end) ;
+ }
+
+ rule make-timing ( target : source : properties + )
     {
- echo $(target-id) ":" $(start) $(end) ;
+ CATEGORY on $(target) =
+ [ feature.get-values <category> : $(properties) ] ;
+ DESC on $(target) = [ feature.get-values <desc> : $(properties) ] ;
+
+ ALWAYS $(source) ;
+ __TIMING_RULE__ on $(source) = timing-callback $(target) ;
+ JAM_SEMAPHORE on $(source) = fusion-compile-time-test ;
+ }
+
+ actions make-timing
+ {
+ echo $(START)> $(<)
+ echo $(END)>> $(<)
+ echo $(CATEGORY)>> $(<)
+ echo $(DESC)>> $(<)
     }
 }
-IMPORT timing-module : timing-callback : : timing-callback ;
+IMPORT timing-module
+ : timing-callback make-timing
+ :
+ : timing-callback make-timing
+ ;
 
-rule report-time ( target * : source * : properties * )
+rule capture-compile-time ( seed : category : desc : source : properties * )
 {
- ALWAYS $(source) ;
- __TIMING_RULE__ on $(source) = timing-callback $(target:G=) ;
- JAM_SEMAPHORE on $(source) = fusion-compile-time-test ;
+ obj $(seed)-$(source:B)-obj : testcases/$(source).cpp : $(properties) ;
+ timing $(seed)-$(source:B)
+ : $(seed)-$(source:B)-obj
+ : <category>$(category) <desc>$(desc)
+ ;
+ return $(seed)-$(source:B) ;
 }
 
-obj fold : fold.cpp ;
-notfile fold.dummy : <action>blub @report-time test : fold ;
+#Composing individual timings to a single report
+type.register RESULT : result ;
+generators.register-composing make-result : EXE TIMING : RESULT ;
 
-#for local test-file in [ glob-tree *.cpp ]
-#{
-# obj $(test-file:B) : $(test-file) ;
-# notfile $(test-file).dummy : <action>blub @report-time test : $(test-file:B) ;
+module result-module
+{
+ import common ;
+ import feature ;
+ import path ;
+ import sequence ;
+ import os ;
 
-# run $(test-file) : : : : ;
-#}
+ rule make-result ( target : sources * : properties * )
+ {
+ local dll-paths = [ feature.get-values <xdll-path> : $(properties) ] ;
+ if $(dll-paths)
+ {
+ dll-paths = [ sequence.transform path.native : $(dll-paths) ] ;
+ PATH_SETUP on $(target) =
+ [
+ common.prepend-path-variable-command
+ [ os.shared-library-path-variable ]
+ : $(dll-paths)
+ ] ;
+ }
+ }
+
+ actions make-result
+ {
+ $(PATH_SETUP)
+ echo ==========================
+ $(>)
+ echo ==========================
+ $(>) > $(<)
+ }
+}
+IMPORT result-module
+ : make-result
+ :
+ : make-result
+ ;
+
+#Plotter
+exe plotter
+ : plotter/main.cpp /boost/date_time//boost_date_time
+ ;
+JAM_SEMAPHORE on plotter = fusion-compile-time-test ;
+
+#Report
+result timings
+ : plotter
+ [
+ capture-compile-time type-traits
+ : "reference check"
+ : "using Boost.TypeTraits"
+ : reference
+ : <define>BOOST_FUSION_USE_TYPE_TRAITS
+ ]
+ [
+ capture-compile-time fusion
+ : "reference check"
+ : "using Fusion's internal reference metafunctions"
+ : reference
+ :
+ ]
+ ;
 

Deleted: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/driver.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/driver.hpp 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
+++ (empty file)
@@ -1,75 +0,0 @@
-/*==============================================================================
- Copyright (c) 2008 Dan Marsden
-
- Use modification and distribution are 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).
-==============================================================================*/
-
-#if !defined(BOOST_FUSION_COMPILE_TIME_DRIVER)
-#define BOOST_FUSION_COMPILE_TIME_DRIVER
-
-int main()
-{
- test<0>();
- test<1>();
- test<2>();
- test<3>();
- test<4>();
-
- test<5>();
- test<6>();
- test<7>();
- test<8>();
- test<9>();
-
- test<10>();
- test<11>();
- test<12>();
- test<13>();
- test<14>();
-
- test<15>();
- test<16>();
- test<17>();
- test<18>();
- test<19>();
-
- test<20>();
- test<21>();
- test<22>();
- test<23>();
- test<24>();
-
- test<25>();
- test<26>();
- test<27>();
- test<28>();
- test<29>();
-
- test<30>();
- test<31>();
- test<32>();
- test<33>();
- test<34>();
-
- test<35>();
- test<36>();
- test<37>();
- test<38>();
- test<39>();
-
- test<40>();
- test<41>();
- test<42>();
- test<43>();
- test<44>();
-
- test<45>();
- test<46>();
- test<47>();
- test<48>();
- test<49>();
-}
-
-#endif

Deleted: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/fold.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/fold.cpp 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
+++ (empty file)
@@ -1,42 +0,0 @@
-/*==============================================================================
- Copyright (c) 2008 Dan Marsden
-
- Use modification and distribution are 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).
-==============================================================================*/
-
-#include <boost/fusion/include/fold.hpp>
-#include <boost/fusion/include/vector.hpp>
-
-namespace fusion = boost::fusion;
-
-namespace
-{
- template<int n, int batch>
- struct distinct
- {};
-
- struct f
- {
- typedef int result_type;
-
- template<int n, int batch>
- int operator()(int state, distinct<n, batch> const& d) const
- {
- return state + n;
- }
- };
-
- template<int batch>
- void test()
- {
- fusion::vector<
- distinct<0, batch>, distinct<1, batch>, distinct<2, batch>, distinct<3, batch>, distinct<4, batch>,
- distinct<5, batch>, distinct<6, batch>, distinct<7, batch>, distinct<8, batch>, distinct<9, batch> > v;
-
- fusion::fold(v, 0, f());
- }
-}
-
-#include "driver.hpp"

Added: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/plotter/main.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/plotter/main.cpp 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
@@ -0,0 +1,85 @@
+/*==============================================================================
+ Copyright (c) 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)
+==============================================================================*/
+
+#include <iostream>
+#include <fstream>
+#include <map>
+#include <string>
+
+#include <boost/date_time/posix_time/posix_time.hpp>
+#include <boost/date_time/time_facet.hpp>
+
+int
+main(int argc, char *argv[])
+{
+ if(argc<=1)
+ {
+ std::cout << "Pass at least one argument..." << std::endl;
+ return -1;
+ }
+
+ typedef
+ std::map<
+ std::string
+ , std::multimap<boost::posix_time::time_period, std::string>
+ >
+ timings_type;
+ timings_type timings;
+
+ for(int i=1;i!=argc;++i)
+ {
+
+ std::ifstream timing(argv[i]);
+ timing.imbue(std::locale(
+ timing.getloc(),
+ new boost::posix_time::time_input_facet("%Y-%m-%d %H:%M:%S")));
+
+ boost::posix_time::ptime start;
+ boost::posix_time::ptime end;
+
+ {
+ std::string line;
+
+ timing >> start;
+ std::getline(timing, line);
+
+ timing >> end;
+ std::getline(timing, line);
+ }
+
+ std::string category;
+ std::getline(timing, category);
+
+ std::string desc;
+ std::getline(timing, desc);
+ if(!timing)
+ {
+ std::cout << "Failed parsing " << argv[i] << std::endl;
+ return -1;
+ }
+
+ timings[category].insert(std::make_pair(
+ boost::posix_time::time_period(start, end),desc));
+ }
+
+ for(timings_type::const_iterator p=timings.begin();p!=timings.end();++p)
+ {
+ if(p!=timings.begin())
+ {
+ std::cout << std::endl;
+ }
+
+ std::cout << p->first << "..." << std::endl;
+ for(timings_type::mapped_type::const_iterator q=p->second.begin();
+ q!=p->second.end();
+ ++q)
+ {
+ std::cout << "\t" << q->first.length() <<
+ " ..." << q->second << std::endl;
+ }
+ }
+}

Added: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/testcases/detail/main.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/testcases/detail/main.hpp 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
@@ -0,0 +1,75 @@
+/*==============================================================================
+ Copyright (c) 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)
+==============================================================================*/
+
+template<int X, int Y, int Z>
+struct frame_z
+{
+ static void
+ call()
+ {
+ test_impl<
+ X*BOOST_FUSION_COMPILE_TIME_TEST_RES*
+ BOOST_FUSION_COMPILE_TIME_TEST_RES+
+ Y*BOOST_FUSION_COMPILE_TIME_TEST_RES+
+ Z
+ >();
+ }
+};
+
+
+template<int X, int Y>
+struct frame_z<X, Y, BOOST_FUSION_COMPILE_TIME_TEST_RES>
+{
+ static void
+ call()
+ {}
+};
+
+template<int X, int Y>
+struct frame_y
+{
+ static void
+ call()
+ {
+ frame_z<X, Y, 0>::call();
+ frame_y<X, Y+1>::call();
+ }
+};
+
+template<int X>
+struct frame_y<X, BOOST_FUSION_COMPILE_TIME_TEST_RES>
+{
+ static void
+ call()
+ {}
+};
+
+template<int X>
+struct frame_x
+{
+ static void
+ call()
+ {
+ frame_y<X, 0>::call();
+ frame_x<X+1>::call();
+ }
+};
+
+template<>
+struct frame_x<BOOST_FUSION_COMPILE_TIME_TEST_RES>
+{
+ static void
+ call()
+ {}
+};
+
+int main()
+{
+ frame_x<0>::call();
+
+ return result;
+}

Added: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/testcases/reference.cpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/testcases/reference.cpp 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
@@ -0,0 +1,80 @@
+/*==============================================================================
+ Copyright (c) 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_FUSION_USE_TYPE_TRAITS
+# include <boost/type_traits/add_reference.hpp>
+# include <boost/type_traits/remove_reference.hpp>
+# include <boost/type_traits/is_reference.hpp>
+
+# define BOOST_FUSION_ADD_REFERENCE boost::add_reference
+# define BOOST_FUSION_REMOVE_REFERENCE boost::remove_reference
+# define BOOST_FUSION_IS_REFERENCE boost::is_reference
+#else
+# include <boost/config.hpp>
+# include <boost/fusion/support/internal/base/config.hpp>
+# include <boost/fusion/support/internal/base/ref_impl.hpp>
+
+# define BOOST_FUSION_ADD_REFERENCE boost::fusion::detail::add_lref
+# define BOOST_FUSION_REMOVE_REFERENCE boost::fusion::detail::remove_reference
+# define BOOST_FUSION_IS_REFERENCE boost::fusion::detail::is_lrref
+#endif
+
+int result=0;
+
+template<int>
+struct bar
+{};
+
+template<typename>
+struct foo
+{
+ static const int i=0;
+};
+
+template<int I>
+struct foo<bar<I> const>
+{
+ static const int i=1;
+};
+
+template<int I>
+void
+test_impl()
+{
+ result+=foo<typename BOOST_FUSION_ADD_REFERENCE<bar<I> >::type>::i;
+ result+=foo<typename BOOST_FUSION_ADD_REFERENCE<bar<I> const>::type>::i;
+ result+=foo<typename BOOST_FUSION_ADD_REFERENCE<bar<I>&>::type>::i;
+ result+=foo<typename BOOST_FUSION_ADD_REFERENCE<bar<I> const&>::type>::i;
+#ifndef BOOST_NO_RVALUE_REFERENCES
+ result+=foo<typename BOOST_FUSION_ADD_REFERENCE<bar<I>&&>::type>::i;
+ result+=foo<
+ typename BOOST_FUSION_ADD_REFERENCE<bar<I> const&&>::type
+ >::i;
+#endif
+
+ result+=foo<typename BOOST_FUSION_REMOVE_REFERENCE<bar<I> >::type>::i;
+ result+=foo<typename BOOST_FUSION_REMOVE_REFERENCE<bar<I> const>::type>::i;
+ result+=foo<typename BOOST_FUSION_REMOVE_REFERENCE<bar<I>&>::type>::i;
+ result+=foo<typename BOOST_FUSION_REMOVE_REFERENCE<bar<I> const&>::type>::i;
+#ifndef BOOST_NO_RVALUE_REFERENCES
+ result+=foo<typename BOOST_FUSION_REMOVE_REFERENCE<bar<I>&&>::type>::i;
+ result+=foo<
+ typename BOOST_FUSION_REMOVE_REFERENCE<bar<I> const&&>::type
+ >::i;
+#endif
+
+ result+=BOOST_FUSION_IS_REFERENCE<bar<I> >::type::value ? 1 : 0;
+ result+=BOOST_FUSION_IS_REFERENCE<bar<I> const>::type::value ? 1 : 0;
+ result+=BOOST_FUSION_IS_REFERENCE<bar<I>&>::type::value ? 1 : 0;
+ result+=BOOST_FUSION_IS_REFERENCE<bar<I> const&>::type::value ? 1 : 0;
+#ifndef BOOST_NO_RVALUE_REFERENCES
+ result+=BOOST_FUSION_IS_REFERENCE<bar<I>&&>::type::value ? 1 : 0;
+ result+=BOOST_FUSION_IS_REFERENCE<bar<I> const&&>::value ? 1 : 0;
+#endif
+}
+
+#include "detail/main.hpp"

Deleted: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/transform.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/transform.cpp 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
+++ (empty file)
@@ -1,55 +0,0 @@
-/*==============================================================================
- Copyright (c) 2008 Dan Marsden
-
- Use modification and distribution are 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).
-==============================================================================*/
-
-#include <boost/fusion/include/transform.hpp>
-#include <boost/fusion/include/for_each.hpp>
-#include <boost/fusion/include/vector.hpp>
-
-namespace fusion = boost::fusion;
-
-namespace
-{
- template<int n, int batch>
- struct distinct
- {
- static const int value = n;
- };
-
- struct f
- {
- typedef int result_type;
-
- template<typename T>
- result_type operator()(T const& t) const
- {
- return T::value;
- }
- };
-
- struct touch
- {
- template<typename T>
- void operator()(T const&) const
- {}
- };
-
- template<int batch>
- void test()
- {
- fusion::vector<
- distinct<0, batch>, distinct<1, batch>, distinct<2, batch>, distinct<3, batch>, distinct<4, batch>,
- distinct<5, batch>, distinct<6, batch>, distinct<7, batch>, distinct<8, batch>, distinct<9, batch> > v;
-
- // We're testing transform really
- // for_each call is to force iteration through the lazy
- // transform, otherwise very little will happen.
- fusion::for_each(fusion::transform(v, f()), touch());
- }
-}
-
-#include "driver.hpp"

Deleted: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_construction.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_construction.cpp 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
+++ (empty file)
@@ -1,28 +0,0 @@
-/*==============================================================================
- Copyright (c) 2008 Dan Marsden
-
- Use modification and distribution are 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).
-==============================================================================*/
-
-#include <boost/fusion/include/vector.hpp>
-
-namespace fusion = boost::fusion;
-
-namespace
-{
- template<int n, int batch>
- struct distinct
- {};
-
- template<int batch>
- void test()
- {
- fusion::vector<
- distinct<0, batch>, distinct<1, batch>, distinct<2, batch>, distinct<3, batch>, distinct<4, batch>,
- distinct<5, batch>, distinct<6, batch>, distinct<7, batch>, distinct<8, batch>, distinct<9, batch> > v;
- }
-}
-
-#include "driver.hpp"

Deleted: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_intrinsic.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_intrinsic.cpp 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
+++ (empty file)
@@ -1,59 +0,0 @@
-/*==============================================================================
- Copyright (c) 2008 Dan Marsden
-
- Use modification and distribution are 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).
-==============================================================================*/
-
-#include <boost/fusion/include/vector.hpp>
-#include <boost/fusion/include/intrinsic.hpp>
-
-namespace fusion = boost::fusion;
-
-namespace
-{
- template<int n, int batch>
- struct distinct
- {};
-
- template<int batch>
- void test()
- {
- typedef fusion::vector<
- distinct<0, batch>, distinct<1, batch>, distinct<2, batch>, distinct<3, batch>, distinct<4, batch>,
- distinct<5, batch>, distinct<6, batch>, distinct<7, batch>, distinct<8, batch>, distinct<9, batch> > v_type;
-
- v_type v;
-
- fusion::at_c<0>(v);
- fusion::at_c<1>(v);
- fusion::at_c<2>(v);
- fusion::at_c<3>(v);
- fusion::at_c<4>(v);
-
- fusion::at_c<5>(v);
- fusion::at_c<6>(v);
- fusion::at_c<7>(v);
- fusion::at_c<8>(v);
- fusion::at_c<9>(v);
-
- typedef typename fusion::result_of::value_at_c<v_type, 0>::type va0;
- typedef typename fusion::result_of::value_at_c<v_type, 1>::type va1;
- typedef typename fusion::result_of::value_at_c<v_type, 2>::type va2;
- typedef typename fusion::result_of::value_at_c<v_type, 3>::type va3;
- typedef typename fusion::result_of::value_at_c<v_type, 4>::type va4;
-
- typedef typename fusion::result_of::value_at_c<v_type, 5>::type va5;
- typedef typename fusion::result_of::value_at_c<v_type, 6>::type va6;
- typedef typename fusion::result_of::value_at_c<v_type, 7>::type va7;
- typedef typename fusion::result_of::value_at_c<v_type, 8>::type va8;
- typedef typename fusion::result_of::value_at_c<v_type, 9>::type va9;
-
- fusion::begin(v);
- fusion::end(v);
- fusion::size(v);
- }
-}
-
-#include "driver.hpp"

Deleted: sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_iteration.cpp
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/compile_time/vector_iteration.cpp 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
+++ (empty file)
@@ -1,38 +0,0 @@
-/*==============================================================================
- Copyright (c) 2008 Dan Marsden
-
- Use modification and distribution are 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).
-==============================================================================*/
-
-#include <boost/fusion/include/vector.hpp>
-#include <boost/fusion/include/for_each.hpp>
-
-namespace fusion = boost::fusion;
-
-namespace
-{
- template<int n, int batch>
- struct distinct
- {};
-
- struct null_op
- {
- template<typename T>
- void operator()(T const& t) const
- {}
- };
-
- template<int batch>
- void test()
- {
- fusion::vector<
- distinct<0, batch>, distinct<1, batch>, distinct<2, batch>, distinct<3, batch>, distinct<4, batch>,
- distinct<5, batch>, distinct<6, batch>, distinct<7, batch>, distinct<8, batch>, distinct<9, batch> > v;
-
- fusion::for_each(v, null_op());
- }
-}
-
-#include "driver.hpp"

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite1/Jamfile
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite1/Jamfile (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite1/Jamfile 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
@@ -14,7 +14,6 @@
   : requirements
         <define>BOOST_FUSION_ENABLE_STATIC_ASSERTS
         <warnings>all
- <toolset>gcc:<cxxflags>-Wno-long-long
   ;
     
 {

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-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
@@ -33,6 +33,7 @@
 #include <boost/mpl/copy.hpp>
 #include <boost/type_traits/remove_reference.hpp>
 #include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/is_reference.hpp>
 #include <iostream>
 
 namespace mpl=boost::mpl;
@@ -68,8 +69,8 @@
           , int
>
     {
- BOOST_MPL_ASSERT((typename fusion::detail::is_lrref<State>::type));
- BOOST_MPL_ASSERT((typename fusion::detail::is_lrref<T>::type));
+ BOOST_MPL_ASSERT((typename fusion::detail::is_reference<State>::type));
+ BOOST_MPL_ASSERT((typename fusion::detail::is_reference<T>::type));
     };
 
 #ifdef BOOST_FUSION_TEST_ITER_FOLD
@@ -100,8 +101,8 @@
     template<typename Self, typename State, typename T>
     struct result<Self(State,T)>
     {
- BOOST_MPL_ASSERT((typename fusion::detail::is_lrref<State>::type));
- BOOST_MPL_ASSERT((typename fusion::detail::is_lrref<T>::type));
+ BOOST_MPL_ASSERT((typename fusion::detail::is_reference<State>::type));
+ BOOST_MPL_ASSERT((typename fusion::detail::is_reference<T>::type));
 
         typedef typename boost::remove_reference<State>::type state;
         static const int n=mpl::front<state>::type::value;

Modified: sandbox/SOC/2009/fusion/libs/fusion/test/suite2/Jamfile
==============================================================================
--- sandbox/SOC/2009/fusion/libs/fusion/test/suite2/Jamfile (original)
+++ sandbox/SOC/2009/fusion/libs/fusion/test/suite2/Jamfile 2010-11-03 17:11:59 EDT (Wed, 03 Nov 2010)
@@ -14,7 +14,6 @@
         <define>BOOST_FUSION_TEST_MAX_N=20
         <define>BOOST_FUSION_ENABLE_STATIC_ASSERTS
         <warnings>all
- <toolset>gcc:<cxxflags>-Wno-long-long
         <library>/boost/test//boost_unit_test_framework
         <link>static
   ;


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