Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r54548 - in sandbox/SOC/2009/fusion: . boost/fusion boost/fusion/adapted boost/fusion/adapted/array boost/fusion/adapted/array/detail boost/fusion/adapted/boost_tuple boost/fusion/adapted/boost_tuple/detail boost/fusion/adapted/mpl boost/fusion/adapted/mpl/detail boost/fusion/adapted/std_pair boost/fusion/adapted/std_pair/detail boost/fusion/adapted/struct boost/fusion/adapted/struct/detail boost/fusion/algorithm boost/fusion/algorithm/iteration boost/fusion/algorithm/iteration/detail boost/fusion/algorithm/iteration/ext_ boost/fusion/algorithm/query boost/fusion/algorithm/query/detail boost/fusion/algorithm/query/ext_ boost/fusion/algorithm/transformation boost/fusion/algorithm/transformation/detail boost/fusion/container boost/fusion/container/deque boost/fusion/container/ext_ boost/fusion/container/generation boost/fusion/container/generation/detail boost/fusion/container/generation/detail/pp boost/fusion/container/generation/detail/variadic_templates boost/fusion/container/list boost/fusion/container/list/detail boost/fusion/container/list/detail/cons boost/fusion/container/list/detail/list boost/fusion/container/list/detail/list/pp boost/fusion/container/list/detail/list/variadic_templates boost/fusion/container/map boost/fusion/container/map/detail boost/fusion/container/map/detail/pp boost/fusion/container/map/detail/variadic_templates boost/fusion/container/set boost/fusion/container/set/detail boost/fusion/container/set/detail/pp boost/fusion/container/set/detail/variadic_templates boost/fusion/container/vector boost/fusion/container/vector/detail boost/fusion/container/vector/detail/pp boost/fusion/container/vector/detail/variadic_templates boost/fusion/functional boost/fusion/functional/adapter boost/fusion/functional/adapter/detail boost/fusion/functional/generation boost/fusion/functional/invocation boost/fusion/functional/invocation/detail boost/fusion/include boost/fusion/iterator boost/fusion/iterator/detail boost/fusion/iterator/mpl boost/fusion/mpl boost/fusion/mpl/detail boost/fusion/sequence boost/fusion/sequence/comparison boost/fusion/sequence/comparison/detail boost/fusion/sequence/intrinsic boost/fusion/sequence/intrinsic/ext_ boost/fusion/sequence/io/detail boost/fusion/support boost/fusion/support/detail boost/fusion/support/detail/iterator_adapter boost/fusion/support/ext_ boost/fusion/support/variadic_templates boost/fusion/support/variadic_templates/detail boost/fusion/tuple boost/fusion/tuple/detail boost/fusion/view boost/fusion/view/detail boost/fusion/view/ext_ boost/fusion/view/filter_view boost/fusion/view/filter_view/detail boost/fusion/view/iterator_range boost/fusion/view/iterator_range/detail boost/fusion/view/joint_view boost/fusion/view/joint_view/detail boost/fusion/view/repetitive_view boost/fusion/view/reverse_view boost/fusion/view/reverse_view/detail boost/fusion/view/single_view boost/fusion/view/single_view/detail boost/fusion/view/transform_view boost/fusion/view/transform_view/detail boost/fusion/view/zip_view boost/fusion/view/zip_view/detail libs/fusion libs/fusion/doc libs/fusion/example/extension libs/fusion/example/extension/detail libs/fusion/example/test libs/fusion/test libs/fusion/test/algorithm libs/fusion/test/algorithm/ext_ libs/fusion/test/sequence libs/fusion/test/sequence/ext_ workaround/conceptgcc/test/mini-fusion
From: mr.chr.schmidt_at_[hidden]
Date: 2009-06-30 18:04:03


Author: cschmidt
Date: 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
New Revision: 54548
URL: http://svn.boost.org/trac/boost/changeset/54548

Log:
update 30.06.08
Added:
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/advance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/distance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/equal_to_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/get_mpl_it.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/mpl_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/next_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/prior_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/list_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_list.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_map.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_set.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_vector.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/map_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/vector_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/list_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_list.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_map.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_set.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_vector.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/map_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/vector_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/build_cons.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/convert_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/empty_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/equal_to_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/next_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/convert_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/pp/
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/pp/as_list.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/pp/list_forward_ctor.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/variadic_templates/
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/variadic_templates/as_list_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/pp/
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/pp/as_map.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/pp/lookup_key.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/pp/map_forward_ctor.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/pp/map_lookup.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/variadic_templates/
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/variadic_templates/as_map_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/as_set.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/lookup_key.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/set_forward_ctor.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/set_lookup.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/variadic_templates/
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/variadic_templates/as_set_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/as_vector.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_forward_ctor.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n_chooser.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/as_vector_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector_n.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/sequence_assign.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/value_at_c.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/detail/at.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/detail/fusion_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/value_at_c.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/assert.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/assign_tags.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/iterator_adapter/
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/iterator_adapter/advance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/iterator_adapter/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/iterator_adapter/distance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/iterator_adapter/equal_to_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/iterator_adapter/next_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/iterator_adapter/prior_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/iterator_adapter/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/iterator_adapter.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/ref.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/sequence_assign.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/template.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/to_random_access_mpl_seq.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/variadic_templates/
   sandbox/SOC/2009/fusion/boost/fusion/support/variadic_templates/detail/
   sandbox/SOC/2009/fusion/boost/fusion/support/variadic_templates/detail/variadic_arguments_to_vector_n.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/variadic_templates/variadic_arguments_to_vector.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/variadic_templates/variadic_quote.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/test/
   sandbox/SOC/2009/fusion/libs/fusion/example/test/Jamfile.v2 (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/test/main.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/CMakeLists.txt (contents, props changed)
Removed:
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/mpl_iterator.hpp
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/ext_/
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/ext_/
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/
   sandbox/SOC/2009/fusion/boost/fusion/container/deque.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/ext_/
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/deque_tie.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_deque.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/at_impl.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/begin_impl.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/build_cons.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/convert_impl.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/deref_impl.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/empty_impl.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/end_impl.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/equal_to_impl.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list_forward_ctor.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list_to_cons.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list_to_cons_call.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/next_impl.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/value_at_impl.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/value_of_impl.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/as_map.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/lookup_key.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/map_forward_ctor.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/map_lookup.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/as_set.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/lookup_key.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/set_forward_ctor.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/set_lookup.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/as_vector.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/vector_forward_ctor.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/vector_n.hpp
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/vector_n_chooser.hpp
   sandbox/SOC/2009/fusion/boost/fusion/include/as_deque.hpp
   sandbox/SOC/2009/fusion/boost/fusion/include/deduce.hpp
   sandbox/SOC/2009/fusion/boost/fusion/include/deque.hpp
   sandbox/SOC/2009/fusion/boost/fusion/include/deque_fwd.hpp
   sandbox/SOC/2009/fusion/boost/fusion/include/deque_tie.hpp
   sandbox/SOC/2009/fusion/boost/fusion/include/make_deque.hpp
   sandbox/SOC/2009/fusion/boost/fusion/include/repetetive_view.hpp
   sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/adapt_deref_traits.hpp
   sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/adapt_value_traits.hpp
   sandbox/SOC/2009/fusion/boost/fusion/iterator/mpl/
   sandbox/SOC/2009/fusion/boost/fusion/iterator/mpl.hpp
   sandbox/SOC/2009/fusion/boost/fusion/mpl/at.hpp
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/ext_/
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/access.hpp
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/category_of.hpp
   sandbox/SOC/2009/fusion/boost/fusion/support/ext_/
   sandbox/SOC/2009/fusion/boost/fusion/view/ext_/
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view.hpp
   sandbox/SOC/2009/fusion/libs/fusion/CMakeLists.txt
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/ext_/
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/back_extended_deque.cpp
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deque_comparison.cpp
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deque_construction.cpp
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deque_copy.cpp
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deque_iterator.cpp
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deque_make.cpp
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deque_misc.cpp
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deque_mutate.cpp
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deque_tie.cpp
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deque_value_at.cpp
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/ext_/
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/front_extended_deque.cpp
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_value_at.cpp
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/make_list.cpp
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/make_vector.cpp
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/repetitive_view.cpp
Properties modified:
   sandbox/SOC/2009/fusion/ (props changed)
Text files modified:
   sandbox/SOC/2009/fusion/boost/fusion/adapted.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/array_iterator.hpp | 21
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/at_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/begin_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/category_of_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/end_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/is_sequence_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/is_view_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/size_impl.hpp | 10
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/value_at_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/tag_of.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp | 7
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp | 13
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/tag_of.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl.hpp | 24 +
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/at_impl.hpp | 19
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/begin_impl.hpp | 32 +-
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/category_of_impl.hpp | 43 +--
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/empty_impl.hpp | 18
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/end_impl.hpp | 28 +
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/has_key_impl.hpp | 15
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp | 11
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/is_view_impl.hpp | 12
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/size_impl.hpp | 15
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/value_at_impl.hpp | 15
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/at_impl.hpp | 17
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/begin_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/end_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/is_sequence_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/is_view_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/size_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/value_at_impl.hpp | 15
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/std_pair_iterator.hpp | 17
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/tag_of.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/adapt_assoc_struct.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/adapt_struct.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/at_impl.hpp | 12
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/at_key_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/begin_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/category_of_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/end_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/has_key_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/is_view_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/size_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/value_at_impl.hpp | 12
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/value_at_key_impl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/extension.hpp | 7
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/struct_iterator.hpp | 13
   sandbox/SOC/2009/fusion/boost/fusion/algorithm.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/accumulate.hpp | 49 ++-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/fold.hpp | 510 ++++++++++++++++++++++-----------------
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/for_each.hpp | 105 ++++---
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/fold.hpp | 64 +++-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/for_each.hpp | 33 +-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/all.hpp | 23 +
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/any.hpp | 21 +
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count.hpp | 19
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count_if.hpp | 21 +
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp | 108 ++++---
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/any.hpp | 115 ++++----
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/assoc_find.hpp | 27 +
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp | 49 ++-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count_if.hpp | 300 +++++++++++++----------
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp | 271 +++++++++-----------
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find.hpp | 64 ++--
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find_if.hpp | 54 +--
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/none.hpp | 18
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation.hpp | 15
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/clear.hpp | 25 +
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace.hpp | 65 ----
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace_if.hpp | 84 ++++-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase.hpp | 146 +++++++----
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase_key.hpp | 36 +-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter.hpp | 26 +
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter_if.hpp | 19
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert.hpp | 69 ++---
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert_range.hpp | 57 ++-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/join.hpp | 32 +
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_back.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_front.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_back.hpp | 27 +
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_front.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove_if.hpp | 13
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace.hpp | 83 +++++
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace_if.hpp | 98 ++++++-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/reverse.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/transform.hpp | 30 +-
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/zip.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/container.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/container/generation.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/cons_tie.hpp | 51 +++
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/ignore.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/list_tie.hpp | 89 +-----
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_cons.hpp | 39 ++
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_list.hpp | 101 +------
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_map.hpp | 116 +--------
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_set.hpp | 103 +-------
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_vector.hpp | 101 +------
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/map_tie.hpp | 120 +--------
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/pair_tie.hpp | 27 +
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/vector_tie.hpp | 88 +-----
   sandbox/SOC/2009/fusion/boost/fusion/container/list.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp | 197 +++++++++-----
   sandbox/SOC/2009/fusion/boost/fusion/container/list/cons_iterator.hpp | 106 +++++--
   sandbox/SOC/2009/fusion/boost/fusion/container/list/convert.hpp | 49 +--
   sandbox/SOC/2009/fusion/boost/fusion/container/list/limits.hpp | 29 +
   sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp | 99 ++++---
   sandbox/SOC/2009/fusion/boost/fusion/container/list/list_fwd.hpp | 17
   sandbox/SOC/2009/fusion/boost/fusion/container/map.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/container/map/convert.hpp | 38 +-
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/at_key_impl.hpp | 30 +-
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/begin_impl.hpp | 45 +--
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/convert_impl.hpp | 52 ++-
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/end_impl.hpp | 42 +-
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/value_at_key_impl.hpp | 17
   sandbox/SOC/2009/fusion/boost/fusion/container/map/limits.hpp | 27 +
   sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp | 187 ++++++++++++-
   sandbox/SOC/2009/fusion/boost/fusion/container/map/map_fwd.hpp | 16
   sandbox/SOC/2009/fusion/boost/fusion/container/set.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/container/set/convert.hpp | 39 +-
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/at_key_impl.hpp | 28 -
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/begin_impl.hpp | 45 +--
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/convert_impl.hpp | 53 ++-
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/end_impl.hpp | 42 +-
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/value_at_key_impl.hpp | 17
   sandbox/SOC/2009/fusion/boost/fusion/container/set/limits.hpp | 27 +
   sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp | 160 ++++++++++-
   sandbox/SOC/2009/fusion/boost/fusion/container/set/set_fwd.hpp | 16
   sandbox/SOC/2009/fusion/boost/fusion/container/vector.hpp | 7
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/convert.hpp | 40 +-
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/advance_impl.hpp | 24 +
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/at_impl.hpp | 29 +-
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/begin_impl.hpp | 17
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/convert_impl.hpp | 52 ++-
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/deref_impl.hpp | 35 +-
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/distance_impl.hpp | 26 -
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/end_impl.hpp | 21
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/equal_to_impl.hpp | 18
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/next_impl.hpp | 20
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/prior_impl.hpp | 21
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/value_at_impl.hpp | 15
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/value_of_impl.hpp | 24 +
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/limits.hpp | 23 +
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector.hpp | 26 +
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector10.hpp | 36 ++
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector20.hpp | 36 +
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector30.hpp | 36 +
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector40.hpp | 34 +
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector50.hpp | 34 +
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector_fwd.hpp | 16
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector_iterator.hpp | 32 +
   sandbox/SOC/2009/fusion/boost/fusion/functional.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter.hpp | 4
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/access.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused_function_object.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused_procedure.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/limits.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_generic.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_lvalue_args.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_rvalue_args.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_typed.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation.hpp | 4
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused_function_object.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused_procedure.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_generic.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_lvalue_args.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_rvalue_args.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation.hpp | 4
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke_function_object.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke_procedure.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/limits.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/accumulate.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/adapt_struct.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/adapted.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/adapter.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/advance.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/algorithm.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/all.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/any.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/array.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/as_list.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/as_map.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/as_set.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/as_vector.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/at.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/at_c.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/at_key.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/back.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/begin.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/boost_tuple.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/category_of.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/clear.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/comparison.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/cons.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/cons_tie.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/container.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/convert.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/count.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/count_if.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/deduce_sequence.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/deref.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/distance.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/empty.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/end.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/equal_to.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/erase.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/erase_key.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/filter.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/filter_if.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/filter_view.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/find.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/find_if.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/fold.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/for_each.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/front.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/functional.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/fused.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/fused_function_object.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/fused_procedure.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/generation.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/greater.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/greater_equal.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/has_key.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/ignore.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/in.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/insert.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/insert_range.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/intrinsic.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/invocation.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/invoke.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/invoke_function_object.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/invoke_procedure.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/io.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/is_iterator.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/is_sequence.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/is_view.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/iteration.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/iterator.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/iterator_base.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/iterator_facade.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/iterator_range.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/join.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/joint_view.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/less.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/less_equal.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/list.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/list_fwd.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/list_tie.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/make_cons.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/make_fused.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/make_fused_function_object.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/make_fused_procedure.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/make_list.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/make_map.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/make_set.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/make_tuple.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/make_unfused_generic.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/make_unfused_lvalue_args.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/make_unfused_rvalue_args.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/make_vector.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/map.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/map_fwd.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/map_tie.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/mpl.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/next.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/none.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/not_equal_to.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/out.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/pair.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/pair_tie.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/pop_back.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/pop_front.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/prior.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/push_back.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/push_front.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/query.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/remove.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/remove_if.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/replace.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/replace_if.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/reverse.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/reverse_view.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/sequence.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/sequence_base.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/sequence_facade.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/set.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/set_fwd.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/single_view.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/size.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/std_pair.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/struct.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/support.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/swap.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/tag_of.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/tag_of_fwd.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/transform.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/transform_view.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/transformation.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/tuple.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/tuple_fwd.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/tuple_tie.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/unfused_generic.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/unfused_lvalue_args.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/unfused_rvalue_args.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/unfused_typed.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/unused.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/value_at.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/value_at_key.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/value_of.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/vector.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/vector10.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/vector20.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/vector30.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/vector40.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/vector50.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/vector_fwd.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/vector_tie.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/view.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/void.hpp | 7
   sandbox/SOC/2009/fusion/boost/fusion/include/zip.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/include/zip_view.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/iterator.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/iterator/advance.hpp | 58 ++--
   sandbox/SOC/2009/fusion/boost/fusion/iterator/deref.hpp | 41 +--
   sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/advance.hpp | 29 +-
   sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/distance.hpp | 26 -
   sandbox/SOC/2009/fusion/boost/fusion/iterator/distance.hpp | 56 +--
   sandbox/SOC/2009/fusion/boost/fusion/iterator/equal_to.hpp | 61 ++--
   sandbox/SOC/2009/fusion/boost/fusion/iterator/iterator_facade.hpp | 27 +
   sandbox/SOC/2009/fusion/boost/fusion/iterator/next.hpp | 39 +-
   sandbox/SOC/2009/fusion/boost/fusion/iterator/prior.hpp | 38 +-
   sandbox/SOC/2009/fusion/boost/fusion/iterator/value_of.hpp | 34 -
   sandbox/SOC/2009/fusion/boost/fusion/mpl.hpp | 8
   sandbox/SOC/2009/fusion/boost/fusion/mpl/back.hpp | 15
   sandbox/SOC/2009/fusion/boost/fusion/mpl/begin.hpp | 20 +
   sandbox/SOC/2009/fusion/boost/fusion/mpl/clear.hpp | 16
   sandbox/SOC/2009/fusion/boost/fusion/mpl/detail/clear.hpp | 28 +
   sandbox/SOC/2009/fusion/boost/fusion/mpl/empty.hpp | 11
   sandbox/SOC/2009/fusion/boost/fusion/mpl/end.hpp | 13
   sandbox/SOC/2009/fusion/boost/fusion/mpl/erase.hpp | 9
   sandbox/SOC/2009/fusion/boost/fusion/mpl/erase_key.hpp | 9
   sandbox/SOC/2009/fusion/boost/fusion/mpl/front.hpp | 14
   sandbox/SOC/2009/fusion/boost/fusion/mpl/has_key.hpp | 12
   sandbox/SOC/2009/fusion/boost/fusion/mpl/insert.hpp | 9
   sandbox/SOC/2009/fusion/boost/fusion/mpl/insert_range.hpp | 9
   sandbox/SOC/2009/fusion/boost/fusion/mpl/pop_back.hpp | 9
   sandbox/SOC/2009/fusion/boost/fusion/mpl/pop_front.hpp | 9
   sandbox/SOC/2009/fusion/boost/fusion/mpl/push_back.hpp | 9
   sandbox/SOC/2009/fusion/boost/fusion/mpl/push_front.hpp | 9
   sandbox/SOC/2009/fusion/boost/fusion/mpl/size.hpp | 11
   sandbox/SOC/2009/fusion/boost/fusion/sequence.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/enable_comparison.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/equal_to.hpp | 10
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/greater.hpp | 9
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/greater_equal.hpp | 7
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/less.hpp | 13
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/less_equal.hpp | 10
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/not_equal_to.hpp | 7
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/equal_to.hpp | 10
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/greater.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/greater_equal.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/less.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/less_equal.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/not_equal_to.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/sequence/convert.hpp | 27 +-
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at.hpp | 76 +----
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at_c.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at_key.hpp | 50 +--
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/back.hpp | 27 +-
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/begin.hpp | 48 +--
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/empty.hpp | 31 +-
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/end.hpp | 46 +--
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/front.hpp | 25 -
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/has_key.hpp | 45 +-
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/size.hpp | 54 +--
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/swap.hpp | 16
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/value_at.hpp | 39 +-
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/value_at_key.hpp | 36 +-
   sandbox/SOC/2009/fusion/boost/fusion/sequence/io.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/sequence/io/detail/in.hpp | 7
   sandbox/SOC/2009/fusion/boost/fusion/sequence/io/detail/manip.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/sequence/io/detail/out.hpp | 22
   sandbox/SOC/2009/fusion/boost/fusion/sequence/sequence_facade.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/support.hpp | 9
   sandbox/SOC/2009/fusion/boost/fusion/support/category_of.hpp | 90 +++---
   sandbox/SOC/2009/fusion/boost/fusion/support/deduce.hpp | 13
   sandbox/SOC/2009/fusion/boost/fusion/support/deduce_sequence.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/as_fusion_element.hpp | 61 ++++
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/is_mpl_sequence.hpp | 23 +
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/is_view.hpp | 9
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/mpl_iterator_category.hpp | 112 ++++----
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/unknown_key.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/support/is_iterator.hpp | 13
   sandbox/SOC/2009/fusion/boost/fusion/support/is_sequence.hpp | 51 +--
   sandbox/SOC/2009/fusion/boost/fusion/support/is_view.hpp | 30 -
   sandbox/SOC/2009/fusion/boost/fusion/support/iterator_base.hpp | 8
   sandbox/SOC/2009/fusion/boost/fusion/support/pair.hpp | 61 +++
   sandbox/SOC/2009/fusion/boost/fusion/support/sequence_base.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/support/tag_of.hpp | 106 ++------
   sandbox/SOC/2009/fusion/boost/fusion/support/tag_of_fwd.hpp | 11
   sandbox/SOC/2009/fusion/boost/fusion/support/unused.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/support/void.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/tuple.hpp | 10
   sandbox/SOC/2009/fusion/boost/fusion/tuple/detail/tuple_expand.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/tuple/make_tuple.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/tuple/tuple.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/tuple/tuple_fwd.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/tuple/tuple_tie.hpp | 6
   sandbox/SOC/2009/fusion/boost/fusion/view.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/view/detail/strictest_traversal.hpp | 50 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/begin_impl.hpp | 37 +
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/deref_impl.hpp | 30 +
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/end_impl.hpp | 35 +
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/equal_to_impl.hpp | 19
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/next_impl.hpp | 41 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/size_impl.hpp | 18
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/value_of_impl.hpp | 21 +
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/filter_view.hpp | 41 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/filter_view_iterator.hpp | 26 -
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/detail/at_impl.hpp | 15
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/detail/begin_impl.hpp | 17
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/detail/end_impl.hpp | 17
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/detail/value_at_impl.hpp | 16
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/iterator_range.hpp | 33 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/begin_impl.hpp | 35 +
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/deref_impl.hpp | 31 +
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/end_impl.hpp | 24 +
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/next_impl.hpp | 24
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/value_of_impl.hpp | 20 +
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/joint_view.hpp | 75 +++--
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/joint_view_iterator.hpp | 30 -
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/advance_impl.hpp | 20 +
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/begin_impl.hpp | 31 +
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/deref_impl.hpp | 21
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/distance_impl.hpp | 28 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/end_impl.hpp | 33 +
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/next_impl.hpp | 35 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/prior_impl.hpp | 31 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/value_of_impl.hpp | 13
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view.hpp | 66 ++--
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view_iterator.hpp | 26 -
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/begin_impl.hpp | 13
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/deref_impl.hpp | 18
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/end_impl.hpp | 13
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/next_impl.hpp | 19
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/value_of_impl.hpp | 16
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp | 66 +++-
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view_iterator.hpp | 33 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/advance_impl.hpp | 63 +++-
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/apply_transform_result.hpp | 20
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/at_impl.hpp | 64 +++-
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/begin_impl.hpp | 57 +++-
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp | 63 +++-
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/distance_impl.hpp | 31 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/end_impl.hpp | 52 ++-
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/equal_to_impl.hpp | 21 +
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/next_impl.hpp | 54 ++-
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/prior_impl.hpp | 56 ++-
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/value_at_impl.hpp | 52 ++-
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/value_of_impl.hpp | 51 ++-
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view.hpp | 146 ++++++----
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view_fwd.hpp | 7
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view_iterator.hpp | 48 ++-
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view.hpp | 5
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/advance_impl.hpp | 35 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/at_impl.hpp | 62 ++--
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/begin_impl.hpp | 66 ++--
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/deref_impl.hpp | 58 ++-
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/distance_impl.hpp | 85 ++++--
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/end_impl.hpp | 70 ++--
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/equal_to_impl.hpp | 48 ++-
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/next_impl.hpp | 49 ++-
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/prior_impl.hpp | 55 ++-
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/size_impl.hpp | 19
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/value_at_impl.hpp | 34 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/value_of_impl.hpp | 30 +
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view.hpp | 131 ++++++----
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view_iterator.hpp | 36 +-
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp | 14
   sandbox/SOC/2009/fusion/build.bat | 6
   sandbox/SOC/2009/fusion/libs/fusion/doc/Jamfile | 2
   sandbox/SOC/2009/fusion/libs/fusion/doc/algorithm.qbk | 5
   sandbox/SOC/2009/fusion/libs/fusion/doc/container.qbk | 62 ++--
   sandbox/SOC/2009/fusion/libs/fusion/doc/extension.qbk | 4
   sandbox/SOC/2009/fusion/libs/fusion/doc/sequence.qbk | 75 ++++-
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/advance_impl.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/at_impl.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/at_key_impl.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/begin_impl.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/category_of_impl.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/deref_impl.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/distance_impl.hpp | 14
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/end_impl.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/equal_to_impl.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/has_key_impl.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/is_sequence_impl.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/is_view_impl.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/next_impl.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/prior_impl.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/size_impl.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/value_at_impl.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/value_at_key_impl.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/value_of_impl.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct_iterator.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct_type.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/tag_of.hpp | 5
   sandbox/SOC/2009/fusion/libs/fusion/test/Jamfile | 103 +++----
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/erase.cpp | 15
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/erase_key.cpp | 8
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/fold.cpp | 36 +
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/insert.cpp | 7
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/insert_range.cpp | 7
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/replace_if.cpp | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/transform.cpp | 3
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_list.cpp | 10
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_map.cpp | 8
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_set.cpp | 12
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_vector.cpp | 12
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/cons.cpp | 32 +-
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/construction.hpp | 6
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/copy.hpp | 6
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deduce_sequence.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/filter_view.cpp | 16
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/iterator.hpp | 19
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/iterator_range.cpp | 28 +-
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/joint_view.cpp | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_iterator.cpp | 4
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_misc.cpp | 1
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/misc.hpp | 14
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/mutate.hpp | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/reverse_view.cpp | 6
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tie.hpp | 15
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tr1_tuple_auto_conv.cpp | 7
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/value_at.hpp | 7
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_n.cpp | 26 +
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_tie.cpp | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/zip_view.cpp | 2
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/zip_view2.cpp | 2
   sandbox/SOC/2009/fusion/project-root.jam | 16
   sandbox/SOC/2009/fusion/workaround/conceptgcc/test/mini-fusion/Jamfile.v2 | 2
   sandbox/SOC/2009/fusion/workaround/conceptgcc/test/mini-fusion/vector.hpp | 4
   570 files changed, 6815 insertions(+), 5671 deletions(-)

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_ADAPTED_30122005_1420)
-#define BOOST_FUSION_ADAPTED_30122005_1420
+
+#ifndef BOOST_FUSION_ADAPTED_HPP
+#define BOOST_FUSION_ADAPTED_HPP
 
 #include <boost/fusion/adapted/boost_tuple.hpp>
 #include <boost/fusion/adapted/std_pair.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/array.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/array.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_ARRAY_27122005_1035)
-#define BOOST_FUSION_ARRAY_27122005_1035
+
+#ifndef BOOST_FUSION_ADAPTED_ARRAY_HPP
+#define BOOST_FUSION_ADAPTED_ARRAY_HPP
 
 #include <boost/fusion/adapted/array/array_iterator.hpp>
 #include <boost/fusion/adapted/array/tag_of.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/array_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/array/array_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/array_iterator.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,20 +2,22 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2005-2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_ARRAY_ITERATOR_26122005_2250)
-#define BOOST_FUSION_ARRAY_ITERATOR_26122005_2250
+
+#ifndef BOOST_FUSION_ADAPTED_ARRAY_ARRAY_ITERATOR_HPP
+#define BOOST_FUSION_ADAPTED_ARRAY_ARRAY_ITERATOR_HPP
+
+#include <boost/fusion/support/assert.hpp>
+#include <boost/fusion/iterator/iterator_facade.hpp>
 
 #include <cstddef>
 #include <boost/config.hpp>
 #include <boost/mpl/int.hpp>
-#include <boost/mpl/assert.hpp>
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/minus.hpp>
 #include <boost/type_traits/is_const.hpp>
-#include <boost/fusion/iterator/iterator_facade.hpp>
 
 namespace boost { namespace fusion
 {
@@ -25,8 +27,7 @@
     struct array_iterator
         : iterator_facade<array_iterator<Array, Pos>, random_access_traversal_tag>
     {
- BOOST_MPL_ASSERT_RELATION(Pos, >=, 0);
- BOOST_MPL_ASSERT_RELATION(Pos, <=, Array::static_size);
+ BOOST_FUSION_INDEX_CHECK(Pos, Array::static_size+1);
 
         typedef mpl::int_<Pos> index;
         typedef Array array_type;
@@ -47,12 +48,12 @@
         struct deref
         {
             typedef typename Iterator::array_type array_type;
- typedef typename
+ typedef typename
                 mpl::if_<
                     is_const<array_type>
                   , typename array_type::const_reference
                   , typename array_type::reference
- >::type
+ >::type
             type;
 
             static type
@@ -88,7 +89,7 @@
             typedef typename
                 mpl::minus<
                     typename I2::index, typename I1::index
- >::type
+ >::type
             type;
 
             static type

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/at_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_AT_IMPL_27122005_1241)
-#define BOOST_FUSION_AT_IMPL_27122005_1241
+
+#ifndef BOOST_FUSION_ADAPTED_ARRAY_DETAIL_AT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_ARRAY_DETAIL_AT_IMPL_HPP
 
 #include <boost/type_traits/is_const.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/begin_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_BEGIN_IMPL_27122005_1117)
-#define BOOST_FUSION_BEGIN_IMPL_27122005_1117
+
+#ifndef BOOST_FUSION_ADAPTED_ARRAY_DETAIL_BEGIN_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_ARRAY_DETAIL_BEGIN_IMPL_HPP
 
 #include <boost/fusion/adapted/array/array_iterator.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/category_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/category_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/category_of_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_CATEGORY_OF_IMPL_27122005_1044)
-#define BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044
+
+#ifndef BOOST_FUSION_ADAPTED_ARRAY_DETAIL_CATEGORY_OF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_ARRAY_DETAIL_CATEGORY_OF_IMPL_HPP
 
 #include <boost/config/no_tr1/utility.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/end_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_END_IMPL_27122005_1120)
-#define BOOST_FUSION_END_IMPL_27122005_1120
+
+#ifndef BOOST_FUSION_ADAPTED_ARRAY_DETAIL_END_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_ARRAY_DETAIL_END_IMPL_HPP
 
 #include <boost/fusion/adapted/array/array_iterator.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/is_sequence_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/is_sequence_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/is_sequence_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_IS_SEQUENCE_IMPL_27122005_1648)
-#define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1648
+
+#ifndef BOOST_FUSION_ADAPTED_ARRAY_DETAIL_IS_SEQUENCE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_ARRAY_DETAIL_IS_SEQUENCE_IMPL_HPP
 
 #include <boost/mpl/bool.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/is_view_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/is_view_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/is_view_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_IS_VIEW_IMPL_27042006_2221)
-#define BOOST_FUSION_IS_VIEW_IMPL_27042006_2221
+
+#ifndef BOOST_FUSION_ADAPTED_ARRAY_DETAIL_IS_VIEW_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_ARRAY_DETAIL_IS_VIEW_IMPL_HPP
 
 #include <boost/mpl/bool.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/size_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/size_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/size_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,11 +2,12 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2005-2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_SIZE_IMPL_27122005_1251)
-#define BOOST_FUSION_SIZE_IMPL_27122005_1251
+
+#ifndef BOOST_FUSION_ADAPTED_ARRAY_DETAIL_SIZE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_ARRAY_DETAIL_SIZE_IMPL_HPP
 
 namespace boost { namespace fusion {
 
@@ -21,7 +22,8 @@
         struct size_impl<array_tag>
         {
             template<typename Sequence>
- struct apply : mpl::int_<Sequence::static_size> {};
+ struct apply
+ : mpl::int_<Sequence::static_size> {};
         };
     }
 }}

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/value_at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/value_at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/value_at_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_VALUE_AT_IMPL_27122005_1256)
-#define BOOST_FUSION_VALUE_AT_IMPL_27122005_1256
+
+#ifndef BOOST_FUSION_ADAPTED_ARRAY_DETAIL_VALUE_AT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_ARRAY_DETAIL_VALUE_AT_IMPL_HPP
 
 namespace boost { namespace fusion {
     

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/tag_of.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/array/tag_of.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/tag_of.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_SEQUENCE_TAG_OF_27122005_1030)
-#define FUSION_SEQUENCE_TAG_OF_27122005_1030
+
+#ifndef BOOST_FUSION_ADAPTED_ARRAY_TAG_OF_HPP
+#define BOOST_FUSION_ADAPTED_ARRAY_TAG_OF_HPP
 
 #include <boost/fusion/support/tag_of_fwd.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_FUSION_BOOST_TUPLE_09272006_0732)
-#define BOOST_FUSION_BOOST_TUPLE_09272006_0732
+
+#ifndef BOOST_FUSION_ADAPTED_BOOST_TUPLE_HPP
+#define BOOST_FUSION_ADAPTED_BOOST_TUPLE_HPP
 
 #include <boost/fusion/adapted/boost_tuple/tag_of.hpp>
 #include <boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_BOOST_TUPLE_ITERATOR_09262006_1851)
-#define FUSION_BOOST_TUPLE_ITERATOR_09262006_1851
+
+#ifndef BOOST_FUSION_ADAPTED_BOOST_TUPLE_BOOST_TUPLE_ITERATOR_HPP
+#define BOOST_FUSION_ADAPTED_BOOST_TUPLE_BOOST_TUPLE_ITERATOR_HPP
 
 #include <boost/fusion/iterator/iterator_facade.hpp>
 #include <boost/type_traits/is_const.hpp>
@@ -145,5 +146,3 @@
 }}
 
 #endif
-
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_FUSION_AT_IMPL_09262006_1920)
-#define BOOST_FUSION_AT_IMPL_09262006_1920
+
+#ifndef BOOST_FUSION_ADAPTED_BOOST_TUPLE_DETAIL_AT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_BOOST_TUPLE_DETAIL_AT_IMPL_HPP
 
 #include <boost/tuple/tuple.hpp>
 #include <boost/mpl/if.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_FUSION_BEGIN_IMPL_09272006_0719)
-#define BOOST_FUSION_BEGIN_IMPL_09272006_0719
+
+#ifndef BOOST_FUSION_ADAPTED_BOOST_TUPLE_DETAIL_BEGIN_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_BOOST_TUPLE_DETAIL_BEGIN_IMPL_HPP
 
 #include <boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_FUSION_CATEGORY_OF_IMPL_09272006_0726)
-#define BOOST_FUSION_CATEGORY_OF_IMPL_09272006_0726
+
+#ifndef BOOST_FUSION_ADAPTED_BOOST_TUPLE_DETAIL_CATEGORY_OF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_BOOST_TUPLE_DETAIL_CATEGORY_OF_IMPL_HPP
 
 namespace boost { namespace fusion
 {

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_FUSION_END_IMPL_09272006_0721)
-#define BOOST_FUSION_END_IMPL_09272006_0721
+
+#ifndef BOOST_FUSION_ADAPTED_BOOST_TUPLE_DETAIL_END_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_BOOST_TUPLE_DETAIL_END_IMPL_HPP
 
 #include <boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp>
 #include <boost/mpl/if.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_FUSION_IS_SEQUENCE_IMPL_09272006_0726)
-#define BOOST_FUSION_IS_SEQUENCE_IMPL_09272006_0726
+
+#ifndef BOOST_FUSION_ADAPTED_BOOST_TUPLE_DETAIL_IS_SEQUENCE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_BOOST_TUPLE_DETAIL_IS_SEQUENCE_IMPL_HPP
 
 #include <boost/mpl/bool.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_FUSION_IS_VIEW_IMPL_09272006_0725)
-#define BOOST_FUSION_IS_VIEW_IMPL_09272006_0725
+
+#ifndef BOOST_FUSION_ADAPTED_BOOST_TUPLE_DETAIL_IS_VIEW_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_BOOST_TUPLE_DETAIL_IS_VIEW_IMPL_HPP
 
 #include <boost/mpl/bool.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,16 +1,17 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_SIZE_IMPL_09272006_0724)
-#define BOOST_FUSION_SIZE_IMPL_09272006_0724
+
+#ifndef BOOST_FUSION_ADAPTED_BOOST_TUPLE_DETAIL_SIZE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_BOOST_TUPLE_DETAIL_SIZE_IMPL_HPP
 
 #include <boost/tuple/tuple.hpp>
 #include <boost/mpl/int.hpp>
 
-namespace boost { namespace fusion
+namespace boost { namespace fusion
 {
     struct boost_tuple_tag;
 
@@ -23,7 +24,9 @@
         struct size_impl<boost_tuple_tag>
         {
             template <typename Sequence>
- struct apply : mpl::int_<tuples::length<Sequence>::value> {};
+ struct apply
+ : mpl::int_<tuples::length<Sequence>::value>
+ {};
         };
     }
 }}

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_FUSION_VALUE_AT_IMPL_09262006_1926)
-#define BOOST_FUSION_VALUE_AT_IMPL_09262006_1926
+
+#ifndef BOOST_FUSION_ADAPTED_BOOST_TUPLE_DETAIL_VALUE_AT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_BOOST_TUPLE_DETAIL_VALUE_AT_IMPL_HPP
 
 #include <boost/tuple/tuple.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/tag_of.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/tag_of.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/tag_of.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_FUSION_TAG_OF_09262006_1900)
-#define BOOST_FUSION_TAG_OF_09262006_1900
+
+#ifndef BOOST_FUSION_ADAPTED_BOOST_TUPLE_TAG_OF_HPP
+#define BOOST_FUSION_ADAPTED_BOOST_TUPLE_TAG_OF_HPP
 
 #include <boost/fusion/support/tag_of_fwd.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,17 +5,29 @@
     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_FUSION_MPL_31122005_1152)
-#define BOOST_FUSION_MPL_31122005_1152
 
+#ifndef BOOST_FUSION_ADAPTED_MPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_HPP
+
+#include <boost/fusion/support/ref.hpp>
+
+#include <boost/fusion/adapted/mpl/detail/mpl_iterator.hpp>
+#include <boost/fusion/adapted/mpl/detail/advance_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/at_impl.hpp>
 #include <boost/fusion/adapted/mpl/detail/begin_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/category_of_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/deref_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/distance_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/empty_impl.hpp>
 #include <boost/fusion/adapted/mpl/detail/end_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/equal_to_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/has_key_impl.hpp>
 #include <boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/is_view_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/next_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/prior_impl.hpp>
 #include <boost/fusion/adapted/mpl/detail/size_impl.hpp>
 #include <boost/fusion/adapted/mpl/detail/value_at_impl.hpp>
-#include <boost/fusion/adapted/mpl/detail/at_impl.hpp>
-#include <boost/fusion/adapted/mpl/detail/has_key_impl.hpp>
-#include <boost/fusion/adapted/mpl/detail/category_of_impl.hpp>
-#include <boost/fusion/adapted/mpl/detail/is_view_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/value_of_impl.hpp>
 
 #endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/advance_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/advance_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,47 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_ADAPTED_MPL_DETAIL_ADVANCE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_ADVANCE_IMPL_HPP
+
+#include <boost/mpl/advance.hpp>
+
+namespace boost { namespace fusion
+{
+ struct mpl_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct advance_impl;
+
+ template <>
+ struct advance_impl<mpl_iterator_tag>
+ {
+ template <typename ItRef, typename N>
+ struct apply
+ {
+ typedef
+ mpl_iterator<
+ typename mpl::advance<
+ typename detail::identity<ItRef>::type
+ , N
+ >::type
+ >
+ type;
+
+ static type
+ call(ItRef i)
+ {
+ return type();
+ }
+ };
+ };
+ }
+}}
+
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/at_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,15 +2,16 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2005-2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_AT_IMPL_31122005_1642)
-#define BOOST_FUSION_AT_IMPL_31122005_1642
+
+#ifndef BOOST_FUSION_ADAPTED_MPL_DETAIL_AT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_AT_IMPL_HPP
 
 #include <boost/mpl/at.hpp>
 
-namespace boost { namespace fusion
+namespace boost { namespace fusion
 {
     struct mpl_sequence_tag;
 
@@ -22,13 +23,15 @@
         template <>
         struct at_impl<mpl_sequence_tag>
         {
- template <typename Sequence, typename N>
+ template <typename SeqRef, typename N>
             struct apply
             {
- typedef typename mpl::at<Sequence, N>::type type;
-
+ typedef typename
+ mpl::at<typename detail::identity<SeqRef>::type, N>::type
+ type;
+
                 static type
- call(Sequence)
+ call(SeqRef)
                 {
                     return type();
                 }

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/begin_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,18 +2,19 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2005-2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_BEGIN_IMPL_31122005_1209)
-#define BOOST_FUSION_BEGIN_IMPL_31122005_1209
 
-#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
+#ifndef BOOST_FUSION_ADAPTED_MPL_DETAIL_BEGIN_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_BEGIN_IMPL_HPP
+
+#include <boost/fusion/adapted/mpl/detail/mpl_iterator.hpp>
+
 #include <boost/mpl/begin.hpp>
-#include <boost/type_traits/remove_const.hpp>
 
 namespace boost { namespace fusion {
-
+
     struct mpl_sequence_tag;
 
     namespace extension
@@ -24,16 +25,19 @@
         template <>
         struct begin_impl<mpl_sequence_tag>
         {
- template <typename Sequence>
- struct apply
+ template <typename SeqRef>
+ struct apply
             {
- typedef typename mpl::begin<
- typename remove_const<Sequence>::type
- >::type iterator;
- typedef mpl_iterator<iterator> type;
-
+ typedef
+ mpl_iterator<
+ typename mpl::begin<
+ typename detail::identity<SeqRef>::type
+ >::type
+ >
+ type;
+
                 static type
- call(Sequence)
+ call(SeqRef)
                 {
                     return type();
                 }

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/category_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/category_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/category_of_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,37 +2,20 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2005-2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_CATEGORY_OF_IMPL_20060217_2141)
-#define BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141
+
+#ifndef BOOST_FUSION_ADAPTED_MPL_DETAIL_CATEGORY_OF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_CATEGORY_OF_IMPL_HPP
 
 #include <boost/fusion/support/detail/mpl_iterator_category.hpp>
-#include <boost/mpl/begin_end.hpp>
+
+#include <boost/mpl/begin.hpp>
 #include <boost/mpl/is_sequence.hpp>
-#include <boost/static_assert.hpp>
 
 namespace boost { namespace fusion {
 
- namespace detail
- {
- template <typename T>
- struct mpl_sequence_category_of
- {
- // assumes T is an mpl sequence
- // there should be no way this will ever be
- // called where T is an mpl iterator
-
- BOOST_STATIC_ASSERT(mpl::is_sequence<T>::value);
- typedef typename
- mpl_iterator_category<
- typename mpl::begin<T>::type::category
- >::type
- type;
- };
- }
-
     struct mpl_sequence_tag;
 
     namespace extension
@@ -43,10 +26,18 @@
         template<>
         struct category_of_impl<mpl_sequence_tag>
         {
- template<typename T>
+ template<typename SeqRef>
             struct apply
- : detail::mpl_sequence_category_of<T>
- {};
+ {
+ //TODO get_category?
+ typedef typename
+ detail::mpl_iterator_category<
+ typename mpl::begin<
+ typename detail::identity<SeqRef>::type
+ >::type::category
+ >::type
+ type;
+ };
         };
     }
 }}

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/deref_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/deref_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,42 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_ADAPTED_MPL_DETAIL_DEREF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_DEREF_IMPL_HPP
+
+#include <boost/mpl/deref.hpp>
+
+namespace boost { namespace fusion
+{
+ struct mpl_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct deref_impl;
+
+ template <>
+ struct deref_impl<mpl_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename
+ mpl::deref<typename detail::identity<ItRef>::type>::type
+ type;
+
+ static type
+ call(ItRef)
+ {
+ return type();
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/distance_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/distance_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,41 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_ADAPTED_MPL_DETAIL_DISTANCE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_DISTANCE_IMPL_HPP
+
+#include <boost/fusion/adapted/mpl/detail/get_mpl_it.hpp>
+
+#include <boost/mpl/distance.hpp>
+
+namespace boost { namespace fusion
+{
+ struct mpl_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct distance_to_impl;
+
+ template <>
+ struct distance_to_impl<mpl_iterator_tag>
+ {
+ template <typename I1Ref, typename I2Ref>
+ struct apply
+ : mpl::distance<
+ typename detail::identity<I1Ref>::type
+ , typename detail::get_mpl_it<
+ typename detail::identity<I2Ref>::type
+ >::type
+ >
+ {
+ };
+ };
+ }
+}}
+
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/empty_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/empty_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/empty_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,25 +2,31 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2005-2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_EMPTY_IMPL_31122005_1554)
-#define BOOST_FUSION_EMPTY_IMPL_31122005_1554
+
+#ifndef BOOST_FUSION_ADAPTED_MPL_DETAIL_EMPTY_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_EMPTY_IMPL_HPP
 
 #include <boost/mpl/empty.hpp>
 
-namespace boost { namespace fusion
+namespace boost { namespace fusion
 {
     struct mpl_sequence_tag;
 
     namespace extension
     {
+ template <typename Tag>
+ struct empty_impl;
+
         template <>
         struct empty_impl<mpl_sequence_tag>
         {
- template <typename Sequence>
- struct apply : mpl::empty<Sequence> {};
+ template <typename SeqRef>
+ struct apply
+ : mpl::empty<typename detail::identity<SeqRef>::type>
+ {};
         };
     }
 }}

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/end_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,15 +2,16 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2005-2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_END_IMPL_31122005_1237)
-#define BOOST_FUSION_END_IMPL_31122005_1237
 
-#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
+#ifndef BOOST_FUSION_ADAPTED_MPL_DETAIL_END_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_END_IMPL_HPP
+
+#include <boost/fusion/adapted/mpl/detail/mpl_iterator.hpp>
+
 #include <boost/mpl/end.hpp>
-#include <boost/type_traits/add_const.hpp>
 
 namespace boost { namespace fusion
 {
@@ -24,16 +25,19 @@
         template <>
         struct end_impl<mpl_sequence_tag>
         {
- template <typename Sequence>
+ template <typename SeqRef>
             struct apply
             {
- typedef typename mpl::end<
- typename remove_const<Sequence>::type
- >::type iterator;
- typedef mpl_iterator<iterator> type;
-
+ typedef
+ mpl_iterator<
+ typename mpl::end<
+ typename detail::identity<SeqRef>::type
+ >::type
+ >
+ type;
+
                 static type
- call(Sequence)
+ call(SeqRef)
                 {
                     return type();
                 }

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/equal_to_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/equal_to_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,41 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_ADAPTED_MPL_DETAIL_EQUAL_TO_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_EQUAL_TO_IMPL_HPP
+
+#include <boost/fusion/adapted/mpl/detail/get_mpl_it.hpp>
+
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace fusion
+{
+ struct mpl_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct equal_to_impl;
+
+ template <>
+ struct equal_to_impl<mpl_iterator_tag>
+ {
+ template <typename I1Ref, typename I2Ref>
+ struct apply
+ : is_same<
+ typename detail::identity<I1Ref>::type
+ , typename detail::get_mpl_it<
+ typename detail::identity<I2Ref>::type
+ >::type
+ >
+ {
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/get_mpl_it.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/get_mpl_it.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,24 @@
+// Copyright Christopher Schmidt 2009.
+// 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_ADAPTED_MPL_DETAIL_GET_MPL_IT_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_GET_MPL_IT_HPP
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename It, typename Active = void>
+ struct get_mpl_it
+ {
+ typedef It type;
+ };
+
+ template <typename It>
+ struct get_mpl_it<It, typename It::void_>
+ {
+ typedef typename It::it_type type;
+ };
+}}}
+
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/has_key_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/has_key_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/has_key_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,15 +2,16 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2005-2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_HAS_KEY_IMPL_31122005_1647)
-#define BOOST_FUSION_HAS_KEY_IMPL_31122005_1647
+
+#ifndef BOOST_FUSION_ADAPTED_MPL_DETAIL_HAS_KEY_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_HAS_KEY_IMPL_HPP
 
 #include <boost/mpl/has_key.hpp>
 
-namespace boost { namespace fusion
+namespace boost { namespace fusion
 {
     struct mpl_sequence_tag;
 
@@ -22,8 +23,10 @@
         template <>
         struct has_key_impl<mpl_sequence_tag>
         {
- template <typename Sequence, typename Key>
- struct apply : mpl::has_key<Sequence, Key> {};
+ template <typename SeqRef, typename Key>
+ struct apply
+ : mpl::has_key<typename detail::identity<SeqRef>::type, Key>
+ {};
         };
     }
 }}

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,11 +2,12 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2005-2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_IS_SEQUENCE_IMPL_31122005_1505)
-#define BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505
+
+#ifndef BOOST_FUSION_ADAPTED_MPL_DETAIL_IS_SEQUENCE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_IS_SEQUENCE_IMPL_HPP
 
 #include <boost/mpl/bool.hpp>
 
@@ -23,7 +24,9 @@
         struct is_sequence_impl<mpl_sequence_tag>
         {
             template<typename T>
- struct apply : mpl::true_ {};
+ struct apply
+ : mpl::true_
+ {};
         };
     }
 }}

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/is_view_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/is_view_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/is_view_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,15 +2,16 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2005-2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_IS_VIEW_IMPL_03202006_0048)
-#define BOOST_FUSION_IS_VIEW_IMPL_03202006_0048
+
+#ifndef BOOST_FUSION_ADAPTED_MPL_DETAIL_IS_VIEW_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_IS_VIEW_IMPL_HPP
 
 #include <boost/mpl/bool.hpp>
 
-namespace boost { namespace fusion
+namespace boost { namespace fusion
 {
     struct mpl_sequence_tag;
 
@@ -23,7 +24,8 @@
         struct is_view_impl<mpl_sequence_tag>
         {
             template<typename T>
- struct apply : mpl::true_
+ struct apply
+ : mpl::true_
             {};
         };
     }

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/mpl_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/mpl_iterator.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,128 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_ADAPTED_MPL_DETAIL_MPL_ITERATOR_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_MPL_ITERATOR_HPP
+
+#include <boost/fusion/iterator/iterator_facade.hpp>
+#include <boost/fusion/support/category_of.hpp>
+
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/prior.hpp>
+#include <boost/fusion/iterator/advance.hpp>
+#include <boost/fusion/iterator/distance.hpp>
+
+namespace boost { namespace fusion
+{
+ template <typename It>
+ struct mpl_iterator
+ : iterator_facade<
+ mpl_iterator<It>
+ , typename traits::category_of<It>::type
+ >
+ {
+ //cschmidt: void typedef to enable fast SFINAE in equal_to_impl.hpp!
+ typedef void void_;
+
+ typedef It it_type;
+
+ template <typename ItRef>
+ struct value_of
+ : result_of::value_of<
+ typename detail::remove_reference<ItRef>::type::it_type
+ >
+ {};
+
+ template <typename It1Ref, typename It2Ref>
+ struct equal_to
+ : result_of::equal_to<
+ typename detail::remove_reference<It1Ref>::type::it_type
+ , It2Ref
+ >
+ {};
+
+ template <typename ItRef>
+ struct deref
+ {
+ typedef typename
+ detail::remove_reference<ItRef>::type::it_type
+ it_type;
+
+ typedef typename result_of::deref<it_type>::type type;
+
+ static type
+ call(ItRef)
+ {
+ return type();
+ }
+ };
+
+ template <typename ItRef>
+ struct next
+ {
+ typedef typename
+ detail::remove_reference<ItRef>::type::it_type
+ it_type;
+
+ typedef typename result_of::next<it_type>::type type;
+
+ static type
+ call(ItRef)
+ {
+ return type();
+ }
+ };
+
+ template <typename ItRef>
+ struct prior
+ {
+ typedef typename
+ detail::remove_reference<ItRef>::type::it_type
+ it_type;
+
+ typedef typename result_of::prior<it_type>::type type;
+
+ static type
+ call(ItRef)
+ {
+ return type();
+ }
+ };
+
+ template <typename ItRef, typename N>
+ struct advance
+ {
+ typedef typename
+ detail::remove_reference<ItRef>::type::it_type
+ it_type;
+
+ typedef typename fusion::result_of::advance<it_type,N>::type type;
+
+ static type
+ call(ItRef)
+ {
+ return type();
+ }
+ };
+
+ template <typename It1Ref, typename It2Ref>
+ struct distance
+ : result_of::distance<
+ typename detail::remove_reference<It1Ref>::type::it_type
+ , It2Ref
+ >
+
+ {};
+ };
+}}
+
+#endif
+
+

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/next_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/next_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,48 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_ADAPTED_MPL_DETAIL_NEXT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_NEXT_IMPL_HPP
+
+#include <boost/fusion/adapted/mpl/detail/mpl_iterator.hpp>
+
+#include <boost/mpl/next.hpp>
+
+namespace boost { namespace fusion
+{
+ struct mpl_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct next_impl;
+
+ template <>
+ struct next_impl<mpl_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef
+ mpl_iterator<
+ typename mpl::next<
+ typename detail::identity<ItRef>::type
+ >::type
+ >
+ type;
+
+ static type
+ call(ItRef)
+ {
+ return type();
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/prior_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/prior_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,48 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_ADAPTED_MPL_DETAIL_PRIOR_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_PRIOR_IMPL_HPP
+
+#include <boost/fusion/adapted/mpl/detail/mpl_iterator.hpp>
+
+#include <boost/mpl/prior.hpp>
+
+namespace boost { namespace fusion
+{
+ struct mpl_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct prior_impl;
+
+ template <>
+ struct prior_impl<mpl_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef
+ mpl_iterator<
+ typename mpl::prior<
+ typename detail::identity<ItRef>::type
+ >::type
+ >
+ type;
+
+ static type
+ call(ItRef)
+ {
+ return type();
+ }
+ };
+ };
+ }
+}}
+
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/size_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/size_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/size_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,15 +2,16 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2005-2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_SIZE_IMPL_31122005_1508)
-#define BOOST_FUSION_SIZE_IMPL_31122005_1508
+
+#ifndef BOOST_FUSION_ADAPTED_MPL_DETAIL_SIZE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_SIZE_IMPL_HPP
 
 #include <boost/mpl/size.hpp>
 
-namespace boost { namespace fusion
+namespace boost { namespace fusion
 {
     struct mpl_sequence_tag;
 
@@ -22,8 +23,10 @@
         template <>
         struct size_impl<mpl_sequence_tag>
         {
- template <typename Sequence>
- struct apply : mpl::size<Sequence> {};
+ template <typename SeqRef>
+ struct apply
+ : mpl::size<typename detail::identity<SeqRef>::type>
+ {};
         };
     }
 }}

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/value_at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/value_at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/value_at_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,15 +2,16 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2005-2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_VALUE_AT_IMPL_31122005_1621)
-#define BOOST_FUSION_VALUE_AT_IMPL_31122005_1621
+
+#ifndef BOOST_FUSION_ADAPTED_MPL_DETAIL_VALUE_AT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_VALUE_AT_IMPL_HPP
 
 #include <boost/mpl/at.hpp>
 
-namespace boost { namespace fusion
+namespace boost { namespace fusion
 {
     struct mpl_sequence_tag;
 
@@ -22,8 +23,10 @@
         template <>
         struct value_at_impl<mpl_sequence_tag>
         {
- template <typename Sequence, typename N>
- struct apply : mpl::at<Sequence, N> {};
+ template <typename SeqRef, typename N>
+ struct apply
+ : mpl::at<typename detail::identity<SeqRef>::type, N>
+ {};
         };
     }
 }}

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/value_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/value_of_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,33 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_ADAPTED_MPL_DETAIL_VALUE_OF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_DETAIL_VALUE_OF_IMPL_HPP
+
+#include <boost/mpl/deref.hpp>
+
+namespace boost { namespace fusion
+{
+ struct mpl_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <>
+ struct value_of_impl<mpl_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ : mpl::deref<typename detail::identity<ItRef>::type>
+ {};
+ };
+ }
+}}
+
+#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/mpl_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/mpl_iterator.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,113 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_MPL_ITERATOR_05052005_0731)
-#define FUSION_MPL_ITERATOR_05052005_0731
-
-#include <boost/fusion/support/detail/mpl_iterator_category.hpp>
-#include <boost/fusion/iterator/iterator_facade.hpp>
-#include <boost/type_traits/remove_const.hpp>
-#include <boost/mpl/deref.hpp>
-#include <boost/mpl/next.hpp>
-#include <boost/mpl/prior.hpp>
-#include <boost/mpl/advance.hpp>
-#include <boost/mpl/distance.hpp>
-
-namespace boost { namespace fusion
-{
- template <typename Iterator_>
- struct mpl_iterator
- : iterator_facade<
- mpl_iterator<Iterator_>
- , typename detail::mpl_iterator_category<typename Iterator_::category>::type
- >
- {
- typedef typename remove_const<Iterator_>::type iterator_type;
-
- template <typename Iterator>
- struct value_of : mpl::deref<typename Iterator::iterator_type> {};
-
- template <typename Iterator>
- struct deref
- {
- typedef typename mpl::deref<
- typename Iterator::iterator_type>::type
- type;
-
- static type
- call(Iterator)
- {
- return type();
- }
- };
-
- template <typename Iterator>
- struct next
- {
- typedef mpl_iterator<
- typename mpl::next<typename Iterator::iterator_type>::type>
- type;
-
- static type
- call(Iterator)
- {
- return type();
- }
- };
-
- template <typename Iterator>
- struct prior
- {
- typedef mpl_iterator<
- typename mpl::prior<typename Iterator::iterator_type>::type>
- type;
-
- static type
- call(Iterator)
- {
- return type();
- }
- };
-
- template <typename Iterator, typename N>
- struct advance
- {
- typedef mpl_iterator<
- typename mpl::advance<typename Iterator::iterator_type, N>::type>
- type;
-
- static type
- call(Iterator const& i)
- {
- return type();
- }
- };
-
- template <typename I1, typename I2>
- struct distance :
- mpl::distance<
- typename I1::iterator_type
- , typename I2::iterator_type>
- {
- typedef typename
- mpl::distance<
- typename I1::iterator_type
- , typename I2::iterator_type
- >::type
- type;
-
- static type
- call(I1 const&, I2 const&)
- {
- return type();
- }
- };
- };
-}}
-
-#endif
-
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_STD_PAIR_24122005_1744)
-#define BOOST_FUSION_STD_PAIR_24122005_1744
+
+#ifndef BOOST_FUSION_ADAPTED_STD_PAIR_HPP
+#define BOOST_FUSION_ADAPTED_STD_PAIR_HPP
 
 #include <boost/fusion/support/tag_of_fwd.hpp>
 #include <boost/fusion/adapted/struct.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/at_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,16 +2,18 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2005-2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_AT_IMPL_24122005_1807)
-#define BOOST_FUSION_AT_IMPL_24122005_1807
+
+#ifndef BOOST_FUSION_ADAPTED_STD_PAIR_DETAIL_AT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STD_PAIR_DETAIL_AT_IMPL_HPP
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/fusion/support/assert.hpp>
 
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/int.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/fusion/support/detail/access.hpp>
 
 namespace boost { namespace fusion {
 
@@ -26,10 +28,11 @@
         struct at_impl<std_pair_tag>
         {
             template <typename Sequence, typename N>
- struct apply
+ struct apply
             {
                 static int const n_value = N::value;
- BOOST_STATIC_ASSERT((n_value >= 0 && n_value < 2));
+ BOOST_FUSION_INDEX_CHECK(n_value, 2);
+
                 typedef typename
                     mpl::if_c<
                         (n_value == 0)

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/begin_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_BEGIN_IMPL_24122005_1752)
-#define BOOST_FUSION_BEGIN_IMPL_24122005_1752
+
+#ifndef BOOST_FUSION_ADAPTED_STD_PAIR_DETAIL_BEGIN_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STD_PAIR_DETAIL_BEGIN_IMPL_HPP
 
 #include <boost/fusion/adapted/std_pair/std_pair_iterator.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_CATEGORY_OF_IMPL_24122005_1731)
-#define BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731
+
+#ifndef BOOST_FUSION_ADAPTED_STD_PAIR_DETAIL_CATEGORY_OF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STD_PAIR_DETAIL_CATEGORY_OF_IMPL_HPP
 
 #include <boost/config/no_tr1/utility.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/end_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_END_IMPL_24122005_1755)
-#define BOOST_FUSION_END_IMPL_24122005_1755
+
+#ifndef BOOST_FUSION_ADAPTED_STD_PAIR_DETAIL_END_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STD_PAIR_DETAIL_END_IMPL_HPP
 
 #include <boost/fusion/adapted/std_pair/std_pair_iterator.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/is_sequence_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/is_sequence_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/is_sequence_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_IS_SEQUENCE_IMPL_27122005_1651)
-#define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651
+
+#ifndef BOOST_FUSION_ADAPTED_STD_PAIR_DETAIL_IS_SEQUENCE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STD_PAIR_DETAIL_IS_SEQUENCE_IMPL_HPP
 
 #include <boost/mpl/bool.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/is_view_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/is_view_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/is_view_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_IS_VIEW_IMPL_27042006_2219)
-#define BOOST_FUSION_IS_VIEW_IMPL_27042006_2219
+
+#ifndef BOOST_FUSION_ADAPTED_STD_PAIR_DETAIL_IS_VIEW_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STD_PAIR_DETAIL_IS_VIEW_IMPL_HPP
 
 #include <boost/mpl/bool.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/size_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/size_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/size_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_SIZE_IMPL_24122005_1759)
-#define BOOST_FUSION_SIZE_IMPL_24122005_1759
+
+#ifndef BOOST_FUSION_ADAPTED_STD_PAIR_DETAIL_SIZE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STD_PAIR_DETAIL_SIZE_IMPL_HPP
 
 #include <boost/mpl/int.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/value_at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/value_at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/value_at_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,14 +2,16 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2005-2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_VALUE_AT_IMPL_24122005_1917)
-#define BOOST_FUSION_VALUE_AT_IMPL_24122005_1917
+
+#ifndef BOOST_FUSION_ADAPTED_STD_PAIR_DETAIL_VALUE_AT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STD_PAIR_DETAIL_VALUE_AT_IMPL_HPP
+
+#include <boost/fusion/support/assert.hpp>
 
 #include <boost/mpl/if.hpp>
-#include <boost/static_assert.hpp>
 
 namespace boost { namespace fusion {
 
@@ -24,10 +26,11 @@
         struct value_at_impl<std_pair_tag>
         {
             template <typename Sequence, typename N>
- struct apply
+ struct apply
             {
                 static int const n_value = N::value;
- BOOST_STATIC_ASSERT((n_value >= 0 && n_value < 2));
+ BOOST_FUSION_INDEX_CHECK(n_value,2);
+
                 typedef typename
                     mpl::if_c<
                         (n_value == 0)

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/std_pair_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/std_pair_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/std_pair_iterator.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,15 +1,17 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_STD_PAIR_ITERATOR_09262005_0934)
-#define FUSION_STD_PAIR_ITERATOR_09262005_0934
+
+#ifndef BOOST_FUSION_ADAPTED_STD_PAIR_STD_PAIR_ITERATOR_HPP
+#define BOOST_FUSION_ADAPTED_STD_PAIR_STD_PAIR_ITERATOR_HPP
 
 #include <boost/fusion/iterator/iterator_facade.hpp>
+#include <boost/fusion/support/assert.hpp>
+
 #include <boost/type_traits/is_const.hpp>
-#include <boost/mpl/assert.hpp>
 #include <boost/mpl/identity.hpp>
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/int.hpp>
@@ -24,8 +26,7 @@
     struct std_pair_iterator
         : iterator_facade<std_pair_iterator<Pair_, N_>, random_access_traversal_tag>
     {
- BOOST_MPL_ASSERT_RELATION(N_, >=, 0);
- BOOST_MPL_ASSERT_RELATION(N_, <=, 2);
+ BOOST_FUSION_INDEX_CHECK(N_,2);
 
         typedef mpl::int_<N_> index;
         typedef Pair_ pair_type;
@@ -110,7 +111,7 @@
             typedef typename
                 mpl::minus<
                     typename I2::index, typename I1::index
- >::type
+ >::type
             type;
 
             static type
@@ -123,5 +124,3 @@
 }}
 
 #endif
-
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/tag_of.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/tag_of.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/tag_of.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_TAG_OF_24122005_1722)
-#define BOOST_FUSION_TAG_OF_24122005_1722
+
+#ifndef BOOST_FUSION_ADAPTED_STD_PAIR_TAG_OF_HPP
+#define BOOST_FUSION_ADAPTED_STD_PAIR_TAG_OF_HPP
 
 #include <boost/fusion/support/tag_of_fwd.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/struct.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_STRUCT_24122005_1744)
-#define BOOST_FUSION_STRUCT_24122005_1744
+
+#ifndef BOOST_FUSION_ADAPTED_STRUCT_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_HPP
 
 #include <boost/fusion/adapted/struct/extension.hpp>
 #include <boost/fusion/adapted/struct/adapt_struct.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/adapt_assoc_struct.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/adapt_assoc_struct.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/adapt_assoc_struct.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_ADAPT_ASSOC_STRUCT_20070508_2207)
-#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_20070508_2207
+
+#ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_HPP
 
 #include <boost/fusion/support/tag_of_fwd.hpp>
 #include <boost/fusion/adapted/struct/extension.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/adapt_struct.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/adapt_struct.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/adapt_struct.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_FUSION_ADAPT_STRUCT_APRIL_2_2007_1158AM)
-#define BOOST_FUSION_ADAPT_STRUCT_APRIL_2_2007_1158AM
+
+#ifndef BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_HPP
 
 #include <boost/fusion/support/tag_of_fwd.hpp>
 #include <boost/fusion/adapted/struct/extension.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/at_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,11 +5,13 @@
     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_FUSION_AT_IMPL_24122005_1807)
-#define BOOST_FUSION_AT_IMPL_24122005_1807
 
+#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_AT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_AT_IMPL_HPP
+
+#include <boost/fusion/support/assert.hpp>
 #include <boost/fusion/support/detail/access.hpp>
-#include <boost/mpl/assert.hpp>
+
 #include <boost/mpl/int.hpp>
 
 namespace boost { namespace fusion
@@ -34,8 +36,8 @@
             struct apply
             {
                 static int const n_value = N::value;
- BOOST_MPL_ASSERT_RELATION(
- n_value, <=, extension::struct_size<Sequence>::value);
+ BOOST_FUSION_INDEX_CHECK(n_value,
+ extension::struct_size<Sequence>::value);
 
                 typedef typename
                     extension::struct_member<Sequence, N::value>

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/at_key_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/at_key_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/at_key_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_AT_KEY_IMPL_20070508_2248)
-#define BOOST_FUSION_AT_KEY_IMPL_20070508_2248
+
+#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_AT_KEY_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_AT_KEY_IMPL_HPP
 
 #include <boost/fusion/support/detail/access.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/begin_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_BEGIN_IMPL_24122005_1752)
-#define BOOST_FUSION_BEGIN_IMPL_24122005_1752
+
+#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_BEGIN_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_BEGIN_IMPL_HPP
 
 #include <boost/fusion/adapted/struct/struct_iterator.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/category_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/category_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/category_of_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_CATEGORY_OF_IMPL_24122005_1731)
-#define BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731
+
+#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_CATEGORY_OF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_CATEGORY_OF_IMPL_HPP
 
 #include <boost/config/no_tr1/utility.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/end_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_END_IMPL_24122005_1755)
-#define BOOST_FUSION_END_IMPL_24122005_1755
+
+#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_END_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_END_IMPL_HPP
 
 #include <boost/fusion/adapted/struct/struct_iterator.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/has_key_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/has_key_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/has_key_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_HAS_KEY_IMPL_20070508_2231)
-#define BOOST_FUSION_HAS_KEY_IMPL_20070508_2231
+
+#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_HAS_KEY_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_HAS_KEY_IMPL_HPP
 
 #include <boost/type_traits/is_same.hpp>
 #include <boost/mpl/not.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_IS_SEQUENCE_IMPL_27122005_1651)
-#define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651
+
+#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_SEQUENCE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_SEQUENCE_IMPL_HPP
 
 #include <boost/mpl/bool.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/is_view_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/is_view_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/is_view_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_IS_VIEW_IMPL_27042006_2219)
-#define BOOST_FUSION_IS_VIEW_IMPL_27042006_2219
+
+#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_VIEW_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_IS_VIEW_IMPL_HPP
 
 #include <boost/mpl/bool.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/size_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/size_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/size_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_SIZE_IMPL_24122005_1759)
-#define BOOST_FUSION_SIZE_IMPL_24122005_1759
+
+#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_SIZE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_SIZE_IMPL_HPP
 
 #include <boost/mpl/int.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/value_at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/value_at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/value_at_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,11 +5,13 @@
     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_FUSION_VALUE_AT_IMPL_24122005_1917)
-#define BOOST_FUSION_VALUE_AT_IMPL_24122005_1917
+
+#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_VALUE_AT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_VALUE_AT_IMPL_HPP
+
+#include <boost/fusion/support/assert.hpp>
 
 #include <boost/mpl/if.hpp>
-#include <boost/static_assert.hpp>
 
 namespace boost { namespace fusion
 {
@@ -33,8 +35,8 @@
             struct apply
             {
                 static int const n_value = N::value;
- BOOST_MPL_ASSERT_RELATION(
- n_value, <=, extension::struct_size<Sequence>::value);
+ BOOST_FUSION_INDEX_CHECK(n_value,
+ extension::struct_size<Sequence>::value);
 
                 typedef typename
                     extension::struct_member<Sequence, N::value>::type

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/value_at_key_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/value_at_key_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/value_at_key_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_FUSION_VALUE_AT_KEY_IMPL_20070508_2300)
-#define BOOST_FUSION_VALUE_AT_KEY_IMPL_20070508_2300
+
+#ifndef BOOST_FUSION_ADAPTED_STRUCT_DETAIL_VALUE_AT_KEY_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_DETAIL_VALUE_AT_KEY_IMPL_HPP
 
 #include <boost/mpl/if.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/extension.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/extension.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/extension.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_STRUCT_EXTENSION_APRIL_2_2007_1008AM)
-#define FUSION_STRUCT_EXTENSION_APRIL_2_2007_1008AM
+
+#ifndef BOOST_FUSION_ADAPTED_STRUCT_EXTENSION_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_EXTENSION_HPP
 
 #include <boost/type_traits/add_const.hpp>
 
@@ -64,5 +65,3 @@
 }}}
 
 #endif
-
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/struct_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/struct_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/struct_iterator.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,14 +5,16 @@
     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_STRUCT_ITERATOR_APRIL_2_2007_1008AM)
-#define FUSION_STRUCT_ITERATOR_APRIL_2_2007_1008AM
 
+#ifndef BOOST_FUSION_ADAPTED_STRUCT_STRUCT_ITERATOR_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_STRUCT_ITERATOR_HPP
+
+#include <boost/fusion/support/assert.hpp>
 #include <boost/fusion/iterator/iterator_facade.hpp>
 #include <boost/fusion/adapted/struct/extension.hpp>
+
 #include <boost/type_traits/is_const.hpp>
 #include <boost/type_traits/add_reference.hpp>
-#include <boost/mpl/assert.hpp>
 #include <boost/mpl/identity.hpp>
 #include <boost/mpl/if.hpp>
 #include <boost/mpl/int.hpp>
@@ -27,8 +29,7 @@
     struct struct_iterator
         : iterator_facade<struct_iterator<Struct, N_>, random_access_traversal_tag>
     {
- BOOST_MPL_ASSERT_RELATION(N_, >=, 0);
- BOOST_MPL_ASSERT_RELATION(N_, <=, extension::struct_size<Struct>::value);
+ BOOST_FUSION_INDEX_CHECK(N,extension::struct_size<Struct>::value);
 
         typedef mpl::int_<N_> index;
         typedef Struct struct_type;
@@ -99,5 +100,3 @@
 }}
 
 #endif
-
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_ALGORITHM_10022005_0549)
-#define FUSION_ALGORITHM_10022005_0549
+
+#ifndef BOOST_FUSION_ALGORITHM_HPP
+#define BOOST_FUSION_ALGORITHM_HPP
 
 #include <boost/fusion/algorithm/iteration.hpp>
 #include <boost/fusion/algorithm/query.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_ALGORITHM_ITERATION_10022005_0549)
-#define FUSION_ALGORITHM_ITERATION_10022005_0549
+
+#ifndef BOOST_FUSION_ALGORITHM_ITERATION_HPP
+#define BOOST_FUSION_ALGORITHM_ITERATION_HPP
 
 #include <boost/fusion/algorithm/iteration/accumulate.hpp>
 #include <boost/fusion/algorithm/iteration/fold.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/accumulate.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/accumulate.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/accumulate.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,13 +1,15 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_ACCUMULATE_09172005_1032)
-#define FUSION_ACCUMULATE_09172005_1032
+
+#ifndef BOOST_FUSION_ALGORITHM_ITERATION_ACCUMULATE_HPP
+#define BOOST_FUSION_ALGORITHM_ITERATION_ACCUMULATE_HPP
 
 #include <boost/fusion/algorithm/iteration/fold.hpp>
+#include <boost/fusion/support/ref.hpp>
 
 namespace boost { namespace fusion
 {
@@ -15,26 +17,45 @@
 
     namespace result_of
     {
- template <typename Sequence, typename State, typename F>
+ template <typename Seq, typename State, typename F>
         struct accumulate
- : result_of::fold<Sequence, State, F>
+ : result_of::fold<Seq, State, F>
         {};
     }
 
- template <typename Sequence, typename State, typename F>
- inline typename result_of::accumulate<Sequence, State, F>::type
- accumulate(Sequence& seq, State const& state, F f)
+ template <typename Seq, typename State, typename F>
+ inline typename result_of::accumulate<
+ BOOST_FUSION_R_ELSE_LREF(Seq)
+ , BOOST_FUSION_R_ELSE_LREF(State)
+ , BOOST_FUSION_R_ELSE_LREF(F)
+ >::type
+ accumulate(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_LREF(State) state,
+ BOOST_FUSION_R_ELSE_LREF(F) f)
     {
- return fusion::fold(seq, state, f);
+ return fusion::fold(
+ BOOST_FUSION_FORWARD(Seq,seq),
+ BOOST_FUSION_FORWARD(State,state),
+ BOOST_FUSION_FORWARD(F,f));
     }
 
- template <typename Sequence, typename State, typename F>
- inline typename result_of::accumulate<Sequence const, State, F>::type
- accumulate(Sequence const& seq, State const& state, F f)
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename State, typename F>
+ inline typename result_of::accumulate<
+ BOOST_FUSION_R_ELSE_LREF(Sequence)
+ , BOOST_FUSION_R_ELSE_CLREF(State)
+ , BOOST_FUSION_R_ELSE_LREF(F)
+ >::type
+ accumulate(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_CLREF(State) state,
+ BOOST_FUSION_R_ELSE_LREF(F) f)
     {
- return fusion::fold(seq, state, f);
+ return fusion::fold(
+ BOOST_FUSION_FORWARD(Seq,seq),
+ BOOST_FUSION_FORWARD(State,state),
+ BOOST_FUSION_FORWARD(F,f));
     }
+#endif
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/fold.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/fold.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/fold.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,274 +5,336 @@
     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_FUSION_FOLD_HPP_20070528_1253)
-#define BOOST_FUSION_FOLD_HPP_20070528_1253
 
-#include <boost/mpl/bool.hpp>
-#include <boost/mpl/apply.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/fusion/iterator/equal_to.hpp>
+#ifndef BOOST_FUSION_ALGORITHM_ITERATION_DETAIL_FOLD_HPP
+#define BOOST_FUSION_ALGORITHM_ITERATION_DETAIL_FOLD_HPP
+
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
 #include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/iterator/value_of.hpp>
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/iterator/distance.hpp>
-#include <boost/utility/result_of.hpp>
 
-#include <boost/type_traits/add_const.hpp>
-#include <boost/type_traits/add_reference.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/identity.hpp>
 
-namespace boost { namespace fusion {
-namespace result_of
+namespace boost { namespace fusion
 {
- template <typename Sequence, typename State, typename F>
- struct fold;
-}
-namespace detail
-{
- template <typename F>
- struct apply_fold_result
+ namespace result_of
     {
- template <typename Value, typename State>
- struct apply
- : boost::result_of<F(Value,State)>
- {};
- };
+ template <typename Seq, typename State, typename F>
+ struct fold;
+ }
 
- template <typename Iterator, typename State, typename F>
- struct fold_apply
+ namespace detail
     {
- typedef typename result_of::deref<Iterator>::type dereferenced;
- typedef typename add_reference<typename add_const<State>::type>::type lvalue_state;
- typedef typename boost::result_of<F(dereferenced, lvalue_state)>::type type;
- };
+ template <typename It, typename State, typename F>
+ struct fold_apply
+ {
+ typedef typename identity<F>::type identity_F;
 
- template <typename First, typename Last, typename State, typename F>
- struct static_fold;
+ typedef typename
+ identity_F::template result<
+ identity_F(
+ typename result_of::deref<It>::type
+ , State
+ )
+ >::type
+ type;
+ };
+
+ template <typename First, typename Last, typename State, typename F>
+ struct static_fold;
+
+ template <typename First, typename Last, typename State, typename F>
+ struct next_result_of_fold
+ : static_fold<
+ typename result_of::next<First>::type
+ , Last
+ , typename fold_apply<First, State, F>::type
+ , F
+ >
+ {
+ };
 
- template <typename First, typename Last, typename State, typename F>
- struct next_result_of_fold
- {
- typedef typename
- static_fold<
- typename result_of::next<First>::type
- , Last
- , typename fold_apply<First, State, F>::type
- , F
- >::type
- type;
- };
+ template <typename First, typename Last, typename State, typename F>
+ struct static_fold
+ {
+ typedef typename
+ mpl::eval_if<
+ result_of::equal_to<First, Last>
+ , mpl::identity<State>
+ , next_result_of_fold<First, Last, State, F>
+ >::type
+ type;
+ };
 
- template <typename First, typename Last, typename State, typename F>
- struct static_fold
- {
- typedef typename
- mpl::if_<
- result_of::equal_to<First, Last>
- , mpl::identity<State>
- , next_result_of_fold<First, Last, State, F>
- >::type
- result;
+ template<typename I0, typename State, typename F, int N>
+ struct result_of_unrolled_fold;
+
+ template<int N>
+ struct unrolled_fold
+ {
+ template<typename I0, typename State, typename F>
+ static typename result_of_unrolled_fold<I0, State, F, N>::type
+ call(I0 const& i0,
+ BOOST_FUSION_R_ELSE_LREF(State) state,
+ BOOST_FUSION_R_ELSE_LREF(F) f)
+ {
+ typedef typename result_of::next<I0>::type I1;
+ I1 i1 = fusion::next(i0);
+ typedef typename result_of::next<I1>::type I2;
+ I2 i2 = fusion::next(i1);
+ typedef typename result_of::next<I2>::type I3;
+ I3 i3 = fusion::next(i2);
+ typedef typename result_of::next<I3>::type I4;
+ I4 i4 = fusion::next(i3);
+
+ return unrolled_fold<N-4>::call(
+ i4,
+ f(fusion::deref(i3),
+ f(fusion::deref(i2),
+ f(fusion::deref(i1),
+ f(fusion::deref(i0),
+ BOOST_FUSION_FORWARD(State,state)
+ )
+ )
+ )
+ ),
+ f);
+ }
+ };
 
- typedef typename result::type type;
- };
+ template<>
+ struct unrolled_fold<3>
+ {
+ template<typename I0, typename State, typename F>
+ static typename result_of_unrolled_fold<I0, State, F, 3>::type
+ call(I0 const& i0,
+ BOOST_FUSION_R_ELSE_LREF(State) state,
+ BOOST_FUSION_R_ELSE_LREF(F) f)
+ {
+ typedef typename result_of::next<I0>::type I1;
+ I1 i1 = fusion::next(i0);
+ typedef typename result_of::next<I1>::type I2;
+ I2 i2 = fusion::next(i1);
+
+ return f(fusion::deref(i2),
+ f(fusion::deref(i1),
+ f(fusion::deref(i0), BOOST_FUSION_FORWARD(State,state))
+ ));
+ }
+ };
 
- template<typename I0, typename State, typename F, int N>
- struct result_of_unrolled_fold;
+ template<>
+ struct unrolled_fold<2>
+ {
+ template<typename I0, typename State, typename F>
+ static typename result_of_unrolled_fold<I0, State, F, 2>::type
+ call(I0 const& i0,
+ BOOST_FUSION_R_ELSE_LREF(State) state,
+ BOOST_FUSION_R_ELSE_LREF(F) f)
+ {
+ typedef typename result_of::next<I0>::type I1;
+ I1 i1 = fusion::next(i0);
+
+ return f(fusion::deref(i1),
+ f(fusion::deref(i0),
+ BOOST_FUSION_FORWARD(State,state)));
+ }
+ };
 
- template<int N>
- struct unrolled_fold
- {
- template<typename I0, typename State, typename F>
- static typename result_of_unrolled_fold<I0, State, F, N>::type
- call(I0 const& i0, State const& state, F f)
+ template<>
+ struct unrolled_fold<1>
+ {
+ template<typename I0, typename State, typename F>
+ static typename result_of_unrolled_fold<I0, State, F, 1>::type
+ call(I0 const& i0,
+ BOOST_FUSION_R_ELSE_LREF(State) state,
+ BOOST_FUSION_R_ELSE_LREF(F) f)
+ {
+ return f(fusion::deref(i0), BOOST_FUSION_FORWARD(State,state));
+ }
+ };
+
+ template<>
+ struct unrolled_fold<0>
+ {
+ template<typename I0, typename State, typename F>
+ static State
+ call(I0 const&,
+ BOOST_FUSION_R_ELSE_LREF(State) state,
+ BOOST_FUSION_R_ELSE_LREF(F))
+ {
+ return state;
+ }
+ };
+
+ // terminal case
+ template <typename First, typename Last, typename State, typename F>
+ inline BOOST_FUSION_R_ELSE_LREF(State)
+ linear_fold(First const&,
+ Last const&,
+ BOOST_FUSION_R_ELSE_LREF(State) state,
+ BOOST_FUSION_R_ELSE_LREF(F),
+ mpl::true_)
+ {
+ return state;
+ }
+
+ // non-terminal case
+ template <typename First, typename Last, typename State, typename F>
+ inline typename static_fold<First, Last, State, F>::type
+ linear_fold(
+ First const& first
+ , Last const& last
+ , BOOST_FUSION_R_ELSE_CLREF(State) state
+ , BOOST_FUSION_R_ELSE_CLREF(F) f
+ , mpl::false_)
+ {
+ return detail::linear_fold(
+ fusion::next(first)
+ , last
+ , f(*first, state)
+ , BOOST_FUSION_FORWARD(F,f)
+ , result_of::equal_to<
+ typename result_of::next<First>::type, Last
+ >()
+ );
+ }
+
+ template<typename I0, typename State, typename F, int N>
+ struct result_of_unrolled_fold
         {
             typedef typename result_of::next<I0>::type I1;
- I1 i1 = fusion::next(i0);
             typedef typename result_of::next<I1>::type I2;
- I2 i2 = fusion::next(i1);
             typedef typename result_of::next<I2>::type I3;
- I3 i3 = fusion::next(i2);
             typedef typename result_of::next<I3>::type I4;
- I4 i4 = fusion::next(i3);
+ typedef typename fold_apply<I0, State, F>::type Rest1;
+ typedef typename fold_apply<I1, Rest1, F>::type Rest2;
+ typedef typename fold_apply<I2, Rest2, F>::type Rest3;
+ typedef typename fold_apply<I3, Rest3, F>::type Rest4;
+
+ typedef typename
+ result_of_unrolled_fold<I4, Rest4, F, N-4>::type
+ type;
+ };
 
- return unrolled_fold<N-4>::call(i4, f(*i3, f(*i2, f(*i1, f(*i0, state)))), f);
- }
- };
-
- template<>
- struct unrolled_fold<3>
- {
         template<typename I0, typename State, typename F>
- static typename result_of_unrolled_fold<I0, State, F, 3>::type
- call(I0 const& i0, State const& state, F f)
+ struct result_of_unrolled_fold<I0, State, F, 3>
         {
             typedef typename result_of::next<I0>::type I1;
- I1 i1 = fusion::next(i0);
             typedef typename result_of::next<I1>::type I2;
- I2 i2 = fusion::next(i1);
- return f(*i2, f(*i1, f(*i0, state)));
- }
- };
+ typedef typename fold_apply<I0, State, F>::type Rest;
+ typedef typename fold_apply<I1, Rest, F>::type Rest2;
+
+ typedef typename
+ fold_apply<I2, Rest2, F>::type
+ type;
+ };
 
- template<>
- struct unrolled_fold<2>
- {
         template<typename I0, typename State, typename F>
- static typename result_of_unrolled_fold<I0, State, F, 2>::type
- call(I0 const& i0, State const& state, F f)
+ struct result_of_unrolled_fold<I0, State, F, 2>
         {
             typedef typename result_of::next<I0>::type I1;
- I1 i1 = fusion::next(i0);
- return f(*i1, f(*i0, state));
- }
- };
+ typedef typename fold_apply<I0, State, F>::type Rest;
+
+ typedef typename
+ fold_apply<I1, Rest, F>::type
+ type;
+ };
 
- template<>
- struct unrolled_fold<1>
- {
         template<typename I0, typename State, typename F>
- static typename result_of_unrolled_fold<I0, State, F, 1>::type
- call(I0 const& i0, State const& state, F f)
+ struct result_of_unrolled_fold<I0, State, F, 1>
         {
- return f(*i0, state);
- }
- };
+ typedef typename
+ fold_apply<I0, State, F>::type
+ type;
+ };
 
- template<>
- struct unrolled_fold<0>
- {
         template<typename I0, typename State, typename F>
- static State call(I0 const&, State const& state, F)
+ struct result_of_unrolled_fold<I0, State, F, 0>
         {
- return state;
- }
- };
-
- // terminal case
- template <typename First, typename Last, typename State, typename F>
- inline State const&
- linear_fold(First const&, Last const&, State const& state, F, mpl::true_)
- {
- return state;
- }
-
- // non-terminal case
- template <typename First, typename Last, typename State, typename F>
- inline typename static_fold<First, Last, State, F>::type
- linear_fold(
- First const& first
- , Last const& last
- , State const& state
- , F f
- , mpl::false_)
- {
- return detail::linear_fold(
- fusion::next(first)
- , last
- , f(*first, state)
- , f
- , result_of::equal_to<typename result_of::next<First>::type, Last>()
- );
- }
-
- template<typename I0, typename State, typename F, int N>
- struct result_of_unrolled_fold
- {
- typedef typename result_of::next<I0>::type I1;
- typedef typename result_of::next<I1>::type I2;
- typedef typename result_of::next<I2>::type I3;
- typedef typename result_of::next<I3>::type I4;
- typedef typename fold_apply<I0, State, F>::type Rest1;
- typedef typename fold_apply<I1, Rest1, F>::type Rest2;
- typedef typename fold_apply<I2, Rest2, F>::type Rest3;
- typedef typename fold_apply<I3, Rest3, F>::type Rest4;
-
- typedef typename result_of_unrolled_fold<I4, Rest4, F, N-4>::type type;
- };
+ typedef State type;
+ };
 
- template<typename I0, typename State, typename F>
- struct result_of_unrolled_fold<I0, State, F, 3>
- {
- typedef typename result_of::next<I0>::type I1;
- typedef typename result_of::next<I1>::type I2;
- typedef typename fold_apply<I0, State, F>::type Rest;
- typedef typename fold_apply<I1, Rest, F>::type Rest2;
- typedef typename fold_apply<I2, Rest2, F>::type type;
- };
-
- template<typename I0, typename State, typename F>
- struct result_of_unrolled_fold<I0, State, F, 2>
- {
- typedef typename result_of::next<I0>::type I1;
- typedef typename fold_apply<I0, State, F>::type Rest;
- typedef typename fold_apply<I1, Rest, F>::type type;
- };
-
- template<typename I0, typename State, typename F>
- struct result_of_unrolled_fold<I0, State, F, 1>
- {
- typedef typename fold_apply<I0, State, F>::type type;
- };
+ template<typename SeqRef, typename State, typename F, bool>
+ struct choose_fold;
 
- template<typename I0, typename State, typename F>
- struct result_of_unrolled_fold<I0, State, F, 0>
- {
- typedef State type;
- };
-
- template<typename Sequence, typename State, typename F, bool>
- struct choose_fold;
+ template<typename SeqRef, typename State, typename F>
+ struct choose_fold<SeqRef, State, F, true>
+ {
+ typedef typename result_of::begin<SeqRef>::type begin;
+ typedef typename result_of::end<SeqRef>::type end;
 
- template<typename Sequence, typename State, typename F>
- struct choose_fold<Sequence, State, F, true>
- {
- typedef typename result_of::begin<Sequence>::type begin;
- typedef typename result_of::end<Sequence>::type end;
- typedef typename result_of_unrolled_fold<
- begin, State, F, result_of::distance<begin, end>::type::value>::type type;
- };
+ typedef typename
+ result_of_unrolled_fold<
+ begin
+ , State
+ , F
+ , result_of::size<SeqRef>::value
+ >::type
+ type;
+ };
 
- template<typename Sequence, typename State, typename F>
- struct choose_fold<Sequence, State, F, false>
- {
- typedef typename
- detail::static_fold<
- typename result_of::begin<Sequence>::type
- , typename result_of::end<Sequence>::type
- , State
- , F
- >::type
- type;
- };
-
- template<typename Sequence, typename State, typename F, typename Tag>
- typename result_of::fold<Sequence, State, F>::type
- fold(Sequence& seq, State const& state, F f, Tag)
- {
- return linear_fold(
- fusion::begin(seq)
- , fusion::end(seq)
- , state
- , f
- , result_of::equal_to<
- typename result_of::begin<Sequence>::type
- , typename result_of::end<Sequence>::type>()
- );
- }
+ template<typename SeqRef, typename State, typename F>
+ struct choose_fold<SeqRef, State, F, false>
+ {
+ typedef typename
+ detail::static_fold<
+ typename result_of::begin<SeqRef>::type
+ , typename result_of::end<SeqRef>::type
+ , State
+ , F
+ >::type
+ type;
+ };
+
+ template<typename Seq, typename State, typename F, typename Tag>
+ typename result_of::fold<Seq, State, F>::type
+ fold(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_CLREF(State) state,
+ BOOST_FUSION_R_ELSE_CLREF(F) f,
+ Tag)
+ {
+ return linear_fold(
+ fusion::begin(seq)
+ , fusion::end(seq)
+ , BOOST_FUSION_FORWARD(State,state)
+ , BOOST_FUSION_FORWARD(F,f)
+ , result_of::equal_to<
+ typename result_of::begin<Seq>::type
+ , typename result_of::end<Seq>::type
+ >()
+ );
+ }
 
- template<typename Sequence, typename State, typename F>
- typename result_of::fold<Sequence, State, F>::type
- fold(Sequence& seq, State const& state, F f, random_access_traversal_tag)
- {
- typedef typename result_of::begin<Sequence>::type begin;
- typedef typename result_of::end<Sequence>::type end;
- return unrolled_fold<result_of::distance<begin, end>::type::value>::call(
- fusion::begin(seq)
- , state
- , f);
+ template<typename Seq, typename State, typename F>
+ typename result_of::fold<Seq, State, F>::type
+ fold(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_CLREF(State) state,
+ BOOST_FUSION_R_ELSE_CLREF(F) f,
+ random_access_traversal_tag)
+ {
+ typedef
+ unrolled_fold<
+ result_of::distance<
+ typename result_of::begin<Seq>::type
+ , typename result_of::end<Seq>::type
+ >::value
+ >
+ gen;
+
+ return gen::call(
+ fusion::begin(seq)
+ , BOOST_FUSION_FORWARD(State,state)
+ , BOOST_FUSION_FORWARD(F,f));
+ }
     }
-}}}
+}}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/for_each.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/for_each.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/for_each.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,68 +1,81 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FOR_EACH_05052005_1028)
-#define FUSION_FOR_EACH_05052005_1028
+
+#ifndef BOOST_FUSION_ALGORITHM_ITERATION_DETAIL_FOR_EACH_HPP
+#define BOOST_FUSION_ALGORITHM_ITERATION_DETAIL_FOR_EACH_HPP
 
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
 #include <boost/fusion/iterator/equal_to.hpp>
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/iterator/distance.hpp>
+
 #include <boost/mpl/bool.hpp>
 
-namespace boost { namespace fusion {
-namespace detail
+namespace boost { namespace fusion { namespace detail
 {
- template <typename First, typename Last, typename F>
+ template <typename SeqRef, typename First, typename F>
     inline void
- for_each_linear(First const&, Last const&, F const&, mpl::true_)
+ for_each_linear(First const&, BOOST_FUSION_R_ELSE_LREF(F), mpl::true_)
     {
     }
-
- template <typename First, typename Last, typename F>
+
+ template <typename SeqRef, typename First, typename F>
     inline void
- for_each_linear(First const& first, Last const& last, F const& f, mpl::false_)
+ for_each_linear(First const& first,
+ BOOST_FUSION_R_ELSE_LREF(F) f,
+ mpl::false_)
     {
         f(*first);
- detail::for_each_linear(fusion::next(first), last, f,
- result_of::equal_to<typename result_of::next<First>::type, Last>());
+
+ detail::for_each_linear<SeqRef>(
+ fusion::next(first),
+ BOOST_FUSION_FORWARD(F,f),
+ result_of::equal_to<
+ typename result_of::next<First>::type
+ , typename result_of::end<SeqRef>::type
+ >());
     }
 
 
- template <typename Sequence, typename F, typename Tag>
+ template <typename Seq, typename F, typename Tag>
     inline void
- for_each(Sequence& seq, F const& f, Tag)
- {
- detail::for_each_linear(
- fusion::begin(seq)
- , fusion::end(seq)
- , f
- , result_of::equal_to<
- typename result_of::begin<Sequence>::type
- , typename result_of::end<Sequence>::type>());
+ for_each(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_LREF(F) f,
+ Tag)
+ {
+ detail::for_each_linear<BOOST_FUSION_R_ELSE_LREF(Seq)>(
+ fusion::begin(seq)
+ , f
+ , result_of::empty<Seq>::type());
     }
 
     template<int N>
     struct for_each_unrolled
     {
         template<typename I0, typename F>
- static void call(I0 const& i0, F const& f)
+ static void call(I0 const& i0, BOOST_FUSION_R_ELSE_LREF(F) f)
         {
- f(*i0);
+ f(fusion::deref(i0));
+
             typedef typename result_of::next<I0>::type I1;
             I1 i1(fusion::next(i0));
- f(*i1);
+ f(fusion::deref(i1));
+
             typedef typename result_of::next<I1>::type I2;
             I2 i2(fusion::next(i1));
- f(*i2);
+ f(fusion::deref(i2));
+
             typedef typename result_of::next<I2>::type I3;
             I3 i3(fusion::next(i2));
- f(*i3);
+ f(fusion::deref(i3));
+
             for_each_unrolled<N-4>::call(fusion::next(i3), f);
         }
     };
@@ -71,15 +84,17 @@
     struct for_each_unrolled<3>
     {
         template<typename I0, typename F>
- static void call(I0 const& i0, F const& f)
+ static void call(I0 const& i0, BOOST_FUSION_R_ELSE_LREF(F) f)
         {
- f(*i0);
+ f(fusion::deref(i0));
+
             typedef typename result_of::next<I0>::type I1;
             I1 i1(fusion::next(i0));
- f(*i1);
+ f(fusion::deref(i1));
+
             typedef typename result_of::next<I1>::type I2;
             I2 i2(fusion::next(i1));
- f(*i2);
+ f(fusion::deref(i2));
         }
     };
 
@@ -87,12 +102,13 @@
     struct for_each_unrolled<2>
     {
         template<typename I0, typename F>
- static void call(I0 const& i0, F const& f)
+ static void call(I0 const& i0, BOOST_FUSION_R_ELSE_LREF(F) f)
         {
- f(*i0);
+ f(fusion::deref(i0));
+
             typedef typename result_of::next<I0>::type I1;
             I1 i1(fusion::next(i0));
- f(*i1);
+ f(fusion::deref(i1));
         }
     };
 
@@ -100,9 +116,9 @@
     struct for_each_unrolled<1>
     {
         template<typename I0, typename F>
- static void call(I0 const& i0, F const& f)
+ static void call(I0 const& i0, BOOST_FUSION_R_ELSE_LREF(F))
         {
- f(*i0);
+ f(fusion::deref(i0));
         }
     };
 
@@ -110,21 +126,22 @@
     struct for_each_unrolled<0>
     {
         template<typename It, typename F>
- static void call(It const&, F const&)
+ static void call(It const&, BOOST_FUSION_R_ELSE_LREF(F))
         {
         }
     };
 
- template <typename Sequence, typename F>
+ template <typename Seq, typename F>
     inline void
- for_each(Sequence& seq, F const& f, random_access_traversal_tag)
- {
- typedef typename result_of::begin<Sequence>::type begin;
- typedef typename result_of::end<Sequence>::type end;
- for_each_unrolled<result_of::distance<begin, end>::type::value>::call(fusion::begin(seq), f);
+ for_each(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_LREF(F) f,
+ random_access_traversal_tag)
+ {
+ for_each_unrolled<result_of::empty<Seq>::value>::call(
+ fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)),
+ BOOST_FUSION_FORWARD(F,f));
     }
 }}}
 
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/fold.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/fold.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/fold.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,47 +2,75 @@
     Copyright (c) 2001-2007 Joel de Guzman
     Copyright (c) 2007 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_FOLD_05052005_1214)
-#define BOOST_FUSION_FOLD_05052005_1214
 
-#include <boost/fusion/algorithm/iteration/detail/fold.hpp>
-#include <boost/fusion/sequence/intrinsic/size.hpp>
+#ifndef BOOST_FUSION_ALGORITHM_ITERATION_FOLD_HPP
+#define BOOST_FUSION_ALGORITHM_ITERATION_FOLD_HPP
+
 #include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/support/ref.hpp>
 
 #include <boost/type_traits/is_base_of.hpp>
-#include <boost/static_assert.hpp>
 
-namespace boost { namespace fusion {
+#include <boost/fusion/algorithm/iteration/detail/fold.hpp>
+
+namespace boost { namespace fusion {
 
     struct random_access_traversal_tag;
 
     namespace result_of
     {
- template <typename Sequence, typename State, typename F>
+ template <typename Seq, typename State, typename F>
         struct fold
- : fusion::detail::choose_fold<
- Sequence, State, F
- , is_base_of<random_access_traversal_tag, typename traits::category_of<Sequence>::type>::value>
+ : fusion::detail::choose_fold<
+ typename detail::add_lref<Seq>::type
+ , typename detail::add_lref<State>::type
+ , typename detail::add_lref<F>::type
+ , is_base_of<
+ random_access_traversal_tag
+ , typename traits::category_of<Seq>::type
+ >::value
+ >
         {};
     }
 
     template <typename Sequence, typename State, typename F>
- inline typename result_of::fold<Sequence, State, F>::type
- fold(Sequence& seq, State const& state, F f)
+ inline typename result_of::fold<
+ BOOST_FUSION_R_ELSE_LREF(Sequence)
+ , BOOST_FUSION_R_ELSE_LREF(State)
+ , BOOST_FUSION_R_ELSE_LREF(F)
+ >::type
+ fold(BOOST_FUSION_R_ELSE_LREF(Sequence) seq,
+ BOOST_FUSION_R_ELSE_LREF(State) state,
+ BOOST_FUSION_R_ELSE_LREF(F) f)
     {
- return detail::fold(seq, state, f, typename traits::category_of<Sequence>::type());
+ return detail::fold(
+ BOOST_FUSION_FORWARD(Sequence,seq),
+ BOOST_FUSION_FORWARD(State,state),
+ BOOST_FUSION_FORWARD(F,f),
+ typename traits::category_of<Sequence>::type());
     }
 
+#ifdef BOOST_NO_RVALUE_REFERENCES
     template <typename Sequence, typename State, typename F>
- inline typename result_of::fold<Sequence const, State, F>::type
- fold(Sequence const& seq, State const& state, F f)
+ inline typename result_of::fold<
+ BOOST_FUSION_R_ELSE_LREF(Sequence)
+ , BOOST_FUSION_R_ELSE_CLREF(State)
+ , BOOST_FUSION_R_ELSE_LREF(F)
+ >::type
+ fold(BOOST_FUSION_R_ELSE_LREF(Sequence) seq,
+ BOOST_FUSION_R_ELSE_CLREF(State) state,
+ BOOST_FUSION_R_ELSE_LREF(F) f)
     {
- return detail::fold(seq, state, f, typename traits::category_of<Sequence>::type());
+ return detail::fold(
+ BOOST_FUSION_FORWARD(Sequence,seq),
+ BOOST_FUSION_FORWARD(State,state),
+ BOOST_FUSION_FORWARD(F,f),
+ typename traits::category_of<Sequence>::type());
     }
+#endif
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/for_each.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/for_each.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/for_each.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,41 +2,40 @@
     Copyright (c) 2001-2007 Joel de Guzman
     Copyright (c) 2007 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_FOR_EACH_20070527_0943)
-#define BOOST_FUSION_FOR_EACH_20070527_0943
 
-#include <boost/fusion/algorithm/iteration/detail/for_each.hpp>
+#ifndef BOOST_FUSION_ALGORITHM_ITERATION_FOR_EACH_HPP
+#define BOOST_FUSION_ALGORITHM_ITERATION_FOR_EACH_HPP
 
 #include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/support/ref.hpp>
 
-namespace boost { namespace fusion {
+#include <boost/fusion/algorithm/iteration/detail/for_each.hpp>
+
+namespace boost { namespace fusion
+{
+ struct random_access_traversal_tag;
 
     namespace result_of
     {
- template <typename Sequence, typename F>
+ template <typename, typename>
         struct for_each
         {
             typedef void type;
         };
     }
 
- struct random_access_traversal_tag;
-
- template <typename Sequence, typename F>
- inline void
- for_each(Sequence& seq, F const& f)
- {
- detail::for_each(seq, f, typename traits::category_of<Sequence>::type());
- }
 
- template <typename Sequence, typename F>
+ template <typename Seq, typename F>
     inline void
- for_each(Sequence const& seq, F const& f)
+ for_each(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_LREF(F) f)
     {
- detail::for_each(seq, f, typename traits::category_of<Sequence>::type());
+ detail::for_each(BOOST_FUSION_FORWARD(Seq,seq),
+ BOOST_FUSION_FORWARD(F,f),
+ typename traits::category_of<Seq>::type());
     }
 }}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_ALGORITHM_QUERY_10022005_0549)
-#define FUSION_ALGORITHM_QUERY_10022005_0549
+
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_HPP
 
 #include <boost/fusion/algorithm/query/all.hpp>
 #include <boost/fusion/algorithm/query/any.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/all.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/all.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/all.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,33 +2,40 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2007 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_ALL_05052005_1238)
-#define BOOST_FUSION_ALL_05052005_1238
+
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_ALL_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_ALL_HPP
 
 #include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/support/ref.hpp>
+
 #include <boost/fusion/algorithm/query/detail/all.hpp>
 
 namespace boost { namespace fusion
 {
     namespace result_of
     {
- template <typename Sequence, typename F>
+ template <typename, typename>
         struct all
         {
             typedef bool type;
         };
     }
 
- template <typename Sequence, typename F>
+ template <typename Seq, typename F>
     inline bool
- all(Sequence const& seq, F f)
+ all(BOOST_FUSION_R_ELSE_LREF(Seq) seq, BOOST_FUSION_R_ELSE_LREF(F) f)
     {
- return detail::all(seq, f, typename traits::category_of<Sequence>::type());
+ return detail::all(
+ BOOST_FUSION_FORWARD(Seq,seq),
+ BOOST_FUSION_FORWARD(F,f),
+ typename traits::category_of<
+ BOOST_FUSION_R_ELSE_LREF(Seq)
+ >::type());
     }
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/any.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/any.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/any.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -3,13 +3,16 @@
     Copyright (c) 2005 Eric Niebler
     Copyright (c) 2007 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_ANY_05052005_1230)
-#define FUSION_ANY_05052005_1230
+
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_ANY_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_ANY_HPP
 
 #include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/support/ref.hpp>
+
 #include <boost/fusion/algorithm/query/detail/any.hpp>
 
 namespace boost { namespace fusion
@@ -23,13 +26,17 @@
         };
     }
 
- template <typename Sequence, typename F>
+ template <typename Seq, typename F>
     inline bool
- any(Sequence const& seq, F f)
+ any(BOOST_FUSION_R_ELSE_LREF(Seq) seq, BOOST_FUSION_R_ELSE_LREF(F) f)
     {
- return detail::any(seq, f, typename traits::category_of<Sequence>::type());
+ return detail::any(
+ BOOST_FUSION_FORWARD(Seq,seq),
+ BOOST_FUSION_FORWARD(F,f),
+ typename traits::category_of<
+ BOOST_FUSION_R_ELSE_LREF(Seq)
+ >::type());
     }
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,13 +2,16 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2007
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_COUNT_09162005_0150)
-#define BOOST_FUSION_COUNT_09162005_0150
+
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_COUNT_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_COUNT_HPP
 
 #include <boost/fusion/algorithm/query/count_if.hpp>
+#include <boost/fusion/support/ref.hpp>
+
 #include <boost/fusion/algorithm/query/detail/count.hpp>
 
 namespace boost { namespace fusion
@@ -22,14 +25,14 @@
         };
     }
 
- template <typename Sequence, typename T>
+ template <typename Seq, typename T>
     inline int
- count(Sequence const& seq, T const& x)
+ count(BOOST_FUSION_R_ELSE_LREF(Seq) seq, BOOST_FUSION_R_ELSE_LREF(T) x)
     {
- detail::count_compare<T> f(x);
- return fusion::count_if(seq, f);
+ return fusion::count_if(
+ BOOST_FUSION_FORWARD(Seq,seq),
+ detail::count_compare<BOOST_FUSION_R_ELSE_LREF(T)>(x));
     }
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count_if.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,15 +2,18 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2007 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_COUNT_IF_09162005_0137)
-#define BOOST_FUSION_COUNT_IF_09162005_0137
 
-#include <boost/fusion/algorithm/query/detail/count_if.hpp>
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_COUNT_IF_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_COUNT_IF_HPP
+
+#include <boost/fusion/support/ref.hpp>
 #include <boost/fusion/support/category_of.hpp>
 
+#include <boost/fusion/algorithm/query/detail/count_if.hpp>
+
 namespace boost { namespace fusion
 {
     namespace result_of
@@ -22,14 +25,16 @@
         };
     }
 
- template <typename Sequence, typename F>
+ template <typename Seq, typename F>
     inline int
- count_if(Sequence const& seq, F f)
+ count_if(BOOST_FUSION_R_ELSE_LREF(Seq) seq, BOOST_FUSION_R_ELSE_LREF(F) f)
     {
         return detail::count_if(
- seq, f, typename traits::category_of<Sequence>::type());
+ BOOST_FUSION_FORWARD(Seq,seq),
+ BOOST_FUSION_FORWARD(F,f),
+ typename traits::category_of<BOOST_FUSION_R_ELSE_LREF(Seq)>::type()
+ );
     }
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,13 +2,15 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2007 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_ALL_05052005_1237)
-#define FUSION_ALL_05052005_1237
 
-#include <boost/mpl/bool.hpp>
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_DETAIL_ALL_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_DETAIL_ALL_HPP
+
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 #include <boost/fusion/iterator/advance.hpp>
@@ -17,52 +19,54 @@
 #include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/iterator/distance.hpp>
 
+#include <boost/mpl/bool.hpp>
+
+//TODO code based on fold!!!
+
 namespace boost { namespace fusion { namespace detail
 {
- template <typename First, typename Last, typename F>
+ template <typename SeqRef, typename First, typename F>
     inline bool
- linear_all(First const&, Last const&, F const&, mpl::true_)
+ linear_all(First const&, BOOST_FUSION_R_ELSE_LREF(F), mpl::true_)
     {
         return true;
     }
 
- template <typename First, typename Last, typename F>
+ template <typename SeqRef,typename First, typename F>
     inline bool
- linear_all(First const& first, Last const& last, F& f, mpl::false_)
+ linear_all(First const& first, BOOST_FUSION_R_ELSE_LREF(F) f, mpl::false_)
     {
- typename result_of::deref<First>::type x = *first;
- return f(x) &&
+ return f(fusion::deref(first)) &&
             detail::linear_all(
- fusion::next(first)
- , last
- , f
- , result_of::equal_to<typename result_of::next<First>::type, Last>());
+ fusion::next(first)
+ , BOOST_FUSION_FORWARD(F,f)
+ , result_of::equal_to<
+ typename result_of::next<First>::type,
+ typename result_of::end<SeqRef>::type
+ >::type());
     }
 
- template <typename Sequence, typename F, typename Tag>
+ template <typename Seq, typename F, typename Tag>
     inline bool
- all(Sequence const& seq, F f, Tag)
+ all(BOOST_FUSION_R_ELSE_LREF(Seq) seq, BOOST_FUSION_R_ELSE_LREF(F) f, Tag)
     {
- return detail::linear_all(
- fusion::begin(seq)
- , fusion::end(seq)
- , f
- , result_of::equal_to<
- typename result_of::begin<Sequence>::type
- , typename result_of::end<Sequence>::type>());
+ return detail::linear_all<BOOST_FUSION_R_ELSE_LREF(Seq)>(
+ fusion::begin(BOOST_FUSION_FORWARD(Seq,seq))
+ , BOOST_FUSION_FORWARD(F,f)
+ , result_of::empty<BOOST_FUSION_R_ELSE_LREF(Seq)>::type());
     }
 
     template<int N>
     struct unrolled_all
     {
         template <typename It, typename F>
- static bool call(It const& it, F f)
+ static bool call(It const& it, BOOST_FUSION_R_ELSE_LREF(F) f)
         {
- return
- f(*it) &&
- f(*fusion::advance_c<1>(it))&&
- f(*fusion::advance_c<2>(it)) &&
- f(*fusion::advance_c<3>(it)) &&
+ return
+ f(fusion::deref(it)) &&
+ f(fusion::deref(fusion::advance_c<1>(it)))&&
+ f(fusion::deref(fusion::advance_c<2>(it))) &&
+ f(fusion::deref(fusion::advance_c<3>(it))) &&
                 detail::unrolled_all<N-4>::call(fusion::advance_c<4>(it), f);
         }
     };
@@ -71,12 +75,12 @@
     struct unrolled_all<3>
     {
         template <typename It, typename F>
- static bool call(It const& it, F f)
+ static bool call(It const& it, BOOST_FUSION_R_ELSE_LREF(F) f)
         {
- return
- f(*it) &&
- f(*fusion::advance_c<1>(it)) &&
- f(*fusion::advance_c<2>(it));
+ return
+ f(fusion::deref(it)) &&
+ f(fusion::deref(fusion::advance_c<1>(it))) &&
+ f(fusion::deref(fusion::advance_c<2>(it)));
         }
     };
 
@@ -84,11 +88,11 @@
     struct unrolled_all<2>
     {
         template <typename It, typename F>
- static bool call(It const& it, F f)
+ static bool call(It const& it, BOOST_FUSION_R_ELSE_LREF(F) f)
         {
- return
- f(*it) &&
- f(*fusion::advance_c<1>(it));
+ return
+ f(fusion::deref(it)) &&
+ f(fusion::deref(fusion::advance_c<1>(it)));
         }
     };
 
@@ -96,9 +100,9 @@
     struct unrolled_all<1>
     {
         template <typename It, typename F>
- static bool call(It const& it, F f)
+ static bool call(It const& it, BOOST_FUSION_R_ELSE_LREF(F) f)
         {
- return f(*it);
+ return f(fusion::deref(it));
         }
     };
 
@@ -106,22 +110,28 @@
     struct unrolled_all<0>
     {
         template <typename It, typename F>
- static bool call(It const& it, F f)
+ static bool call(It const& it, F const& f)
         {
             return false;
         }
     };
 
- template <typename Sequence, typename F>
+ template <typename Seq, typename F>
     inline bool
- all(Sequence const& seq, F f, random_access_traversal_tag)
- {
- typedef typename result_of::begin<Sequence>::type begin;
- typedef typename result_of::end<Sequence>::type end;
- return detail::unrolled_all<result_of::distance<begin, end>::type::value>::call(
- fusion::begin(seq), f);
+ all(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_LREF(F) f,
+ random_access_traversal_tag)
+ {
+ typedef
+ detail::unrolled_all<
+ result_of::size<BOOST_FUSION_R_ELSE_LREF(Seq)>::value
+ >
+ gen;
+
+ return gen::call(
+ fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)),
+ BOOST_FUSION_FORWARD(F,f));
     }
 }}}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/any.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/any.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/any.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,15 +1,16 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
- Copyright (c) 2005 Eric Niebler
     Copyright (c) 2007 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_ANY_05052005_1229)
-#define FUSION_ANY_05052005_1229
 
-#include <boost/mpl/bool.hpp>
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_DETAIL_ALL_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_DETAIL_ALL_HPP
+
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 #include <boost/fusion/iterator/advance.hpp>
@@ -18,54 +19,54 @@
 #include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/iterator/distance.hpp>
 
-namespace boost { namespace fusion {
- struct random_access_traversal_tag;
-namespace detail
+#include <boost/mpl/bool.hpp>
+
+//TODO code based on fold!!!
+
+namespace boost { namespace fusion { namespace detail
 {
- template <typename First, typename Last, typename F>
+ template <typename SeqRef, typename First, typename F>
     inline bool
- linear_any(First const&, Last const&, F const&, mpl::true_)
+ linear_any(First const&, BOOST_FUSION_R_ELSE_LREF(F), mpl::true_)
     {
- return false;
+ return true;
     }
 
- template <typename First, typename Last, typename F>
+ template <typename SeqRef,typename First, typename F>
     inline bool
- linear_any(First const& first, Last const& last, F& f, mpl::false_)
+ linear_any(First const& first, BOOST_FUSION_R_ELSE_LREF(F) f, mpl::false_)
     {
- typename result_of::deref<First>::type x = *first;
- return f(x) ||
+ return f(fusion::deref(first)) ||
             detail::linear_any(
- fusion::next(first)
- , last
- , f
- , result_of::equal_to<typename result_of::next<First>::type, Last>());
+ fusion::next(first)
+ , BOOST_FUSION_FORWARD(F,f)
+ , result_of::equal_to<
+ typename result_of::next<First>::type,
+ typename result_of::end<SeqRef>::type
+ >::type());
     }
 
- template <typename Sequence, typename F, typename Tag>
+ template <typename Seq, typename F, typename Tag>
     inline bool
- any(Sequence const& seq, F f, Tag)
+ any(BOOST_FUSION_R_ELSE_LREF(Seq) seq, BOOST_FUSION_R_ELSE_LREF(F) f, Tag)
     {
- return detail::linear_any(
- fusion::begin(seq)
- , fusion::end(seq)
- , f
- , result_of::equal_to<
- typename result_of::begin<Sequence>::type
- , typename result_of::end<Sequence>::type>());
+ return detail::linear_any<BOOST_FUSION_R_ELSE_LREF(Seq)>(
+ fusion::begin(BOOST_FUSION_FORWARD(Seq,seq))
+ , BOOST_FUSION_FORWARD(F,f)
+ , result_of::empty<BOOST_FUSION_R_ELSE_LREF(Seq)>::type());
     }
 
     template<int N>
     struct unrolled_any
     {
         template <typename It, typename F>
- static bool call(It const& it, F f)
+ static bool call(It const& it, BOOST_FUSION_R_ELSE_LREF(F) f)
         {
- return
- f(*it) ||
- f(*fusion::advance_c<1>(it))||
- f(*fusion::advance_c<2>(it)) ||
- f(*fusion::advance_c<3>(it)) ||
+ return
+ f(fusion::deref(it)) ||
+ f(fusion::deref(fusion::advance_c<1>(it)))||
+ f(fusion::deref(fusion::advance_c<2>(it))) ||
+ f(fusion::deref(fusion::advance_c<3>(it))) ||
                 detail::unrolled_any<N-4>::call(fusion::advance_c<4>(it), f);
         }
     };
@@ -74,12 +75,12 @@
     struct unrolled_any<3>
     {
         template <typename It, typename F>
- static bool call(It const& it, F f)
+ static bool call(It const& it, BOOST_FUSION_R_ELSE_LREF(F) f)
         {
- return
- f(*it) ||
- f(*fusion::advance_c<1>(it)) ||
- f(*fusion::advance_c<2>(it));
+ return
+ f(fusion::deref(it)) ||
+ f(fusion::deref(fusion::advance_c<1>(it))) ||
+ f(fusion::deref(fusion::advance_c<2>(it)));
         }
     };
 
@@ -87,11 +88,11 @@
     struct unrolled_any<2>
     {
         template <typename It, typename F>
- static bool call(It const& it, F f)
+ static bool call(It const& it, BOOST_FUSION_R_ELSE_LREF(F) f)
         {
- return
- f(*it) ||
- f(*fusion::advance_c<1>(it));
+ return
+ f(fusion::deref(it)) ||
+ f(fusion::deref(fusion::advance_c<1>(it)));
         }
     };
 
@@ -99,9 +100,9 @@
     struct unrolled_any<1>
     {
         template <typename It, typename F>
- static bool call(It const& it, F f)
+ static bool call(It const& it, BOOST_FUSION_R_ELSE_LREF(F) f)
         {
- return f(*it);
+ return f(fusion::deref(it));
         }
     };
 
@@ -109,22 +110,28 @@
     struct unrolled_any<0>
     {
         template <typename It, typename F>
- static bool call(It const& it, F f)
+ static bool call(It const& it, F const& f)
         {
             return false;
         }
     };
 
- template <typename Sequence, typename F>
+ template <typename Seq, typename F>
     inline bool
- any(Sequence const& seq, F f, random_access_traversal_tag)
- {
- typedef typename result_of::begin<Sequence>::type begin;
- typedef typename result_of::end<Sequence>::type end;
- return detail::unrolled_any<result_of::distance<begin, end>::type::value>::call(
- fusion::begin(seq), f);
+ any(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_LREF(F) f,
+ random_access_traversal_tag)
+ {
+ typedef
+ detail::unrolled_any<
+ result_of::size<BOOST_FUSION_R_ELSE_LREF(Seq)>::value
+ >
+ gen;
+
+ return gen::call(
+ fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)),
+ BOOST_FUSION_FORWARD(F,f));
     }
 }}}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/assoc_find.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/assoc_find.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/assoc_find.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,31 +1,34 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_ASSOC_FIND_09242005_1133)
-#define FUSION_ASSOC_FIND_09242005_1133
+
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_DETAIL_ASSOC_FIND_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_DETAIL_ASSOC_FIND_HPP
 
 #include <boost/mpl/identity.hpp>
-#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
 #include <boost/type_traits/is_const.hpp>
 
 namespace boost { namespace fusion { namespace detail
 {
- template <typename Sequence, typename Key>
+ template <typename SeqRef, typename Key>
     struct assoc_find
     {
- typedef typename
- mpl::if_<
- is_const<Sequence>
- , typename Sequence::template meta_find_impl_const<Key>::type
- , typename Sequence::template meta_find_impl<Key>::type
- >::type
+ typedef typename detail::remove_reference<SeqRef>::type seq;
+
+ typedef typename
+ mpl::eval_if<
+ is_const<seq>
+ , typename seq::template meta_find_impl_const<Key>
+ , typename seq::template meta_find_impl<Key>
+ >::type
         type;
 
         static type
- call(Sequence& s)
+ call(SeqRef s)
         {
             return s.find_impl(mpl::identity<Key>());
         }

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,68 +1,75 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_COUNT_09162005_0158)
-#define FUSION_COUNT_09162005_0158
+
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_DETAIL_COUNT_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_DETAIL_COUNT_HPP
 
 #include <boost/mpl/or.hpp>
 #include <boost/type_traits/is_convertible.hpp>
-#include <boost/fusion/support/detail/access.hpp>
 
 namespace boost { namespace fusion { namespace detail
-{
+{
     template <bool is_convertible>
     struct compare_convertible;
 
     // T1 is convertible to T2 or vice versa
     template <>
- struct compare_convertible<true>
+ struct compare_convertible<true>
     {
         template <typename T1, typename T2>
         static bool
- call(T1 const& x, T2 const& y)
+ call(BOOST_FUSION_R_ELSE_LREF(T1) x, BOOST_FUSION_R_ELSE_LREF(T2) y)
         {
- return x == y;
+ return BOOST_FUSION_FORWARD(T1,x) == BOOST_FUSION_FORWARD(T2,y);
         }
     };
 
- // T1 is NOT convertible to T2 NOR vice versa
+ // T1 is NEITHER convertible to T2 NOR vice versa
     template <>
     struct compare_convertible<false>
     {
         template <typename T1, typename T2>
         static bool
- call(T1 const&, T2 const&)
+ call(BOOST_FUSION_R_ELSE_LREF(T1), BOOST_FUSION_R_ELSE_LREF(T2))
         {
             return false;
         }
     };
 
- template <typename T1>
+ template <typename T1Ref>
     struct count_compare
     {
- typedef typename detail::call_param<T1>::type param;
- count_compare(param x)
- : x(x) {}
+ count_compare(T1Ref x)
+ : x(x)
+ {}
 
         template <typename T2>
         bool
- operator()(T2 const& y)
+ operator()(BOOST_FUSION_R_ELSE_LREF(T2) y)
         {
- return
+ typedef typename remove_reference<T1Ref>::type T1_nonref;
+ typedef typename remove_reference<T2>::type T2_nonref;
+
+ typedef
                 compare_convertible<
                     mpl::or_<
- is_convertible<T1, T2>
- , is_convertible<T2, T1>
+ is_convertible<T1_nonref, T2_nonref>
+ , is_convertible<T2_nonref, T1_nonref>
>::value
- >::call(x, y);
+ >
+ gen;
+
+ return gen::call(
+ BOOST_FUSION_FORWARD(T1Ref,x),
+ BOOST_FUSION_FORWARD(T2,y));
         }
 
- param x;
+ T1Ref x;
     };
 }}}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count_if.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,15 +2,16 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2007 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_COUNT_IF_09162005_0141)
-#define BOOST_FUSION_COUNT_IF_09162005_0141
 
-#include <boost/mpl/bool.hpp>
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_DETAIL_COUNT_IF_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_DETAIL_COUNT_IF_HPP
+
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
 #include <boost/fusion/iterator/equal_to.hpp>
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/iterator/deref.hpp>
@@ -18,153 +19,188 @@
 #include <boost/fusion/iterator/distance.hpp>
 #include <boost/fusion/iterator/advance.hpp>
 
-namespace boost { namespace fusion {
- struct random_access_traversal_tag;
-namespace detail
-{
- template <typename First, typename Last, typename F>
- inline int
- linear_count_if(First const&, Last const&, F const&, mpl::true_)
- {
- return 0;
- }
-
- template <typename First, typename Last, typename F>
- inline int
- linear_count_if(First const& first, Last const& last, F& f, mpl::false_)
- {
- int n =
- detail::linear_count_if(
- fusion::next(first)
- , last
- , f
- , result_of::equal_to<typename result_of::next<First>::type, Last>());
- if (f(*first))
- ++n;
- return n;
- }
+#include <boost/mpl/bool.hpp>
 
- template <typename Sequence, typename F, typename Tag>
- inline int
- count_if(Sequence const& seq, F f, Tag)
- {
- return detail::linear_count_if(
- fusion::begin(seq)
- , fusion::end(seq)
- , f
- , result_of::equal_to<
- typename result_of::begin<Sequence>::type
- , typename result_of::end<Sequence>::type>());
- }
+namespace boost { namespace fusion {
+ struct random_access_traversal_tag;
 
- template<int n>
- struct unrolled_count_if
+ namespace detail
     {
- template<typename I0, typename F>
- static int call(I0 const& i0, F f)
+ template <typename SeqRef, typename First, typename F>
+ inline int
+ linear_count_if(First const&, BOOST_FUSION_R_ELSE_LREF(F), mpl::true_)
         {
- int ct = unrolled_count_if<n-4>::
- call(fusion::advance_c<4>(i0), f);
- if(f(*i0))
- ++ct;
-
- typedef typename result_of::next<I0>::type I1;
- I1 i1(fusion::next(i0));
- if(f(*i1))
- ++ct;
-
- typedef typename result_of::next<I1>::type I2;
- I2 i2(fusion::next(i1));
- if(f(*i2))
- ++ct;
-
- typedef typename result_of::next<I2>::type I3;
- I3 i3(fusion::next(i2));
- if(f(*i3))
- ++ct;
-
- return ct;
+ return 0;
         }
- };
 
- template<>
- struct unrolled_count_if<3>
- {
- template<typename I0, typename F>
- static int call(I0 const& i0, F f)
+ template <typename SeqRef, typename First, typename F>
+ inline int
+ linear_count_if(
+ First const& first,
+ BOOST_FUSION_R_ELSE_LREF(F) f,
+ mpl::false_)
         {
- int ct = 0;
- if(f(*i0))
- ++ct;
-
- typedef typename result_of::next<I0>::type I1;
- I1 i1(fusion::next(i0));
- if(f(*i1))
- ++ct;
-
- typedef typename result_of::next<I1>::type I2;
- I2 i2(fusion::next(i1));
- if(f(*i2))
- ++ct;
+ int n = detail::linear_count_if(
+ fusion::next(first)
+ , f
+ , result_of::equal_to<
+ typename result_of::next<First>::type,
+ typename result_of::end<SeqRef>::type
+ >::value);
+ if(f(*first))
+ {
+ ++n;
+ }
 
- return ct;
+ return n;
         }
- };
 
- template<>
- struct unrolled_count_if<2>
- {
- template<typename I0, typename F>
- static int call(I0 const& i0, F f)
+ template <typename Seq, typename F, typename Tag>
+ inline int
+ count_if(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_LREF(F) f,
+ Tag)
         {
- int ct = 0;
-
- if(f(*i0))
- ++ct;
+ return detail::linear_count_if<BOOST_FUSION_R_ELSE_LREF(Seq)>(
+ fusion::begin(BOOST_FUSION_FORWARD(Seq, seq))
+ , BOOST_FUSION_FORWARD(F,f)
+ , result_of::empty<BOOST_FUSION_R_ELSE_LREF(Seq)>::type());
+ }
 
- typedef typename result_of::next<I0>::type I1;
- I1 i1(fusion::next(i0));
- if(f(*i1))
- ++ct;
+ template<int n>
+ struct unrolled_count_if
+ {
+ template<typename I0, typename F>
+ static int call(I0 const& i0, BOOST_FUSION_R_ELSE_LREF(F) f)
+ {
+ int ct = unrolled_count_if<n-4>::
+ call(fusion::advance_c<4>(i0), BOOST_FUSION_FORWARD(F,f));
+ if(f(fusion::deref(i0)))
+ {
+ ++ct;
+ }
+
+ typedef typename result_of::next<I0>::type I1;
+ I1 i1(fusion::next(i0));
+ if(f(fusion::deref(i1)))
+ {
+ ++ct;
+ }
+
+ typedef typename result_of::next<I1>::type I2;
+ I2 i2(fusion::next(i1));
+ if(f(fusion::deref(i2)))
+ {
+ ++ct;
+ }
+
+ typedef typename result_of::next<I2>::type I3;
+ I3 i3(fusion::next(i2));
+ if(f(fusion::deref(i3)))
+ {
+ ++ct;
+ }
+
+ return ct;
+ }
+ };
 
- return ct;
- }
- };
+ template<>
+ struct unrolled_count_if<3>
+ {
+ template<typename I0, typename F>
+ static int call(I0 const& i0, BOOST_FUSION_R_ELSE_LREF(F) f)
+ {
+ int ct = 0;
+ if(f(fusion::deref(i0)))
+ {
+ ++ct;
+ }
+
+ typedef typename result_of::next<I0>::type I1;
+ I1 i1(fusion::next(i0));
+ if(f(fusion::deref(i1)))
+ {
+ ++ct;
+ }
+
+ typedef typename result_of::next<I1>::type I2;
+ I2 i2(fusion::next(i1));
+ if(f(fusion::deref(i2)))
+ {
+ ++ct;
+ }
+
+ return ct;
+ }
+ };
 
- template<>
- struct unrolled_count_if<1>
- {
- template<typename I0, typename F>
- static int call(I0 const& i0, F f)
+ template<>
+ struct unrolled_count_if<2>
         {
- int ct = 0;
- if(f(*i0))
- ++ct;
- return ct;
- }
- };
+ template<typename I0, typename F>
+ static int call(I0 const& i0, BOOST_FUSION_R_ELSE_LREF(F) f)
+ {
+ int ct = 0;
+ if(f(fusion::deref(i0)))
+ {
+ ++ct;
+ }
+
+ typedef typename result_of::next<I0>::type I1;
+ I1 i1(fusion::next(i0));
+ if(f(fusion::deref(i1)))
+ {
+ ++ct;
+ }
+
+ return ct;
+ }
+ };
 
+ template<>
+ struct unrolled_count_if<1>
+ {
+ template<typename I0, typename F>
+ static int call(I0 const& i0, BOOST_FUSION_R_ELSE_LREF(F) f)
+ {
+ int ct = 0;
+ if(f(fusion::deref(i0)))
+ {
+ ++ct;
+ }
+
+ return ct;
+ }
+ };
 
- template<>
- struct unrolled_count_if<0>
- {
- template<typename I0, typename F>
- static int call(I0 const&, F)
+ template<>
+ struct unrolled_count_if<0>
         {
- return 0;
+ template<typename I0, typename F>
+ static int call(I0 const&, BOOST_FUSION_R_ELSE_LREF(F))
+ {
+ return 0;
+ }
+ };
+
+ template <typename Seq, typename F>
+ inline int
+ count_if(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_LREF(F) f,
+ random_access_traversal_tag)
+ {
+ typedef
+ unrolled_count_if<
+ result_of::size<BOOST_FUSION_R_ELSE_LREF(Seq)>::value
+ >
+ gen;
+
+ return gen::call(
+ fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)),
+ BOOST_FUSION_FORWARD(F,f));
         }
- };
-
- template <typename Sequence, typename F>
- inline int
- count_if(Sequence const& seq, F f, random_access_traversal_tag)
- {
- typedef typename result_of::begin<Sequence>::type begin;
- typedef typename result_of::end<Sequence>::type end;
- return detail::unrolled_count_if<result_of::distance<begin, end>::type::value>::
- call(fusion::begin(seq), f);
     }
-}}}
+}}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,37 +2,36 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2007 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FIND_IF_05052005_1107)
-#define FUSION_FIND_IF_05052005_1107
 
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/or.hpp>
-#include <boost/mpl/lambda.hpp>
-#include <boost/mpl/apply.hpp>
-#include <boost/mpl/identity.hpp>
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_DETAIL_FIND_IF_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_DETAIL_FIND_IF_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/iterator/value_of.hpp>
 #include <boost/fusion/iterator/equal_to.hpp>
 #include <boost/fusion/iterator/next.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/iterator/advance.hpp>
 #include <boost/fusion/iterator/distance.hpp>
 #include <boost/fusion/support/category_of.hpp>
+
+#include <boost/mpl/identity.hpp>
 #include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/mpl/lambda.hpp>
+#include <boost/mpl/apply.hpp>
 #include <boost/mpl/identity.hpp>
 
-namespace boost { namespace fusion {
+namespace boost { namespace fusion {
     struct random_access_traversal_tag;
 namespace detail
 {
- template <typename Iterator, typename Pred>
+ template <typename It, typename Pred>
     struct apply_filter
+ : mpl::apply1<Pred, typename result_of::value_of<It>::type>::type
     {
- typedef typename mpl::apply1<
- Pred, typename result_of::value_of<Iterator>::type>::type type;
- BOOST_STATIC_CONSTANT(int, value = type::value);
     };
 
     template <typename First, typename Last, typename Pred>
@@ -43,7 +42,9 @@
     {
         typedef typename
             main_find_if<
- typename result_of::next<First>::type, Last, Pred
+ typename result_of::next<First>::type
+ , Last
+ , Pred
>::type
         type;
     };
@@ -51,124 +52,145 @@
     template <typename First, typename Last, typename Pred>
     struct main_find_if
     {
- typedef mpl::or_<
- result_of::equal_to<First, Last>
- , apply_filter<First, Pred> >
- filter;
-
         typedef typename
             mpl::eval_if<
- filter
+ mpl::or_<
+ result_of::equal_to<First, Last>
+ , apply_filter<First, Pred>
+ >
               , mpl::identity<First>
               , recursive_find_if<First, Last, Pred>
>::type
         type;
     };
 
- template<
- typename First, typename Last,
- typename Pred, bool>
+ template<typename First, typename Last, typename Pred, bool>
     struct choose_find_if;
 
     template<typename First, typename Last, typename Pred>
     struct choose_find_if<First, Last, Pred, false>
- : main_find_if<First, Last, Pred>
+ : main_find_if<First, Last, Pred>
     {};
 
- template<typename Iter, typename Pred, int n, int unrolling>
+ template<typename It, typename Pred, int n, int unrolling>
     struct unroll_again;
 
- template <typename Iter, typename Pred, int offset>
+ template <typename It, typename Pred, int offset>
     struct apply_offset_filter
+ : mpl::apply1<
+ Pred
+ , typename result_of::value_of<
+ typename result_of::advance_c<It, offset>::type
+ >::type
+ >::type
+ {
+ };
+
+ template<typename It, typename Pred, int n>
+ struct unrolled_find_if
     {
- typedef typename result_of::advance_c<Iter, offset>::type Shifted;
         typedef typename
- mpl::apply1<
- Pred
- , typename result_of::value_of<Shifted>::type
+ mpl::eval_if<
+ apply_filter<It, Pred>
+ , mpl::identity<It>
+ , mpl::eval_if<
+ apply_offset_filter<It, Pred, 1>
+ , result_of::advance_c<It, 1>
+ , mpl::eval_if<
+ apply_offset_filter<It, Pred, 2>
+ , result_of::advance_c<It, 2>
+ , mpl::eval_if<
+ apply_offset_filter<It, Pred, 3>
+ , result_of::advance_c<It, 3>
+ , unroll_again<
+ It
+ , Pred
+ , n
+ , 4
+ >
+ >
+ >
+ >
>::type
         type;
- BOOST_STATIC_CONSTANT(int, value = type::value);
     };
 
- template<typename Iter, typename Pred, int n>
- struct unrolled_find_if
+ template<typename It, typename Pred>
+ struct unrolled_find_if<It, Pred, 3>
     {
- typedef typename mpl::eval_if<
- apply_filter<Iter, Pred>,
- mpl::identity<Iter>,
- mpl::eval_if<
- apply_offset_filter<Iter, Pred, 1>,
- result_of::advance_c<Iter, 1>,
- mpl::eval_if<
- apply_offset_filter<Iter, Pred, 2>,
- result_of::advance_c<Iter, 2>,
- mpl::eval_if<
- apply_offset_filter<Iter, Pred, 3>,
- result_of::advance_c<Iter, 3>,
- unroll_again<
- Iter,
- Pred,
- n,
- 4> > > > >::type type;
- };
-
- template<typename Iter, typename Pred>
- struct unrolled_find_if<Iter, Pred, 3>
- {
- typedef typename mpl::eval_if<
- apply_filter<Iter, Pred>,
- mpl::identity<Iter>,
+ typedef typename
             mpl::eval_if<
- apply_offset_filter<Iter, Pred, 1>,
- result_of::advance_c<Iter, 1>,
- mpl::eval_if<
- apply_offset_filter<Iter, Pred, 2>,
- result_of::advance_c<Iter, 2>,
- result_of::advance_c<Iter, 3> > > >::type type;
+ apply_filter<It, Pred>
+ , mpl::identity<It>
+ , mpl::eval_if<
+ apply_offset_filter<It, Pred, 1>
+ , result_of::advance_c<It, 1>
+ , mpl::eval_if<
+ apply_offset_filter<It, Pred, 2>
+ , result_of::advance_c<It, 2>
+ , result_of::advance_c<It, 3>
+ >
+ >
+ >::type
+ type;
     };
 
- template<typename Iter, typename Pred>
- struct unrolled_find_if<Iter, Pred, 2>
- {
- typedef typename mpl::eval_if<
- apply_filter<Iter, Pred>,
- mpl::identity<Iter>,
+ template<typename It, typename Pred>
+ struct unrolled_find_if<It, Pred, 2>
+ {
+ typedef typename
             mpl::eval_if<
- apply_offset_filter<Iter, Pred, 1>,
- result_of::advance_c<Iter, 1>,
- result_of::advance_c<Iter, 2> > >::type type;
+ apply_filter<It, Pred>
+ , mpl::identity<It>
+ , mpl::eval_if<
+ apply_offset_filter<It, Pred, 1>
+ , result_of::advance_c<It, 1>
+ , result_of::advance_c<It, 2>
+ >
+ >::type
+ type;
     };
 
- template<typename Iter, typename Pred>
- struct unrolled_find_if<Iter, Pred, 1>
+ template<typename It, typename Pred>
+ struct unrolled_find_if<It, Pred, 1>
     {
- typedef typename mpl::eval_if<
- apply_filter<Iter, Pred>,
- mpl::identity<Iter>,
- result_of::advance_c<Iter, 1> >::type type;
+ typedef typename
+ mpl::eval_if<
+ apply_filter<It, Pred>
+ , mpl::identity<It>
+ , result_of::advance_c<It, 1>
+ >::type
+ type;
     };
 
- template<typename Iter, typename Pred, int n, int unrolling>
+ template<typename It, typename Pred, int n, int unrolling>
     struct unroll_again
     {
- typedef typename unrolled_find_if<
- typename result_of::advance_c<Iter, unrolling>::type,
- Pred,
- n-unrolling>::type type;
+ typedef typename
+ unrolled_find_if<
+ typename result_of::advance_c<It, unrolling>::type
+ , Pred
+ , n-unrolling
+ >::type
+ type;
     };
 
- template<typename Iter, typename Pred>
- struct unrolled_find_if<Iter, Pred, 0>
+ template<typename It, typename Pred>
+ struct unrolled_find_if<It, Pred, 0>
     {
- typedef Iter type;
+ typedef It type;
     };
 
     template<typename First, typename Last, typename Pred>
     struct choose_find_if<First, Last, Pred, true>
     {
- typedef typename result_of::distance<First, Last>::type N;
- typedef typename unrolled_find_if<First, Pred, N::value>::type type;
+ typedef typename
+ unrolled_find_if<
+ First
+ , Pred
+ , result_of::distance<First, Last>::value
+ >::type
+ type;
     };
 
     template <typename First, typename Last, typename Pred>
@@ -179,72 +201,33 @@
                 First
               , Last
               , typename mpl::lambda<Pred>::type
- , is_base_of<random_access_traversal_tag, typename traits::category_of<First>::type>::value
+ , is_base_of<
+ random_access_traversal_tag
+ , typename traits::category_of<First>::type
+ >::value
>::type
         type;
 
- template <typename Iterator>
+ template <typename It>
         static type
- recursive_call(Iterator const& iter, mpl::true_)
+ call(It const& it)
         {
- return iter;
- }
-
- template <typename Iterator>
- static type
- recursive_call(Iterator const& iter, mpl::false_)
- {
- return recursive_call(fusion::next(iter));
- }
-
- template <typename Iterator>
- static type
- recursive_call(Iterator const& iter)
- {
- typedef result_of::equal_to<Iterator, type> found;
- return recursive_call(iter, found());
- }
-
- template <typename Iterator, typename Tag>
- static type
- choose_call(Iterator const& iter, Tag)
- {
- return recursive_call(iter);
- }
-
- template <typename Iterator>
- static type
- choose_call(Iterator const& iter, random_access_traversal_tag)
- {
- typedef typename result_of::distance<Iterator, type>::type N;
- return fusion::advance<N>(iter);
- }
-
- template <typename Iterator>
- static type
- call(Iterator const& iter)
- {
- return choose_call(iter, typename traits::category_of<Iterator>::type());
+ typedef typename result_of::distance<It, type>::type N;
+ return fusion::advance<N>(it);
         }
     };
 
     template <typename First, typename Last, typename Pred>
- struct static_seq_find_if : static_find_if<First, Last, Pred>
+ struct static_seq_find_if
+ : static_find_if<First, Last, Pred>
     {
- typedef typename static_find_if<First, Last, Pred>::type type;
-
- template <typename Sequence>
- static type
- call(Sequence const& seq)
+ template <typename Seq>
+ static typename static_find_if<First, Last, Pred>::type
+ call(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
         {
- return static_find_if<First, Last, Pred>::call(fusion::begin(seq));
- }
+ typedef static_find_if<First, Last, Pred> gen;
 
- template <typename Sequence>
- static type
- call(Sequence& seq)
- {
- return static_find_if<First, Last, Pred>::call(fusion::begin(seq));
+ return gen::call(fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)));
         }
     };
 }}}

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,40 +1,41 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FIND_05052005_1107)
-#define FUSION_FIND_05052005_1107
 
-#include <boost/fusion/algorithm/query/detail/find_if.hpp>
-#include <boost/fusion/algorithm/query/detail/assoc_find.hpp>
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_FIND_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_FIND_HPP
+
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 #include <boost/fusion/support/category_of.hpp>
+
 #include <boost/type_traits/is_same.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/utility/enable_if.hpp>
+
+#include <boost/fusion/algorithm/query/detail/find_if.hpp>
+#include <boost/fusion/algorithm/query/detail/assoc_find.hpp>
 
 namespace boost { namespace fusion
 {
- struct associative_sequence_tag;
-
     namespace result_of
     {
- template <
- typename Sequence
+ template<
+ typename Seq
           , typename T
- , bool is_associative_sequence = traits::is_associative<Sequence>::value >
+ , bool is_associative_sequence=
+ traits::is_associative<Seq>::value
+ >
         struct find;
 
- template <typename Sequence, typename T>
- struct find<Sequence, T, false>
+ template <typename Seq, typename T>
+ struct find<Seq, T, false>
         {
             typedef
                 detail::static_seq_find_if<
- typename result_of::begin<Sequence>::type
- , typename result_of::end<Sequence>::type
+ typename result_of::begin<Seq>::type
+ , typename result_of::end<Seq>::type
                   , is_same<mpl::_, T>
>
             filter;
@@ -42,34 +43,25 @@
             typedef typename filter::type type;
         };
 
- template <typename Sequence, typename T>
- struct find<Sequence, T, true>
+ template <typename Seq, typename T>
+ struct find<Seq, T, true>
         {
- typedef detail::assoc_find<Sequence, T> filter;
+ typedef detail::assoc_find<Seq, T> filter;
             typedef typename filter::type type;
         };
     }
 
- template <typename T, typename Sequence>
- inline typename
- lazy_disable_if<
- is_const<Sequence>
- , result_of::find<Sequence, T>
- >::type const
- find(Sequence& seq)
+ template <typename T, typename Seq>
+ inline typename
+ result_of::find<BOOST_FUSION_R_ELSE_CLREF(Seq), T>::type const
+ find(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
- typedef typename result_of::find<Sequence, T>::filter filter;
- return filter::call(seq);
- }
+ typedef typename
+ result_of::find<BOOST_FUSION_R_ELSE_CLREF(Seq), T>::filter
+ gen;
 
- template <typename T, typename Sequence>
- inline typename result_of::find<Sequence const, T>::type const
- find(Sequence const& seq)
- {
- typedef typename result_of::find<Sequence const, T>::filter filter;
- return filter::call(seq);
+ return gen::call(seq);
     }
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find_if.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,69 +1,51 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FIND_IF_05052005_1108)
-#define FUSION_FIND_IF_05052005_1108
 
-#include <boost/fusion/algorithm/query/detail/find_if.hpp>
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_FIND_IF_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_FIND_IF_HPP
+
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/sequence/intrinsic/end.hpp>
-#include <boost/utility/enable_if.hpp>
-#include <boost/type_traits/is_const.hpp>
+#include <boost/fusion/support/ref.hpp>
+
+#include <boost/fusion/algorithm/query/detail/find_if.hpp>
 
 namespace boost { namespace fusion
 {
     namespace result_of
     {
- template <typename Sequence, typename Pred>
+ template <typename Seq, typename Pred>
         struct find_if
         {
             typedef typename
                 detail::static_find_if<
- typename result_of::begin<Sequence>::type
- , typename result_of::end<Sequence>::type
+ typename result_of::begin<Seq>::type
+ , typename result_of::end<Seq>::type
                   , Pred
>::type
             type;
         };
     }
 
- template <typename Pred, typename Sequence>
- inline typename
- lazy_disable_if<
- is_const<Sequence>
- , result_of::find_if<Sequence, Pred>
- >::type
- find_if(Sequence& seq)
+ template <typename Pred, typename Seq>
+ inline typename
+ result_of::find_if<BOOST_FUSION_R_ELSE_CLREF(Seq), Pred>::type
+ find_if(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
     {
         typedef
             detail::static_find_if<
- typename result_of::begin<Sequence>::type
- , typename result_of::end<Sequence>::type
+ typename result_of::begin<Seq>::type
+ , typename result_of::end<Seq>::type
               , Pred
>
- filter;
+ gen;
 
- return filter::call(fusion::begin(seq));
- }
-
- template <typename Pred, typename Sequence>
- inline typename result_of::find_if<Sequence const, Pred>::type const
- find_if(Sequence const& seq)
- {
- typedef
- detail::static_find_if<
- typename result_of::begin<Sequence const>::type
- , typename result_of::end<Sequence const>::type
- , Pred
- >
- filter;
-
- return filter::call(fusion::begin(seq));
+ return gen::call(fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)));
     }
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/none.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/none.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/none.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,11 +2,12 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2007 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_NONE_07062005_1128)
-#define BOOST_FUSION_NONE_07062005_1128
+
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_NONE_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_NONE_HPP
 
 #include <boost/fusion/algorithm/query/any.hpp>
 
@@ -14,20 +15,21 @@
 {
     namespace result_of
     {
- template <typename Sequence, typename F>
+ template <typename Seq, typename F>
         struct none
         {
             typedef bool type;
         };
     }
 
- template <typename Sequence, typename F>
+ template <typename Seq, typename F>
     inline bool
- none(Sequence const& seq, F f)
+ none(BOOST_FUSION_R_ELSE_LREF(Seq) seq, BOOST_FUSION_R_ELSE_LREF(F) f)
     {
- return !fusion::any(seq, f);
+ return !fusion::any(
+ BOOST_FUSION_FORWARD(Seq,seq),
+ BOOST_FUSION_FORWARD(F,f));
     }
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,28 +1,31 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_ALGORITHM_TRANSFORMATION_10022005_0551)
-#define FUSION_ALGORITHM_TRANSFORMATION_10022005_0551
+
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_HPP
 
 #include <boost/fusion/algorithm/transformation/clear.hpp>
 #include <boost/fusion/algorithm/transformation/erase.hpp>
 #include <boost/fusion/algorithm/transformation/erase_key.hpp>
 #include <boost/fusion/algorithm/transformation/filter.hpp>
 #include <boost/fusion/algorithm/transformation/filter_if.hpp>
-#include <boost/fusion/algorithm/transformation/insert.hpp>
 #include <boost/fusion/algorithm/transformation/insert_range.hpp>
+#include <boost/fusion/algorithm/transformation/insert.hpp>
+#include <boost/fusion/algorithm/transformation/join.hpp>
 #include <boost/fusion/algorithm/transformation/pop_back.hpp>
 #include <boost/fusion/algorithm/transformation/pop_front.hpp>
 #include <boost/fusion/algorithm/transformation/push_back.hpp>
 #include <boost/fusion/algorithm/transformation/push_front.hpp>
-#include <boost/fusion/algorithm/transformation/remove.hpp>
 #include <boost/fusion/algorithm/transformation/remove_if.hpp>
-#include <boost/fusion/algorithm/transformation/replace.hpp>
+#include <boost/fusion/algorithm/transformation/remove.hpp>
 #include <boost/fusion/algorithm/transformation/replace_if.hpp>
+#include <boost/fusion/algorithm/transformation/replace.hpp>
 #include <boost/fusion/algorithm/transformation/reverse.hpp>
 #include <boost/fusion/algorithm/transformation/transform.hpp>
+#include <boost/fusion/algorithm/transformation/zip.hpp>
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/clear.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/clear.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/clear.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,10 +4,16 @@
     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_CLEAR_09172005_1127)
-#define FUSION_CLEAR_09172005_1127
 
-#include <boost/fusion/container/vector/vector10.hpp>
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_CLEAR_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_CLEAR_HPP
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/vector/vector.hpp>
+#else
+# include <boost/fusion/container/vector/vector10.hpp>
+#endif
+#include <boost/fusion/support/ref.hpp>
 
 namespace boost { namespace fusion
 {
@@ -16,17 +22,20 @@
         template <typename Sequence>
         struct clear
         {
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
             typedef vector0 type;
+#else
+ typedef vector<> type;
+#endif
         };
     }
 
- template <typename Sequence>
- inline typename result_of::clear<Sequence const>::type
- clear(Sequence const& seq)
+ template <typename Seq>
+ inline typename result_of::clear<BOOST_FUSION_R_ELSE_LREF(Seq)>::type
+ clear(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
     {
- return vector0();
+ return typename result_of::clear<BOOST_FUSION_R_ELSE_LREF(Seq)>::type();
     }
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,73 +1,32 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_REPLACE_08182005_0841)
-#define FUSION_REPLACE_08182005_0841
 
-#include <boost/type_traits/is_convertible.hpp>
-#include <boost/mpl/if.hpp>
-#include <boost/type_traits/remove_reference.hpp>
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_DETAIL_REPLACE_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_DETAIL_REPLACE_HPP
 
 namespace boost { namespace fusion { namespace detail
 {
- template <bool is_convertible>
- struct replacer_helper;
-
- template <>
- struct replacer_helper<false>
- {
- template <typename U, typename T>
- static U&
- call(U& x, T const&, T const&)
- {
- return x;
- }
- };
-
- template <>
- struct replacer_helper<true>
- {
- template <typename U, typename T>
- static U
- call(U& x, T const& old_value, T const& new_value)
- {
- return (x == old_value) ? new_value : x;
- }
- };
-
- template <typename T>
+ template <typename OldValue>
     struct replacer
     {
- replacer(T const& old_value, T const& new_value)
- : old_value(old_value), new_value(new_value) {}
+ template <typename OldValue_>
+ replacer(BOOST_FUSION_R_ELSE_LREF(OldValue_) old_value,int)
+ : old_value(old_value)
+ {}
 
- template<typename Sig>
- struct result;
-
- template <typename U1, typename U2>
- struct result<replacer<U1>(U2)>
- {
- typedef typename remove_reference<U2>::type value;
- typedef typename
- mpl::if_<is_convertible<T, value>, value, value const&>::type
- type;
- };
-
         template <typename U>
- typename result<replacer(U)>::type
- operator()(U const& x) const
+ bool
+ operator()(BOOST_FUSION_R_ELSE_LREF(U) x) const
         {
- return replacer_helper<is_convertible<T, U>::value>::
- call(x, old_value, new_value);
+ return x==old_value;
         }
 
- T old_value;
- T new_value;
+ OldValue old_value;
     };
 }}}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace_if.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,27 +1,30 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_REPLACE_IF_08182005_0946)
-#define FUSION_REPLACE_IF_08182005_0946
 
-#include <boost/utility/enable_if.hpp>
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_DETAIL_REPLACE_IF_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_DETAIL_REPLACE_IF_HPP
+
 #include <boost/mpl/if.hpp>
-#include <boost/type_traits/remove_reference.hpp>
+#include <boost/type_traits/is_convertible.hpp>
 
 namespace boost { namespace fusion { namespace detail
 {
+ //TODO cschmidt: update doc. according to real behavior!
     template <bool is_convertible>
     struct replacer_if_helper;
 
     template <>
     struct replacer_if_helper<false>
     {
- template <typename U, typename F, typename T>
- static U&
- call(U& x, F&, T const&)
+ template <typename U, typename F, typename NewValue>
+ static BOOST_FUSION_R_ELSE_LREF(U)
+ call(BOOST_FUSION_R_ELSE_LREF(U) x,
+ BOOST_FUSION_R_ELSE_LREF(F),
+ BOOST_FUSION_R_ELSE_LREF(NewValue))
         {
             return x;
         }
@@ -30,44 +33,75 @@
     template <>
     struct replacer_if_helper<true>
     {
- template <typename U, typename F, typename T>
- static U
- call(U& x, F& f, T const& new_value)
+ template <typename U, typename F, typename NewValue>
+ static typename remove_reference<U>::type
+ call(BOOST_FUSION_R_ELSE_LREF(U) x,
+ BOOST_FUSION_R_ELSE_LREF(F) f,
+ BOOST_FUSION_R_ELSE_LREF(NewValue) new_value)
         {
- return f(x) ? new_value : x;
+ return f(BOOST_FUSION_FORWARD(U,x)) ? new_value : x;
         }
     };
 
- template <typename F, typename T>
+ template <typename F, typename NewValue>
     struct replacer_if
     {
- replacer_if(F f, T const& new_value)
- : f(f), new_value(new_value) {}
+ replacer_if(replacer_if&& replacer_if)
+ : f(replacer_if.f)
+ , new_value(replacer_if.new_value)
+ {}
+
+ template<typename F_, typename NewValue_>
+ replacer_if(BOOST_FUSION_R_ELSE_LREF(F_) f,
+ BOOST_FUSION_R_ELSE_LREF(NewValue_) new_value)
+ : f(f)
+ , new_value(new_value)
+ {}
 
         template<typename Params>
         struct result;
 
- template <typename F1, typename T1, typename U>
- struct result<replacer_if<F1, T1>(U)>
+ template <typename U>
+ struct result<replacer_if<F, NewValue>(U)>
         {
- typedef typename remove_reference<U>::type value;
             typedef typename
- mpl::if_<is_convertible<T, value>, value, value const&>::type
+ mpl::if_<
+ is_convertible<
+ NewValue
+ , typename remove_reference<U>::type
+ >
+ , NewValue
+ , U
+ >::type
             type;
         };
-
+
+ //TODO cschmidt: template result in f?
         template <typename U>
         typename result<replacer_if(U)>::type
- operator()(U const& x) const
+ operator()(BOOST_FUSION_R_ELSE_LREF(U) x) const
         {
- return replacer_if_helper<is_convertible<T, U>::value>::
- call(x, f, new_value);
+ typedef
+ replacer_if_helper<
+ is_convertible<
+ NewValue
+ , typename remove_reference<U>::type
+ >::value
+ >
+ gen;
+
+ //TODO ???
+ return gen::call(
+ BOOST_FUSION_FORWARD(U, x),
+ static_cast<F>(f),
+ static_cast<NewValue>(new_value));
+ //BOOST_FUSION_FORWARD(pred_type,f),
+ //BOOST_FUSION_FORWARD(value_type,new_value));
         }
 
         F f;
- T new_value;
+ NewValue new_value;
     };
 }}}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,105 +4,143 @@
     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_ERASE_07232005_0534)
-#define FUSION_ERASE_07232005_0534
+
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_ERASE_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_ERASE_HPP
 
 #include <boost/fusion/iterator/equal_to.hpp>
-#include <boost/fusion/iterator/mpl/convert_iterator.hpp>
-#include <boost/fusion/container/vector/vector10.hpp>
 #include <boost/fusion/view/joint_view/joint_view.hpp>
 #include <boost/fusion/view/iterator_range/iterator_range.hpp>
 #include <boost/fusion/support/detail/as_fusion_element.hpp>
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/fusion/sequence/intrinsic/end.hpp>
-#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
+
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/type_traits/add_const.hpp>
 
 namespace boost { namespace fusion
 {
- namespace result_of
+ namespace detail
     {
- template <typename Sequence, typename First>
- struct compute_erase_last // put this in detail!!!
+ template <typename Seq, typename FirstRef>
+ struct compute_erase_last
         {
- typedef typename result_of::end<Sequence>::type seq_last_type;
- typedef typename convert_iterator<First>::type first_type;
+ typedef typename result_of::end<Seq>::type last_type;
+
             typedef typename
- mpl::if_<
- result_of::equal_to<first_type, seq_last_type>
- , first_type
- , typename result_of::next<first_type>::type
+ mpl::eval_if<
+ result_of::equal_to<FirstRef, last_type>
+ , mpl::identity<FirstRef>
+ , result_of::next<FirstRef>
>::type
             type;
 
             static type
- call(First const& first, mpl::false_)
+ call(FirstRef first, mpl::false_)
             {
- return fusion::next(convert_iterator<First>::call(first));
+ return fusion::next(first);
             }
 
             static type
- call(First const& first, mpl::true_)
+ call(FirstRef first, mpl::true_)
             {
- return convert_iterator<First>::call(first);
+ return first;
             }
 
             static type
- call(First const& first)
+ call(FirstRef first)
             {
- return call(first, result_of::equal_to<first_type, seq_last_type>());
+ return call(first,
+ result_of::equal_to<FirstRef, last_type>());
             }
         };
+ }
 
+ namespace result_of
+ {
         template <
- typename Sequence
+ typename Seq
           , typename First
- , typename Last = typename compute_erase_last<Sequence, First>::type>
+ , typename Last =
+ typename detail::compute_erase_last<
+ Seq
+ , typename detail::add_lref<First>::type
+ >::type
+ >
         struct erase
         {
- typedef typename result_of::begin<Sequence>::type seq_first_type;
- typedef typename result_of::end<Sequence>::type seq_last_type;
- BOOST_STATIC_ASSERT((!result_of::equal_to<seq_first_type, seq_last_type>::value));
-
- typedef typename convert_iterator<First>::type first_type;
- typedef typename convert_iterator<Last>::type last_type;
- typedef iterator_range<seq_first_type, first_type> left_type;
- typedef iterator_range<last_type, seq_last_type> right_type;
- typedef joint_view<left_type, right_type> type;
+ typedef typename result_of::begin<Seq>::type seq_first_type;
+ typedef typename result_of::end<Seq>::type seq_last_type;
+
+ //TODO cschmidt: !
+ //BOOST_FUSION_STATIC_ASSERT(
+ // (!result_of::equal_to<seq_first_type, seq_last_type>::value),
+ // "sequence empty");
+
+ typedef
+ iterator_range<
+ seq_first_type
+ , typename detail::identity<First>::type
+ >
+ left_type;
+ typedef
+ iterator_range<
+ typename detail::identity<Last>::type
+ , seq_last_type
+ >
+ right_type;
+
+ typedef
+ joint_view<left_type, right_type>
+ type;
         };
     }
 
- template <typename Sequence, typename First>
- typename result_of::erase<Sequence const, First>::type
- erase(Sequence const& seq, First const& first)
+ template <typename Seq, typename First, typename Last>
+ typename result_of::erase<
+ BOOST_FUSION_R_ELSE_LREF(Seq)
+ , First const&
+ , Last const&
+ >::type
+ erase(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ First const& first,
+ Last const& last)
     {
- typedef result_of::erase<Sequence const, First> result_of;
+ typedef
+ result_of::erase<
+ BOOST_FUSION_R_ELSE_LREF(Seq)
+ , First const&
+ , Last const&
+ >
+ result_of;
         typedef typename result_of::left_type left_type;
         typedef typename result_of::right_type right_type;
         typedef typename result_of::type result_type;
 
- left_type left(
- fusion::begin(seq)
- , convert_iterator<First>::call(first));
- right_type right(
- fusion::result_of::compute_erase_last<Sequence const, First>::call(first)
- , fusion::end(seq));
- return result_type(left, right);
+ return result_type(
+ left_type(
+ fusion::begin(BOOST_FUSION_FORWARD(Seq,seq))
+ , first
+ )
+ , right_type(
+ last
+ , fusion::end(BOOST_FUSION_FORWARD(Seq,seq))
+ ));
     }
 
- template <typename Sequence, typename First, typename Last>
- typename result_of::erase<Sequence const, First, Last>::type
- erase(Sequence const& seq, First const& first, Last const& last)
+ template <typename Seq, typename First>
+ typename result_of::erase<BOOST_FUSION_R_ELSE_LREF(Seq), First const&>::type
+ erase(BOOST_FUSION_R_ELSE_LREF(Seq) seq, First const& first)
     {
- typedef result_of::erase<Sequence const, First, Last> result_of;
- typedef typename result_of::left_type left_type;
- typedef typename result_of::right_type right_type;
- typedef typename result_of::type result_type;
-
- left_type left(fusion::begin(seq), first);
- right_type right(last, fusion::end(seq));
- return result_type(left, right);
+ return erase(
+ BOOST_FUSION_FORWARD(Seq,seq)
+ , first
+ , detail::compute_erase_last<
+ BOOST_FUSION_R_ELSE_LREF(Seq)
+ , First const&
+ >::call(first));
     }
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase_key.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase_key.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase_key.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,37 +1,45 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_ERASE_KEY_10022005_1851)
-#define FUSION_ERASE_KEY_10022005_1851
+
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_ERASE_KEY_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_ERASE_KEY_HPP
 
 #include <boost/fusion/algorithm/query/detail/assoc_find.hpp>
 #include <boost/fusion/algorithm/transformation/erase.hpp>
-#include <boost/mpl/not.hpp>
-#include <boost/type_traits/is_same.hpp>
+#include <boost/fusion/support/ref.hpp>
 
 namespace boost { namespace fusion
 {
     namespace result_of
     {
- template <typename Sequence, typename Key>
+ template <typename Seq, typename Key>
         struct erase_key
         {
- typedef detail::assoc_find<Sequence, Key> filter;
- typedef typename erase<Sequence, typename filter::type>::type type;
+ typedef typename detail::assoc_find<Seq, Key> gen;
+ typedef typename
+ erase<
+ Seq
+ , typename gen::type
+ >::type
+ type;
         };
     }
 
- template <typename Key, typename Sequence>
- inline typename result_of::erase_key<Sequence const, Key>::type
- erase_key(Sequence const& seq)
+ template <typename Key, typename Seq>
+ inline typename
+ result_of::erase_key<BOOST_FUSION_R_ELSE_LREF(Seq), Key>::type
+ erase_key(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
     {
- typedef typename result_of::erase_key<Sequence const, Key>::filter filter;
- return erase(seq, filter::call(seq));
+ typedef typename
+ result_of::erase_key<BOOST_FUSION_R_ELSE_LREF(Seq), Key>::gen
+ gen;
+
+ return erase(BOOST_FUSION_FORWARD(Seq,seq), gen::call(seq));
     }
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,33 +2,37 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2005-2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FILTER_02122005_1839)
-#define FUSION_FILTER_02122005_1839
+
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_FILTER_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_FILTER_HPP
 
 #include <boost/fusion/view/filter_view/filter_view.hpp>
+#include <boost/fusion/support/ref.hpp>
+
+#include <boost/mpl/placeholders.hpp>
 #include <boost/type_traits/is_same.hpp>
 
 namespace boost { namespace fusion
 {
     namespace result_of
     {
- template <typename Sequence, typename T>
+ template <typename Seq, typename T>
         struct filter
         {
- typedef filter_view<Sequence, is_same<mpl::_, T> > type;
+ typedef filter_view<Seq, is_same<mpl::_, T> > type;
         };
     }
-
- template <typename T, typename Sequence>
- inline typename result_of::filter<Sequence const, T>::type
- filter(Sequence const& seq)
+
+ template <typename T, typename Seq>
+ inline typename result_of::filter<BOOST_FUSION_R_ELSE_LREF(Seq), T>::type
+ filter(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
     {
- return filter_view<const Sequence, is_same<mpl::_, T> >(seq);
+ return filter_view<BOOST_FUSION_R_ELSE_LREF(Seq),is_same<mpl::_, T> >(
+ BOOST_FUSION_FORWARD(Seq,seq));
     }
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter_if.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_FILTER_IF_07172005_0818)
-#define FUSION_FILTER_IF_07172005_0818
+
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_FILTER_IF_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_FILTER_IF_HPP
 
 #include <boost/fusion/view/filter_view/filter_view.hpp>
 
@@ -13,20 +14,20 @@
 {
     namespace result_of
     {
- template <typename Sequence, typename Pred>
+ template <typename Seq, typename Pred>
         struct filter_if
         {
- typedef filter_view<Sequence, Pred> type;
+ typedef filter_view<Seq, Pred> type;
         };
     }
     
- template <typename Pred, typename Sequence>
- inline typename result_of::filter_if<Sequence const, Pred>::type
- filter_if(Sequence const& seq)
+ template <typename Pred, typename Seq>
+ inline typename
+ result_of::filter_if<BOOST_FUSION_R_ELSE_LREF(Seq), Pred>::type
+ filter_if(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
     {
- return filter_view<Sequence const, Pred>(seq);
+ return filter_view<BOOST_FUSION_R_ELSE_LREF(Seq), Pred>(seq);
     }
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,60 +4,49 @@
     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_INSERT_07222005_0730)
-#define FUSION_INSERT_07222005_0730
 
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
-#include <boost/fusion/iterator/mpl/convert_iterator.hpp>
-#include <boost/fusion/container/vector/vector10.hpp>
-#include <boost/fusion/view/joint_view/joint_view.hpp>
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_INSERT_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_INSERT_HPP
+
 #include <boost/fusion/view/single_view/single_view.hpp>
-#include <boost/fusion/view/iterator_range/iterator_range.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/end.hpp>
-#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
+#include <boost/fusion/algorithm/transformation/insert_range.hpp>
+#include <boost/fusion/support/ref.hpp>
 
 namespace boost { namespace fusion
 {
     namespace result_of
     {
- template <typename Sequence, typename Position, typename T>
+ template <typename Seq, typename Pos, typename T>
         struct insert
+ : insert_range<
+ Seq
+ , Pos
+ //TODO cschmidt!!!
+ , /*BOOST_FUSION_R_ELSE_CLREF(*/
+ single_view<typename detail::as_fusion_element<T>::type>//)
+ const&
+ >
         {
- typedef typename detail::as_fusion_element<T>::type element_type;
- typedef typename convert_iterator<Position>::type pos_type;
- typedef typename result_of::begin<Sequence>::type first_type;
- typedef typename result_of::end<Sequence>::type last_type;
-
- typedef iterator_range<first_type, pos_type> left_type;
- typedef iterator_range<pos_type, last_type> right_type;
- typedef fusion::single_view<element_type> single_view;
- typedef joint_view<left_type, single_view const> left_insert_type;
- typedef joint_view<left_insert_type, right_type> type;
         };
     }
 
- template <typename Sequence, typename Position, typename T>
- inline typename result_of::insert<
- Sequence const, Position, T>::type
- insert(Sequence const& seq, Position const& pos, T const& x)
+ template <typename Seq, typename Pos, typename T>
+ inline typename
+ result_of::insert<
+ BOOST_FUSION_R_ELSE_LREF(Seq)
+ , Pos const&
+ , BOOST_FUSION_R_ELSE_LREF(T)
+ >::type
+ insert(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ Pos const& pos,
+ BOOST_FUSION_R_ELSE_LREF(T) x)
     {
- typedef result_of::insert<
- Sequence const, Position, T>
- result_of;
- typedef typename result_of::left_type left_type;
- typedef typename result_of::right_type right_type;
- typedef typename result_of::single_view single_view;
- typedef typename result_of::left_insert_type left_insert_type;
- typedef typename result_of::type result;
-
- left_type left(fusion::begin(seq), convert_iterator<Position>::call(pos));
- right_type right(convert_iterator<Position>::call(pos), fusion::end(seq));
- single_view insert(x);
- left_insert_type left_insert(left, insert);
- return result(left_insert, right);
+ return insert_range(BOOST_FUSION_FORWARD(Seq,seq)
+ , pos
+ , (const single_view<T>&) make_single_view(BOOST_FUSION_FORWARD(T,x)));
     }
+
+ //TODO cref
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert_range.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert_range.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert_range.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,28 +4,27 @@
     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_INSERT_RANGE_009172005_1147)
-#define FUSION_INSERT_RANGE_009172005_1147
 
-#include <boost/fusion/iterator/mpl/convert_iterator.hpp>
-#include <boost/fusion/container/vector/vector10.hpp>
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_INSERT_RANGE_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_INSERT_RANGE_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
 #include <boost/fusion/view/joint_view/joint_view.hpp>
 #include <boost/fusion/view/iterator_range/iterator_range.hpp>
 #include <boost/fusion/support/detail/as_fusion_element.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/end.hpp>
-#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
+#include <boost/fusion/support/ref.hpp>
 
 namespace boost { namespace fusion
 {
     namespace result_of
     {
- template <typename Sequence, typename Position, typename Range>
+ template <typename Seq, typename Pos, typename Range>
         struct insert_range
         {
- typedef typename convert_iterator<Position>::type pos_type;
- typedef typename result_of::begin<Sequence>::type first_type;
- typedef typename result_of::end<Sequence>::type last_type;
+ typedef Pos pos_type;
+ typedef typename result_of::begin<Seq>::type first_type;
+ typedef typename result_of::end<Seq>::type last_type;
 
             typedef iterator_range<first_type, pos_type> left_type;
             typedef iterator_range<pos_type, last_type> right_type;
@@ -34,22 +33,40 @@
         };
     }
 
- template <typename Sequence, typename Position, typename Range>
- inline typename result_of::insert_range<Sequence const, Position, Range const>::type
- insert_range(Sequence const& seq, Position const& pos, Range const& range)
+ template <typename Seq, typename Pos, typename Range>
+ inline typename
+ result_of::insert_range<
+ BOOST_FUSION_R_ELSE_LREF(Seq)
+ , Pos const&
+ , BOOST_FUSION_R_ELSE_LREF(Range)
+ >::type
+ insert_range(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ Pos const& pos,
+ BOOST_FUSION_R_ELSE_LREF(Range) range)
     {
- typedef result_of::insert_range<Sequence const, Position, Range const> result_of;
+ typedef
+ result_of::insert_range<
+ BOOST_FUSION_R_ELSE_LREF(Seq)
+ , Pos const&
+ , BOOST_FUSION_R_ELSE_LREF(Range)
+ >
+ result_of;
         typedef typename result_of::left_type left_type;
         typedef typename result_of::right_type right_type;
         typedef typename result_of::left_insert_type left_insert_type;
         typedef typename result_of::type result;
 
- left_type left(fusion::begin(seq), convert_iterator<Position>::call(pos));
- right_type right(convert_iterator<Position>::call(pos), fusion::end(seq));
- left_insert_type left_insert(left, range);
- return result(left_insert, right);
+ return result(
+ left_insert_type(
+ left_type(
+ fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)),
+ pos),
+ BOOST_FUSION_FORWARD(Range,range)),
+ right_type(
+ pos,
+ fusion::end(seq))
+ );
     }
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/join.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/join.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/join.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,8 +5,9 @@
     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_JOIN_200601222109)
-#define FUSION_JOIN_200601222109
+
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_JOIN_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_JOIN_HPP
 
 #include <boost/fusion/view/joint_view.hpp>
 
@@ -14,19 +15,32 @@
 
     namespace result_of
     {
- template<typename LhSequence, typename RhSequence>
+ template<typename Lhs, typename Rhs>
         struct join
         {
- typedef joint_view<LhSequence, RhSequence> type;
+ typedef joint_view<Lhs, Rhs> type;
         };
     }
 
- template<typename LhSequence, typename RhSequence>
- inline typename result_of::join<LhSequence const, RhSequence const>::type
- join(LhSequence const& lhs, RhSequence const& rhs)
+ template<typename Lhs, typename Rhs>
+ inline typename
+ result_of::join<
+ BOOST_FUSION_R_ELSE_LREF(Lhs)
+ , BOOST_FUSION_R_ELSE_LREF(Rhs)
+ >::type
+ join(BOOST_FUSION_R_ELSE_LREF(Lhs) lhs,
+ BOOST_FUSION_R_ELSE_LREF(Rhs) rhs)
     {
- return typename result_of::join<LhSequence const, RhSequence const>::type(
- lhs, rhs);
+ typedef typename
+ result_of::join<
+ BOOST_FUSION_R_ELSE_LREF(Lhs)
+ , BOOST_FUSION_R_ELSE_LREF(Rhs)
+ >::type
+ type;
+
+ return type(
+ BOOST_FUSION_FORWARD(Lhs,lhs)
+ , BOOST_FUSION_FORWARD(Rhs,rhs));
     }
 }}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_back.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_back.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_back.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_POP_BACK_09172005_1038)
-#define FUSION_POP_BACK_09172005_1038
+
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_POP_BACK_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_POP_BACK_HPP
 
 #include <boost/fusion/view/iterator_range/iterator_range.hpp>
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
@@ -40,4 +41,3 @@
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_front.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_front.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_front.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_POP_FRONT_09172005_1115)
-#define FUSION_POP_FRONT_09172005_1115
+
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_POP_FRONT_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_POP_FRONT_HPP
 
 #include <boost/fusion/view/iterator_range/iterator_range.hpp>
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
@@ -40,4 +41,3 @@
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_back.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_back.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_back.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_PUSH_BACK_07162005_0235)
-#define FUSION_PUSH_BACK_07162005_0235
+
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_PUSH_BACK_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_PUSH_BACK_HPP
 
 #include <boost/fusion/support/detail/as_fusion_element.hpp>
 #include <boost/fusion/view/joint_view/joint_view.hpp>
@@ -15,25 +16,27 @@
 {
     namespace result_of
     {
- template <typename Sequence, typename T>
+ template <typename Seq, typename T>
         struct push_back
         {
- typedef fusion::single_view<typename detail::as_fusion_element<T>::type> single_view;
- typedef joint_view<Sequence, single_view const> type;
+ typedef
+ fusion::single_view<
+ typename detail::as_fusion_element<T>::type
+ >
+ single_view;
+
+ typedef joint_view<Seq, single_view const> type;
         };
     }
 
     template <typename Sequence, typename T>
- inline typename result_of::push_back<Sequence const, T>::type
+ inline typename result_of::push_back<Sequence const&, T const&>::type
     push_back(Sequence const& seq, T const& x)
     {
- typedef typename result_of::push_back<Sequence const, T> push_back;
- typedef typename push_back::single_view single_view;
- typedef typename push_back::type result;
- single_view x_(x);
- return result(seq, x_);
+ typedef typename result_of::push_back<Sequence const&, T const&> gen;
+
+ return typename gen::type(seq, x);
     }
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_front.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_front.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_front.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_PUSH_FRONT_07162005_0749)
-#define FUSION_PUSH_FRONT_07162005_0749
+
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_PUSH_FRONT_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_PUSH_FRONT_HPP
 
 #include <boost/fusion/support/detail/as_fusion_element.hpp>
 #include <boost/fusion/view/joint_view/joint_view.hpp>
@@ -36,4 +37,3 @@
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_REMOVE_07162005_0818)
-#define FUSION_REMOVE_07162005_0818
+
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_REMOVE_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_REMOVE_HPP
 
 #include <boost/fusion/view/filter_view/filter_view.hpp>
 #include <boost/mpl/not.hpp>
@@ -32,4 +33,3 @@
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove_if.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,15 +1,15 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_REMOVE_IF_07162005_0818)
-#define FUSION_REMOVE_IF_07162005_0818
+
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_REMOVE_IF_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_REMOVE_IF_HPP
 
 #include <boost/fusion/view/filter_view/filter_view.hpp>
 #include <boost/mpl/not.hpp>
-#include <boost/type_traits/is_same.hpp>
 
 namespace boost { namespace fusion
 {
@@ -26,10 +26,11 @@
     inline typename result_of::remove_if<Sequence const, Pred>::type
     remove_if(Sequence const& seq)
     {
- typedef typename result_of::remove_if<Sequence const, Pred>::type result_type;
+ typedef typename
+ result_of::remove_if<Sequence const, Pred>::type
+ result_type;
         return result_type(seq);
     }
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,35 +1,94 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_REPLACE_08182005_0830)
-#define FUSION_REPLACE_08182005_0830
+
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_REPLACE_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_REPLACE_HPP
 
 #include <boost/fusion/view/transform_view/transform_view.hpp>
+#include <boost/fusion/algorithm/transformation/replace_if.hpp>
+#include <boost/fusion/support/ref.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
 #include <boost/fusion/algorithm/transformation/detail/replace.hpp>
 
 namespace boost { namespace fusion
 {
     namespace result_of
     {
- template <typename Sequence, typename T>
+ //TODO New arg?!
+ template <typename Seq, typename OldValue, typename NewValue>
         struct replace
+ : replace_if<
+ Seq
+ , BOOST_FUSION_R_ELSE_CLREF(
+ detail::replacer<
+ typename detail::as_fusion_element<OldValue>::type
+ >)
+ , NewValue
+ >
         {
- typedef transform_view<Sequence, detail::replacer<T> > type;
         };
     }
 
- template <typename Sequence, typename T>
- inline typename result_of::replace<Sequence const, T>::type
- replace(Sequence const& seq, T const& old_value, T const& new_value)
+ //TODO cschmidt: Assert compatibility Old-/NewValue!
+ template <typename Seq, typename OldValue, typename NewValue>
+ inline typename
+ result_of::replace<
+ BOOST_FUSION_R_ELSE_LREF(Seq)
+ , BOOST_FUSION_R_ELSE_LREF(OldValue)
+ , BOOST_FUSION_R_ELSE_LREF(NewValue)
+ >::type
+ replace(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_LREF(OldValue) old_value,
+ BOOST_FUSION_R_ELSE_LREF(NewValue) new_value)
     {
- typedef typename result_of::replace<Sequence const, T>::type result;
- detail::replacer<T> f(old_value, new_value);
- return result(seq, f);
+ typedef typename
+ result_of::replace<
+ BOOST_FUSION_R_ELSE_LREF(Seq)
+ , BOOST_FUSION_R_ELSE_LREF(OldValue)
+ , BOOST_FUSION_R_ELSE_LREF(NewValue)
+ >::type
+ type;
+ typedef
+ detail::replacer<
+ typename detail::as_fusion_element<
+ BOOST_FUSION_R_ELSE_LREF(OldValue)
+ >::type
+ >
+ replacer;
+
+ return replace_if(
+ BOOST_FUSION_FORWARD(Seq,seq)
+ , replacer(BOOST_FUSION_FORWARD(OldValue,old_value),0)
+ , BOOST_FUSION_FORWARD(NewValue,new_value));
     }
-}}
 
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename OldValue, typename NewValue>
+ inline typename result_of::replace<Seq&, T>::type
+ replace(Seq& seq,
+ OldValue const& old_value,
+ NewValue const& new_value)
+ {
+ typedef typename
+ result_of::replace<
+ Seq&
+ , NewValue const&
+ >::type
+ type;
+ typedef
+ detail::replacer<
+ typename detail::as_fusion_element<OldValue const&>::type
+ >
+ replacer;
+
+ return replace_if(seq,replacer(old_value,0),new_value);
+ }
 #endif
+}}
 
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace_if.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,37 +1,107 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_REPLACE_IF_08182005_0939)
-#define FUSION_REPLACE_IF_08182005_0939
+
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_REPLACE_IF_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_REPLACE_IF_HPP
 
 #include <boost/fusion/view/transform_view/transform_view.hpp>
+#include <boost/fusion/support/ref.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
+#include <boost/type_traits/add_const.hpp>
+
 #include <boost/fusion/algorithm/transformation/detail/replace_if.hpp>
-#include <boost/utility/enable_if.hpp>
-#include <boost/type_traits/is_same.hpp>
 
 namespace boost { namespace fusion
 {
     namespace result_of
     {
- template <typename Sequence, typename F, typename T>
+ template <typename Seq, typename F, typename T>
         struct replace_if
         {
- typedef transform_view<Sequence, detail::replacer_if<F, T> > type;
+ typedef
+ transform_view<
+ //TODO ?!
+ typename detail::result_of_forward_as<
+ Seq
+ , typename add_const<
+ typename detail::remove_reference<Seq>::type
+ >::type
+ >::type
+ , detail::replacer_if<
+ typename detail::as_fusion_element<F>::type
+ , typename detail::as_fusion_element<T>::type
+ >
+ >
+ type;
         };
     }
 
- template <typename Sequence, typename F, typename T>
- inline typename result_of::replace_if<Sequence const, F, T>::type
- replace_if(Sequence const& seq, F pred, T const& new_value)
+ template <typename Seq, typename F, typename NewValue>
+ inline typename result_of::replace_if<
+ BOOST_FUSION_R_ELSE_LREF(Seq)
+ , BOOST_FUSION_R_ELSE_LREF(F)
+ , BOOST_FUSION_R_ELSE_LREF(NewValue)
+ >::type
+ replace_if(BOOST_FUSION_R_ELSE_LREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_LREF(F) pred,
+ BOOST_FUSION_R_ELSE_LREF(NewValue) new_value)
     {
- typedef typename result_of::replace_if<Sequence const, F, T>::type result;
- detail::replacer_if<F, T> f(pred, new_value);
- return result(seq, f);
+ typedef typename
+ result_of::replace_if<
+ BOOST_FUSION_R_ELSE_LREF(Seq)
+ , BOOST_FUSION_R_ELSE_LREF(F)
+ , BOOST_FUSION_R_ELSE_LREF(NewValue)
+ >::type
+ type;
+ typedef
+ detail::replacer_if<
+ typename detail::as_fusion_element<
+ BOOST_FUSION_R_ELSE_LREF(F)
+ >::type
+ , typename detail::as_fusion_element<
+ BOOST_FUSION_R_ELSE_LREF(NewValue)
+ >::type
+ >
+ replacer;
+
+ return type(BOOST_FUSION_FORWARD(Seq,seq),
+ replacer(BOOST_FUSION_FORWARD(F,pred),
+ BOOST_FUSION_FORWARD(NewValue,new_value)));
     }
-}}
 
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename F, typename NewValue>
+ inline typename result_of::replace_if<
+ Seq&
+ , F&
+ , NewValue const&
+ >::type
+ replace_if(Seq& seq,
+ F& pred,
+ NewValue const& new_value)
+ {
+ typedef typename
+ result_of::replace_if<
+ Seq&
+ , F&
+ , NewValue const&
+ >::type
+ type;
+ typedef
+ detail::replacer_if<
+ typename detail::as_fusion_element<F&>::type
+ , typename detail::as_fusion_element<NewValue const&>::type
+ >
+ replacer;
+
+ return type(seq, replacer(pred, new_value));
+ }
 #endif
+}}
 
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/reverse.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/reverse.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/reverse.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_REVERSE_07212005_1230)
-#define FUSION_REVERSE_07212005_1230
+
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_REVERSE_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_REVERSE_HPP
 
 #include <boost/fusion/view/reverse_view/reverse_view.hpp>
 
@@ -29,4 +30,3 @@
 }}
 
 #endif
-

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 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,11 +1,12 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_TRANSFORM_07052005_1057)
-#define FUSION_TRANSFORM_07052005_1057
+
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_TRANSFORM_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_TRANSFORM_HPP
 
 #include <boost/fusion/view/transform_view/transform_view.hpp>
 
@@ -15,37 +16,36 @@
 
     namespace result_of
     {
- template <typename Sequence1, typename Sequence2, typename F = void_>
+ template <typename Seq1, typename Seq2, typename F = void_>
         struct transform
         {
- typedef transform_view<Sequence1, Sequence2, F> type;
+ typedef transform_view<Seq1, Seq2, F> type;
         };
 
- template <typename Sequence, typename F>
+ template <typename Seq, typename F>
 #if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
         struct transform<Sequence, F, void_>
 #else
- struct transform<Sequence, F>
+ struct transform<Seq, F>
 #endif
         {
- typedef transform_view<Sequence, F> type;
+ typedef transform_view<Seq, F> type;
         };
     }
 
- template <typename Sequence, typename F>
- inline typename result_of::transform<Sequence const, F>::type
- transform(Sequence const& seq, F f)
+ template <typename Seq, typename F>
+ inline typename result_of::transform<Seq const&, F>::type
+ transform(Seq const& seq, F f)
     {
- return transform_view<Sequence const, F>(seq, f);
+ return typename result_of::transform<Seq const&, F>::type(seq, f);
     }
 
     template <typename Sequence1, typename Sequence2, typename F>
- inline typename result_of::transform<Sequence1 const, Sequence2 const, F>::type
+ inline typename result_of::transform<Sequence1 const&, Sequence2 const&, F>::type
     transform(Sequence1 const& seq1, Sequence2 const& seq2, F f)
     {
- return transform_view<Sequence1 const, Sequence2 const, F>(seq1, seq2, f);
+ return typename result_of::transform<Sequence1 const&, Sequence2 const&, F>::type(seq1, seq2, f);
     }
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/zip.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/zip.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/zip.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -5,9 +5,9 @@
     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_PP_IS_ITERATING
-#if !defined(FUSION_ZIP_HPP_20060125_2058)
-#define FUSION_ZIP_HPP_20060125_2058
+
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_ZIP_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_ZIP_HPP
 
 #include <boost/fusion/view/zip_view.hpp>
 #include <boost/fusion/adapted/mpl.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/container.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,14 +4,14 @@
     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_SEQUENCE_CLASS_10022005_0614)
-#define FUSION_SEQUENCE_CLASS_10022005_0614
+
+#ifndef BOOST_FUSION_CONTAINER_HPP
+#define BOOST_FUSION_CONTAINER_HPP
 
 #include <boost/fusion/container/vector.hpp>
 #include <boost/fusion/container/list.hpp>
 #include <boost/fusion/container/map.hpp>
 #include <boost/fusion/container/set.hpp>
-#include <boost/fusion/container/deque.hpp>
 #include <boost/fusion/container/generation.hpp>
 
 #endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/deque.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/deque.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,15 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 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_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036)
-#define BOOST_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036
-
-#include <boost/fusion/container/deque/deque.hpp>
-#include <boost/fusion/container/deque/convert.hpp>
-
-#endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_SEQUENCE_GENERATION_10022005_0615)
-#define FUSION_SEQUENCE_GENERATION_10022005_0615
+
+#ifndef BOOST_FUSION_CONTAINER_GENERATION_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_HPP
 
 #include <boost/fusion/container/generation/cons_tie.hpp>
 #include <boost/fusion/container/generation/ignore.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/cons_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/cons_tie.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/cons_tie.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,11 +1,14 @@
 /*=============================================================================
     Copyright (c) 2005 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_CONS_TIE_07182005_0854)
-#define FUSION_CONS_TIE_07182005_0854
+
+#ifndef BOOST_FUSION_CONTAINER_GENERATION_CONS_TIE_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_CONS_TIE_HPP
+
+//TODO cschmidt: ?!
 
 #include <boost/fusion/container/list/cons.hpp>
 
@@ -18,26 +21,50 @@
         template <typename Car, typename Cdr = nil>
         struct cons_tie
         {
- typedef cons<Car&, Cdr> type;
+ typedef
+ cons<typename detail::add_lref<
+ typename detail::as_fusion_element<Car>::type
+ >::type
+ , typename detail::as_fusion_element<Cdr>::type>
+ type;
         };
     }
 
     // $$$ do we really want a cons_tie? $$$
     template <typename Car>
- inline cons<Car&>
- cons_tie(Car& car)
+ inline typename result_of::cons_tie<BOOST_FUSION_R_ELSE_LREF(Car)>::type
+ cons_tie(BOOST_FUSION_R_ELSE_LREF(Car) car)
     {
- return cons<Car&>(car);
+ typedef typename
+ result_of::cons_tie<BOOST_FUSION_R_ELSE_LREF(Car)>::type
+ type;
+ return type(BOOST_FUSION_FORWARD(Car,car));
+ }
+
+ template <typename Car, typename Cdr>
+ inline typename result_of::cons_tie<BOOST_FUSION_R_ELSE_LREF(Car)
+ , BOOST_FUSION_R_ELSE_LREF(Cdr)>::type
+ cons_tie(BOOST_FUSION_R_ELSE_LREF(Car) car
+ , BOOST_FUSION_R_ELSE_LREF(Cdr) cdr)
+ {
+ typedef typename
+ result_of::cons_tie<BOOST_FUSION_R_ELSE_LREF(Car)
+ , BOOST_FUSION_R_ELSE_LREF(Cdr)>::type
+ type;
+ return type(BOOST_FUSION_FORWARD(Car,car)
+ , BOOST_FUSION_FORWARD(Cdr,cdr));
     }
 
- // $$$ do we really want a cons_tie? $$$
     template <typename Car, typename Cdr>
- inline cons<Car&, Cdr>
- cons_tie(Car& car, Cdr const& cdr)
+ inline typename result_of::cons_tie<BOOST_FUSION_R_ELSE_LREF(Car)
+ , Cdr const&>::type
+ cons_tie(BOOST_FUSION_R_ELSE_LREF(Car) car, Cdr const& cdr)
     {
- return cons<Car&, Cdr>(car, cdr);
+ typedef typename
+ result_of::cons_tie<BOOST_FUSION_R_ELSE_LREF(Car), Cdr const&>::type
+ type;
+ return type(BOOST_FUSION_FORWARD(Car,car), cdr);
     }
 }}
 
 #endif
-

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/generation/deque_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/deque_tie.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,79 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
- Copyright (c) 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)
-==============================================================================*/
-#ifndef BOOST_PP_IS_ITERATING
-#if !defined(FUSION_DEQUE_TIE_07192005_1242)
-#define FUSION_DEQUE_TIE_07192005_1242
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <boost/fusion/container/deque/deque.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_DEQUE_SIZE, typename T, void_)
- , typename Extra = void_
- >
- struct deque_tie;
- }
-
-#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)&
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/deque_tie.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_REF
-
-}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- namespace result_of
- {
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct deque_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) >
- #undef TEXT
-#else
- struct deque_tie<BOOST_PP_ENUM_PARAMS(N, T)>
-#endif
- {
- typedef deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)> type;
- };
- }
-
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
- deque_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _))
- {
- return deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>(
- BOOST_PP_ENUM_PARAMS(N, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/list_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/list_tie.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,79 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_GENERATION_DETAIL_PP_LIST_TIE_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_LIST_TIE_HPP
+#define FUSION_LIST_TIE_07192005_0109
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/list/list.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_LIST_SIZE, typename T, void_)
+ , typename Extra = void_
+ >
+ struct list_tie;
+ }
+
+// $$$ shouldn't we remove_reference first to allow references? $$$
+#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)&
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/list_tie.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_REF
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct list_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_LIST_SIZE, TEXT, void_) >
+ #undef TEXT
+#else
+ struct list_tie<BOOST_PP_ENUM_PARAMS(N, T)>
+#endif
+ {
+ typedef list<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)> type;
+ };
+ }
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ inline list<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
+ list_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _))
+ {
+ return list<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>(
+ BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_list.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_list.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,91 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_GENERATION_DETAIL_PP_MAKE_LIST_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAKE_LIST_HPP
+#define FUSION_MAKE_LIST_07192005_1239
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/list/list.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_LIST_SIZE, typename T, void_)
+ , typename Extra = void_
+ >
+ struct make_list;
+
+ template <>
+ struct make_list<>
+ {
+ typedef list<> type;
+ };
+ }
+
+ inline list<>
+ make_list()
+ {
+ return list<>();
+ }
+
+#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
+ typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_list.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_AS_FUSION_ELEMENT
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct make_list< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_LIST_SIZE, TEXT, void_) >
+ #undef TEXT
+#else
+ struct make_list<BOOST_PP_ENUM_PARAMS(N, T)>
+#endif
+ {
+ typedef list<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
+ };
+ }
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ inline list<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
+ make_list(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
+ {
+ return list<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
+ BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_map.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_map.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,106 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_GENERATION_DETAIL_PP_MAKE_MAP_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAKE_MAP_HPP
+#define FUSION_MAKE_MAP_07222005_1247
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/support/pair.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_VECTOR_SIZE, typename K, void_)
+ , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_VECTOR_SIZE, typename D, void_)
+ , typename Extra = void_
+ >
+ struct make_map;
+
+ template <>
+ struct make_map<>
+ {
+ typedef map<> type;
+ };
+ }
+
+ inline map<>
+ make_map()
+ {
+ return map<>();
+ }
+
+#define BOOST_FUSION_PAIR(z, n, data) \
+ fusion::pair< \
+ BOOST_PP_CAT(K, n) \
+ , typename detail::as_fusion_element<BOOST_PP_CAT(D, n)>::type>
+
+#define BOOST_FUSION_MAKE_PAIR(z, n, data) \
+ fusion::make_pair<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_map.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_PAIR
+#undef BOOST_FUSION_MAKE_PAIR
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS(N, typename K)
+ , BOOST_PP_ENUM_PARAMS(N, typename D)
+ >
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_VECTOR_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_)>
+ #undef TEXT
+#else
+ struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
+#endif
+ {
+ typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)> type;
+ };
+ }
+
+ template <
+ BOOST_PP_ENUM_PARAMS(N, typename K)
+ , BOOST_PP_ENUM_PARAMS(N, typename D)
+ >
+ inline map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>
+ make_map(BOOST_PP_ENUM_BINARY_PARAMS(N, D, const& _))
+ {
+ return map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>(
+ BOOST_PP_ENUM(N, BOOST_FUSION_MAKE_PAIR, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_set.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_set.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,93 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_GENERATION_DETAIL_PP_MAKE_SET_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAKE_SET_HPP
+#define FUSION_MAKE_SET_09162005_1125
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/set/set.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/support/pair.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_VECTOR_SIZE, typename T, void_)
+ , typename Extra = void_
+ >
+ struct make_set;
+
+ template <>
+ struct make_set<>
+ {
+ typedef set<> type;
+ };
+ }
+
+ inline set<>
+ make_set()
+ {
+ return set<>();
+ }
+
+#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
+ typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_set.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_ELEMENT
+#undef BOOST_FUSION_AS_ELEMENT
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct make_set< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_SET_SIZE, TEXT, void_) >
+ #undef TEXT
+#else
+ struct make_set<BOOST_PP_ENUM_PARAMS(N, T)>
+#endif
+ {
+ typedef set<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
+ };
+ }
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ inline set<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
+ make_set(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
+ {
+ return set<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
+ BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_vector.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,91 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_GENERATION_DETAIL_PP_MAKE_VECTOR_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAKE_VECTOR_HPP
+#define FUSION_MAKE_VECTOR_07162005_0243
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_VECTOR_SIZE, typename T, void_)
+ , typename Extra = void_
+ >
+ struct make_vector;
+
+ template <>
+ struct make_vector<>
+ {
+ typedef vector<> type;
+ };
+ }
+
+ inline vector<>
+ make_vector()
+ {
+ return vector<>();
+ }
+
+#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
+ typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_vector.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_AS_FUSION_ELEMENT
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct make_vector< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) >
+ #undef TEXT
+#else
+ struct make_vector<BOOST_PP_ENUM_PARAMS(N, T)>
+#endif
+ {
+ typedef vector<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
+ };
+ }
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ inline vector<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
+ make_vector(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
+ {
+ return vector<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
+ BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/map_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/map_tie.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,110 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAP_TIE_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAP_TIE_HPP
+#define FUSION_MAP_TIE_20060814_1116
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/container/map/limits.hpp>
+#include <boost/fusion/support/pair.hpp>
+#include <boost/fusion/container/generation/pair_tie.hpp>
+#include <boost/type_traits/add_reference.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_MAP_SIZE, typename K, void_)
+ , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_MAP_SIZE, typename D, void_)
+ , typename Extra = void_
+ >
+ struct map_tie;
+
+ template <>
+ struct map_tie<>
+ {
+ typedef map<> type;
+ };
+ }
+
+ inline map<>
+ map_tie()
+ {
+ return map<>();
+ }
+
+#define BOOST_FUSION_TIED_PAIR(z, n, data) \
+ fusion::pair< \
+ BOOST_PP_CAT(K, n) \
+ , typename add_reference<BOOST_PP_CAT(D, n)>::type>
+
+#define BOOST_FUSION_PAIR_TIE(z, n, data) \
+ fusion::pair_tie<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/map_tie.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_PAIR
+#undef BOOST_FUSION_MAKE_PAIR
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS(N, typename K)
+ , BOOST_PP_ENUM_PARAMS(N, typename D)
+ >
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+
+ struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_MAP_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_MAP_SIZE, TEXT, void_)>
+ #undef TEXT
+#else
+ struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
+#endif
+ {
+ typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)> type;
+ };
+ }
+
+ template <
+ BOOST_PP_ENUM_PARAMS(N, typename K)
+ , BOOST_PP_ENUM_PARAMS(N, typename D)
+ >
+ inline map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>
+ map_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, D, & _))
+ {
+ return map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>(
+ BOOST_PP_ENUM(N, BOOST_FUSION_PAIR_TIE, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/vector_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/vector_tie.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,78 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_GENERATION_DETAIL_PP_VECTOR_TIE_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_VECTOR_TIE_HPP
+#define FUSION_VECTOR_TIE_07192005_1242
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_VECTOR_SIZE, typename T, void_)
+ , typename Extra = void_
+ >
+ struct vector_tie;
+ }
+
+#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)&
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/vector_tie.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_REF
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct vector_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) >
+ #undef TEXT
+#else
+ struct vector_tie<BOOST_PP_ENUM_PARAMS(N, T)>
+#endif
+ {
+ typedef vector<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)> type;
+ };
+ }
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ inline vector<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
+ vector_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _))
+ {
+ return vector<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>(
+ BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/list_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/list_tie.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,39 @@
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_DETAIL_LIST_TIE
+#define BOOST_FUSION_CONTAINER_DETAIL_LIST_TIE
+
+#include <boost/fusion/container/list/list.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename... Types>
+ struct list_tie
+ {
+ typedef
+ list<typename detail::as_fusion_element_lref<Types>::type...>
+ type;
+ };
+ }
+
+ template <typename... Types>
+ inline typename
+ result_of::list_tie<BOOST_FUSION_R_ELSE_LREF(Types)...>::type
+ list_tie(BOOST_FUSION_R_ELSE_LREF(Types)... types)
+ {
+ return typename
+ result_of::list_tie<BOOST_FUSION_R_ELSE_LREF(Types)...>::type(
+ BOOST_FUSION_FORWARD(Types, types)...);
+ }
+
+}}
+
+#endif
+
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_list.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_list.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,39 @@
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_DETAIL_MAKE_LIST
+#define BOOST_FUSION_CONTAINER_DETAIL_MAKE_LIST
+
+#include <boost/fusion/container/list/list.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename... Types>
+ struct make_list
+ {
+ typedef
+ list<typename detail::as_fusion_element<Types>::type...>
+ type;
+ };
+ }
+
+ //TODO cschmidt: ?!
+ template <typename... Types>
+ inline typename
+ result_of::make_list<BOOST_FUSION_R_ELSE_CLREF(Types)...>::type
+ make_list(BOOST_FUSION_R_ELSE_CLREF(Types)... types)
+ {
+ return typename
+ result_of::make_list<BOOST_FUSION_R_ELSE_CLREF(Types)...>::type(
+ BOOST_FUSION_FORWARD(Types, types)...);
+ }
+
+}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_map.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_map.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,85 @@
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_DETAIL_MAKE_MAP
+#define BOOST_FUSION_CONTAINER_DETAIL_MAKE_MAP
+
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/support/variadic_templates/variadic_arguments_to_vector.hpp>
+#include <boost/fusion/support/variadic_templates/variadic_quote.hpp>
+
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/divides.hpp>
+#include <boost/mpl/fold.hpp>
+#include <boost/mpl/begin.hpp>
+#include <boost/mpl/advance.hpp>
+#include <boost/mpl/end.hpp>
+#include <boost/mpl/size.hpp>
+#include <boost/mpl/lambda.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/unpack_args.hpp>
+#include <boost/mpl/zip_view.hpp>
+#include <boost/mpl/transform_view.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename... KeysTypes>
+ struct make_map
+ {
+ typedef typename
+ variadic_arguments_to_vector<KeysTypes...>::type
+ args;
+ typedef typename
+ mpl::iterator_range<typename mpl::begin<args>::type
+ , typename mpl::advance<typename mpl::begin<args>::type
+ , mpl::divides<mpl::size<args>, mpl::int_<2> > >::type
+ >
+ keys;
+ typedef typename
+ mpl::iterator_range<
+ typename mpl::advance<typename mpl::begin<args>::type,
+ mpl::divides<mpl::size<args>, mpl::int_<2> > >::type
+ , typename mpl::end<args>::type
+ >
+ types;
+
+ typedef
+ mpl::transform_view<
+ mpl::zip_view<mpl::vector<keys,types> >
+ , mpl::unpack_args<pair<mpl::_1
+ , detail::as_fusion_element<mpl::_2> >
+ >
+ >
+ map_args;
+
+ typedef typename
+ mpl::apply<
+ mpl::unpack_args<variadic_quote<map> >
+ , map_args
+ >::type
+ type;
+ };
+ }
+
+ //TODO cschmidt: ?!
+ template <typename... Keys, typename... Types>
+ inline typename
+ result_of::make_map<Keys...,BOOST_FUSION_R_ELSE_CLREF(Types)...>::type
+ make_map(BOOST_FUSION_R_ELSE_CLREF(Types)... types)
+ {
+ typedef typename
+ result_of::make_map<Keys...,BOOST_FUSION_R_ELSE_CLREF(Types)...>::
+ type
+ type;
+ return type(make_pair<Keys>(BOOST_FUSION_FORWARD(Types, types))...);
+ }
+
+}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_set.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_set.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,39 @@
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_DETAIL_MAKE_SET
+#define BOOST_FUSION_CONTAINER_DETAIL_MAKE_SET
+
+#include <boost/fusion/container/set/set.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename... Types>
+ struct make_set
+ {
+ typedef
+ set<typename detail::as_fusion_element<Types>::type...>
+ type;
+ };
+ }
+
+ //TODO cschmidt: ?!
+ template <typename... Types>
+ inline typename
+ result_of::make_set<BOOST_FUSION_R_ELSE_CLREF(Types)...>::type
+ make_set(BOOST_FUSION_R_ELSE_CLREF(Types)... types)
+ {
+ return typename
+ result_of::make_set<BOOST_FUSION_R_ELSE_CLREF(Types)...>::type(
+ BOOST_FUSION_FORWARD(Types, types)...);
+ }
+
+}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_vector.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,39 @@
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_DETAIL_MAKE_VECTOR
+#define BOOST_FUSION_CONTAINER_DETAIL_MAKE_VECTOR
+
+#include <boost/fusion/container/vector/vector.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename... Types>
+ struct make_vector
+ {
+ typedef
+ vector<typename detail::as_fusion_element<Types>::type...>
+ type;
+ };
+ }
+
+ //TODO cschmidt: ?!
+ template <typename... Types>
+ inline typename
+ result_of::make_vector<BOOST_FUSION_R_ELSE_CLREF(Types)...>::type
+ make_vector(BOOST_FUSION_R_ELSE_CLREF(Types)... types)
+ {
+ return typename
+ result_of::make_vector<BOOST_FUSION_R_ELSE_CLREF(Types)...>::type(
+ BOOST_FUSION_FORWARD(Types, types)...);
+ }
+
+}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/map_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/map_tie.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,87 @@
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_DETAIL_MAP_TIE
+#define BOOST_FUSION_CONTAINER_DETAIL_MAP_TIE
+
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/support/variadic_templates/variadic_arguments_to_vector.hpp>
+#include <boost/fusion/support/variadic_templates/variadic_quote.hpp>
+
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/divides.hpp>
+#include <boost/mpl/fold.hpp>
+#include <boost/mpl/begin.hpp>
+#include <boost/mpl/advance.hpp>
+#include <boost/mpl/end.hpp>
+#include <boost/mpl/size.hpp>
+#include <boost/mpl/lambda.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/unpack_args.hpp>
+#include <boost/mpl/zip_view.hpp>
+#include <boost/mpl/transform_view.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename... KeysTypes>
+ struct map_tie
+ {
+ typedef typename
+ variadic_arguments_to_vector<KeysTypes...>::type
+ args;
+ typedef typename
+ mpl::iterator_range<typename mpl::begin<args>::type
+ , typename mpl::advance<typename mpl::begin<args>::type
+ , mpl::divides<mpl::size<args>, mpl::int_<2> > >::type
+ >
+ keys;
+ typedef typename
+ mpl::iterator_range<
+ typename mpl::advance<typename mpl::begin<args>::type,
+ mpl::divides<mpl::size<args>, mpl::int_<2> > >::type
+ , typename mpl::end<args>::type
+ >
+ types;
+
+ typedef
+ mpl::transform_view<
+ mpl::zip_view<mpl::vector<keys,types> >
+ , mpl::unpack_args<
+ pair<mpl::_1
+ , detail::as_fusion_element_lref<mpl::_2>
+ >
+ >
+ >
+ map_args;
+
+ typedef typename
+ mpl::apply<
+ mpl::unpack_args<variadic_quote<map> >
+ , map_args
+ >::type
+ type;
+ };
+ }
+
+ //TODO cschmidt: ?!
+ template <typename... Keys, typename... Types>
+ inline typename
+ result_of::map_tie<Keys...,BOOST_FUSION_R_ELSE_LREF(Types)...>::type
+ map_tie(BOOST_FUSION_R_ELSE_LREF(Types)... types)
+ {
+ typedef typename
+ result_of::map_tie<Keys...,BOOST_FUSION_R_ELSE_LREF(Types)...>::type
+ type;
+ return type(pair<Keys,BOOST_FUSION_R_ELSE_LREF(Types)>
+ (BOOST_FUSION_FORWARD(Types, types))...);
+ }
+
+}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/vector_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/vector_tie.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,39 @@
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_DETAIL_VECTOR_TIE
+#define BOOST_FUSION_CONTAINER_DETAIL_VECTOR_TIE
+
+#include <boost/fusion/container/vector/vector.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename... Types>
+ struct vector_tie
+ {
+ typedef
+ vector<typename detail::as_fusion_element_lref<Types>::type...>
+ type;
+ };
+ }
+
+ template <typename... Types>
+ inline typename
+ result_of::vector_tie<BOOST_FUSION_R_ELSE_LREF(Types)...>::type
+ vector_tie(BOOST_FUSION_R_ELSE_LREF(Types)... types)
+ {
+ return typename
+ result_of::vector_tie<BOOST_FUSION_R_ELSE_LREF(Types)...>::type(
+ BOOST_FUSION_FORWARD(Types, types)...);
+ }
+
+}}
+
+#endif
+
+

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/ignore.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/ignore.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/ignore.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,9 @@
     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_IGNORE_07192005_0329)
-#define FUSION_IGNORE_07192005_0329
+
+#ifndef BOOST_FUSION_CONTAINER_GENERATION_IGNORE_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_IGNORE_HPP
 
 namespace boost { namespace fusion
 {

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/list_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/list_tie.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/list_tie.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,79 +1,16 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_PP_IS_ITERATING
-#if !defined(FUSION_LIST_TIE_07192005_0109)
-#define FUSION_LIST_TIE_07192005_0109
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <boost/fusion/container/list/list.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_LIST_SIZE, typename T, void_)
- , typename Extra = void_
- >
- struct list_tie;
- }
-
-// $$$ shouldn't we remove_reference first to allow references? $$$
-#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)&
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/list_tie.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_REF
-
-}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- namespace result_of
- {
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct list_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_LIST_SIZE, TEXT, void_) >
- #undef TEXT
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_LIST_TIE
+#define BOOST_FUSION_CONTAINER_LIST_TIE
+
+#include <boost/config.hpp>
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/generation/detail/pp/list_tie.hpp>
 #else
- struct list_tie<BOOST_PP_ENUM_PARAMS(N, T)>
+# include <boost/fusion/container/generation/detail/variadic_templates/list_tie.hpp>
 #endif
- {
- typedef list<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)> type;
- };
- }
-
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline list<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
- list_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _))
- {
- return list<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>(
- BOOST_PP_ENUM_PARAMS(N, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
 
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_cons.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_cons.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_cons.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,11 +2,12 @@
     Copyright (c) 2005 Joel de Guzman
     Copyright (c) 2005 Eric Niebler
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_MAKE_CONS_07172005_0918)
-#define FUSION_MAKE_CONS_07172005_0918
+
+#ifndef BOOST_FUSION_CONTAINER_GENERATION_MAKE_CONS_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_MAKE_CONS_HPP
 
 #include <boost/fusion/support/detail/as_fusion_element.hpp>
 #include <boost/fusion/container/list/cons.hpp>
@@ -17,27 +18,43 @@
 
     namespace result_of
     {
+ //TODO cschmidt: add_lref
         template <typename Car, typename Cdr = nil>
         struct make_cons
         {
- typedef cons<typename detail::as_fusion_element<Car>::type, Cdr> type;
+ typedef
+ cons<typename detail::as_fusion_element<Car>::type
+ , typename detail::as_fusion_element<Cdr>::type
+ >
+ type;
         };
     }
 
     template <typename Car>
- inline cons<typename detail::as_fusion_element<Car>::type>
- make_cons(Car const& car)
+ inline typename result_of::make_cons<BOOST_FUSION_R_ELSE_CLREF(Car)>::type
+ make_cons(BOOST_FUSION_R_ELSE_CLREF(Car) car)
     {
- return cons<typename detail::as_fusion_element<Car>::type>(car);
+ typedef typename
+ result_of::make_cons<BOOST_FUSION_R_ELSE_CLREF(Car)>::type
+ type;
+ return type(BOOST_FUSION_FORWARD(Car,car));
     }
 
     template <typename Car, typename Cdr>
- inline cons<typename detail::as_fusion_element<Car>::type, Cdr>
- make_cons(Car const& car, Cdr const& cdr)
+ inline typename result_of::make_cons<BOOST_FUSION_R_ELSE_CLREF(Car)
+ , BOOST_FUSION_R_ELSE_CLREF(Cdr)>::type
+ make_cons(BOOST_FUSION_R_ELSE_CLREF(Car) car,
+ BOOST_FUSION_R_ELSE_CLREF(Cdr) cdr)
     {
- return cons<typename detail::as_fusion_element<Car>::type, Cdr>(car, cdr);
+ typedef typename
+ result_of::make_cons<BOOST_FUSION_R_ELSE_CLREF(Car)
+ , BOOST_FUSION_R_ELSE_CLREF(Cdr)
+ >::type
+ type;
+ return type(BOOST_FUSION_FORWARD(Car,car)
+ , BOOST_FUSION_FORWARD(Cdr,cdr));
     }
+
 }}
 
 #endif
-

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_deque.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_deque.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,98 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
- Copyright (c) 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)
-==============================================================================*/
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_PP_IS_ITERATING
-#if !defined(FUSION_MAKE_DEQUE_07162005_0243)
-#define FUSION_MAKE_DEQUE_07162005_0243
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <boost/fusion/container/deque/deque.hpp>
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_DEQUE_SIZE, typename T, void_)
- , typename Extra = void_
- >
- struct make_deque;
-
- template <>
- struct make_deque<>
- {
- typedef deque<> type;
- };
- }
-
- inline deque<>
- make_deque()
- {
- return deque<>();
- }
-
-#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
- typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_deque.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_AS_FUSION_ELEMENT
-
-}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- namespace result_of
- {
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct make_deque< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) >
- #undef TEXT
-#else
- struct make_deque<BOOST_PP_ENUM_PARAMS(N, T)>
-#endif
- {
- typedef deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
- };
- }
-
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
- make_deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
- {
- return deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
- BOOST_PP_ENUM_PARAMS(N, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_list.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_list.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_list.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,91 +1,16 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_PP_IS_ITERATING
-#if !defined(FUSION_MAKE_LIST_07192005_1239)
-#define FUSION_MAKE_LIST_07192005_1239
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <boost/fusion/container/list/list.hpp>
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_LIST_SIZE, typename T, void_)
- , typename Extra = void_
- >
- struct make_list;
-
- template <>
- struct make_list<>
- {
- typedef list<> type;
- };
- }
-
- inline list<>
- make_list()
- {
- return list<>();
- }
-
-#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
- typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_list.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_AS_FUSION_ELEMENT
-
-}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- namespace result_of
- {
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct make_list< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_LIST_SIZE, TEXT, void_) >
- #undef TEXT
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_MAKE_LIST
+#define BOOST_FUSION_CONTAINER_MAKE_LIST
+
+#include <boost/config.hpp>
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/generation/detail/pp/make_list.hpp>
 #else
- struct make_list<BOOST_PP_ENUM_PARAMS(N, T)>
+# include <boost/fusion/container/generation/detail/variadic_templates/make_list.hpp>
 #endif
- {
- typedef list<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
- };
- }
-
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline list<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
- make_list(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
- {
- return list<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
- BOOST_PP_ENUM_PARAMS(N, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
 
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_map.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_map.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_map.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,106 +1,16 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_PP_IS_ITERATING
-#if !defined(FUSION_MAKE_MAP_07222005_1247)
-#define FUSION_MAKE_MAP_07222005_1247
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <boost/fusion/container/map/map.hpp>
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
-#include <boost/fusion/support/pair.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_VECTOR_SIZE, typename K, void_)
- , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_VECTOR_SIZE, typename D, void_)
- , typename Extra = void_
- >
- struct make_map;
-
- template <>
- struct make_map<>
- {
- typedef map<> type;
- };
- }
-
- inline map<>
- make_map()
- {
- return map<>();
- }
-
-#define BOOST_FUSION_PAIR(z, n, data) \
- fusion::pair< \
- BOOST_PP_CAT(K, n) \
- , typename detail::as_fusion_element<BOOST_PP_CAT(D, n)>::type>
-
-#define BOOST_FUSION_MAKE_PAIR(z, n, data) \
- fusion::make_pair<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_map.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_PAIR
-#undef BOOST_FUSION_MAKE_PAIR
-
-}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS(N, typename K)
- , BOOST_PP_ENUM_PARAMS(N, typename D)
- >
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_VECTOR_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_)>
- #undef TEXT
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_MAKE_MAP
+#define BOOST_FUSION_CONTAINER_MAKE_MAP
+
+#include <boost/config.hpp>
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/generation/detail/pp/make_map.hpp>
 #else
- struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
+# include <boost/fusion/container/generation/detail/variadic_templates/make_map.hpp>
 #endif
- {
- typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)> type;
- };
- }
-
- template <
- BOOST_PP_ENUM_PARAMS(N, typename K)
- , BOOST_PP_ENUM_PARAMS(N, typename D)
- >
- inline map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>
- make_map(BOOST_PP_ENUM_BINARY_PARAMS(N, D, const& _))
- {
- return map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>(
- BOOST_PP_ENUM(N, BOOST_FUSION_MAKE_PAIR, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
 
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_set.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_set.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_set.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,93 +1,16 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_PP_IS_ITERATING
-#if !defined(FUSION_MAKE_SET_09162005_1125)
-#define FUSION_MAKE_SET_09162005_1125
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <boost/fusion/container/set/set.hpp>
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
-#include <boost/fusion/support/pair.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_VECTOR_SIZE, typename T, void_)
- , typename Extra = void_
- >
- struct make_set;
-
- template <>
- struct make_set<>
- {
- typedef set<> type;
- };
- }
-
- inline set<>
- make_set()
- {
- return set<>();
- }
-
-#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
- typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_set.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_ELEMENT
-#undef BOOST_FUSION_AS_ELEMENT
-
-}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- namespace result_of
- {
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct make_set< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_SET_SIZE, TEXT, void_) >
- #undef TEXT
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_MAKE_SET
+#define BOOST_FUSION_CONTAINER_MAKE_SET
+
+#include <boost/config.hpp>
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/generation/detail/pp/make_set.hpp>
 #else
- struct make_set<BOOST_PP_ENUM_PARAMS(N, T)>
+# include <boost/fusion/container/generation/detail/variadic_templates/make_set.hpp>
 #endif
- {
- typedef set<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
- };
- }
-
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline set<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
- make_set(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
- {
- return set<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
- BOOST_PP_ENUM_PARAMS(N, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
 
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_vector.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_vector.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_vector.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,91 +1,16 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_PP_IS_ITERATING
-#if !defined(FUSION_MAKE_VECTOR_07162005_0243)
-#define FUSION_MAKE_VECTOR_07162005_0243
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <boost/fusion/container/vector/vector.hpp>
-#include <boost/fusion/support/detail/as_fusion_element.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_VECTOR_SIZE, typename T, void_)
- , typename Extra = void_
- >
- struct make_vector;
-
- template <>
- struct make_vector<>
- {
- typedef vector<> type;
- };
- }
-
- inline vector<>
- make_vector()
- {
- return vector<>();
- }
-
-#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
- typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_vector.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_AS_FUSION_ELEMENT
-
-}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- namespace result_of
- {
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct make_vector< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) >
- #undef TEXT
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_MAKE_VECTOR
+#define BOOST_FUSION_CONTAINER_MAKE_VECTOR
+
+#include <boost/config.hpp>
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/generation/detail/pp/make_vector.hpp>
 #else
- struct make_vector<BOOST_PP_ENUM_PARAMS(N, T)>
+# include <boost/fusion/container/generation/detail/variadic_templates/make_vector.hpp>
 #endif
- {
- typedef vector<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
- };
- }
-
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline vector<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
- make_vector(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
- {
- return vector<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
- BOOST_PP_ENUM_PARAMS(N, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
 
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/map_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/map_tie.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/map_tie.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,110 +1,16 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
- Copyright (c) 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)
-==============================================================================*/
-#ifndef BOOST_PP_IS_ITERATING
-#if !defined(FUSION_MAP_TIE_20060814_1116)
-#define FUSION_MAP_TIE_20060814_1116
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <boost/fusion/container/map/map.hpp>
-#include <boost/fusion/container/map/limits.hpp>
-#include <boost/fusion/support/pair.hpp>
-#include <boost/fusion/container/generation/pair_tie.hpp>
-#include <boost/type_traits/add_reference.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_MAP_SIZE, typename K, void_)
- , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_MAP_SIZE, typename D, void_)
- , typename Extra = void_
- >
- struct map_tie;
-
- template <>
- struct map_tie<>
- {
- typedef map<> type;
- };
- }
-
- inline map<>
- map_tie()
- {
- return map<>();
- }
-
-#define BOOST_FUSION_TIED_PAIR(z, n, data) \
- fusion::pair< \
- BOOST_PP_CAT(K, n) \
- , typename add_reference<BOOST_PP_CAT(D, n)>::type>
-
-#define BOOST_FUSION_PAIR_TIE(z, n, data) \
- fusion::pair_tie<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/map_tie.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_PAIR
-#undef BOOST_FUSION_MAKE_PAIR
-
-}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS(N, typename K)
- , BOOST_PP_ENUM_PARAMS(N, typename D)
- >
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
-
- struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_MAP_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_MAP_SIZE, TEXT, void_)>
- #undef TEXT
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_MAP_TIE
+#define BOOST_FUSION_CONTAINER_MAP_TIE
+
+#include <boost/config.hpp>
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/generation/detail/pp/map_tie.hpp>
 #else
- struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
+# include <boost/fusion/container/generation/detail/variadic_templates/map_tie.hpp>
 #endif
- {
- typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)> type;
- };
- }
-
- template <
- BOOST_PP_ENUM_PARAMS(N, typename K)
- , BOOST_PP_ENUM_PARAMS(N, typename D)
- >
- inline map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>
- map_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, D, & _))
- {
- return map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>(
- BOOST_PP_ENUM(N, BOOST_FUSION_PAIR_TIE, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
 
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/pair_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/pair_tie.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/pair_tie.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,14 +2,16 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_FUSION_PAIR_TIE_20060812_2058)
 #define BOOST_FUSION_PAIR_TIE_20060812_2058
 
+#include <boost/fusion/support/ref.hpp>
+#include <boost/fusion/support/as_fusion_element.hpp>
+
 #include <boost/type_traits/is_const.hpp>
-#include <boost/utility/enable_if.hpp>
 
 namespace boost { namespace fusion {
 
@@ -21,22 +23,31 @@
         template<typename Key, typename T>
         struct pair_tie
         {
- typedef fusion::pair<Key, T&> type;
+ typedef
+ fusion::pair<Key
+ , typename detail::add_lref<
+ typename detail::as_fusion_element<T>::type
+ >::type
+ >
+ type;
         };
     }
 
     template<typename Key, typename T>
- typename disable_if<is_const<T>, typename result_of::pair_tie<Key, T>::type>::type
- pair_tie(T& t)
+ typename result_of::pair_tie<Key, BOOST_FUSION_R_ELSE_LREF(T)>::type
+ pair_tie(BOOST_FUSION_R_ELSE_LREF(T) t)
     {
- return typename result_of::pair_tie<Key, T>::type(t);
+ typedef typename
+ result_of::pair_tie<Key, BOOST_FUSION_R_ELSE_LREF(Sequence)>::type
+ type;
+ return type(BOOST_FUSION_FORWARD(T,t));
     }
 
     template<typename Key, typename T>
- typename result_of::pair_tie<Key, T const>::type
+ typename result_of::pair_tie<Key, T const&>::type
     pair_tie(T const& t)
     {
- return typename result_of::pair_tie<Key, T const>::type(t);
+ return typename result_of::pair_tie<Key, T const&>::type(t);
     }
 }}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/generation/vector_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/generation/vector_tie.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/vector_tie.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,78 +1,16 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_PP_IS_ITERATING
-#if !defined(FUSION_VECTOR_TIE_07192005_1242)
-#define FUSION_VECTOR_TIE_07192005_1242
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
-#include <boost/preprocessor/repetition/repeat_from_to.hpp>
-#include <boost/fusion/container/vector/vector.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-
- namespace result_of
- {
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_VECTOR_SIZE, typename T, void_)
- , typename Extra = void_
- >
- struct vector_tie;
- }
-
-#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)&
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/vector_tie.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_REF
-
-}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- namespace result_of
- {
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
-#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
- #define TEXT(z, n, text) , text
- struct vector_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) >
- #undef TEXT
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_VECTOR_TIE
+#define BOOST_FUSION_CONTAINER_VECTOR_TIE
+
+#include <boost/config.hpp>
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/generation/detail/pp/vector_tie.hpp>
 #else
- struct vector_tie<BOOST_PP_ENUM_PARAMS(N, T)>
+# include <boost/fusion/container/generation/detail/variadic_templates/vector_tie.hpp>
 #endif
- {
- typedef vector<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)> type;
- };
- }
-
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- inline vector<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
- vector_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _))
- {
- return vector<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>(
- BOOST_PP_ENUM_PARAMS(N, _));
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
 
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,14 +4,14 @@
     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_SEQUENCE_CLASS_LIST_10022005_0605)
-#define FUSION_SEQUENCE_CLASS_LIST_10022005_0605
+
+#ifndef BOOST_FUSION_CONTAINER_LIST_HPP
+#define BOOST_FUSION_CONTAINER_LIST_HPP
 
 #include <boost/fusion/container/list/cons.hpp>
 #include <boost/fusion/container/list/cons_iterator.hpp>
 #include <boost/fusion/container/list/limits.hpp>
 #include <boost/fusion/container/list/list.hpp>
-#include <boost/fusion/container/list/list_fwd.hpp>
 #include <boost/fusion/container/list/convert.hpp>
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,26 +2,31 @@
     Copyright (c) 2005 Joel de Guzman
     Copyright (c) 2005 Eric Niebler
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_CONS_07172005_0843)
-#define FUSION_CONS_07172005_0843
 
-#include <boost/fusion/support/detail/access.hpp>
+#ifndef BOOST_FUSION_CONTAINER_LIST_CONS_HPP
+#define BOOST_FUSION_CONTAINER_LIST_CONS_HPP
+
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/sequence/intrinsic/front.hpp>
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/ref.hpp>
+#include <boost/fusion/support/assign_tags.hpp>
+#include <boost/fusion/support/sequence_assign.hpp>
+
 #include <boost/fusion/container/list/cons_iterator.hpp>
-#include <boost/fusion/container/list/detail/begin_impl.hpp>
-#include <boost/fusion/container/list/detail/end_impl.hpp>
-#include <boost/fusion/container/list/detail/at_impl.hpp>
-#include <boost/fusion/container/list/detail/value_at_impl.hpp>
-#include <boost/fusion/container/list/detail/empty_impl.hpp>
+#include <boost/fusion/container/list/detail/cons/begin_impl.hpp>
+#include <boost/fusion/container/list/detail/cons/end_impl.hpp>
+#include <boost/fusion/container/list/detail/cons/at_impl.hpp>
+#include <boost/fusion/container/list/detail/cons/value_at_impl.hpp>
+#include <boost/fusion/container/list/detail/cons/empty_impl.hpp>
+
 #include <boost/type_traits/is_convertible.hpp>
 #include <boost/utility/enable_if.hpp>
-#include <boost/fusion/support/sequence_base.hpp>
 #include <boost/mpl/int.hpp>
 #include <boost/mpl/bool.hpp>
 #include <boost/mpl/or.hpp>
@@ -33,7 +38,8 @@
     struct forward_traversal_tag;
     struct fusion_sequence_tag;
 
- struct nil : sequence_base<nil>
+ struct nil
+ : sequence_base<nil>
     {
         typedef mpl::int_<0> size;
         typedef cons_tag fusion_tag;
@@ -43,14 +49,41 @@
         typedef void_ car_type;
         typedef void_ cdr_type;
 
- nil() {}
-
- template <typename Iterator>
- nil(Iterator const& iter, mpl::true_ /*this_is_an_iterator*/)
+ nil()
         {}
 
- template <typename Iterator>
- void assign_from_iter(Iterator const& iter)
+ nil(const nil&)
+ {
+ }
+
+ template<typename Sequence>
+ nil(detail::sequence_assign_type<Sequence> const volatile&)
+ {
+ //TODO cschmidt: assert!
+ }
+
+ template<typename Sequence>
+ nil(detail::sequence_assign_type<Sequence> const volatile&&)
+ {
+ //TODO cschmidt: assert!
+ }
+
+ template<typename Iterator>
+ nil(detail::assign_by_deref,Iterator const&)
+ {
+ }
+
+ template<typename Sequence>
+ nil&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Sequence))
+ {
+ //TODO cschmidt: assert!
+ return *this;
+ }
+
+ template<typename Iterator>
+ void
+ assign(Iterator const&)
         {
         }
     };
@@ -67,71 +100,94 @@
         typedef Cdr cdr_type;
 
         cons()
- : car(), cdr() {}
+ : car()
+ , cdr()
+ {}
 
- explicit cons(typename detail::call_param<Car>::type car)
- : car(car), cdr() {}
+ template<typename Cons>
+ cons(BOOST_FUSION_R_ELSE_CLREF(Cons) cons_,
+ typename enable_if<is_convertible<
+ typename detail::remove_reference<Cons>::type*
+ , cons const volatile*> >::type* =NULL)
+ //cschmidt: iterators so we do not have to deal with the cv-ness
+ //of cons_.car/cons_.cdr explicitly
+ : car(fusion::front(BOOST_FUSION_FORWARD(Cons,cons_)))
+ , cdr(detail::assign_by_deref(),
+ fusion::next(
+ fusion::begin(BOOST_FUSION_FORWARD(Cons,cons_))))
+ {
+ }
 
- cons(
- typename detail::call_param<Car>::type car
- , typename detail::call_param<Cdr>::type cdr)
- : car(car), cdr(cdr) {}
-
- template <typename Car2, typename Cdr2>
- cons(cons<Car2, Cdr2> const& rhs)
- : car(rhs.car), cdr(rhs.cdr) {}
-
- cons(cons const& rhs)
- : car(rhs.car), cdr(rhs.cdr) {}
-
- template <typename Sequence>
- cons(
- Sequence const& seq
- , typename disable_if<
- mpl::or_<
- is_convertible<Sequence, cons> // use copy ctor instead
- , is_convertible<Sequence, Car> // use copy to car instead
- >
- >::type* dummy = 0
- )
- : car(*fusion::begin(seq))
- , cdr(fusion::next(fusion::begin(seq)), mpl::true_()) {}
-
- template <typename Iterator>
- cons(Iterator const& iter, mpl::true_ /*this_is_an_iterator*/)
- : car(*iter)
- , cdr(fusion::next(iter), mpl::true_()) {}
+ template<typename SequenceAssign>
+ cons(BOOST_FUSION_R_ELSE_CLREF(SequenceAssign) seq,
+ typename enable_if<
+ is_sequence_assign<SequenceAssign> >::type* =NULL)
+ : car(fusion::front(seq.get()))
+ , cdr(detail::assign_by_deref(),
+ fusion::next(fusion::begin(seq.get())))
+ {
+ }
 
- template <typename Car2, typename Cdr2>
- cons& operator=(cons<Car2, Cdr2> const& rhs)
+ //cschmidt: rvalue ref if possible, so this does not collide with
+ //cons(OtherCar&&,OtherCdr&&)
+ template<typename Iterator>
+ cons(detail::assign_by_deref,
+ BOOST_FUSION_R_ELSE_CLREF(Iterator) iterator)
+ : car(fusion::deref(iterator))
+ , cdr(detail::assign_by_deref(),fusion::next(iterator))
         {
- car = rhs.car;
- cdr = rhs.cdr;
- return *this;
         }
 
- cons& operator=(cons const& rhs)
+ /*
+ template<typename Sequence>
+ vector(typename enable_if_c<sizeof...(Elements)!=1,
+ BOOST_FUSION_R_ELSE_CLREF(Sequence)>::type seq)
+ : base(detail::assign_by_deref(),
+ fusion::begin(BOOST_FUSION_FORWARD(Sequence,seq)))
         {
- car = rhs.car;
- cdr = rhs.cdr;
- return *this;
         }
+ */
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ explicit cons(typename detail::call_param<Car>::type car)
+ : car(car), cdr()
+ {}
+
+ cons(typename detail::call_param<Car>::type car
+ , typename detail::call_param<Cdr>::type cdr)
+ : car(car), cdr(cdr)
+ {}
+#else
+ template<typename OtherCar>
+ explicit cons(OtherCar&& other_car,
+ typename disable_if<is_convertible<
+ typename detail::remove_reference<OtherCar>::type*
+ , cons const volatile*> >::type* =NULL)
+ : car(std::forward<OtherCar>(other_car))
+ , cdr()
+ {}
 
- template <typename Sequence>
- typename disable_if<is_convertible<Sequence, Car>, cons&>::type
- operator=(Sequence const& seq)
- {
- typedef typename result_of::begin<Sequence const>::type Iterator;
- Iterator iter = fusion::begin(seq);
- this->assign_from_iter(iter);
+ template<typename OtherCar,typename OtherCdr>
+ cons(OtherCar&& other_car,OtherCdr&& other_cdr)
+ : car(std::forward<OtherCar>(other_car))
+ , cdr(std::forward<OtherCdr>(other_cdr))
+ {}
+#endif
+
+ template<typename Sequence>
+ cons&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Sequence) sequence)
+ {
+ assign(fusion::begin(BOOST_FUSION_FORWARD(Sequence,sequence)));
             return *this;
         }
 
- template <typename Iterator>
- void assign_from_iter(Iterator const& iter)
+ template<typename Iterator>
+ void
+ assign(Iterator const& iterator)
         {
- car = *iter;
- cdr.assign_from_iter(fusion::next(iter));
+ car=fusion::deref(iterator);
+ cdr.assign(fusion::next(iterator));
         }
 
         car_type car;
@@ -140,4 +196,3 @@
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/cons_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/cons_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/cons_iterator.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,19 +2,21 @@
     Copyright (c) 2005 Joel de Guzman
     Copyright (c) 2005 Eric Niebler
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_CONS_ITERATOR_07172005_0849)
-#define FUSION_CONS_ITERATOR_07172005_0849
 
-#include <boost/type_traits/add_const.hpp>
+#ifndef BOOST_FUSION_CONTAINER_LIST_CONS_ITERATOR_HPP
+#define BOOST_FUSION_CONTAINER_LIST_CONS_ITERATOR_HPP
+
 #include <boost/fusion/support/iterator_base.hpp>
-#include <boost/fusion/container/list/detail/deref_impl.hpp>
-#include <boost/fusion/container/list/detail/next_impl.hpp>
-#include <boost/fusion/container/list/detail/value_of_impl.hpp>
-#include <boost/fusion/container/list/detail/equal_to_impl.hpp>
 #include <boost/fusion/container/list/list_fwd.hpp>
+#include <boost/type_traits/add_const.hpp>
+
+#include <boost/fusion/container/list/detail/cons/deref_impl.hpp>
+#include <boost/fusion/container/list/detail/cons/next_impl.hpp>
+#include <boost/fusion/container/list/detail/cons/value_of_impl.hpp>
+#include <boost/fusion/container/list/detail/cons/equal_to_impl.hpp>
 
 namespace boost { namespace fusion
 {
@@ -22,63 +24,103 @@
     struct cons_iterator_tag;
     struct forward_traversal_tag;
 
- template <typename Cons>
- struct cons_iterator_identity;
-
     template <typename Cons = nil>
- struct cons_iterator : iterator_base<cons_iterator<Cons> >
+ struct cons_iterator
+ : iterator_base<cons_iterator<Cons> >
     {
         typedef cons_iterator_tag fusion_tag;
         typedef forward_traversal_tag category;
         typedef Cons cons_type;
- typedef cons_iterator_identity<
- typename add_const<Cons>::type>
- identity;
-
- explicit cons_iterator(cons_type& cons)
- : cons(cons) {}
 
- cons_type& cons;
+ explicit cons_iterator(cons_type cons)
+ : cons(cons)
+ {}
+
+ cons_type cons;
     };
 
- struct nil_iterator : iterator_base<nil_iterator>
+ struct nil_iterator
+ : iterator_base<nil_iterator>
     {
         typedef forward_traversal_tag category;
         typedef cons_iterator_tag fusion_tag;
         typedef nil cons_type;
- typedef cons_iterator_identity<
- add_const<nil>::type>
- identity;
+
         nil_iterator() {}
- explicit nil_iterator(nil const&) {}
+ explicit nil_iterator(nil const&)
+ {}
+ };
+
+ template <>
+ struct cons_iterator<nil&>
+ : nil_iterator
+ {
+ cons_iterator() {}
+ explicit cons_iterator(nil const&)
+ {}
+ };
+
+ template <>
+ struct cons_iterator<nil const&>
+ : nil_iterator
+ {
+ cons_iterator() {}
+ explicit cons_iterator(nil const&)
+ {}
+ };
+
+ template <>
+ struct cons_iterator<nil volatile&>
+ : nil_iterator
+ {
+ cons_iterator() {}
+ explicit cons_iterator(nil const&)
+ {}
+ };
+
+ template <>
+ struct cons_iterator<nil const volatile&>
+ : nil_iterator
+ {
+ cons_iterator() {}
+ explicit cons_iterator(nil const&)
+ {}
     };
 
     template <>
- struct cons_iterator<nil> : nil_iterator
+ struct cons_iterator<nil&&>
+ : nil_iterator
     {
         cons_iterator() {}
- explicit cons_iterator(nil const&) {}
+ explicit cons_iterator(nil const&)
+ {}
     };
 
     template <>
- struct cons_iterator<nil const> : nil_iterator
+ struct cons_iterator<nil const&&>
+ : nil_iterator
     {
         cons_iterator() {}
- explicit cons_iterator(nil const&) {}
+ explicit cons_iterator(nil const&)
+ {}
     };
 
     template <>
- struct cons_iterator<list<> > : nil_iterator
+ struct cons_iterator<nil volatile&&>
+ : nil_iterator
     {
         cons_iterator() {}
- explicit cons_iterator(nil const&) {}
+ explicit cons_iterator(nil const&)
+ {}
     };
 
     template <>
- struct cons_iterator<list<> const> : nil_iterator
+ struct cons_iterator<nil const volatile&&>
+ : nil_iterator
     {
         cons_iterator() {}
- explicit cons_iterator(nil const&) {}
+ explicit cons_iterator(nil const&)
+ {}
     };
 }}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/convert.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/convert.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/convert.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,15 +4,13 @@
     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_CONVERT_09232005_1215)
-#define FUSION_CONVERT_09232005_1215
 
-#include <boost/fusion/container/list/cons.hpp>
-#include <boost/fusion/container/list/detail/build_cons.hpp>
-#include <boost/fusion/container/list/detail/convert_impl.hpp>
-#include <boost/fusion/sequence/intrinsic/empty.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/end.hpp>
+#ifndef BOOST_FUSION_CONTAINER_LIST_CONVERT_HPP
+#define BOOST_FUSION_CONTAINER_LIST_CONVERT_HPP
+
+#include <boost/fusion/container/list/list.hpp>
+#include <boost/fusion/container/list/detail/list/convert_impl.hpp>
+#include <boost/fusion/support/ref.hpp>
 
 namespace boost { namespace fusion
 {
@@ -22,35 +20,26 @@
         struct as_list
         {
             typedef typename
- detail::build_cons<
- typename result_of::begin<Sequence>::type
- , typename result_of::end<Sequence>::type
- >
- build_cons;
-
- typedef typename build_cons::type type;
-
- static type
- call(Sequence& seq)
- {
- return build_cons::call(fusion::begin(seq), fusion::end(seq));
- }
+ extension::convert_impl<list_tag>::
+ template apply<typename detail::add_lref<Sequence>::type>
+ gen;
+
+ typedef typename gen::type type;
         };
     }
 
     template <typename Sequence>
- inline typename result_of::as_list<Sequence>::type
- as_list(Sequence& seq)
+ inline typename
+ result_of::as_list<BOOST_FUSION_R_ELSE_CLREF(Sequence)>::type
+ as_list(BOOST_FUSION_R_ELSE_CLREF(Sequence) seq)
     {
- return result_of::as_list<Sequence>::call(seq);
+ typedef typename
+ result_of::as_list<BOOST_FUSION_R_ELSE_CLREF(Sequence)>::gen
+ gen;
+ return gen::call(seq);
     }
 
- template <typename Sequence>
- inline typename result_of::as_list<Sequence const>::type
- as_list(Sequence const& seq)
- {
- return result_of::as_list<Sequence const>::call(seq);
- }
 }}
 
+
 #endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/at_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,132 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_AT_IMPL_07172005_0726)
-#define FUSION_AT_IMPL_07172005_0726
-
-#include <boost/fusion/support/detail/access.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/type_traits/add_const.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/bool.hpp>
-
-namespace boost { namespace fusion
-{
- namespace detail
- {
- template <typename Cons>
- struct cons_deref
- {
- typedef typename Cons::car_type type;
- };
-
- template <typename Cons, int I>
- struct cons_advance
- {
- typedef typename
- cons_advance<Cons, I-1>::type::cdr_type
- type;
- };
-
- template <typename Cons>
- struct cons_advance<Cons, 0>
- {
- typedef Cons type;
- };
-
- template <typename Cons>
- struct cons_advance<Cons, 1>
- {
- typedef typename Cons::cdr_type type;
- };
-
- template <typename Cons>
- struct cons_advance<Cons, 2>
- {
-#if BOOST_WORKAROUND(BOOST_MSVC, > 1400) // VC8 and above
- typedef typename Cons::cdr_type::cdr_type type;
-#else
- typedef typename Cons::cdr_type _a;
- typedef typename _a::cdr_type type;
-#endif
- };
-
- template <typename Cons>
- struct cons_advance<Cons, 3>
- {
-#if BOOST_WORKAROUND(BOOST_MSVC, > 1400) // VC8 and above
- typedef typename Cons::cdr_type::cdr_type::cdr_type type;
-#else
- typedef typename Cons::cdr_type _a;
- typedef typename _a::cdr_type _b;
- typedef typename _b::cdr_type type;
-#endif
- };
-
- template <typename Cons>
- struct cons_advance<Cons, 4>
- {
-#if BOOST_WORKAROUND(BOOST_MSVC, > 1400) // VC8 and above
- typedef typename Cons::cdr_type::cdr_type::cdr_type::cdr_type type;
-#else
- typedef typename Cons::cdr_type _a;
- typedef typename _a::cdr_type _b;
- typedef typename _b::cdr_type _c;
- typedef typename _c::cdr_type type;
-#endif
- };
- }
-
- struct cons_tag;
-
- namespace extension
- {
- template <typename Tag>
- struct at_impl;
-
- template <>
- struct at_impl<cons_tag>
- {
- template <typename Sequence, typename N>
- struct apply
- {
- typedef detail::cons_deref<
- typename detail::cons_advance<Sequence, N::value>::type>
- element;
-
- typedef typename
- mpl::eval_if<
- is_const<Sequence>
- , detail::cref_result<element>
- , detail::ref_result<element>
- >::type
- type;
-
- template <typename Cons, int N2>
- static type
- call(Cons& s, mpl::int_<N2>)
- {
- return call(s.cdr, mpl::int_<N2-1>());
- }
-
- template <typename Cons>
- static type
- call(Cons& s, mpl::int_<0>)
- {
- return s.car;
- }
-
- static type
- call(Sequence& s)
- {
- return call(s, mpl::int_<N::value>());
- }
- };
- };
- }
-}}
-
-#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/begin_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,49 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005 Joel de Guzman
- Copyright (c) 2005 Eric Niebler
-
- 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_BEGIN_IMPL_07172005_0824)
-#define FUSION_BEGIN_IMPL_07172005_0824
-
-#include <boost/mpl/if.hpp>
-#include <boost/type_traits/is_const.hpp>
-
-namespace boost { namespace fusion
-{
- struct nil;
-
- struct cons_tag;
-
- template <typename Car, typename Cdr>
- struct cons;
-
- template <typename Cons>
- struct cons_iterator;
-
- namespace extension
- {
- template <typename Tag>
- struct begin_impl;
-
- template <>
- struct begin_impl<cons_tag>
- {
- template <typename Sequence>
- struct apply
- {
- typedef cons_iterator<Sequence> type;
-
- static type
- call(Sequence& t)
- {
- return type(t);
- }
- };
- };
- }
-}}
-
-#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/build_cons.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/build_cons.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,57 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_BUILD_CONS_09232005_1222)
-#define FUSION_BUILD_CONS_09232005_1222
-
-#include <boost/fusion/container/list/cons.hpp>
-#include <boost/fusion/iterator/equal_to.hpp>
-#include <boost/fusion/iterator/next.hpp>
-#include <boost/fusion/iterator/value_of.hpp>
-#include <boost/fusion/iterator/deref.hpp>
-
-namespace boost { namespace fusion { namespace detail
-{
- template <
- typename First
- , typename Last
- , bool is_empty = result_of::equal_to<First, Last>::value>
- struct build_cons;
-
- template <typename First, typename Last>
- struct build_cons<First, Last, true>
- {
- typedef nil type;
-
- static nil
- call(First const&, Last const&)
- {
- return nil();
- }
- };
-
- template <typename First, typename Last>
- struct build_cons<First, Last, false>
- {
- typedef
- build_cons<typename result_of::next<First>::type, Last>
- next_build_cons;
-
- typedef cons<
- typename result_of::value_of<First>::type
- , typename next_build_cons::type>
- type;
-
- static type
- call(First const& f, Last const& l)
- {
- return type(*f, next_build_cons::call(fusion::next(f), l));
- }
- };
-
-}}}
-
-#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/at_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,121 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_LIST_DETAIL_CONS_AT_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_CONS_AT_IMPL_HPP
+
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace detail
+ {
+ template <typename Cons, int I>
+ struct cons_advance
+ {
+ typedef typename
+ cons_advance<
+ typename cons_advance<Cons, 4>::type
+ , I-4
+ >::type::cdr_type
+ type;
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 0>
+ {
+ typedef Cons type;
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 1>
+ {
+ typedef typename Cons::cdr_type type;
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 2>
+ {
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1400) // VC8 and above
+ typedef typename Cons::cdr_type::cdr_type type;
+#else
+ typedef typename Cons::cdr_type _a;
+ typedef typename _a::cdr_type type;
+#endif
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 3>
+ {
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1400) // VC8 and above
+ typedef typename Cons::cdr_type::cdr_type::cdr_type type;
+#else
+ typedef typename Cons::cdr_type _a;
+ typedef typename _a::cdr_type _b;
+ typedef typename _b::cdr_type type;
+#endif
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 4>
+ {
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1400) // VC8 and above
+ typedef typename Cons::cdr_type::cdr_type::cdr_type::cdr_type type;
+#else
+ typedef typename Cons::cdr_type _a;
+ typedef typename _a::cdr_type _b;
+ typedef typename _b::cdr_type _c;
+ typedef typename _c::cdr_type type;
+#endif
+ };
+ }
+
+ struct cons_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct at_impl;
+
+ template <>
+ struct at_impl<cons_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ typedef typename
+ detail::cons_advance<Sequence, N::value>::type
+ element;
+ typedef typename
+ detail::result_of_forward_as<Sequence,element>::type
+ type;
+
+ template <typename Cons, int N2>
+ static type
+ call(Cons&& s, mpl::int_<N2>)
+ {
+ return call(s.cdr, mpl::int_<N2-1>());
+ }
+
+ template <typename Cons>
+ static type
+ call(Cons&& s, mpl::int_<0>)
+ {
+ return s.car;
+ }
+
+ static type
+ call(Sequence s)
+ {
+ return call(s, mpl::int_<N::value>());
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/begin_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,42 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ 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_CONTAINER_LIST_DETAIL_CONS_BEGIN_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_CONS_BEGIN_IMPL_HPP
+
+namespace boost { namespace fusion
+{
+ struct cons_tag;
+
+ template <typename Cons>
+ struct cons_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<cons_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef cons_iterator<Sequence> type;
+
+ static type
+ call(Sequence t)
+ {
+ return type(t);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/build_cons.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/build_cons.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,59 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_LIST_DETAIL_CONS_BUILD_CONS_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_CONS_BUILD_CONS_HPP
+
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <
+ typename First
+ , typename Last
+ , bool is_empty = result_of::equal_to<First, Last>::value>
+ struct build_cons;
+
+ template <typename First, typename Last>
+ struct build_cons<First, Last, true>
+ {
+ typedef nil type;
+
+ static nil
+ call(First const&, Last const&)
+ {
+ return nil();
+ }
+ };
+
+ template <typename First, typename Last>
+ struct build_cons<First, Last, false>
+ {
+ typedef
+ build_cons<typename result_of::next<First>::type, Last>
+ next_build_cons;
+
+ typedef cons<
+ typename result_of::value_of<First>::type
+ , typename next_build_cons::type>
+ type;
+
+ static type
+ call(First const& f, Last const& l)
+ {
+ return type(
+ fusion::deref(f),
+ next_build_cons::call(fusion::next(f), l));
+ }
+ };
+
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/convert_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/convert_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,52 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_CONTAINER_LIST_DETAIL_CONS_CONVERT_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_CONS_CONVERT_IMPL_HPP
+
+#include <boost/fusion/container/list/detail/cons/build_cons.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+
+namespace boost { namespace fusion
+{
+ struct cons_tag;
+
+ namespace extension
+ {
+ template <typename T>
+ struct convert_impl;
+
+ template <>
+ struct convert_impl<cons_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef
+ detail::build_cons<
+ typename result_of::begin<Sequence>::type
+ , typename result_of::end<Sequence>::type
+ >
+ build_cons;
+
+ typedef typename build_cons::type type;
+
+ static type
+ call(Sequence seq)
+ {
+ return build_cons::call(
+ fusion::begin(seq),
+ fusion::end(seq));
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/deref_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/deref_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,48 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ 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_CONTAINER_LIST_DETAIL_CONS_DEREF_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_CONS_DEREF_IMPL_HPP
+
+namespace boost { namespace fusion
+{
+ struct cons_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct deref_impl;
+
+ template <>
+ struct deref_impl<cons_iterator_tag>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef typename
+ detail::remove_reference<Iterator>::type::cons_type
+ cons_type;
+ typedef typename
+ detail::remove_reference<cons_type>::type::car_type
+ car_type;
+
+ typedef typename
+ detail::result_of_forward_as<cons_type,car_type>::type
+ type;
+
+ static type
+ call(Iterator i)
+ {
+ return i.cons.car;
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/empty_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/empty_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,38 @@
+/*=============================================================================
+ Copyright (c) 2007 Tobias Schwinger
+
+ 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_CONTAINER_LIST_DETAIL_CONS_EMPTY_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_CONS_EMPTY_IMPL_HPP
+
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace fusion
+{
+ struct cons_tag;
+
+ struct nil;
+
+ template <typename Car, typename Cdr>
+ struct cons;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct empty_impl;
+
+ template <>
+ struct empty_impl<cons_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ : boost::is_same<typename detail::identity<Sequence>::type, nil>
+ {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/end_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,51 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ 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_CONTAINER_LIST_DETAIL_CONS_END_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_CONS_END_IMPL_HPP
+
+namespace boost { namespace fusion
+{
+ struct nil;
+
+ struct cons_tag;
+
+ template <typename Car, typename Cdr>
+ struct cons;
+
+ template <typename Cons>
+ struct cons_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<cons_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef
+ cons_iterator<
+ typename detail::result_of_forward_as<Sequence,nil>::type
+ >
+ type;
+
+ static type
+ call(Sequence)
+ {
+ return type();
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/equal_to_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/equal_to_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,43 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_LIST_DETAIL_CONS_EQUAL_TO_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_CONS_EQUAL_TO_IMPL_HPP
+
+namespace boost { namespace fusion
+{
+ struct cons_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct equal_to_impl;
+
+ template <>
+ struct equal_to_impl<cons_iterator_tag>
+ {
+ template <typename I1Ref, typename I2Ref>
+ struct apply
+ : is_same<
+ typename detail::identity<
+ typename detail::remove_reference<
+ I1Ref
+ >::type::cons_type
+ >::type
+ , typename detail::identity<
+ typename detail::remove_reference<
+ I2Ref
+ >::type::cons_type
+ >::type
+ >
+ {
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/next_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/next_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,56 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ 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_CONTAINER_LIST_DETAIL_CONS_NEXT_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_CONS_NEXT_IMPL_HPP
+
+namespace boost { namespace fusion
+{
+ struct cons_iterator_tag;
+
+ template <typename Cons>
+ struct cons_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct next_impl;
+
+ template <>
+ struct next_impl<cons_iterator_tag>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef typename
+ detail::remove_reference<Iterator>::type::cons_type
+ cons_type;
+ typedef typename
+ detail::remove_reference<cons_type>::type::cdr_type
+ cdr_type;
+
+ typedef
+ cons_iterator<
+ typename detail::result_of_forward_as<
+ cons_type
+ , cdr_type
+ >::type
+ >
+ type;
+
+ static type
+ call(Iterator i)
+ {
+ return type(i.cons.cdr);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/value_at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/value_at_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,48 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_LIST_DETAIL_CONS_VALUE_AT_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_CONS_VALUE_AT_IMPL_HPP
+
+#include <boost/mpl/eval_if.hpp>
+
+namespace boost { namespace fusion
+{
+ struct cons_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<cons_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ typedef typename
+ detail::remove_reference<Sequence>::type
+ identity_sequence;
+
+ typedef typename
+ mpl::eval_if<
+ N
+ , mpl::identity<typename identity_sequence::car_type>
+ //cschmidt: qualifiers could be moved here, though
+ //this is not necessary!
+ , apply<typename identity_sequence::cdr_type
+ , mpl::int_<N::value-1>
+ >
+ >::type
+ type;
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/value_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/value_of_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,40 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ 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_CONTAINER_LIST_DETAIL_CONS_VALUE_OF_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_CONS_VALUE_OF_IMPL_HPP
+
+namespace boost { namespace fusion
+{
+ struct cons_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <>
+ struct value_of_impl<cons_iterator_tag>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef typename
+ detail::remove_reference<Iterator>::type::cons_type
+ cons_type;
+
+ typedef typename
+ detail::remove_reference<cons_type>::type::car_type
+ type;
+ };
+ };
+ }
+
+}}
+
+#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/convert_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/convert_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,51 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 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(FUSION_CONVERT_IMPL_09232005_1215)
-#define FUSION_CONVERT_IMPL_09232005_1215
-
-#include <boost/fusion/container/list/cons.hpp>
-#include <boost/fusion/container/list/detail/build_cons.hpp>
-#include <boost/fusion/sequence/intrinsic/empty.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/end.hpp>
-
-namespace boost { namespace fusion
-{
- struct cons_tag;
-
- namespace extension
- {
- template <typename T>
- struct convert_impl;
-
- template <>
- struct convert_impl<cons_tag>
- {
- template <typename Sequence>
- struct apply
- {
- typedef typename
- detail::build_cons<
- typename result_of::begin<Sequence>::type
- , typename result_of::end<Sequence>::type
- >
- build_cons;
-
- typedef typename build_cons::type type;
-
- static type
- call(Sequence& seq)
- {
- return build_cons::call(fusion::begin(seq), fusion::end(seq));
- }
- };
- };
- }
-}}
-
-#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/deref_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/deref_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,52 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005 Joel de Guzman
- Copyright (c) 2005 Eric Niebler
-
- 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_DEREF_IMPL_07172005_0831)
-#define FUSION_DEREF_IMPL_07172005_0831
-
-#include <boost/mpl/eval_if.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/type_traits/add_const.hpp>
-#include <boost/type_traits/add_reference.hpp>
-
-namespace boost { namespace fusion
-{
- struct cons_iterator_tag;
-
- namespace extension
- {
- template <typename Tag>
- struct deref_impl;
-
- template <>
- struct deref_impl<cons_iterator_tag>
- {
- template <typename Iterator>
- struct apply
- {
- typedef typename Iterator::cons_type cons_type;
- typedef typename cons_type::car_type value_type;
-
- typedef typename mpl::eval_if<
- is_const<cons_type>
- , add_reference<typename add_const<value_type>::type>
- , add_reference<value_type> >::type
- type;
-
- static type
- call(Iterator const& i)
- {
- return i.cons.car;
- }
- };
- };
- }
-}}
-
-#endif
-
-

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/empty_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/empty_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,37 +0,0 @@
-/*=============================================================================
- Copyright (c) 2007 Tobias Schwinger
-
- 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_FUSION_SEQUENCE_EMPTY_IMPL_HPP_INCLUDED)
-#define BOOST_FUSION_SEQUENCE_EMPTY_IMPL_HPP_INCLUDED
-
-#include <boost/type_traits/is_convertible.hpp>
-
-namespace boost { namespace fusion
-{
- struct cons_tag;
-
- struct nil;
-
- template <typename Car, typename Cdr>
- struct cons;
-
- namespace extension
- {
- template <typename Tag>
- struct empty_impl;
-
- template <>
- struct empty_impl<cons_tag>
- {
- template <typename Sequence>
- struct apply
- : boost::is_convertible<Sequence, nil>
- {};
- };
- }
-}}
-
-#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/end_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,51 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005 Joel de Guzman
- Copyright (c) 2005 Eric Niebler
-
- 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_END_IMPL_07172005_0828)
-#define FUSION_END_IMPL_07172005_0828
-
-#include <boost/mpl/if.hpp>
-#include <boost/type_traits/is_const.hpp>
-
-namespace boost { namespace fusion
-{
- struct nil;
-
- struct cons_tag;
-
- template <typename Car, typename Cdr>
- struct cons;
-
- template <typename Cons>
- struct cons_iterator;
-
- namespace extension
- {
- template <typename Tag>
- struct end_impl;
-
- template <>
- struct end_impl<cons_tag>
- {
- template <typename Sequence>
- struct apply
- {
- typedef cons_iterator<
- typename mpl::if_<is_const<Sequence>, nil const, nil>::type>
- type;
-
- static type
- call(Sequence&)
- {
- return type();
- }
- };
- };
- }
-}}
-
-#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/equal_to_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/equal_to_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,39 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_EQUAL_TO_IMPL_09172005_1120)
-#define FUSION_EQUAL_TO_IMPL_09172005_1120
-
-#include <boost/type_traits/is_same.hpp>
-#include <boost/mpl/equal_to.hpp>
-#include <boost/mpl/and.hpp>
-
-namespace boost { namespace fusion
-{
- struct cons_iterator_tag;
-
- namespace extension
- {
- template <typename Tag>
- struct equal_to_impl;
-
- template <>
- struct equal_to_impl<cons_iterator_tag>
- {
- template <typename I1, typename I2>
- struct apply
- : is_same<
- typename I1::identity
- , typename I2::identity
- >
- {
- };
- };
- }
-}}
-
-#endif
-

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/at_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,48 @@
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_LIST_LIST_AT_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_LIST_AT_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+
+namespace boost { namespace fusion
+{
+ struct list_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct at_impl;
+
+ template <>
+ struct at_impl<list_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ typedef typename
+ detail::result_of_forward_as<
+ Sequence
+ , typename detail::remove_reference<Sequence>::type::storage_type
+ >::type
+ storage_type;
+
+ typedef typename
+ result_of::at<storage_type,N>::type
+ type;
+
+ static type
+ call(Sequence s)
+ {
+ return fusion::at<N>(
+ static_cast<storage_type&>(s.get_data()));
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/begin_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,54 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ 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_CONTAINER_LIST_DETAIL_LIST_BEGIN_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_LIST_BEGIN_IMPL_HPP
+
+#include <boost/fusion/support/iterator_adapter.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+
+namespace boost { namespace fusion
+{
+ struct list_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<list_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename
+ detail::result_of_forward_as<Sequence
+ , typename detail::remove_reference<Sequence>::type::storage_type
+ >::type
+ storage_type;
+
+ typedef
+ iterator_adapter<
+ typename result_of::begin<storage_type>::type
+ , forward_traversal_tag
+ >
+ type;
+
+ static type
+ call(Sequence s)
+ {
+ return fusion::begin(
+ static_cast<storage_type>(s.get_data()));
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/convert_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/convert_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,59 @@
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_LIST_LIST_CONVERT_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_LIST_CONVERT_IMPL_HPP
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/list/detail/list/pp/as_list.hpp>
+# include <boost/fusion/sequence/intrinsic/begin.hpp>
+# include <boost/fusion/sequence/intrinsic/size.hpp>
+#else
+# include <boost/fusion/container/list/detail/list/variadic_templates/as_list_impl.hpp>
+#endif
+
+namespace boost { namespace fusion
+{
+ struct list_tag;
+
+ namespace extension
+ {
+ template <typename T>
+ struct convert_impl;
+
+ template <>
+ struct convert_impl<list_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+ typedef typename
+ detail::as_list<result_of::size<Sequence>::value>
+ gen;
+ typedef typename gen::template apply<
+ typename result_of::begin<Sequence>::type>::type
+ type;
+
+ static type call(Sequence seq)
+ {
+ return gen::call(
+ fusion::begin(BOOST_FUSION_FORWARD(Sequence,seq)));
+ }
+#else
+ typedef typename detail::as_list_impl<Sequence> gen;
+ typedef typename gen::apply::type type;
+
+ static type call(Sequence seq)
+ {
+ return gen::call(seq);
+ }
+#endif
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/end_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,54 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ 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_CONTAINER_LIST_DETAIL_LIST_END_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_LIST_END_IMPL_HPP
+
+#include <boost/fusion/support/iterator_adapter.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+
+namespace boost { namespace fusion
+{
+ struct list_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<list_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename
+ detail::result_of_forward_as<Sequence
+ , typename detail::remove_reference<Sequence>::type::storage_type
+ >::type
+ storage_type;
+
+ typedef
+ iterator_adapter<
+ typename result_of::end<storage_type>::type
+ , forward_traversal_tag
+ >
+ type;
+
+ static type
+ call(Sequence s)
+ {
+ return fusion::end(
+ static_cast<storage_type>(s.get_data()));
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/pp/as_list.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/pp/as_list.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,103 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_LIST_DETAIL_LIST_PP_AS_LIST_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_LIST_PP_AS_LIST_HPP
+#if !defined(FUSION_AS_LIST_LIST_0932005_1339)
+#define FUSION_AS_LIST_LIST_0932005_1339
+
+#include <boost/fusion/container/list/list.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/inc.hpp>
+#include <boost/preprocessor/dec.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <int size>
+ struct as_list;
+
+ template <>
+ struct as_list<0>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef list<> type;
+ };
+
+ template <typename Iterator>
+ static typename apply<Iterator>::type
+ call(Iterator)
+ {
+ return list<>();
+ }
+ };
+
+#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
+ typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
+ BOOST_PP_CAT(I, BOOST_PP_INC(n));
+
+#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \
+ typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \
+ BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n));
+
+#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \
+ typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
+ BOOST_PP_CAT(T, n);
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/list/detail/as_list.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_NEXT_ITERATOR
+#undef BOOST_FUSION_NEXT_CALL_ITERATOR
+#undef BOOST_FUSION_VALUE_OF_ITERATOR
+
+}}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ template <>
+ struct as_list<N>
+ {
+ template <typename I0>
+ struct apply
+ {
+ BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
+ BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
+ typedef list<BOOST_PP_ENUM_PARAMS(N, T)> type;
+ };
+
+ template <typename Iterator>
+ static typename apply<Iterator>::type
+ call(Iterator const& i0)
+ {
+ typedef apply<Iterator> gen;
+ typedef typename gen::type result;
+ BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _)
+ return result(BOOST_PP_ENUM_PARAMS(N, fusion::deref(i)));
+ }
+ };
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/pp/list_forward_ctor.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/pp/list_forward_ctor.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,47 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_LIST_DETAIL_LIST_PP_LIST_FORWARD_CTOR_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_LIST_PP_LIST_FORWARD_CTOR_HPP
+#define FUSION_LIST_FORWARD_CTOR_07172005_0113
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/enum_shifted.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+
+#define FUSION_LIST_CTOR_MAKE_CONS(z, n, type) tie_cons(BOOST_PP_CAT(_, n)
+#define FUSION_LIST_CL_PAREN(z, n, type) )
+
+#define BOOST_PP_FILENAME_1 \
+ <boost/fusion/container/list/detail/list_forward_ctor.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef FUSION_LIST_CTOR_MAKE_CONS
+#undef FUSION_LIST_CL_PAREN
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+#define N BOOST_PP_ITERATION()
+
+#if N == 1
+ explicit
+#endif
+ list(BOOST_PP_ENUM_BINARY_PARAMS(
+ N, typename detail::call_param<T, >::type _))
+ : inherited_type(list_to_cons::call(BOOST_PP_ENUM_PARAMS(N, _)))
+ {}
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/value_at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/value_at_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,41 @@
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_LIST_LIST_VALUE_AT_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_LIST_VALUE_AT_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/value_at.hpp>
+
+namespace boost { namespace fusion
+{
+ struct list_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<list_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ typedef typename
+ detail::result_of_forward_as<
+ Sequence
+ , typename detail::remove_reference<Sequence>::type::storage_type
+ >::type
+ storage_type;
+
+ typedef typename
+ result_of::value_at<storage_type,N>::type
+ type;
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/variadic_templates/as_list_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/variadic_templates/as_list_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,43 @@
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_LIST_LIST_AS_LIST_HPP
+#define BOOST_FUSION_CONTAINER_LIST_LIST_AS_LIST_HPP
+
+#include <boost/fusion/mpl/begin.hpp>
+#include <boost/fusion/mpl/end.hpp>
+#include <boost/fusion/support/variadic_templates/variadic_quote.hpp>
+#include <boost/fusion/support/to_random_access_mpl_seq.hpp>
+
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/unpack_args.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template<typename Sequence>
+ struct as_list_impl
+ {
+ struct apply
+ {
+ typedef typename
+ mpl::apply<
+ mpl::unpack_args<variadic_quote<list> >
+ , typename detail::to_random_access_mpl_seq<
+ typename detail::remove_reference<Sequence>::type
+ >::type
+ >::type
+ type;
+ };
+
+ static typename apply::type
+ call(Sequence sequence)
+ {
+ return typename apply::type(
+ sequence_assign(BOOST_FUSION_FORWARD(Sequence,sequence)));
+ }
+ };
+}}}
+
+#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list_forward_ctor.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list_forward_ctor.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,47 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_PP_IS_ITERATING
-#if !defined(FUSION_LIST_FORWARD_CTOR_07172005_0113)
-#define FUSION_LIST_FORWARD_CTOR_07172005_0113
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/repetition/enum_shifted.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/repeat.hpp>
-
-#define FUSION_LIST_CTOR_MAKE_CONS(z, n, type) tie_cons(BOOST_PP_CAT(_, n)
-#define FUSION_LIST_CL_PAREN(z, n, type) )
-
-#define BOOST_PP_FILENAME_1 \
- <boost/fusion/container/list/detail/list_forward_ctor.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef FUSION_LIST_CTOR_MAKE_CONS
-#undef FUSION_LIST_CL_PAREN
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-#define N BOOST_PP_ITERATION()
-
-#if N == 1
- explicit
-#endif
- list(BOOST_PP_ENUM_BINARY_PARAMS(
- N, typename detail::call_param<T, >::type _))
- : inherited_type(list_to_cons::call(BOOST_PP_ENUM_PARAMS(N, _)))
- {}
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list_to_cons.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list_to_cons.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,49 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005 Joel de Guzman
-
- 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_LIST_TO_CONS_07172005_1041)
-#define FUSION_LIST_TO_CONS_07172005_1041
-
-#include <boost/fusion/container/list/cons.hpp>
-#include <boost/fusion/container/list/limits.hpp>
-#include <boost/preprocessor/repetition/enum.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
-#include <boost/preprocessor/arithmetic/dec.hpp>
-
-#define FUSION_VOID(z, n, _) void_
-
-namespace boost { namespace fusion
-{
- struct nil;
- struct void_;
-}}
-
-namespace boost { namespace fusion { namespace detail
-{
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename T)>
- struct list_to_cons
- {
- typedef T0 head_type;
- typedef list_to_cons<
- BOOST_PP_ENUM_SHIFTED_PARAMS(FUSION_MAX_LIST_SIZE, T), void_>
- tail_list_to_cons;
- typedef typename tail_list_to_cons::type tail_type;
-
- typedef cons<head_type, tail_type> type;
-
- #include <boost/fusion/container/list/detail/list_to_cons_call.hpp>
- };
-
- template <>
- struct list_to_cons<BOOST_PP_ENUM(FUSION_MAX_LIST_SIZE, FUSION_VOID, _)>
- {
- typedef nil type;
- };
-}}}
-
-#undef FUSION_VOID
-#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list_to_cons_call.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list_to_cons_call.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,43 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_PP_IS_ITERATING
-#if !defined(FUSION_LIST_TO_CONS_CALL_07192005_0138)
-#define FUSION_LIST_TO_CONS_CALL_07192005_0138
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-
-#define BOOST_PP_FILENAME_1 \
- <boost/fusion/container/list/detail/list_to_cons_call.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE)
-#include BOOST_PP_ITERATE()
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-#define N BOOST_PP_ITERATION()
-
- static type
- call(BOOST_PP_ENUM_BINARY_PARAMS(
- N, typename detail::call_param<T, >::type _))
- {
- return type(_0
-#if N > 1
- , tail_list_to_cons::call(BOOST_PP_ENUM_SHIFTED_PARAMS(N, _)));
-#else
- );
-#endif
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/next_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/next_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,59 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005 Joel de Guzman
- Copyright (c) 2005 Eric Niebler
-
- 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_NEXT_IMPL_07172005_0836)
-#define FUSION_NEXT_IMPL_07172005_0836
-
-#include <boost/fusion/iterator/next.hpp>
-#include <boost/fusion/iterator/equal_to.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/identity.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/type_traits/add_const.hpp>
-
-namespace boost { namespace fusion
-{
- struct cons_iterator_tag;
-
- template <typename Cons>
- struct cons_iterator;
-
- namespace extension
- {
- template <typename Tag>
- struct next_impl;
-
- template <>
- struct next_impl<cons_iterator_tag>
- {
- template <typename Iterator>
- struct apply
- {
- typedef typename Iterator::cons_type cons_type;
- typedef typename cons_type::cdr_type cdr_type;
-
- typedef cons_iterator<
- typename mpl::eval_if<
- is_const<cons_type>
- , add_const<cdr_type>
- , mpl::identity<cdr_type>
- >::type>
- type;
-
- static type
- call(Iterator const& i)
- {
- return type(i.cons.cdr);
- }
- };
- };
- }
-}}
-
-#endif
-
-

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/value_at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/value_at_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,42 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_VALUE_AT_IMPL_07172005_0952)
-#define FUSION_VALUE_AT_IMPL_07172005_0952
-
-#include <boost/fusion/support/detail/access.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/bool.hpp>
-
-namespace boost { namespace fusion
-{
- struct cons_tag;
-
- namespace extension
- {
- template <typename Tag>
- struct value_at_impl;
-
- template <>
- struct value_at_impl<cons_tag>
- {
- template <typename Sequence, typename N>
- struct apply
- {
- typedef typename
- mpl::eval_if<
- mpl::bool_<N::value == 0>
- , mpl::identity<typename Sequence::car_type>
- , apply<typename Sequence::cdr_type, mpl::int_<N::value-1> >
- >::type
- type;
- };
- };
- }
-}}
-
-#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/value_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/value_of_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,36 +0,0 @@
-/*=============================================================================
- Copyright (c) 2005 Joel de Guzman
- Copyright (c) 2005 Eric Niebler
-
- 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_VALUE_OF_IMPL_07172005_0838)
-#define FUSION_VALUE_OF_IMPL_07172005_0838
-
-namespace boost { namespace fusion
-{
- struct cons_iterator_tag;
-
- namespace extension
- {
- template <typename Tag>
- struct value_of_impl;
-
- template <>
- struct value_of_impl<cons_iterator_tag>
- {
- template <typename Iterator>
- struct apply
- {
- typedef typename Iterator::cons_type cons_type;
- typedef typename cons_type::car_type type;
- };
- };
- }
-
-}}
-
-#endif
-
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/limits.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/limits.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/limits.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,19 +1,28 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_LIST_LIMITS_07172005_0112)
-#define FUSION_LIST_LIMITS_07172005_0112
 
-#if !defined(FUSION_MAX_LIST_SIZE)
-# define FUSION_MAX_LIST_SIZE 10
-#else
-# if FUSION_MAX_LIST_SIZE < 3
-# undef FUSION_MAX_LIST_SIZE
-# define FUSION_MAX_LIST_SIZE 10
-# endif
+#ifndef BOOST_FUSION_CONTAINER_LIST_LIMITS_HPP
+#define BOOST_FUSION_CONTAINER_LIST_LIMITS_HPP
+
+#include <boost/fusion/container/vector/limits.hpp>
+
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# if !defined(FUSION_MAX_LIST_SIZE)
+# define FUSION_MAX_LIST_SIZE FUSION_MAX_VECTOR_SIZE
+# else
+# if FUSION_MAX_LIST_SIZE < 3
+# undef FUSION_MAX_LIST_SIZE
+# if (FUSION_MAX_VECTOR_SIZE > 10)
+# define FUSION_MAX_LIST_SIZE 10
+# else
+# define FUSION_MAX_LIST_SIZE FUSION_MAX_VECTOR_SIZE
+# endif
+# endif
+# endif
 #endif
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,67 +1,88 @@
 /*=============================================================================
     Copyright (c) 2005 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_LIST_07172005_1153)
-#define FUSION_LIST_07172005_1153
+
+#ifndef BOOST_FUSION_CONTAINER_LIST_LIST_HPP
+#define BOOST_FUSION_CONTAINER_LIST_LIST_HPP
 
 #include <boost/fusion/container/list/list_fwd.hpp>
-#include <boost/fusion/container/list/detail/list_to_cons.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/ref.hpp>
+
+#include <boost/type_traits/is_convertible.hpp>
+
+#include <boost/fusion/container/list/detail/list/begin_impl.hpp>
+#include <boost/fusion/container/list/detail/list/end_impl.hpp>
+#include <boost/fusion/container/list/detail/list/at_impl.hpp>
+#include <boost/fusion/container/list/detail/list/value_at_impl.hpp>
 
 namespace boost { namespace fusion
 {
- struct nil;
+ struct list_tag;
+ struct fusion_sequence_tag;
+#ifndef BOOST_NO_VARIADIC_TEMPLATES
     struct void_;
+#endif
 
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename T)>
- struct list
- : detail::list_to_cons<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, T)>::type
+ VARIADIC_TEMPLATE(FUSION_MAX_LIST_SIZE)
+ struct list
+ : sequence_base<list<EXPAND_ARGUMENTS(FUSION_MAX_LIST_SIZE)> >
     {
- private:
- typedef
- detail::list_to_cons<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, T)>
- list_to_cons;
+ typedef forward_traversal_tag category;
 
- public:
- typedef typename list_to_cons::type inherited_type;
+ typedef list_tag fusion_tag;
+ typedef fusion_sequence_tag tag; // this gets picked up by MPL
+ typedef mpl::false_ is_view;
 
- list()
- : inherited_type() {}
+ typedef vector<EXPAND_ARGUMENTS(FUSION_MAX_LIST_SIZE)> storage_type;
+ typedef typename storage_type::size size;
 
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename U)>
- list(list<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, U)> const& rhs)
- : inherited_type(rhs) {}
-
- template <typename Sequence>
- list(Sequence const& rhs)
- : inherited_type(rhs) {}
-
- // Expand a couple of forwarding constructors for arguments
- // of type (T0), (T0, T1), (T0, T1, T2) etc. Exanple:
- //
- // list(
- // typename detail::call_param<T0>::type _0
- // , typename detail::call_param<T1>::type _1)
- // : inherited_type(list_to_cons::call(_0, _1)) {}
- #include <boost/fusion/container/list/detail/list_forward_ctor.hpp>
+ list()
+ : data()
+ {}
 
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename U)>
- list&
- operator=(list<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, U)> const& rhs)
+ template<typename List>
+ list(BOOST_FUSION_R_ELSE_CLREF(List) list_,
+ typename enable_if<is_convertible<
+ typename detail::remove_reference<List>::type*
+ , list const volatile*> >::type* =NULL)
+ : data(BOOST_FUSION_FORWARD(List,list_).data)
         {
- inherited_type::operator=(rhs);
- return *this;
         }
 
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+ template <typename Arg>
+ list(BOOST_FUSION_R_ELSE_CLREF(Arg) arg)
+ : data(BOOST_FUSION_FORWARD(Arg,arg))
+ {}
+
+# include <boost/fusion/container/list/detail/list/pp/list_forward_ctor.hpp>
+#else
+ template <typename... OtherArguments>
+ list(BOOST_FUSION_R_ELSE_CLREF(OtherArguments)... other_arguments)
+ : data(BOOST_FUSION_FORWARD(OtherArguments,other_arguments)...)
+ {}
+#endif
+
         template <typename T>
         list&
- operator=(T const& rhs)
+ operator=(BOOST_FUSION_R_ELSE_CLREF(T) rhs)
         {
- inherited_type::operator=(rhs);
+ data = BOOST_FUSION_FORWARD(T, rhs);
             return *this;
         }
+
+ storage_type& get_data() { return data; }
+ storage_type const& get_data() const { return data; }
+
+ private:
+
+ storage_type data;
     };
 }}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/list/list_fwd.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/list/list_fwd.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/list_fwd.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,24 +1,21 @@
 /*=============================================================================
     Copyright (c) 2005 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_LIST_FORWARD_07172005_0224)
-#define FUSION_LIST_FORWARD_07172005_0224
+
+#ifndef BOOST_FUSION_CONTAINER_LIST_LIST_FWD_HPP
+#define BOOST_FUSION_CONTAINER_LIST_LIST_FWD_HPP
 
 #include <boost/fusion/container/list/limits.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/fusion/support/template.hpp>
 
 namespace boost { namespace fusion
 {
- struct void_;
-
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_LIST_SIZE, typename T, void_)
- >
+ VARIADIC_TEMPLATE_WITH_DEFAULT(FUSION_MAX_LIST_SIZE)
     struct list;
 }}
 
+
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/map.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,12 +4,12 @@
     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_SEQUENCE_CLASS_MAP_10022005_0606)
-#define FUSION_SEQUENCE_CLASS_MAP_10022005_0606
+
+#ifndef BOOST_FUSION_CONTAINER_MAP_HPP
+#define BOOST_FUSION_CONTAINER_MAP_HPP
 
 #include <boost/fusion/container/map/limits.hpp>
 #include <boost/fusion/container/map/map.hpp>
-#include <boost/fusion/container/map/map_fwd.hpp>
 #include <boost/fusion/container/map/convert.hpp>
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/map/convert.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/convert.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/convert.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,14 +4,13 @@
     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_CONVERT_09232005_1340)
-#define FUSION_CONVERT_09232005_1340
 
-#include <boost/fusion/container/map/detail/as_map.hpp>
-#include <boost/fusion/container/map/detail/convert_impl.hpp>
+#ifndef BOOST_FUSION_CONTAINER_MAP_CONVERT_HPP
+#define BOOST_FUSION_CONTAINER_MAP_CONVERT_HPP
+
 #include <boost/fusion/container/map/map.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/container/map/detail/convert_impl.hpp>
+#include <boost/fusion/support/ref.hpp>
 
 namespace boost { namespace fusion
 {
@@ -20,28 +19,25 @@
         template <typename Sequence>
         struct as_map
         {
- typedef typename detail::as_map<result_of::size<Sequence>::value> gen;
- typedef typename gen::
- template apply<typename result_of::begin<Sequence>::type>::type
- type;
+ typedef typename
+ extension::convert_impl<map_tag>::
+ template apply<typename detail::add_lref<Sequence>::type>
+ gen;
+
+ typedef typename gen::apply::type type;
         };
     }
 
     template <typename Sequence>
- inline typename result_of::as_map<Sequence>::type
- as_map(Sequence& seq)
+ inline typename result_of::as_map<BOOST_FUSION_R_ELSE_CLREF(Sequence)>::type
+ as_map(BOOST_FUSION_R_ELSE_CLREF(Sequence) seq)
     {
- typedef typename result_of::as_map<Sequence>::gen gen;
- return gen::call(fusion::begin(seq));
+ typedef typename
+ result_of::as_map<BOOST_FUSION_R_ELSE_CLREF(Sequence)>::gen
+ gen;
+ return gen::call(seq);
     }
 
- template <typename Sequence>
- inline typename result_of::as_map<Sequence const>::type
- as_map(Sequence const& seq)
- {
- typedef typename result_of::as_map<Sequence const>::gen gen;
- return gen::call(fusion::begin(seq));
- }
 }}
 
 #endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/as_map.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/as_map.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,101 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_PP_IS_ITERATING
-#if !defined(FUSION_AS_MAP_0932005_1339)
-#define FUSION_AS_MAP_0932005_1339
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/repeat.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/inc.hpp>
-#include <boost/preprocessor/dec.hpp>
-#include <boost/fusion/container/map/map.hpp>
-#include <boost/fusion/iterator/value_of.hpp>
-#include <boost/fusion/iterator/deref.hpp>
-#include <boost/fusion/iterator/next.hpp>
-
-namespace boost { namespace fusion { namespace detail
-{
- template <int size>
- struct as_map;
-
- template <>
- struct as_map<0>
- {
- template <typename Iterator>
- struct apply
- {
- typedef map<> type;
- };
-
- template <typename Iterator>
- static typename apply<Iterator>::type
- call(Iterator)
- {
- return map<>();
- }
- };
-
-#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
- typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(I, BOOST_PP_INC(n));
-
-#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \
- typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \
- BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n));
-
-#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \
- typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(T, n);
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/map/detail/as_map.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_NEXT_ITERATOR
-#undef BOOST_FUSION_NEXT_CALL_ITERATOR
-#undef BOOST_FUSION_VALUE_OF_ITERATOR
-
-}}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- template <>
- struct as_map<N>
- {
- template <typename I0>
- struct apply
- {
- BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
- BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
- typedef map<BOOST_PP_ENUM_PARAMS(N, T)> type;
- };
-
- template <typename Iterator>
- static typename apply<Iterator>::type
- call(Iterator const& i0)
- {
- typedef apply<Iterator> gen;
- typedef typename gen::type result;
- BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _)
- return result(BOOST_PP_ENUM_PARAMS(N, *i));
- }
- };
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/at_key_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/at_key_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/at_key_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,15 +1,12 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_AT_KEY_IMPL_05222005_0254)
-#define FUSION_AT_KEY_IMPL_05222005_0254
 
-#include <boost/fusion/support/detail/access.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/mpl/identity.hpp>
+#ifndef BOOST_FUSION_CONTAINER_MAP_DETAIL_AT_KEY_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_MAP_DETAIL_AT_KEY_IMPL_HPP
 
 namespace boost { namespace fusion
 {
@@ -24,22 +21,21 @@
         struct at_key_impl<map_tag>
         {
             template <typename Sequence, typename Key>
- struct apply
+ struct apply
             {
- typedef typename Sequence::template meta_at_impl<Key> element;
-
                 typedef typename
- mpl::eval_if<
- is_const<Sequence>
- , detail::cref_result<element>
- , detail::ref_result<element>
- >::type
+ detail::remove_reference<Sequence>::type::
+ template meta_at_impl<Key>::type
+ element;
+
+ typedef typename
+ detail::result_of_forward_as<Sequence,element>::type
                 type;
-
+
                 static type
- call(Sequence& m)
+ call(Sequence s)
                 {
- return m.at_impl(mpl::identity<Key>());
+ return s.at_impl(mpl::identity<Key>());
                 }
             };
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/begin_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,16 +1,12 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+// Copyright Christopher Schmidt 2009.
+// 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)
 
- 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_BEGIN_IMPL_05222005_1108)
-#define FUSION_BEGIN_IMPL_05222005_1108
+#ifndef BOOST_FUSION_CONTAINER_MAP_BEGIN_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_MAP_BEGIN_IMPL_HPP
 
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/identity.hpp>
 
 namespace boost { namespace fusion
 {
@@ -25,28 +21,23 @@
         struct begin_impl<map_tag>
         {
             template <typename Sequence>
- struct apply
+ struct apply
             {
- typedef typename
- result_of::begin<typename Sequence::storage_type>::type
- iterator_type;
-
- typedef typename
- result_of::begin<typename Sequence::storage_type const>::type
- const_iterator_type;
-
- typedef typename
- mpl::eval_if<
- is_const<Sequence>
- , mpl::identity<const_iterator_type>
- , mpl::identity<iterator_type>
+ typedef typename
+ detail::result_of_forward_as<Sequence
+ , typename detail::remove_reference<Sequence>::type::storage_type
>::type
+ storage_type;
+
+ typedef typename
+ result_of::begin<storage_type>::type
                 type;
-
+
                 static type
- call(Sequence& m)
+ call(Sequence s)
                 {
- return fusion::begin(m.get_data());
+ return fusion::begin(
+ static_cast<storage_type>(s.get_data()));
                 }
             };
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/convert_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/convert_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/convert_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,17 +1,18 @@
-/*=============================================================================
- Copyright (c) 2001-2006 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(FUSION_CONVERT_IMPL_09232005_1340)
-#define FUSION_CONVERT_IMPL_09232005_1340
-
-#include <boost/fusion/container/map/detail/as_map.hpp>
-#include <boost/fusion/container/map/map.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/size.hpp>
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_MAP_CONVERT_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_MAP_CONVERT_IMPL_HPP
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/sequence/intrinsic/begin.hpp>
+# include <boost/fusion/sequence/intrinsic/size.hpp>
+# include <boost/fusion/container/map/detail/pp/as_set.hpp>
+#else
+# include <boost/fusion/container/map/detail/variadic_templates/as_map_impl.hpp>
+#endif
 
 namespace boost { namespace fusion
 {
@@ -28,15 +29,28 @@
             template <typename Sequence>
             struct apply
             {
- typedef typename detail::as_map<result_of::size<Sequence>::value> gen;
- typedef typename gen::
- template apply<typename result_of::begin<Sequence>::type>::type
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+ typedef typename
+ detail::as_map<result_of::size<Sequence>::value>
+ gen;
+ typedef typename gen::template apply<
+ typename result_of::begin<Sequence>::type>::type
                 type;
 
- static type call(Sequence& seq)
+ static type call(Sequence seq)
                 {
- return gen::call(fusion::begin(seq));
+ return gen::call(
+ fusion::begin(BOOST_FUSION_FORWARD(Sequence,seq)));
                 }
+#else
+ typedef typename detail::as_map_impl<Sequence> gen;
+ typedef typename gen::apply::type type;
+
+ static type call(Sequence seq)
+ {
+ return gen::call(seq);
+ }
+#endif
             };
         };
     }

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/end_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,11 +1,10 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+// Copyright Christopher Schmidt 2009.
+// 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)
 
- 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_END_IMPL_05222005_1108)
-#define FUSION_END_IMPL_05222005_1108
+#ifndef BOOST_FUSION_CONTAINER_MAP_END_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_MAP_END_IMPL_HPP
 
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 
@@ -22,28 +21,23 @@
         struct end_impl<map_tag>
         {
             template <typename Sequence>
- struct apply
+ struct apply
             {
- typedef typename
- result_of::end<typename Sequence::storage_type>::type
- iterator_type;
-
- typedef typename
- result_of::end<typename Sequence::storage_type const>::type
- const_iterator_type;
-
- typedef typename
- mpl::eval_if<
- is_const<Sequence>
- , mpl::identity<const_iterator_type>
- , mpl::identity<iterator_type>
+ typedef typename
+ detail::result_of_forward_as<Sequence
+ , typename detail::remove_reference<Sequence>::type::storage_type
>::type
+ storage_type;
+
+ typedef typename
+ result_of::end<storage_type>::type
                 type;
-
+
                 static type
- call(Sequence& m)
+ call(Sequence s)
                 {
- return fusion::end(m.get_data());
+ return fusion::end(
+ static_cast<storage_type>(s.get_data()));
                 }
             };
         };

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/lookup_key.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/lookup_key.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,99 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_LOOKUP_KEY_07222005_1248)
-#define FUSION_LOOKUP_KEY_07222005_1248
-
-#include <boost/mpl/int.hpp>
-#include <boost/type_traits/add_const.hpp>
-#include <boost/type_traits/add_reference.hpp>
-#include <boost/fusion/support/detail/unknown_key.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-}}
-
-namespace boost { namespace fusion { namespace detail
-{
- template <typename T>
- struct map_data_type
- {
- typedef typename
- add_reference<
- typename T::second_type
- >::type
- type;
- };
-
- template <>
- struct map_data_type<void_>
- {
- typedef void_& type;
- };
-
- template <typename T>
- struct map_const_data_type
- {
- typedef typename
- add_reference<
- typename add_const<
- typename T::second_type
- >::type
- >::type
- type;
- };
-
- template <>
- struct map_const_data_type<void_>
- {
- typedef void_ const& type;
- };
-
- template <typename T>
- struct map_value_type
- {
- typedef typename T::second_type type;
- };
-
- template <>
- struct map_value_type<void_>
- {
- typedef void_ type;
- };
-
- template <typename T, int index>
- struct map_key_type
- {
- typedef typename T::first_type type;
- };
-
- template <int index>
- struct map_key_type<void_, index>
- {
- typedef unknown_key<index> type;
- };
-
- template <int index, typename RT, typename Key, typename Vector>
- struct map_lookup_key
- {
- static RT
- call(Vector& vec)
- {
- return vec.at_impl(mpl::int_<index>()).second;
- }
- };
-
- template <int index, typename Vector>
- struct map_lookup_key<index, void_&, unknown_key<index>, Vector>
- {
- static void_&
- call(Vector& vec); // intentionally undefined
- };
-}}}
-
-#endif
-

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/map_forward_ctor.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/map_forward_ctor.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,38 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_PP_IS_ITERATING
-#if !defined(FUSION_MAP_FORWARD_CTOR_07222005_0106)
-#define FUSION_MAP_FORWARD_CTOR_07222005_0106
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-
-#define BOOST_PP_FILENAME_1 \
- <boost/fusion/container/map/detail/map_forward_ctor.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
-#include BOOST_PP_ITERATE()
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
-#if N == 1
- explicit
-#endif
- map(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
- : data(BOOST_PP_ENUM_PARAMS(N, _)) {}
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/map_lookup.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/map_lookup.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,128 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_PP_IS_ITERATING
-#if !defined(FUSION_MAP_LOOKUP_07212005_1118)
-#define FUSION_MAP_LOOKUP_07212005_1118
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/arithmetic/dec.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-
-#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310)
-#pragma warning (push)
-#pragma warning(disable: 4348) // redefinition of default parameter
-#endif
-
- template <typename Key, typename dummy = int>
- struct meta_at_impl
- {
- typedef void_ type;
- };
-
- template <typename Key, typename dummy = int>
- struct meta_find_impl
- {
- typedef vector_iterator<storage_type, storage_type::size::value> type;
- };
-
- template <typename Key, typename dummy = int>
- struct meta_find_impl_const
- {
- typedef vector_iterator<storage_type const, storage_type::size::value> type;
- };
-
- template <typename Key>
- vector_iterator<storage_type const, storage_type::size::value>
- find_impl(mpl::identity<Key>) const
- {
- return vector_iterator<storage_type const, storage_type::size::value>(data);
- }
-
- template <typename Key>
- vector_iterator<storage_type, storage_type::size::value>
- find_impl(mpl::identity<Key>)
- {
- return vector_iterator<storage_type, storage_type::size::value>(data);
- }
-
-#define BOOST_PP_FILENAME_1 \
- <boost/fusion/container/map/detail/map_lookup.hpp>
-#define BOOST_PP_ITERATION_LIMITS (0, BOOST_PP_DEC(FUSION_MAX_MAP_SIZE))
-#include BOOST_PP_ITERATE()
-
-#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310)
-#pragma warning (pop)
-#endif
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- template <typename dummy>
- struct meta_at_impl<
- typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type, dummy>
- {
- typedef typename detail::map_value_type<BOOST_PP_CAT(T, N)>::type type;
- };
-
- typename detail::map_data_type<BOOST_PP_CAT(T, N)>::type
- at_impl(mpl::identity<typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type>)
- {
- return detail::map_lookup_key<
- N
- , typename detail::map_data_type<BOOST_PP_CAT(T, N)>::type
- , typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type
- , storage_type>::call(data);
- }
-
- typename detail::map_const_data_type<BOOST_PP_CAT(T, N)>::type
- at_impl(mpl::identity<typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type>) const
- {
- return detail::map_lookup_key<
- N
- , typename detail::map_const_data_type<BOOST_PP_CAT(T, N)>::type
- , typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type
- , storage_type const>::call(data);
- }
-
- template <typename dummy>
- struct meta_find_impl<
- typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type, dummy>
- {
- typedef vector_iterator<storage_type, N> type;
- };
-
- template <typename dummy>
- struct meta_find_impl_const<
- typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type, dummy>
- {
- typedef vector_iterator<storage_type const, N> type;
- };
-
- vector_iterator<storage_type, N>
- find_impl(mpl::identity<typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type>)
- {
- return vector_iterator<storage_type, N>(data);
- }
-
- vector_iterator<storage_type const, N>
- find_impl(mpl::identity<typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type>) const
- {
- return vector_iterator<storage_type const, N>(data);
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/pp/as_map.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/pp/as_map.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,102 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_MAP_DETAIL_PP_AS_MAP_HPP
+#define BOOST_FUSION_CONTAINER_MAP_DETAIL_PP_AS_MAP_HPP
+#define FUSION_AS_MAP_0932005_1339
+
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/inc.hpp>
+#include <boost/preprocessor/dec.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <int size>
+ struct as_map;
+
+ template <>
+ struct as_map<0>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef map<> type;
+ };
+
+ template <typename Iterator>
+ static typename apply<Iterator>::type
+ call(Iterator)
+ {
+ return map<>();
+ }
+ };
+
+#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
+ typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
+ BOOST_PP_CAT(I, BOOST_PP_INC(n));
+
+#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \
+ typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \
+ BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n));
+
+#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \
+ typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
+ BOOST_PP_CAT(T, n);
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/map/detail/as_map.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_NEXT_ITERATOR
+#undef BOOST_FUSION_NEXT_CALL_ITERATOR
+#undef BOOST_FUSION_VALUE_OF_ITERATOR
+
+}}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ template <>
+ struct as_map<N>
+ {
+ template <typename I0>
+ struct apply
+ {
+ BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
+ BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
+ typedef map<BOOST_PP_ENUM_PARAMS(N, T)> type;
+ };
+
+ template <typename Iterator>
+ static typename apply<Iterator>::type
+ call(Iterator const& i0)
+ {
+ typedef apply<Iterator> gen;
+ typedef typename gen::type result;
+ BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _)
+ return result(BOOST_PP_ENUM_PARAMS(N, fusion::deref(i)));
+ }
+ };
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/pp/lookup_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/pp/lookup_key.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,98 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_MAP_DETAIL_PP_LOOKUP_KEY_HPP
+#define BOOST_FUSION_CONTAINER_MAP_DETAIL_PP_LOOKUP_KEY_HPP
+
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/fusion/support/detail/unknown_key.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+}}
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename T>
+ struct map_data_type
+ {
+ typedef typename
+ add_reference<
+ typename T::second_type
+ >::type
+ type;
+ };
+
+ template <>
+ struct map_data_type<void_>
+ {
+ typedef void_& type;
+ };
+
+ template <typename T>
+ struct map_const_data_type
+ {
+ typedef typename
+ add_reference<
+ typename add_const<
+ typename T::second_type
+ >::type
+ >::type
+ type;
+ };
+
+ template <>
+ struct map_const_data_type<void_>
+ {
+ typedef void_ const& type;
+ };
+
+ template <typename T>
+ struct map_value_type
+ {
+ typedef typename T::second_type type;
+ };
+
+ template <>
+ struct map_value_type<void_>
+ {
+ typedef void_ type;
+ };
+
+ template <typename T, int index>
+ struct map_key_type
+ {
+ typedef typename T::first_type type;
+ };
+
+ template <int index>
+ struct map_key_type<void_, index>
+ {
+ typedef unknown_key<index> type;
+ };
+
+ template <int index, typename RT, typename Key, typename Vector>
+ struct map_lookup_key
+ {
+ static RT
+ call(Vector& vec)
+ {
+ return vec.at_impl(mpl::int_<index>()).second;
+ }
+ };
+
+ template <int index, typename Vector>
+ struct map_lookup_key<index, void_&, unknown_key<index>, Vector>
+ {
+ static void_&
+ call(Vector& vec); // intentionally undefined
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/pp/map_forward_ctor.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/pp/map_forward_ctor.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,38 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_MAP_DETAIL_PP_MAP_FORWARD_CTOR_HPP
+#define BOOST_FUSION_CONTAINER_MAP_DETAIL_PP_MAP_FORWARD_CTOR_HPP
+#define FUSION_MAP_FORWARD_CTOR_07222005_0106
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+#define BOOST_PP_FILENAME_1 \
+ <boost/fusion/container/map/detail/map_forward_ctor.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
+#include BOOST_PP_ITERATE()
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+#if N == 1
+ explicit
+#endif
+ map(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
+ : data(BOOST_PP_ENUM_PARAMS(N, _)) {}
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/pp/map_lookup.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/pp/map_lookup.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,128 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_MAP_DETAIL_PP_MAP_LOOKUP_HPP
+#define BOOST_FUSION_CONTAINER_MAP_DETAIL_PP_MAP_LOOKUP_HPP
+#define FUSION_MAP_LOOKUP_07212005_1118
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310)
+#pragma warning (push)
+#pragma warning(disable: 4348) // redefinition of default parameter
+#endif
+
+ template <typename Key, typename dummy = int>
+ struct meta_at_impl
+ {
+ typedef void_ type;
+ };
+
+ template <typename Key, typename dummy = int>
+ struct meta_find_impl
+ {
+ typedef vector_iterator<storage_type, storage_type::size::value> type;
+ };
+
+ template <typename Key, typename dummy = int>
+ struct meta_find_impl_const
+ {
+ typedef vector_iterator<storage_type const, storage_type::size::value> type;
+ };
+
+ template <typename Key>
+ vector_iterator<storage_type const, storage_type::size::value>
+ find_impl(mpl::identity<Key>) const
+ {
+ return vector_iterator<storage_type const, storage_type::size::value>(data);
+ }
+
+ template <typename Key>
+ vector_iterator<storage_type, storage_type::size::value>
+ find_impl(mpl::identity<Key>)
+ {
+ return vector_iterator<storage_type, storage_type::size::value>(data);
+ }
+
+#define BOOST_PP_FILENAME_1 \
+ <boost/fusion/container/map/detail/map_lookup.hpp>
+#define BOOST_PP_ITERATION_LIMITS (0, BOOST_PP_DEC(FUSION_MAX_MAP_SIZE))
+#include BOOST_PP_ITERATE()
+
+#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310)
+#pragma warning (pop)
+#endif
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ template <typename dummy>
+ struct meta_at_impl<
+ typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type, dummy>
+ {
+ typedef typename detail::map_value_type<BOOST_PP_CAT(T, N)>::type type;
+ };
+
+ typename detail::map_data_type<BOOST_PP_CAT(T, N)>::type
+ at_impl(mpl::identity<typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type>)
+ {
+ return detail::map_lookup_key<
+ N
+ , typename detail::map_data_type<BOOST_PP_CAT(T, N)>::type
+ , typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type
+ , storage_type>::call(data);
+ }
+
+ typename detail::map_const_data_type<BOOST_PP_CAT(T, N)>::type
+ at_impl(mpl::identity<typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type>) const
+ {
+ return detail::map_lookup_key<
+ N
+ , typename detail::map_const_data_type<BOOST_PP_CAT(T, N)>::type
+ , typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type
+ , storage_type const>::call(data);
+ }
+
+ template <typename dummy>
+ struct meta_find_impl<
+ typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type, dummy>
+ {
+ typedef vector_iterator<storage_type, N> type;
+ };
+
+ template <typename dummy>
+ struct meta_find_impl_const<
+ typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type, dummy>
+ {
+ typedef vector_iterator<storage_type const, N> type;
+ };
+
+ vector_iterator<storage_type, N>
+ find_impl(mpl::identity<typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type>)
+ {
+ return vector_iterator<storage_type, N>(data);
+ }
+
+ vector_iterator<storage_type const, N>
+ find_impl(mpl::identity<typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type>) const
+ {
+ return vector_iterator<storage_type const, N>(data);
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/value_at_key_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/value_at_key_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/value_at_key_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,11 +2,12 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_VALUE_AT_KEY_IMPL_05222005_0325)
-#define FUSION_VALUE_AT_KEY_IMPL_05222005_0325
+
+#ifndef BOOST_FUSION_CONTAINER_MAP_DETAIL_VALUE_AT_KEY_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_MAP_DETAIL_VALUE_AT_KEY_IMPL_HPP
 
 namespace boost { namespace fusion
 {
@@ -21,10 +22,14 @@
         struct value_at_key_impl<map_tag>
         {
             template <typename Sequence, typename Key>
- struct apply
+ struct apply
             {
- typedef typename Sequence::
- template meta_at_impl<Key>::type type;
+ typedef typename
+ detail::remove_reference<Sequence>::type
+ identity_sequence_type;
+ typedef typename
+ identity_sequence_type::template meta_at_impl<Key>::type
+ type;
             };
         };
     }

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/variadic_templates/as_map_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/variadic_templates/as_map_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,43 @@
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_MAP_AS_MAP_HPP
+#define BOOST_FUSION_CONTAINER_MAP_AS_MAP_HPP
+
+//TODO cschmidt: ?!
+#include <boost/fusion/mpl/begin.hpp>
+#include <boost/fusion/mpl/end.hpp>
+#include <boost/fusion/support/variadic_templates/variadic_quote.hpp>
+#include <boost/fusion/support/to_random_access_mpl_seq.hpp>
+
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/unpack_args.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template<typename Sequence>struct as_map_impl
+ {
+ struct apply
+ {
+ typedef typename
+ mpl::apply<
+ mpl::unpack_args<variadic_quote<map> >
+ , typename detail::to_random_access_mpl_seq<
+ typename detail::remove_reference<Sequence>::type
+ >::type
+ >::type
+ type;
+ };
+
+ static typename apply::type
+ call(Sequence sequence)
+ {
+ return typename apply::type(
+ sequence_assign(BOOST_FUSION_FORWARD(Sequence,sequence)));
+ }
+ };
+}}}
+
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/map/limits.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/limits.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/limits.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,25 +1,28 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_MAP_LIMITS_07212005_1104)
-#define FUSION_MAP_LIMITS_07212005_1104
+
+#ifndef BOOST_FUSION_CONTAINER_MAP_LIMITS_HPP
+#define BOOST_FUSION_CONTAINER_MAP_LIMITS_HPP
 
 #include <boost/fusion/container/vector/limits.hpp>
 
-#if !defined(FUSION_MAX_MAP_SIZE)
-# define FUSION_MAX_MAP_SIZE FUSION_MAX_VECTOR_SIZE
-#else
-# if FUSION_MAX_MAP_SIZE < 3
-# undef FUSION_MAX_MAP_SIZE
-# if (FUSION_MAX_VECTOR_SIZE > 10)
-# define FUSION_MAX_MAP_SIZE 10
-# else
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# if !defined(FUSION_MAX_MAP_SIZE)
 # define FUSION_MAX_MAP_SIZE FUSION_MAX_VECTOR_SIZE
+# else
+# if FUSION_MAX_MAP_SIZE < 3
+# undef FUSION_MAX_MAP_SIZE
+# if (FUSION_MAX_VECTOR_SIZE > 10)
+# define FUSION_MAX_MAP_SIZE 10
+# else
+# define FUSION_MAX_MAP_SIZE FUSION_MAX_VECTOR_SIZE
+# endif
+# endif
 # endif
-# endif
 #endif
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,69 +1,208 @@
 /*=============================================================================
     Copyright (c) 2005 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_MAP_07212005_1106)
-#define FUSION_MAP_07212005_1106
 
+#ifndef BOOST_FUSION_CONTAINER_MAP_MAP_HPP
+#define BOOST_FUSION_CONTAINER_MAP_MAP_HPP
+
+#include <boost/fusion/container/map/map_fwd.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
 #include <boost/fusion/support/pair.hpp>
 #include <boost/fusion/support/category_of.hpp>
-#include <boost/fusion/support/detail/access.hpp>
-#include <boost/fusion/container/map/map_fwd.hpp>
-#include <boost/fusion/container/map/detail/lookup_key.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/ref.hpp>
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/map/detail/lookup_key.hpp>
+#endif
 #include <boost/fusion/container/map/detail/begin_impl.hpp>
 #include <boost/fusion/container/map/detail/end_impl.hpp>
 #include <boost/fusion/container/map/detail/at_key_impl.hpp>
 #include <boost/fusion/container/map/detail/value_at_key_impl.hpp>
-#include <boost/fusion/container/vector/vector.hpp>
+
 #include <boost/mpl/identity.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/find_if.hpp>
+#include <boost/mpl/distance.hpp>
+#include <boost/mpl/begin.hpp>
+#include <boost/mpl/end.hpp>
+#include <boost/mpl/deref.hpp>
 #include <boost/mpl/bool.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/type_traits/is_same.hpp>
 
 namespace boost { namespace fusion
 {
- struct void_;
     struct map_tag;
     struct fusion_sequence_tag;
+#ifndef BOOST_NO_VARIADIC_TEMPLATES
+ struct void_;
+#endif
 
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, typename T)>
- struct map : sequence_base<map<BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, T)> >
+ VARIADIC_TEMPLATE(FUSION_MAX_MAP_SIZE)
+ struct map : sequence_base<map<EXPAND_ARGUMENTS(FUSION_MAX_MAP_SIZE)> >
     {
         struct category : forward_traversal_tag, associative_sequence_tag {};
-
+
         typedef map_tag fusion_tag;
         typedef fusion_sequence_tag tag; // this gets picked up by MPL
         typedef mpl::false_ is_view;
 
- typedef vector<
- BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, T)>
- storage_type;
-
+ typedef vector<EXPAND_ARGUMENTS(FUSION_MAX_MAP_SIZE)> storage_type;
         typedef typename storage_type::size size;
 
+#ifndef BOOST_NO_VARIADIC_TEMPLATES
+ //TODO cschmidt: enable for non-variadic templates version?
+private:
+ template<class Key>struct is_key
+ {
+ template<class Pair>struct apply
+ : is_same<Key,typename Pair::first_type>
+ {
+ };
+ };
+public:
+ template <typename Key>
+ struct meta_at_impl
+ {
+ template<class Iterator>struct get_type
+ {
+ typedef typename
+ mpl::deref<Iterator>::type::second_type
+ type;
+ };
+
+ typedef typename
+ mpl::find_if<
+ typename storage_type::types
+ , is_key<Key>
+ >::type
+ iterator;
+
+ typedef typename
+ mpl::eval_if<
+ is_same<iterator
+ , typename mpl::end<typename storage_type::types>::type
+ >
+ , mpl::identity<void_>
+ , get_type<iterator>
+ >::type
+ type;
+ };
+
+ template <typename Key>
+ struct meta_find_impl
+ {
+ typedef
+ vector_iterator<
+ storage_type&
+ , mpl::distance<
+ typename mpl::begin<typename storage_type::types>::type
+ , typename mpl::find_if<
+ typename storage_type::types
+ , is_key<Key>
+ >::type
+ >::value
+ >
+ type;
+ };
+
+ template <typename Key>
+ struct meta_find_impl_const
+ {
+ typedef
+ vector_iterator<
+ storage_type const&
+ , mpl::distance<
+ typename mpl::begin<typename storage_type::types>::type
+ , typename mpl::find_if<
+ typename storage_type::types
+ , is_key<Key>
+ >::type
+ >::value
+ >
+ type;
+ };
+#endif
+
         map()
             : data() {}
-
- template <typename Sequence>
- map(Sequence const& rhs)
- : data(rhs) {}
 
- #include <boost/fusion/container/map/detail/map_forward_ctor.hpp>
- #include <boost/fusion/container/map/detail/map_lookup.hpp>
+ template<typename Map>
+ map(BOOST_FUSION_R_ELSE_CLREF(Map) map_,
+ typename enable_if<is_convertible<
+ typename detail::remove_reference<Map>::type*
+ , map const volatile*> >::type* =NULL)
+ : data(BOOST_FUSION_FORWARD(Map,map_).data)
+ {
+ }
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+ template <typename Arg>
+ map(BOOST_FUSION_R_ELSE_CLREF(Arg) arg)
+ : data(BOOST_FUSION_FORWARD(Arg,arg))
+ {}
+
+# include <boost/fusion/container/map/detail/pp/set_forward_ctor.hpp>
+# include <boost/fusion/container/map/detail/pp/set_lookup.hpp>
+#else
+ template <typename... OtherArguments>
+ map(BOOST_FUSION_R_ELSE_CLREF(OtherArguments)... other_arguments)
+ : data(BOOST_FUSION_FORWARD(OtherArguments,other_arguments)...)
+ {}
+#endif
 
         template <typename T>
         map&
- operator=(T const& rhs)
+ operator=(BOOST_FUSION_R_ELSE_CLREF(T) rhs)
         {
- data = rhs;
+ data = BOOST_FUSION_FORWARD(T, rhs);
             return *this;
         }
 
+#ifndef BOOST_NO_VARIADIC_TEMPLATES
+ template <typename Key>
+ typename meta_find_impl_const<Key>::type
+ find_impl(mpl::identity<Key>) const
+ {
+ return typename meta_find_impl_const<Key>::type(data);
+ }
+
+ template <typename Key>
+ typename meta_find_impl<Key>::type
+ find_impl(mpl::identity<Key>)
+ {
+ return typename meta_find_impl<Key>::type(data);
+ }
+
+ template <class Key>
+ typename add_reference<typename meta_at_impl<Key>::type>::type
+ at_impl(mpl::identity<Key>)
+ {
+ return data.at_impl(
+ typename meta_find_impl<Key>::type::index()).second;
+ }
+
+ template <class Key>
+ typename add_reference<
+ typename add_const<typename meta_at_impl<Key>::type>::type
+ >::type
+ at_impl(mpl::identity<Key>) const
+ {
+ return data.at_impl(
+ typename meta_find_impl_const<Key>::type::index()).second;
+ }
+#endif
+
         storage_type& get_data() { return data; }
         storage_type const& get_data() const { return data; }
 
     private:
-
+
         storage_type data;
     };
 }}

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/map/map_fwd.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/map/map_fwd.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/map_fwd.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,23 +1,19 @@
 /*=============================================================================
     Copyright (c) 2005 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_MAP_FORWARD_07212005_1105)
-#define FUSION_MAP_FORWARD_07212005_1105
+
+#ifndef BOOST_FUSION_CONTAINER_MAP_MAP_FWD_HPP
+#define BOOST_FUSION_CONTAINER_MAP_MAP_FWD_HPP
 
 #include <boost/fusion/container/map/limits.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/fusion/support/template.hpp>
 
 namespace boost { namespace fusion
 {
- struct void_;
-
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_MAP_SIZE, typename T, void_)
- >
+ VARIADIC_TEMPLATE_WITH_DEFAULT(FUSION_MAX_MAP_SIZE)
     struct map;
 }}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/set.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,12 +4,12 @@
     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_SEQUENCE_CLASS_SET_10022005_0607)
-#define FUSION_SEQUENCE_CLASS_SET_10022005_0607
+
+#ifndef BOOST_FUSION_CONTAINER_SET_HPP
+#define BOOST_FUSION_CONTAINER_SET_HPP
 
 #include <boost/fusion/container/set/limits.hpp>
 #include <boost/fusion/container/set/set.hpp>
-#include <boost/fusion/container/set/set_fwd.hpp>
 #include <boost/fusion/container/set/convert.hpp>
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/set/convert.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/convert.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/convert.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,14 +4,13 @@
     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_CONVERT_09232005_1341)
-#define FUSION_CONVERT_09232005_1341
 
-#include <boost/fusion/container/set/detail/as_set.hpp>
-#include <boost/fusion/container/set/detail/convert_impl.hpp>
+#ifndef BOOST_FUSION_CONTAINER_SET_CONVERT_HPP
+#define BOOST_FUSION_CONTAINER_SET_CONVERT_HPP
+
 #include <boost/fusion/container/set/set.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/container/set/detail/convert_impl.hpp>
+#include <boost/fusion/support/ref.hpp>
 
 namespace boost { namespace fusion
 {
@@ -20,28 +19,26 @@
         template <typename Sequence>
         struct as_set
         {
- typedef typename detail::as_set<result_of::size<Sequence>::value> gen;
- typedef typename gen::
- template apply<typename result_of::begin<Sequence>::type>::type
- type;
+ typedef typename
+ extension::convert_impl<set_tag>::
+ template apply<typename detail::add_lref<Sequence>::type>
+ gen;
+
+ typedef typename gen::apply::type type;
         };
     }
 
     template <typename Sequence>
- inline typename result_of::as_set<Sequence>::type
- as_set(Sequence& seq)
+ inline typename result_of::as_set<BOOST_FUSION_R_ELSE_CLREF(Sequence)>::type
+ as_set(BOOST_FUSION_R_ELSE_CLREF(Sequence) seq)
     {
- typedef typename result_of::as_set<Sequence>::gen gen;
- return gen::call(fusion::begin(seq));
- }
+ typedef typename
+ result_of::as_set<BOOST_FUSION_R_ELSE_CLREF(Sequence)>::gen
+ gen;
 
- template <typename Sequence>
- inline typename result_of::as_set<Sequence const>::type
- as_set(Sequence const& seq)
- {
- typedef typename result_of::as_set<Sequence const>::gen gen;
- return gen::call(fusion::begin(seq));
+ return gen::call(BOOST_FUSION_FORWARD(Sequence,seq));
     }
+
 }}
 
 #endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/as_set.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/as_set.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,101 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_PP_IS_ITERATING
-#if !defined(FUSION_AS_SET_0932005_1341)
-#define FUSION_AS_SET_0932005_1341
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/repeat.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/inc.hpp>
-#include <boost/preprocessor/dec.hpp>
-#include <boost/fusion/container/set/set.hpp>
-#include <boost/fusion/iterator/value_of.hpp>
-#include <boost/fusion/iterator/deref.hpp>
-#include <boost/fusion/iterator/next.hpp>
-
-namespace boost { namespace fusion { namespace detail
-{
- template <int size>
- struct as_set;
-
- template <>
- struct as_set<0>
- {
- template <typename Iterator>
- struct apply
- {
- typedef set<> type;
- };
-
- template <typename Iterator>
- static typename apply<Iterator>::type
- call(Iterator)
- {
- return set<>();
- }
- };
-
-#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
- typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(I, BOOST_PP_INC(n));
-
-#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \
- typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \
- BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n));
-
-#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \
- typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(T, n);
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/set/detail/as_set.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_NEXT_ITERATOR
-#undef BOOST_FUSION_NEXT_CALL_ITERATOR
-#undef BOOST_FUSION_VALUE_OF_ITERATOR
-
-}}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- template <>
- struct as_set<N>
- {
- template <typename I0>
- struct apply
- {
- BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
- BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
- typedef set<BOOST_PP_ENUM_PARAMS(N, T)> type;
- };
-
- template <typename Iterator>
- static typename apply<Iterator>::type
- call(Iterator const& i0)
- {
- typedef apply<Iterator> gen;
- typedef typename gen::type result;
- BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _)
- return result(BOOST_PP_ENUM_PARAMS(N, *i));
- }
- };
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/at_key_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/at_key_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/at_key_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,15 +1,12 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_AT_KEY_IMPL_09162005_1118)
-#define FUSION_AT_KEY_IMPL_09162005_1118
 
-#include <boost/fusion/support/detail/access.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/mpl/identity.hpp>
+#ifndef BOOST_FUSION_CONTAINER_SET_DETAIL_AT_KEY_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_SET_DETAIL_AT_KEY_IMPL_HPP
 
 namespace boost { namespace fusion
 {
@@ -24,20 +21,19 @@
         struct at_key_impl<set_tag>
         {
             template <typename Sequence, typename Key>
- struct apply
+ struct apply
             {
- typedef typename Sequence::template meta_at_impl<Key> element;
-
                 typedef typename
- mpl::eval_if<
- is_const<Sequence>
- , detail::cref_result<element>
- , detail::ref_result<element>
- >::type
+ detail::remove_reference<Sequence>::type::
+ template meta_at_impl<Key>::type
+ element;
+
+ typedef typename
+ detail::result_of_forward_as<Sequence,element>::type
                 type;
-
+
                 static type
- call(Sequence& s)
+ call(Sequence s)
                 {
                     return s.at_impl(mpl::identity<Key>());
                 }

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/begin_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,16 +1,12 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+// Copyright Christopher Schmidt 2009.
+// 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)
 
- 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_BEGIN_IMPL_09162005_1120)
-#define FUSION_BEGIN_IMPL_09162005_1120
+#ifndef BOOST_FUSION_CONTAINER_SET_BEGIN_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_SET_BEGIN_IMPL_HPP
 
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/mpl/eval_if.hpp>
-#include <boost/mpl/identity.hpp>
 
 namespace boost { namespace fusion
 {
@@ -25,28 +21,23 @@
         struct begin_impl<set_tag>
         {
             template <typename Sequence>
- struct apply
+ struct apply
             {
- typedef typename
- result_of::begin<typename Sequence::storage_type>::type
- iterator_type;
-
- typedef typename
- result_of::begin<typename Sequence::storage_type const>::type
- const_iterator_type;
-
- typedef typename
- mpl::eval_if<
- is_const<Sequence>
- , mpl::identity<const_iterator_type>
- , mpl::identity<iterator_type>
+ typedef typename
+ detail::result_of_forward_as<Sequence
+ , typename detail::remove_reference<Sequence>::type::storage_type
>::type
+ storage_type;
+
+ typedef typename
+ result_of::begin<storage_type>::type
                 type;
-
+
                 static type
- call(Sequence& s)
+ call(Sequence s)
                 {
- return fusion::begin(s.get_data());
+ return fusion::begin(
+ static_cast<storage_type>(s.get_data()));
                 }
             };
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/convert_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/convert_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/convert_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,17 +1,18 @@
-/*=============================================================================
- Copyright (c) 2001-2006 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(FUSION_CONVERT_IMPL_09232005_1341)
-#define FUSION_CONVERT_IMPL_09232005_1341
-
-#include <boost/fusion/container/set/detail/as_set.hpp>
-#include <boost/fusion/container/set/set.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/size.hpp>
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_SET_CONVERT_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_SET_CONVERT_IMPL_HPP
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/sequence/intrinsic/begin.hpp>
+# include <boost/fusion/sequence/intrinsic/size.hpp>
+# include <boost/fusion/container/set/detail/pp/as_set.hpp>
+#else
+# include <boost/fusion/container/set/detail/variadic_templates/as_set_impl.hpp>
+#endif
 
 namespace boost { namespace fusion
 {
@@ -28,15 +29,29 @@
             template <typename Sequence>
             struct apply
             {
- typedef typename detail::as_set<result_of::size<Sequence>::value> gen;
- typedef typename gen::
- template apply<typename result_of::begin<Sequence>::type>::type
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+ typedef typename
+ detail::as_set<result_of::size<Sequence>::value>
+ gen;
+ typedef typename gen::template apply<
+ typename result_of::begin<Sequence>::type>::type
                 type;
 
- static type call(Sequence& seq)
+ static type call(Sequence seq)
+ {
+ return gen::call(
+ fusion::begin(BOOST_FUSION_FORWARD(Sequence,seq)));
+ }
+#else
+ typedef typename detail::as_set_impl<Sequence> gen;
+
+ typedef typename gen::apply::type type;
+
+ static type call(Sequence seq)
                 {
- return gen::call(fusion::begin(seq));
+ return gen::call(seq);
                 }
+#endif
             };
         };
     }

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/end_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,11 +1,10 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
+// Copyright Christopher Schmidt 2009.
+// 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)
 
- 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_END_IMPL_09162005_1121)
-#define FUSION_END_IMPL_09162005_1121
+#ifndef BOOST_FUSION_CONTAINER_SET_END_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_SET_END_IMPL_HPP
 
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 
@@ -22,28 +21,23 @@
         struct end_impl<set_tag>
         {
             template <typename Sequence>
- struct apply
+ struct apply
             {
- typedef typename
- result_of::end<typename Sequence::storage_type>::type
- iterator_type;
-
- typedef typename
- result_of::end<typename Sequence::storage_type const>::type
- const_iterator_type;
-
- typedef typename
- mpl::eval_if<
- is_const<Sequence>
- , mpl::identity<const_iterator_type>
- , mpl::identity<iterator_type>
+ typedef typename
+ detail::result_of_forward_as<Sequence
+ , typename detail::remove_reference<Sequence>::type::storage_type
>::type
+ storage_type;
+
+ typedef typename
+ result_of::end<storage_type>::type
                 type;
-
+
                 static type
- call(Sequence& s)
+ call(Sequence s)
                 {
- return fusion::end(s.get_data());
+ return fusion::end(
+ static_cast<storage_type>(s.get_data()));
                 }
             };
         };

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/lookup_key.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/lookup_key.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,93 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_LOOKUP_KEY_09162005_1111)
-#define FUSION_LOOKUP_KEY_09162005_1111
-
-#include <boost/mpl/int.hpp>
-#include <boost/type_traits/add_const.hpp>
-#include <boost/type_traits/add_reference.hpp>
-#include <boost/fusion/support/detail/unknown_key.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-}}
-
-namespace boost { namespace fusion { namespace detail
-{
- template <typename T>
- struct set_data_type
- {
- typedef typename add_reference<T>::type type;
- };
-
- template <>
- struct set_data_type<void_>
- {
- typedef void_& type;
- };
-
- template <typename T>
- struct set_const_data_type
- {
- typedef typename
- add_reference<
- typename add_const<T>::type
- >::type
- type;
- };
-
- template <>
- struct set_const_data_type<void_>
- {
- typedef void_ const& type;
- };
-
- template <typename T>
- struct set_value_type
- {
- typedef T type;
- };
-
- template <>
- struct set_value_type<void_>
- {
- typedef void_ type;
- };
-
- template <typename T, int index>
- struct set_key_type
- {
- typedef T type;
- };
-
- template <int index>
- struct set_key_type<void_, index>
- {
- typedef unknown_key<index> type;
- };
-
- template <int index, typename RT, typename Key, typename Vector>
- struct set_lookup_key
- {
- static RT
- call(Vector& vec)
- {
- return vec.at_impl(mpl::int_<index>());
- }
- };
-
- template <int index, typename Vector>
- struct set_lookup_key<index, void_&, unknown_key<index>, Vector>
- {
- static void_&
- call(Vector& vec); // intentionally undefined
- };
-}}}
-
-#endif
-

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/as_set.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/as_set.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,101 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_SET_DETAIL_PP_AS_SET_HPP
+#define BOOST_FUSION_CONTAINER_SET_DETAIL_PP_AS_SET_HPP
+#define FUSION_AS_SET_0932005_1341
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/inc.hpp>
+#include <boost/preprocessor/dec.hpp>
+#include <boost/fusion/container/set/set.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <int size>
+ struct as_set;
+
+ template <>
+ struct as_set<0>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef set<> type;
+ };
+
+ template <typename Iterator>
+ static typename apply<Iterator>::type
+ call(Iterator)
+ {
+ return set<>();
+ }
+ };
+
+#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
+ typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
+ BOOST_PP_CAT(I, BOOST_PP_INC(n));
+
+#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \
+ typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \
+ BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n));
+
+#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \
+ typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
+ BOOST_PP_CAT(T, n);
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/set/detail/as_set.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_NEXT_ITERATOR
+#undef BOOST_FUSION_NEXT_CALL_ITERATOR
+#undef BOOST_FUSION_VALUE_OF_ITERATOR
+
+}}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ template <>
+ struct as_set<N>
+ {
+ template <typename I0>
+ struct apply
+ {
+ BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
+ BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
+ typedef set<BOOST_PP_ENUM_PARAMS(N, T)> type;
+ };
+
+ template <typename Iterator>
+ static typename apply<Iterator>::type
+ call(Iterator const& i0)
+ {
+ typedef apply<Iterator> gen;
+ typedef typename gen::type result;
+ BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _)
+ return result(BOOST_PP_ENUM_PARAMS(N, fusion::deref(i)));
+ }
+ };
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/lookup_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/lookup_key.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,28 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_SET_DETAIL_PP_LOOKUP_KEY_HPP
+#define BOOST_FUSION_CONTAINER_SET_DETAIL_PP_LOOKUP_KEY_HPP
+
+#include <boost/fusion/support/detail/unknown_key.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename T, int index>
+ struct set_key_type
+ {
+ typedef T type;
+ };
+
+ template <int index>
+ struct set_key_type<void_, index>
+ {
+ typedef unknown_key<index> type;
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/set_forward_ctor.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/set_forward_ctor.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_SET_DETAIL_PP_SET_FORWARD_CTOR_HPP
+#define BOOST_FUSION_CONTAINER_SET_DETAIL_PP_SET_FORWARD_CTOR_HPP
+#define FUSION_SET_FORWARD_CTOR_09162005_1115
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+#define BOOST_PP_FILENAME_1 \
+ <boost/fusion/container/set/detail/set_forward_ctor.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE)
+#include BOOST_PP_ITERATE()
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+#if N == 1
+ explicit
+#endif
+ set(BOOST_PP_ENUM_BINARY_PARAMS(
+ N, const T,& _))
+ : data(BOOST_PP_ENUM_PARAMS(N, _)) {}
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/set_lookup.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/pp/set_lookup.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,122 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_SET_DETAIL_PP_SET_LOOKUP_HPP
+#define BOOST_FUSION_CONTAINER_SET_DETAIL_PP_SET_LOOKUP_HPP
+#define FUSION_SET_LOOKUP_09162005_1116
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/add_reference.hpp>
+
+#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310)
+#pragma warning (push)
+#pragma warning(disable: 4348) // redefinition of default parameter
+#endif
+
+ template <typename Key, typename dummy = int>
+ struct meta_at_impl
+ {
+ typedef void_ type;
+ };
+
+ template <typename Key, typename dummy = int>
+ struct meta_find_impl
+ {
+ typedef vector_iterator<storage_type, storage_type::size::value> type;
+ };
+
+ template <typename Key, typename dummy = int>
+ struct meta_find_impl_const
+ {
+ typedef vector_iterator<storage_type const, storage_type::size::value> type;
+ };
+
+ template <typename Key>
+ vector_iterator<storage_type const, storage_type::size::value>
+ find_impl(mpl::identity<Key>) const
+ {
+ return vector_iterator<storage_type const, storage_type::size::value>(data);
+ }
+
+ template <typename Key>
+ vector_iterator<storage_type, storage_type::size::value>
+ find_impl(mpl::identity<Key>)
+ {
+ return vector_iterator<storage_type, storage_type::size::value>(data);
+ }
+
+#define BOOST_PP_FILENAME_1 \
+ <boost/fusion/container/set/detail/set_lookup.hpp>
+#define BOOST_PP_ITERATION_LIMITS (0, BOOST_PP_DEC(FUSION_MAX_SET_SIZE))
+#include BOOST_PP_ITERATE()
+
+#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310)
+#pragma warning (pop)
+#endif
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ template <typename dummy>
+ struct meta_at_impl<
+ typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type, dummy>
+ {
+ typedef BOOST_PP_CAT(T, N) type;
+ };
+
+ typename add_reference<BOOST_PP_CAT(T, N)>::type
+ at_impl(mpl::identity<typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type>)
+ {
+ return data.at_impl(mpl::int_<N>());
+ }
+
+ typename add_reference<typename add_const<BOOST_PP_CAT(T, N)>::type>::type
+ at_impl(mpl::identity<typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type>) const
+ {
+ return data.at_impl(mpl::int_<N>());
+ }
+
+ template <typename dummy>
+ struct meta_find_impl<
+ typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type, dummy>
+ {
+ typedef vector_iterator<storage_type, N> type;
+ };
+
+ template <typename dummy>
+ struct meta_find_impl_const<
+ typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type, dummy>
+ {
+ typedef vector_iterator<storage_type const, N> type;
+ };
+
+ vector_iterator<storage_type, N>
+ find_impl(mpl::identity<typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type>)
+ {
+ return vector_iterator<storage_type, N>(data);
+ }
+
+ vector_iterator<storage_type const, N>
+ find_impl(mpl::identity<typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type>) const
+ {
+ return vector_iterator<storage_type const, N>(data);
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/set_forward_ctor.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/set_forward_ctor.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,39 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_PP_IS_ITERATING
-#if !defined(FUSION_SET_FORWARD_CTOR_09162005_1115)
-#define FUSION_SET_FORWARD_CTOR_09162005_1115
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-
-#define BOOST_PP_FILENAME_1 \
- <boost/fusion/container/set/detail/set_forward_ctor.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE)
-#include BOOST_PP_ITERATE()
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
-#if N == 1
- explicit
-#endif
- set(BOOST_PP_ENUM_BINARY_PARAMS(
- N, typename detail::call_param<T, >::type _))
- : data(BOOST_PP_ENUM_PARAMS(N, _)) {}
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/set_lookup.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/set_lookup.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,128 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_PP_IS_ITERATING
-#if !defined(FUSION_SET_LOOKUP_09162005_1116)
-#define FUSION_SET_LOOKUP_09162005_1116
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/arithmetic/dec.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-
-#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310)
-#pragma warning (push)
-#pragma warning(disable: 4348) // redefinition of default parameter
-#endif
-
- template <typename Key, typename dummy = int>
- struct meta_at_impl
- {
- typedef void_ type;
- };
-
- template <typename Key, typename dummy = int>
- struct meta_find_impl
- {
- typedef vector_iterator<storage_type, storage_type::size::value> type;
- };
-
- template <typename Key, typename dummy = int>
- struct meta_find_impl_const
- {
- typedef vector_iterator<storage_type const, storage_type::size::value> type;
- };
-
- template <typename Key>
- vector_iterator<storage_type const, storage_type::size::value>
- find_impl(mpl::identity<Key>) const
- {
- return vector_iterator<storage_type const, storage_type::size::value>(data);
- }
-
- template <typename Key>
- vector_iterator<storage_type, storage_type::size::value>
- find_impl(mpl::identity<Key>)
- {
- return vector_iterator<storage_type, storage_type::size::value>(data);
- }
-
-#define BOOST_PP_FILENAME_1 \
- <boost/fusion/container/set/detail/set_lookup.hpp>
-#define BOOST_PP_ITERATION_LIMITS (0, BOOST_PP_DEC(FUSION_MAX_SET_SIZE))
-#include BOOST_PP_ITERATE()
-
-#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310)
-#pragma warning (pop)
-#endif
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- template <typename dummy>
- struct meta_at_impl<
- typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type, dummy>
- {
- typedef typename detail::set_value_type<BOOST_PP_CAT(T, N)>::type type;
- };
-
- typename detail::set_data_type<BOOST_PP_CAT(T, N)>::type
- at_impl(mpl::identity<typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type>)
- {
- return detail::set_lookup_key<
- N
- , typename detail::set_data_type<BOOST_PP_CAT(T, N)>::type
- , typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type
- , storage_type>::call(data);
- }
-
- typename detail::set_const_data_type<BOOST_PP_CAT(T, N)>::type
- at_impl(mpl::identity<typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type>) const
- {
- return detail::set_lookup_key<
- N
- , typename detail::set_const_data_type<BOOST_PP_CAT(T, N)>::type
- , typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type
- , storage_type const>::call(data);
- }
-
- template <typename dummy>
- struct meta_find_impl<
- typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type, dummy>
- {
- typedef vector_iterator<storage_type, N> type;
- };
-
- template <typename dummy>
- struct meta_find_impl_const<
- typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type, dummy>
- {
- typedef vector_iterator<storage_type const, N> type;
- };
-
- vector_iterator<storage_type, N>
- find_impl(mpl::identity<typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type>)
- {
- return vector_iterator<storage_type, N>(data);
- }
-
- vector_iterator<storage_type const, N>
- find_impl(mpl::identity<typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type>) const
- {
- return vector_iterator<storage_type const, N>(data);
- }
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/value_at_key_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/value_at_key_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/value_at_key_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,13 +2,12 @@
     Copyright (c) 2001-2006 Joel de Guzman
     Copyright (c) 2006 Dan Marsden
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_VALUE_AT_KEY_IMPL_09162005_1123)
-#define FUSION_VALUE_AT_KEY_IMPL_09162005_1123
 
-#include <boost/mpl/at.hpp>
+#ifndef BOOST_FUSION_CONTAINER_SET_DETAIL_VALUE_AT_KEY_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_SET_DETAIL_VALUE_AT_KEY_IMPL_HPP
 
 namespace boost { namespace fusion
 {
@@ -23,10 +22,14 @@
         struct value_at_key_impl<set_tag>
         {
             template <typename Sequence, typename Key>
- struct apply
+ struct apply
             {
- typedef typename Sequence::
- template meta_at_impl<Key>::type type;
+ typedef typename
+ detail::remove_reference<Sequence>::type
+ identity_sequence_type;
+ typedef typename
+ identity_sequence_type::template meta_at_impl<Key>::type
+ type;
             };
         };
     }

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/variadic_templates/as_set_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/variadic_templates/as_set_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,42 @@
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_SET_AS_SET_HPP
+#define BOOST_FUSION_CONTAINER_SET_AS_SET_HPP
+
+#include <boost/fusion/mpl/begin.hpp>
+#include <boost/fusion/mpl/end.hpp>
+#include <boost/fusion/support/variadic_templates/variadic_quote.hpp>
+#include <boost/fusion/support/to_random_access_mpl_seq.hpp>
+
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/unpack_args.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template<typename Sequence>struct as_set_impl
+ {
+ struct apply
+ {
+ typedef typename
+ mpl::apply<
+ mpl::unpack_args<variadic_quote<set> >
+ , typename detail::to_random_access_mpl_seq<
+ typename detail::remove_reference<Sequence>::type
+ >::type
+ >::type
+ type;
+ };
+
+ static typename apply::type
+ call(Sequence sequence)
+ {
+ return typename apply::type(
+ sequence_assign(BOOST_FUSION_FORWARD(Sequence,sequence)));
+ }
+ };
+}}}
+
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/set/limits.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/limits.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/limits.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,25 +1,28 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_SET_LIMITS_09162005_1103)
-#define FUSION_SET_LIMITS_09162005_1103
+
+#ifndef BOOST_FUSION_CONTAINER_SET_LIMITS_HPP
+#define BOOST_FUSION_CONTAINER_SET_LIMITS_HPP
 
 #include <boost/fusion/container/vector/limits.hpp>
 
-#if !defined(FUSION_MAX_SET_SIZE)
-# define FUSION_MAX_SET_SIZE FUSION_MAX_VECTOR_SIZE
-#else
-# if FUSION_MAX_SET_SIZE < 3
-# undef FUSION_MAX_SET_SIZE
-# if (FUSION_MAX_VECTOR_SIZE > 10)
-# define FUSION_MAX_SET_SIZE 10
-# else
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# if !defined(FUSION_MAX_SET_SIZE)
 # define FUSION_MAX_SET_SIZE FUSION_MAX_VECTOR_SIZE
+# else
+# if FUSION_MAX_SET_SIZE < 3
+# undef FUSION_MAX_SET_SIZE
+# if (FUSION_MAX_VECTOR_SIZE > 10)
+# define FUSION_MAX_SET_SIZE 10
+# else
+# define FUSION_MAX_SET_SIZE FUSION_MAX_VECTOR_SIZE
+# endif
+# endif
 # endif
-# endif
 #endif
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,33 +1,46 @@
 /*=============================================================================
     Copyright (c) 2005 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_SET_09162005_1104)
-#define FUSION_SET_09162005_1104
 
-#include <boost/fusion/support/sequence_base.hpp>
-#include <boost/fusion/support/category_of.hpp>
-#include <boost/fusion/support/detail/access.hpp>
+#ifndef BOOST_FUSION_CONTAINER_SET_SET_HPP
+#define BOOST_FUSION_CONTAINER_SET_SET_HPP
+
 #include <boost/fusion/container/set/set_fwd.hpp>
-#include <boost/fusion/container/set/detail/lookup_key.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/ref.hpp>
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/set/detail/pp/lookup_key.hpp>
+#endif
 #include <boost/fusion/container/set/detail/begin_impl.hpp>
 #include <boost/fusion/container/set/detail/end_impl.hpp>
 #include <boost/fusion/container/set/detail/at_key_impl.hpp>
 #include <boost/fusion/container/set/detail/value_at_key_impl.hpp>
-#include <boost/fusion/container/vector/vector.hpp>
-#include <boost/mpl/identity.hpp>
+
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/contains.hpp>
+#include <boost/mpl/find.hpp>
+#include <boost/mpl/distance.hpp>
+#include <boost/mpl/begin.hpp>
 #include <boost/mpl/bool.hpp>
+#include <boost/mpl/identity.hpp>
 
 namespace boost { namespace fusion
 {
- struct void_;
     struct set_tag;
     struct fusion_sequence_tag;
+#ifndef BOOST_NO_VARIADIC_TEMPLATES
+ struct void_;
+#endif
 
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_SET_SIZE, typename T)>
- struct set : sequence_base<set<BOOST_PP_ENUM_PARAMS(FUSION_MAX_SET_SIZE, T)> >
+ VARIADIC_TEMPLATE(FUSION_MAX_SET_SIZE)
+ struct set
+ : sequence_base<set<EXPAND_ARGUMENTS(FUSION_MAX_SET_SIZE)> >
     {
         struct category : forward_traversal_tag, associative_sequence_tag {};
 
@@ -35,35 +48,132 @@
         typedef fusion_sequence_tag tag; // this gets picked up by MPL
         typedef mpl::false_ is_view;
 
- typedef vector<
- BOOST_PP_ENUM_PARAMS(FUSION_MAX_SET_SIZE, T)>
- storage_type;
-
+ typedef vector<EXPAND_ARGUMENTS(FUSION_MAX_SET_SIZE)> storage_type;
         typedef typename storage_type::size size;
 
+#ifndef BOOST_NO_VARIADIC_TEMPLATES
+ //TODO cschmidt: enable for non-variadic templates version?
+ template <typename Key>
+ struct meta_at_impl
+ {
+ typedef typename
+ mpl::if_<
+ typename mpl::contains<
+ typename storage_type::types
+ , Key
+ >::type,
+ Key,
+ void_
+ >::type
+ type;
+ };
+
+ template <typename Key>
+ struct meta_find_impl
+ {
+ typedef
+ vector_iterator<
+ storage_type&
+ , mpl::distance<
+ typename mpl::begin<typename storage_type::types>::type
+ , typename mpl::find<
+ typename storage_type::types
+ , Key
+ >::type
+ >::value
+ >
+ type;
+ };
+
+ template <typename Key>
+ struct meta_find_impl_const
+ {
+ typedef
+ vector_iterator<
+ storage_type const&
+ , mpl::distance<
+ typename mpl::begin<typename storage_type::types>::type
+ , typename mpl::find<
+ typename storage_type::types
+ , Key
+ >::type
+ >::value
+ >
+ type;
+ };
+#endif
+
         set()
             : data() {}
-
- template <typename Sequence>
- set(Sequence const& rhs)
- : data(rhs) {}
 
- #include <boost/fusion/container/set/detail/set_forward_ctor.hpp>
- #include <boost/fusion/container/set/detail/set_lookup.hpp>
+ template<typename Set>
+ set(BOOST_FUSION_R_ELSE_CLREF(Set) set_,
+ typename enable_if<is_convertible<
+ typename detail::remove_reference<Set>::type*
+ , set const volatile*> >::type* =NULL)
+ : data(BOOST_FUSION_FORWARD(Set,set_).data)
+ {
+ }
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+ template <typename Arg>
+ set(BOOST_FUSION_R_ELSE_CLREF(Arg) arg)
+ : data(BOOST_FUSION_FORWARD(Arg,arg))
+ {}
+
+# include <boost/fusion/container/set/detail/pp/set_forward_ctor.hpp>
+# include <boost/fusion/container/set/detail/pp/set_lookup.hpp>
+#else
+ template <typename... OtherArguments>
+ set(BOOST_FUSION_R_ELSE_CLREF(OtherArguments)... other_arguments)
+ : data(BOOST_FUSION_FORWARD(OtherArguments,other_arguments)...)
+ {}
+#endif
 
         template <typename T>
         set&
- operator=(T const& rhs)
+ operator=(BOOST_FUSION_R_ELSE_CLREF(T) rhs)
         {
- data = rhs;
+ data = BOOST_FUSION_FORWARD(T, rhs);
             return *this;
         }
 
+#ifndef BOOST_NO_VARIADIC_TEMPLATES
+ template <typename Key>
+ typename meta_find_impl_const<Key>::type
+ find_impl(mpl::identity<Key>) const
+ {
+ return typename meta_find_impl_const<Key>::type(data);
+ }
+
+ template <typename Key>
+ typename meta_find_impl<Key>::type
+ find_impl(mpl::identity<Key>)
+ {
+ return typename meta_find_impl<Key>::type(data);
+ }
+
+ template <class Key>
+ typename add_reference<Key>::type
+ at_impl(mpl::identity<Key>)
+ {
+ return data.at_impl(typename meta_find_impl<Key>::type::index());
+ }
+
+ template <class Key>
+ typename add_reference<typename add_const<Key>::type>::type
+ at_impl(mpl::identity<Key>) const
+ {
+ return data.at_impl(
+ typename meta_find_impl_const<Key>::type::index());
+ }
+#endif
+
         storage_type& get_data() { return data; }
         storage_type const& get_data() const { return data; }
 
     private:
-
+
         storage_type data;
     };
 }}

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/set/set_fwd.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/set/set_fwd.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/set_fwd.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,23 +1,19 @@
 /*=============================================================================
     Copyright (c) 2005 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_SET_FORWARD_09162005_1102)
-#define FUSION_SET_FORWARD_09162005_1102
+
+#ifndef BOOST_FUSION_CONTAINER_SET_SET_FWD_HPP
+#define BOOST_FUSION_CONTAINER_SET_SET_FWD_HPP
 
 #include <boost/fusion/container/set/limits.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/fusion/support/template.hpp>
 
 namespace boost { namespace fusion
 {
- struct void_;
-
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_SET_SIZE, typename T, void_)
- >
+ VARIADIC_TEMPLATE_WITH_DEFAULT(FUSION_MAX_SET_SIZE)
     struct set;
 }}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_SEQUENCE_CLASS_VECTOR_10022005_0602)
-#define FUSION_SEQUENCE_CLASS_VECTOR_10022005_0602
+
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_HPP
 
 #include <boost/fusion/container/vector/limits.hpp>
 #include <boost/fusion/container/vector/vector10.hpp>
@@ -14,8 +15,6 @@
 #include <boost/fusion/container/vector/vector40.hpp>
 #include <boost/fusion/container/vector/vector50.hpp>
 #include <boost/fusion/container/vector/vector.hpp>
-#include <boost/fusion/container/vector/vector_fwd.hpp>
-#include <boost/fusion/container/vector/vector_iterator.hpp>
 #include <boost/fusion/container/vector/convert.hpp>
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/convert.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/convert.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/convert.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,14 +4,13 @@
     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_CONVERT_09222005_1104)
-#define FUSION_CONVERT_09222005_1104
 
-#include <boost/fusion/container/vector/detail/as_vector.hpp>
-#include <boost/fusion/container/vector/detail/convert_impl.hpp>
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_CONVERT_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_CONVERT_HPP
+
 #include <boost/fusion/container/vector/vector.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/container/vector/detail/convert_impl.hpp>
+#include <boost/fusion/support/ref.hpp>
 
 namespace boost { namespace fusion
 {
@@ -20,28 +19,25 @@
         template <typename Sequence>
         struct as_vector
         {
- typedef typename detail::as_vector<result_of::size<Sequence>::value> gen;
- typedef typename gen::
- template apply<typename result_of::begin<Sequence>::type>::type
- type;
+ typedef typename
+ extension::convert_impl<vector_tag>::
+ template apply<typename detail::add_lref<Sequence>::type>
+ gen;
+
+ typedef typename gen::type type;
         };
     }
 
- template <typename Sequence>
- inline typename result_of::as_vector<Sequence>::type
- as_vector(Sequence& seq)
+ template <typename Sequence> inline typename
+ result_of::as_vector<BOOST_FUSION_R_ELSE_CLREF(Sequence)>::type
+ as_vector(BOOST_FUSION_R_ELSE_CLREF(Sequence) seq)
     {
- typedef typename result_of::as_vector<Sequence>::gen gen;
- return gen::call(fusion::begin(seq));
+ typedef typename
+ result_of::as_vector<BOOST_FUSION_R_ELSE_CLREF(Sequence)>::gen
+ gen;
+ return gen::call(seq);
     }
 
- template <typename Sequence>
- inline typename result_of::as_vector<Sequence const>::type
- as_vector(Sequence const& seq)
- {
- typedef typename result_of::as_vector<Sequence const>::gen gen;
- return gen::call(fusion::begin(seq));
- }
 }}
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/advance_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/advance_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/advance_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,16 +1,16 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_ADVANCE_IMPL_09172005_1156)
-#define FUSION_ADVANCE_IMPL_09172005_1156
+
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_DETAIL_ADVANCE_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_ADVANCE_IMPL_HPP
 
 namespace boost { namespace fusion
 {
     struct vector_iterator_tag;
-
     template <typename Vector, int N>
     struct vector_iterator;
 
@@ -18,21 +18,25 @@
     {
         template <typename Tag>
         struct advance_impl;
-
+
         template <>
         struct advance_impl<vector_iterator_tag>
         {
             template <typename Iterator, typename N>
             struct apply
             {
- typedef typename Iterator::index index;
- typedef typename Iterator::vector vector;
+ typedef typename
+ detail::remove_reference<Iterator>::type::index
+ index;
+ typedef typename
+ detail::remove_reference<Iterator>::type::vector
+ vector;
                 typedef vector_iterator<vector, index::value+N::value> type;
-
+
                 static type
- call(Iterator const& i)
+ call(Iterator i)
                 {
- return type(i.vec);
+ return type(BOOST_FUSION_FORWARD(vector,i.vec));
                 }
             };
         };

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/as_vector.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/as_vector.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,101 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_PP_IS_ITERATING
-#if !defined(FUSION_AS_VECTOR_09222005_0950)
-#define FUSION_AS_VECTOR_09222005_0950
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-#include <boost/preprocessor/repetition/repeat.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/inc.hpp>
-#include <boost/preprocessor/dec.hpp>
-#include <boost/fusion/container/vector/vector.hpp>
-#include <boost/fusion/iterator/value_of.hpp>
-#include <boost/fusion/iterator/deref.hpp>
-#include <boost/fusion/iterator/next.hpp>
-
-namespace boost { namespace fusion { namespace detail
-{
- template <int size>
- struct as_vector;
-
- template <>
- struct as_vector<0>
- {
- template <typename Iterator>
- struct apply
- {
- typedef vector<> type;
- };
-
- template <typename Iterator>
- static typename apply<Iterator>::type
- call(Iterator)
- {
- return vector<>();
- }
- };
-
-#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
- typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(I, BOOST_PP_INC(n));
-
-#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \
- typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \
- BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n));
-
-#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \
- typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
- BOOST_PP_CAT(T, n);
-
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/as_vector.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
-#include BOOST_PP_ITERATE()
-
-#undef BOOST_FUSION_NEXT_ITERATOR
-#undef BOOST_FUSION_NEXT_CALL_ITERATOR
-#undef BOOST_FUSION_VALUE_OF_ITERATOR
-
-}}}
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
- template <>
- struct as_vector<N>
- {
- template <typename I0>
- struct apply
- {
- BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
- BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
- typedef vector<BOOST_PP_ENUM_PARAMS(N, T)> type;
- };
-
- template <typename Iterator>
- static typename apply<Iterator>::type
- call(Iterator const& i0)
- {
- typedef apply<Iterator> gen;
- typedef typename gen::type result;
- BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _)
- return result(BOOST_PP_ENUM_PARAMS(N, *i));
- }
- };
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/at_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,16 +1,15 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_AT_IMPL_05042005_0741)
-#define FUSION_AT_IMPL_05042005_0741
 
-#include <boost/fusion/support/detail/access.hpp>
-#include <boost/type_traits/is_const.hpp>
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_DETAIL_AT_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_AT_IMPL_HPP
+
 #include <boost/mpl/at.hpp>
-#include <boost/mpl/int.hpp>
+#include <boost/mpl/eval_if.hpp>
 
 namespace boost { namespace fusion
 {
@@ -25,19 +24,21 @@
         struct at_impl<vector_tag>
         {
             template <typename Sequence, typename N>
- struct apply
+ struct apply
             {
- typedef mpl::at<typename Sequence::types, N> element;
                 typedef typename
- mpl::eval_if<
- is_const<Sequence>
- , detail::cref_result<element>
- , detail::ref_result<element>
+ mpl::at<
+ typename detail::remove_reference<Sequence>::type::types
+ , N
>::type
+ element;
+
+ typedef typename
+ detail::result_of_forward_as<Sequence,element>::type
                 type;
-
+
                 static type
- call(Sequence& v)
+ call(Sequence v)
                 {
                     return v.at_impl(N());
                 }

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/begin_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/begin_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/begin_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,18 +1,15 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_BEGIN_IMPL_05042005_1136)
-#define FUSION_BEGIN_IMPL_05042005_1136
 
-#include <boost/fusion/container/vector/vector_iterator.hpp>
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_DETAIL_BEGIN_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_BEGIN_IMPL_HPP
 
 namespace boost { namespace fusion
 {
- struct vector_tag;
-
     namespace extension
     {
         template <typename Tag>
@@ -22,14 +19,14 @@
         struct begin_impl<vector_tag>
         {
             template <typename Sequence>
- struct apply
+ struct apply
             {
                 typedef vector_iterator<Sequence, 0> type;
-
+
                 static type
- call(Sequence& v)
+ call(Sequence v)
                 {
- return type(v);
+ return type(BOOST_FUSION_FORWARD(Sequence,v));
                 }
             };
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/convert_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/convert_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/convert_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,17 +1,18 @@
-/*=============================================================================
- Copyright (c) 2001-2006 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(FUSION_CONVERT_IMPL_09222005_1104)
-#define FUSION_CONVERT_IMPL_09222005_1104
-
-#include <boost/fusion/container/vector/detail/as_vector.hpp>
-#include <boost/fusion/container/vector/vector.hpp>
-#include <boost/fusion/sequence/intrinsic/begin.hpp>
-#include <boost/fusion/sequence/intrinsic/size.hpp>
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_VECTOR_CONVERT_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_CONVERT_IMPL_HPP
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/sequence/intrinsic/begin.hpp>
+# include <boost/fusion/sequence/intrinsic/size.hpp>
+# include <boost/fusion/container/vector/detail/pp/as_vector.hpp>
+#else
+# include <boost/fusion/container/vector/detail/variadic_templates/as_vector_impl.hpp>
+#endif
 
 namespace boost { namespace fusion
 {
@@ -28,15 +29,28 @@
             template <typename Sequence>
             struct apply
             {
- typedef typename detail::as_vector<result_of::size<Sequence>::value> gen;
- typedef typename gen::
- template apply<typename result_of::begin<Sequence>::type>::type
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+ typedef typename
+ detail::as_vector<result_of::size<Sequence>::value>
+ gen;
+ typedef typename gen::template apply<
+ typename result_of::begin<Sequence>::type>::type
                 type;
 
- static type call(Sequence& seq)
+ static type call(Sequence seq)
                 {
- return gen::call(fusion::begin(seq));
+ return gen::call(
+ fusion::begin(BOOST_FUSION_FORWARD(Sequence,seq)));
                 }
+#else
+ typedef typename detail::as_vector_impl<Sequence> gen;
+ typedef typename gen::apply::type type;
+
+ static type call(Sequence seq)
+ {
+ return gen::call(seq);
+ }
+#endif
             };
         };
     }

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/deref_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/deref_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/deref_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,15 +1,16 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_DEREF_IMPL_05042005_1037)
-#define FUSION_DEREF_IMPL_05042005_1037
 
-#include <boost/mpl/at.hpp>
-#include <boost/fusion/support/detail/access.hpp>
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_DETAIL_DEREF_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_DEREF_IMPL_HPP
+
 #include <boost/type_traits/is_const.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/eval_if.hpp>
 
 namespace boost { namespace fusion
 {
@@ -24,24 +25,24 @@
         struct deref_impl<vector_iterator_tag>
         {
             template <typename Iterator>
- struct apply
+ struct apply
             {
- typedef typename Iterator::vector vector;
- typedef typename Iterator::index index;
- typedef typename mpl::at<
- typename vector::types, index>
- element;
-
+ typedef typename detail::remove_reference<Iterator>::type iterator;
+ typedef typename iterator::vector vector;
+ typedef typename iterator::index index;
                 typedef typename
- mpl::eval_if<
- is_const<vector>
- , fusion::detail::cref_result<element>
- , fusion::detail::ref_result<element>
+ mpl::at<
+ typename detail::remove_reference<vector>::type::types
+ , index
>::type
+ element;
+
+ typedef typename
+ detail::result_of_forward_as<vector,element>::type
                 type;
 
                 static type
- call(Iterator const& i)
+ call(Iterator i)
                 {
                     return i.vec.at_impl(index());
                 }

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/distance_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/distance_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/distance_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,11 +1,12 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_DISTANCE_IMPL_09172005_0751)
-#define FUSION_DISTANCE_IMPL_09172005_0751
+
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_DETAIL_DISTANCE_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_DISTANCE_IMPL_HPP
 
 #include <boost/mpl/minus.hpp>
 
@@ -22,17 +23,14 @@
         struct distance_impl<vector_iterator_tag>
         {
             template <typename First, typename Last>
- struct apply : mpl::minus<typename Last::index, typename First::index>
- {
- static typename mpl::minus<
- typename Last::index, typename First::index>::type
- call(First const&, Last const&)
- {
- typedef typename mpl::minus<
- typename Last::index, typename First::index>::type
- result;
- return result();
- }
+ struct apply
+ {
+ typedef typename
+ mpl::minus<
+ typename detail::remove_reference<Last>::type::index
+ , typename detail::remove_reference<First>::type::index
+ >::type
+ type;
             };
         };
     }

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/end_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/end_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/end_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,18 +1,15 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_END_IMPL_05042005_1142)
-#define FUSION_END_IMPL_05042005_1142
 
-#include <boost/fusion/container/vector/vector_iterator.hpp>
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_DETAIL_END_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_END_IMPL_HPP
 
 namespace boost { namespace fusion
 {
- struct vector_tag;
-
     namespace extension
     {
         template <typename Tag>
@@ -22,15 +19,17 @@
         struct end_impl<vector_tag>
         {
             template <typename Sequence>
- struct apply
+ struct apply
             {
- typedef typename Sequence::size size;
+ typedef typename
+ detail::remove_reference<Sequence>::type::size
+ size;
                 typedef vector_iterator<Sequence, size::value> type;
-
+
                 static type
- call(Sequence& v)
+ call(Sequence v)
                 {
- return type(v);
+ return type(BOOST_FUSION_FORWARD(Sequence,v));
                 }
             };
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/equal_to_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/equal_to_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/equal_to_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,15 +1,14 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_EQUAL_TO_IMPL_05052005_1215)
-#define FUSION_EQUAL_TO_IMPL_05052005_1215
+
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_DETAIL_EQUAL_TO_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_EQUAL_TO_IMPL_HPP
 
 #include <boost/type_traits/is_same.hpp>
-#include <boost/mpl/equal_to.hpp>
-#include <boost/mpl/and.hpp>
 
 namespace boost { namespace fusion
 {
@@ -24,10 +23,10 @@
         struct equal_to_impl<vector_iterator_tag>
         {
             template <typename I1, typename I2>
- struct apply
- : is_same<
- typename I1::identity
- , typename I2::identity
+ struct apply
+ : is_same<
+ typename detail::remove_reference<I1>::type::identity
+ , typename detail::remove_reference<I2>::type::identity
>
             {
             };
@@ -36,4 +35,3 @@
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/next_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/next_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/next_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,17 +1,17 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_NEXT_IMPL_05042005_1058)
-#define FUSION_NEXT_IMPL_05042005_1058
 
-#include <boost/fusion/container/vector/vector_iterator.hpp>
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_DETAIL_NEXT_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_NEXT_IMPL_HPP
 
 namespace boost { namespace fusion
 {
     struct vector_iterator_tag;
+
     template <typename Vector, int N>
     struct vector_iterator;
 
@@ -24,14 +24,18 @@
         struct next_impl<vector_iterator_tag>
         {
             template <typename Iterator>
- struct apply
+ struct apply
             {
- typedef typename Iterator::vector vector;
- typedef typename Iterator::index index;
+ typedef typename
+ detail::remove_reference<Iterator>::type::vector
+ vector;
+ typedef typename
+ detail::remove_reference<Iterator>::type::index
+ index;
                 typedef vector_iterator<vector, index::value+1> type;
 
                 static type
- call(Iterator const& i)
+ call(Iterator i)
                 {
                     return type(i.vec);
                 }

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/as_vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/as_vector.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,101 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_VECTOR_DETAIL_PP_AS_VECTOR_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_AS_VECTOR_HPP
+#define FUSION_AS_VECTOR_09222005_0950
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/inc.hpp>
+#include <boost/preprocessor/dec.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <int size>
+ struct as_vector;
+
+ template <>
+ struct as_vector<0>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef vector0 type;
+ };
+
+ template <typename Iterator>
+ static typename apply<Iterator>::type
+ call(Iterator)
+ {
+ return vector0();
+ }
+ };
+
+#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
+ typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
+ BOOST_PP_CAT(I, BOOST_PP_INC(n));
+
+#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \
+ typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \
+ BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n));
+
+#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \
+ typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
+ BOOST_PP_CAT(T, n);
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/pp/as_vector.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_NEXT_ITERATOR
+#undef BOOST_FUSION_NEXT_CALL_ITERATOR
+#undef BOOST_FUSION_VALUE_OF_ITERATOR
+
+}}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ template <>
+ struct as_vector<N>
+ {
+ template <typename I0>
+ struct apply
+ {
+ BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
+ BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
+ typedef BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> type;
+ };
+
+ template <typename Iterator>
+ static typename apply<Iterator>::type
+ call(Iterator const& i0)
+ {
+ typedef apply<Iterator> gen;
+ typedef typename gen::type result;
+ BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _)
+ return result(BOOST_PP_ENUM_PARAMS(N, fusion::deref(i)));
+ }
+ };
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_forward_ctor.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_forward_ctor.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_VECTOR_DETAIL_PP_VECTOR_FORWARD_CTOR_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_VECTOR_FORWARD_CTOR_HPP
+#define FUSION_VECTOR_FORWARD_CTOR_07122005_1123
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+#define BOOST_PP_FILENAME_1 \
+ <boost/fusion/container/vector/detail/vector_forward_ctor.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
+#include BOOST_PP_ITERATE()
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+#if N == 1
+ explicit
+#endif
+ vector(BOOST_PP_ENUM_BINARY_PARAMS(
+ N, typename detail::call_param<T, >::type _))
+ : vec(BOOST_PP_ENUM_PARAMS(N, _)) {}
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,150 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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)
+==============================================================================*/
+// No include guard. This file is meant to be included many times
+
+#if !defined(FUSION_MACRO_05042005)
+#define FUSION_MACRO_05042005
+
+#define FUSION_MEMBER_DEFAULT_INIT(z, n, _) m##n(T##n())
+#define FUSION_MEMBER_INIT(z, n, _) m##n(_##n)
+#define FUSION_COPY_INIT(z, n, _) m##n(other.m##n)
+#define FUSION_MEMBER_DECL(z, n, _) T##n m##n;
+
+#define FUSION_MEMBER_ASSIGN(z, n, _) \
+ this->BOOST_PP_CAT(m, n) = vec.BOOST_PP_CAT(m, n);
+
+#define FUSION_DEREF_MEMBER_ASSIGN(z, n, _) \
+ this->BOOST_PP_CAT(m, n) = *BOOST_PP_CAT(i, n);
+
+#define FUSION_AT_IMPL(z, n, _) \
+ typename add_reference<T##n>::type \
+ at_impl(mpl::int_<n>) { return this->m##n; } \
+ typename add_reference<typename add_const<T##n>::type>::type \
+ at_impl(mpl::int_<n>) const { return this->m##n; }
+
+#define FUSION_ITER_DECL_VAR(z, n, _) \
+ typedef typename result_of::next< \
+ BOOST_PP_CAT(I, BOOST_PP_DEC(n))>::type BOOST_PP_CAT(I, n); \
+ BOOST_PP_CAT(I, n) BOOST_PP_CAT(i, n) \
+ = fusion::next(BOOST_PP_CAT(i, BOOST_PP_DEC(n)));
+
+#endif
+
+#define N BOOST_PP_ITERATION()
+
+ template <typename Derived, BOOST_PP_ENUM_PARAMS(N, typename T)>
+ struct BOOST_PP_CAT(vector_data, N) : sequence_base<Derived>
+ {
+ BOOST_PP_CAT(vector_data, N)()
+ : BOOST_PP_ENUM(N, FUSION_MEMBER_DEFAULT_INIT, _) {}
+
+ BOOST_PP_CAT(vector_data, N)(
+ BOOST_PP_ENUM_BINARY_PARAMS(
+ N, typename detail::call_param<T, >::type _))
+ : BOOST_PP_ENUM(N, FUSION_MEMBER_INIT, _) {}
+
+ BOOST_PP_CAT(vector_data, N)(
+ BOOST_PP_CAT(vector_data, N) const& other)
+ : BOOST_PP_ENUM(N, FUSION_COPY_INIT, _) {}
+
+ BOOST_PP_CAT(vector_data, N)&
+ operator=(BOOST_PP_CAT(vector_data, N) const& vec)
+ {
+ BOOST_PP_REPEAT(N, FUSION_MEMBER_ASSIGN, _)
+ return *this;
+ }
+
+ template <typename Sequence>
+ static BOOST_PP_CAT(vector_data, N)
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_ITER_DECL_VAR, _)
+ return BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_PARAMS(N, fusion::deref(i)));
+ }
+
+ BOOST_PP_REPEAT(N, FUSION_MEMBER_DECL, _)
+ };
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ struct BOOST_PP_CAT(vector, N)
+ : BOOST_PP_CAT(vector_data, N)<
+ BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)>
+ , BOOST_PP_ENUM_PARAMS(N, T)>
+ {
+ typedef BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> this_type;
+ typedef BOOST_PP_CAT(vector_data, N)<this_type, BOOST_PP_ENUM_PARAMS(N, T)> base_type;
+ typedef mpl::BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag; // this gets picked up by MPL
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<N> size;
+
+ BOOST_PP_CAT(vector, N)() {}
+
+#if (N == 1)
+ explicit
+#endif
+ BOOST_PP_CAT(vector, N)(
+ BOOST_PP_ENUM_BINARY_PARAMS(
+ N, typename detail::call_param<T, >::type _))
+ : base_type(BOOST_PP_ENUM_PARAMS(N, _)) {}
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename U)>
+ BOOST_PP_CAT(vector, N)(
+ BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, U)> const& vec)
+ : base_type(BOOST_PP_ENUM_PARAMS(N, vec.m)) {}
+
+ template <typename Sequence>
+ BOOST_PP_CAT(vector, N)(
+ Sequence const& seq
+#if (N == 1)
+ , typename disable_if<is_convertible<Sequence, T0> >::type* dummy = 0
+#endif
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename U)>
+ BOOST_PP_CAT(vector, N)&
+ operator=(BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, U)> const& vec)
+ {
+ BOOST_PP_REPEAT(N, FUSION_MEMBER_ASSIGN, _)
+ return *this;
+ }
+
+ template <typename Sequence>
+ typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_ITER_DECL_VAR, _)
+ BOOST_PP_REPEAT(N, FUSION_DEREF_MEMBER_ASSIGN, _)
+ return *this;
+ }
+
+ BOOST_PP_REPEAT(N, FUSION_AT_IMPL, _)
+
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I i)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I i) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+
+#undef N
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n_chooser.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector_n_chooser.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,100 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ 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_CONTAINER_VECTOR_DETAIL_PP_VECTOR_N_CHOOSER_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_VECTOR_N_CHOOSER_HPP
+#define FUSION_VECTOR_N_CHOOSER_07072005_1248
+
+#include <boost/fusion/container/vector/limits.hpp>
+
+// include vector0..N where N is FUSION_MAX_VECTOR_SIZE
+#include <boost/fusion/container/vector/vector10.hpp>
+#if (FUSION_MAX_VECTOR_SIZE > 10)
+#include <boost/fusion/container/vector/vector20.hpp>
+#endif
+#if (FUSION_MAX_VECTOR_SIZE > 20)
+#include <boost/fusion/container/vector/vector30.hpp>
+#endif
+#if (FUSION_MAX_VECTOR_SIZE > 30)
+#include <boost/fusion/container/vector/vector40.hpp>
+#endif
+#if (FUSION_MAX_VECTOR_SIZE > 40)
+#include <boost/fusion/container/vector/vector50.hpp>
+#endif
+
+#include <boost/mpl/distance.hpp>
+#include <boost/mpl/find.hpp>
+#include <boost/mpl/begin_end.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+}}
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <int N>
+ struct get_vector_n;
+
+ template <>
+ struct get_vector_n<0>
+ {
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename T)>
+ struct call
+ {
+ typedef vector0 type;
+ };
+ };
+
+#define BOOST_PP_FILENAME_1 \
+ <boost/fusion/container/vector/detail/vector_n_chooser.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
+#include BOOST_PP_ITERATE()
+
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename T)>
+ struct vector_n_chooser
+ {
+ typedef
+ mpl::BOOST_PP_CAT(vector, FUSION_MAX_VECTOR_SIZE)
+ <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)>
+ input;
+
+ typedef typename mpl::begin<input>::type begin;
+ typedef typename mpl::find<input, void_>::type end;
+ typedef typename mpl::distance<begin, end>::type size;
+
+ typedef typename get_vector_n<size::value>::template
+ call<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)>::type
+ type;
+ };
+}}}
+
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+#else // defined(BOOST_PP_IS_ITERATING)
+
+#define N BOOST_PP_ITERATION()
+
+ template <>
+ struct get_vector_n<N>
+ {
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename T)>
+ struct call
+ {
+ typedef BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> type;
+ };
+ };
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/prior_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/prior_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/prior_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,13 +1,12 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_PRIOR_IMPL_05042005_1145)
-#define FUSION_PRIOR_IMPL_05042005_1145
 
-#include <boost/fusion/container/vector/vector_iterator.hpp>
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PRIOR_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PRIOR_IMPL_HPP
 
 namespace boost { namespace fusion
 {
@@ -24,16 +23,20 @@
         struct prior_impl<vector_iterator_tag>
         {
             template <typename Iterator>
- struct apply
+ struct apply
             {
- typedef typename Iterator::vector vector;
- typedef typename Iterator::index index;
+ typedef typename
+ detail::remove_reference<Iterator>::type::vector
+ vector;
+ typedef typename
+ detail::remove_reference<Iterator>::type::index
+ index;
                 typedef vector_iterator<vector, index::value-1> type;
 
                 static type
- call(Iterator const& i)
+ call(Iterator i)
                 {
- return type(i.vec);
+ return type(BOOST_FUSION_FORWARD(vector,i.vec));
                 }
             };
         };

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/value_at_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/value_at_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/value_at_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,11 +1,12 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_VALUE_AT_IMPL_05052005_0232)
-#define FUSION_VALUE_AT_IMPL_05052005_0232
+
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_DETAIL_VALUE_AT_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_VALUE_AT_IMPL_HPP
 
 #include <boost/mpl/at.hpp>
 
@@ -22,9 +23,13 @@
         struct value_at_impl<vector_tag>
         {
             template <typename Sequence, typename N>
- struct apply
+ struct apply
             {
- typedef typename mpl::at<typename Sequence::types, N>::type type;
+ typedef typename
+ mpl::at<
+ typename detail::remove_reference<Sequence>::type::types, N
+ >::type
+ type;
             };
         };
     }

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/value_of_impl.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/value_of_impl.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/value_of_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,11 +1,12 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_VALUE_OF_IMPL_05052005_1128)
-#define FUSION_VALUE_OF_IMPL_05052005_1128
+
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_DETAIL_VALUE_OF_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_VALUE_OF_IMPL_HPP
 
 #include <boost/mpl/at.hpp>
 
@@ -22,12 +23,19 @@
         struct value_of_impl<vector_iterator_tag>
         {
             template <typename Iterator>
- struct apply
+ struct apply
             {
- typedef typename Iterator::vector vector;
- typedef typename Iterator::index index;
- typedef typename mpl::at<
- typename vector::types, index>::type
+ typedef typename
+ detail::remove_reference<Iterator>::type::vector
+ vector;
+ typedef typename
+ detail::remove_reference<Iterator>::type::index
+ index;
+ typedef typename
+ mpl::at<
+ typename detail::remove_reference<vector>::type::types
+ , index
+ >::type
                 type;
             };
         };

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/as_vector_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/as_vector_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,42 @@
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_VECTOR_AS_VECTOR_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_AS_VECTOR_HPP
+
+#include <boost/fusion/mpl/begin.hpp>
+#include <boost/fusion/mpl/end.hpp>
+#include <boost/fusion/support/variadic_templates/variadic_quote.hpp>
+#include <boost/fusion/support/to_random_access_mpl_seq.hpp>
+
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/unpack_args.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template<typename Sequence>struct as_vector_impl
+ {
+ struct apply
+ {
+ typedef typename
+ mpl::apply<
+ mpl::unpack_args<variadic_quote<vector> >
+ , typename detail::to_random_access_mpl_seq<
+ typename detail::remove_reference<Sequence>::type
+ >::type
+ >::type
+ type;
+ };
+
+ static typename apply::type
+ call(Sequence sequence)
+ {
+ return typename apply::type(
+ sequence_assign(BOOST_FUSION_FORWARD(Sequence,sequence)));
+ }
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector_impl.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,226 @@
+// Copyright Christopher Schmidt 2009.
+// 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_CONTAINER_VECTOR_VECTOR_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_VECTOR_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/support/variadic_templates/variadic_arguments_to_vector.hpp>
+#include <boost/fusion/support/sequence_assign.hpp>
+#include <boost/fusion/support/assign_tags.hpp>
+
+#include <boost/mpl/int.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/utility/enable_if.hpp>
+
+#include <utility>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace detail
+ {
+ template<int Index,typename... Elements>
+ struct vector_impl;
+
+ template<int Index>
+ struct vector_impl<Index>
+ {
+ template<int,typename...>friend struct vector_impl;
+ template<typename...>friend struct fusion::vector;
+
+ protected:
+ typedef void_ head;
+
+ vector_impl()
+ {
+ }
+
+ vector_impl(assign_directly)
+ {
+ }
+
+ template<typename Iterator>
+ vector_impl(assign_by_deref,Iterator const&)
+ {
+ }
+
+ template<typename Iterator>
+ void
+ assign(Iterator const&)
+ {
+ }
+
+ void at_impl();
+ };
+
+ template<int Index,typename Head,typename... Others>
+ struct vector_impl<Index,Head,Others...>
+ : vector_impl<Index+1,Others...>
+ {
+ template<int,typename...>friend struct vector_impl;
+ template<typename...>friend struct fusion::vector;
+
+ private:
+ typedef vector_impl<Index+1,Others...> base;
+
+ public:
+ using base::at_impl;
+
+ protected:
+ typedef Head head;
+
+ private:
+ Head _element;
+
+ protected:
+ vector_impl():
+ _element()
+ {
+ }
+
+ template<typename Iterator>
+ vector_impl(assign_by_deref,Iterator const& iterator):
+ base(assign_by_deref(),fusion::next(iterator)),
+ _element(fusion::deref(iterator))
+ {
+ }
+
+ template<typename Iterator>
+ void
+ assign(Iterator const& iterator)
+ {
+ _element=fusion::deref(iterator);
+ static_cast<base*>(this)->assign(fusion::next(iterator));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ vector_impl(assign_directly,
+ typename detail::call_param<Head>::type head,
+ typename detail::call_param<OtherElements>::type... others)
+ : base(assign_directly(),assign_directly,others...),
+ , _element(head)
+ {
+ }
+#else
+ template<typename OtherHead,typename... OtherElements>
+ vector_impl(assign_directly,
+ OtherHead&& other_head,
+ OtherElements&&... other_elements)
+ : base(assign_directly(),
+ std::forward<OtherElements>(other_elements)...)
+ , _element(std::forward<OtherHead>(other_head))
+ {
+ }
+#endif
+
+ typename add_reference<Head>::type
+ at_impl(mpl::int_<Index>)
+ {
+ return _element;
+ }
+
+ typename add_reference<typename add_const<Head>::type>::type
+ at_impl(mpl::int_<Index>)const
+ {
+ return _element;
+ }
+ };
+ }
+
+ template<typename... Elements>struct vector
+ : sequence_base<vector<Elements...> >
+ , detail::vector_impl<0,Elements...>
+ {
+ private:
+ typedef detail::vector_impl<0,Elements...> base;
+
+ public:
+ typedef vector<Elements...> this_type;
+ typedef typename variadic_arguments_to_vector<Elements...>::type types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<sizeof...(Elements)> size;
+
+ vector()
+ {
+ }
+
+ template<typename Vec>
+ vector(BOOST_FUSION_R_ELSE_CLREF(Vec) vec,
+ typename enable_if<is_convertible<
+ typename detail::remove_reference<Vec>::type*
+ , vector const volatile*> >::type* =NULL)
+ : base(detail::assign_by_deref(),
+ fusion::begin(BOOST_FUSION_FORWARD(Vec,vec)))
+ {
+ }
+
+ template<typename SequenceAssign>
+ vector(BOOST_FUSION_R_ELSE_CLREF(SequenceAssign) seq,
+ typename enable_if<
+ is_sequence_assign<SequenceAssign> >::type* =NULL)
+ : base(detail::assign_by_deref(),fusion::begin(seq.get()))
+ {
+ }
+
+ /*
+ template<typename Sequence>
+ vector(typename enable_if_c<sizeof...(Elements)!=1,
+ BOOST_FUSION_R_ELSE_CLREF(Sequence)>::type seq)
+ : base(detail::assign_by_deref(),
+ fusion::begin(BOOST_FUSION_FORWARD(Sequence,seq.seq)))
+ {
+ }
+ */
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ vector(typename detail::call_param<Head>::type head,
+ typename detail::call_param<OtherElements>::type... others)
+ : base(assign_directly(),others...)
+ , _element(head)
+ {
+ }
+#else
+ template<typename... OtherElements>
+ vector(OtherElements&&... other_elements)
+ : base(detail::assign_directly(),
+ std::forward<OtherElements>(other_elements)...)
+ {
+ }
+#endif
+
+ template<typename Sequence>
+ vector&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Sequence) sequence)
+ {
+ static_cast<base*>(this)->assign(
+ fusion::begin(BOOST_FUSION_FORWARD(Sequence,sequence)));
+ return *this;
+ }
+
+ template<typename I>
+ typename mpl::at<types, I>::type&
+ at_impl(I)
+ {
+ return base::at_impl(mpl::int_<I::value>());
+ }
+
+ template<typename I>
+ typename add_const<typename mpl::at<types, I>::type>::type&
+ at_impl(I) const
+ {
+ return base::at_impl(mpl::int_<I::value>());
+ }
+ };
+
+}}
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector_n.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector_n.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,61 @@
+// Copyright Christopher Schmidt 2009.
+// 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)
+
+#define N BOOST_PP_ITERATION()
+
+//TODO cschmidt: template typedefs
+
+#if N != 0
+template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+#endif
+struct BOOST_PP_CAT(vector, N)
+ : vector<BOOST_PP_ENUM_PARAMS(N, T)>
+{
+private:
+ typedef vector<BOOST_PP_ENUM_PARAMS(N, T)> base;
+
+public:
+ BOOST_PP_CAT(vector, N)()
+ {
+ }
+
+ template<typename Arg>
+ BOOST_PP_CAT(vector, N)(BOOST_FUSION_R_ELSE_CLREF(Arg) arg)
+ : base(BOOST_FUSION_FORWARD(Arg,arg))
+ {
+ }
+
+#if N > 1
+# ifdef BOOST_NO_RVALUE_REFERENCES
+ BOOST_PP_CAT(vector, N)(BOOST_PP_ENUM_BINARY_PARAMS(
+ N, typename detail::call_param<T, >::type _))
+ : base(BOOST_PP_ENUM_PARAMS(N, _))
+ {
+ }
+# else
+# define FORWARD_ARGUMENT(Z, INDEX, _) std::forward<\
+ BOOST_PP_CAT(OtherT,INDEX)>(BOOST_PP_CAT(other,INDEX))
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename OtherT)>
+ BOOST_PP_CAT(vector, N)(BOOST_PP_ENUM_BINARY_PARAMS(N, OtherT,&& other))
+ : base(BOOST_PP_ENUM(N, FORWARD_ARGUMENT, _))
+ {
+ }
+
+# undef FORWARD_ARGUMENT
+# endif
+#endif
+
+ template<typename Sequence>
+ BOOST_PP_CAT(vector, N)&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Sequence) sequence)
+ {
+ *static_cast<base*>(this)=BOOST_FUSION_FORWARD(Sequence,sequence);
+ return *this;
+ }
+};
+
+#undef N
+

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/vector_forward_ctor.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/vector_forward_ctor.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,39 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_PP_IS_ITERATING
-#if !defined(FUSION_VECTOR_FORWARD_CTOR_07122005_1123)
-#define FUSION_VECTOR_FORWARD_CTOR_07122005_1123
-
-#include <boost/preprocessor/iterate.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-#include <boost/preprocessor/repetition/enum_binary_params.hpp>
-
-#define BOOST_PP_FILENAME_1 \
- <boost/fusion/container/vector/detail/vector_forward_ctor.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
-#include BOOST_PP_ITERATE()
-
-#endif
-#else // defined(BOOST_PP_IS_ITERATING)
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-
-#define N BOOST_PP_ITERATION()
-
-#if N == 1
- explicit
-#endif
- vector(BOOST_PP_ENUM_BINARY_PARAMS(
- N, typename detail::call_param<T, >::type _))
- : vec(BOOST_PP_ENUM_PARAMS(N, _)) {}
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)
-

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/vector_n.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/vector_n.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,150 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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)
-==============================================================================*/
-// No include guard. This file is meant to be included many times
-
-#if !defined(FUSION_MACRO_05042005)
-#define FUSION_MACRO_05042005
-
-#define FUSION_MEMBER_DEFAULT_INIT(z, n, _) m##n(T##n())
-#define FUSION_MEMBER_INIT(z, n, _) m##n(_##n)
-#define FUSION_COPY_INIT(z, n, _) m##n(other.m##n)
-#define FUSION_MEMBER_DECL(z, n, _) T##n m##n;
-
-#define FUSION_MEMBER_ASSIGN(z, n, _) \
- this->BOOST_PP_CAT(m, n) = vec.BOOST_PP_CAT(m, n);
-
-#define FUSION_DEREF_MEMBER_ASSIGN(z, n, _) \
- this->BOOST_PP_CAT(m, n) = *BOOST_PP_CAT(i, n);
-
-#define FUSION_AT_IMPL(z, n, _) \
- typename add_reference<T##n>::type \
- at_impl(mpl::int_<n>) { return this->m##n; } \
- typename add_reference<typename add_const<T##n>::type>::type \
- at_impl(mpl::int_<n>) const { return this->m##n; }
-
-#define FUSION_ITER_DECL_VAR(z, n, _) \
- typedef typename result_of::next< \
- BOOST_PP_CAT(I, BOOST_PP_DEC(n))>::type BOOST_PP_CAT(I, n); \
- BOOST_PP_CAT(I, n) BOOST_PP_CAT(i, n) \
- = fusion::next(BOOST_PP_CAT(i, BOOST_PP_DEC(n)));
-
-#endif
-
-#define N BOOST_PP_ITERATION()
-
- template <typename Derived, BOOST_PP_ENUM_PARAMS(N, typename T)>
- struct BOOST_PP_CAT(vector_data, N) : sequence_base<Derived>
- {
- BOOST_PP_CAT(vector_data, N)()
- : BOOST_PP_ENUM(N, FUSION_MEMBER_DEFAULT_INIT, _) {}
-
- BOOST_PP_CAT(vector_data, N)(
- BOOST_PP_ENUM_BINARY_PARAMS(
- N, typename detail::call_param<T, >::type _))
- : BOOST_PP_ENUM(N, FUSION_MEMBER_INIT, _) {}
-
- BOOST_PP_CAT(vector_data, N)(
- BOOST_PP_CAT(vector_data, N) const& other)
- : BOOST_PP_ENUM(N, FUSION_COPY_INIT, _) {}
-
- BOOST_PP_CAT(vector_data, N)&
- operator=(BOOST_PP_CAT(vector_data, N) const& vec)
- {
- BOOST_PP_REPEAT(N, FUSION_MEMBER_ASSIGN, _)
- return *this;
- }
-
- template <typename Sequence>
- static BOOST_PP_CAT(vector_data, N)
- init_from_sequence(Sequence const& seq)
- {
- typedef typename result_of::begin<Sequence const>::type I0;
- I0 i0 = fusion::begin(seq);
- BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_ITER_DECL_VAR, _)
- return BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_PARAMS(N, *i));
- }
-
- BOOST_PP_REPEAT(N, FUSION_MEMBER_DECL, _)
- };
-
- template <BOOST_PP_ENUM_PARAMS(N, typename T)>
- struct BOOST_PP_CAT(vector, N)
- : BOOST_PP_CAT(vector_data, N)<
- BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)>
- , BOOST_PP_ENUM_PARAMS(N, T)>
- {
- typedef BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> this_type;
- typedef BOOST_PP_CAT(vector_data, N)<this_type, BOOST_PP_ENUM_PARAMS(N, T)> base_type;
- typedef mpl::BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> types;
- typedef vector_tag fusion_tag;
- typedef fusion_sequence_tag tag; // this gets picked up by MPL
- typedef mpl::false_ is_view;
- typedef random_access_traversal_tag category;
- typedef mpl::int_<N> size;
-
- BOOST_PP_CAT(vector, N)() {}
-
-#if (N == 1)
- explicit
-#endif
- BOOST_PP_CAT(vector, N)(
- BOOST_PP_ENUM_BINARY_PARAMS(
- N, typename detail::call_param<T, >::type _))
- : base_type(BOOST_PP_ENUM_PARAMS(N, _)) {}
-
- template <BOOST_PP_ENUM_PARAMS(N, typename U)>
- BOOST_PP_CAT(vector, N)(
- BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, U)> const& vec)
- : base_type(BOOST_PP_ENUM_PARAMS(N, vec.m)) {}
-
- template <typename Sequence>
- BOOST_PP_CAT(vector, N)(
- Sequence const& seq
-#if (N == 1)
- , typename disable_if<is_convertible<Sequence, T0> >::type* dummy = 0
-#endif
- )
- : base_type(base_type::init_from_sequence(seq)) {}
-
- template <BOOST_PP_ENUM_PARAMS(N, typename U)>
- BOOST_PP_CAT(vector, N)&
- operator=(BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, U)> const& vec)
- {
- BOOST_PP_REPEAT(N, FUSION_MEMBER_ASSIGN, _)
- return *this;
- }
-
- template <typename Sequence>
- typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
- operator=(Sequence const& seq)
- {
- typedef typename result_of::begin<Sequence const>::type I0;
- I0 i0 = fusion::begin(seq);
- BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_ITER_DECL_VAR, _)
- BOOST_PP_REPEAT(N, FUSION_DEREF_MEMBER_ASSIGN, _)
- return *this;
- }
-
- BOOST_PP_REPEAT(N, FUSION_AT_IMPL, _)
-
- template<typename I>
- typename add_reference<typename mpl::at<types, I>::type>::type
- at_impl(I i)
- {
- return this->at_impl(mpl::int_<I::value>());
- }
-
- template<typename I>
- typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
- at_impl(I i) const
- {
- return this->at_impl(mpl::int_<I::value>());
- }
- };
-
-#undef N
-

Deleted: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/vector_n_chooser.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/vector_n_chooser.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,99 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2006 Joel de Guzman
-
- 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_PP_IS_ITERATING
-#if !defined(FUSION_VECTOR_N_CHOOSER_07072005_1248)
-#define FUSION_VECTOR_N_CHOOSER_07072005_1248
-
-#include <boost/fusion/container/vector/limits.hpp>
-
-// include vector0..N where N is FUSION_MAX_VECTOR_SIZE
-#include <boost/fusion/container/vector/vector10.hpp>
-#if (FUSION_MAX_VECTOR_SIZE > 10)
-#include <boost/fusion/container/vector/vector20.hpp>
-#endif
-#if (FUSION_MAX_VECTOR_SIZE > 20)
-#include <boost/fusion/container/vector/vector30.hpp>
-#endif
-#if (FUSION_MAX_VECTOR_SIZE > 30)
-#include <boost/fusion/container/vector/vector40.hpp>
-#endif
-#if (FUSION_MAX_VECTOR_SIZE > 40)
-#include <boost/fusion/container/vector/vector50.hpp>
-#endif
-
-#include <boost/mpl/distance.hpp>
-#include <boost/mpl/find.hpp>
-#include <boost/mpl/begin_end.hpp>
-#include <boost/preprocessor/cat.hpp>
-#include <boost/preprocessor/repetition/enum_params.hpp>
-
-namespace boost { namespace fusion
-{
- struct void_;
-}}
-
-namespace boost { namespace fusion { namespace detail
-{
- template <int N>
- struct get_vector_n;
-
- template <>
- struct get_vector_n<0>
- {
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename T)>
- struct call
- {
- typedef vector0 type;
- };
- };
-
-#define BOOST_PP_FILENAME_1 \
- <boost/fusion/container/vector/detail/vector_n_chooser.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
-#include BOOST_PP_ITERATE()
-
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename T)>
- struct vector_n_chooser
- {
- typedef
- mpl::BOOST_PP_CAT(vector, FUSION_MAX_VECTOR_SIZE)
- <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)>
- input;
-
- typedef typename mpl::begin<input>::type begin;
- typedef typename mpl::find<input, void_>::type end;
- typedef typename mpl::distance<begin, end>::type size;
-
- typedef typename get_vector_n<size::value>::template
- call<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)>::type
- type;
- };
-}}}
-
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// Preprocessor vertical repetition code
-//
-///////////////////////////////////////////////////////////////////////////////
-#else // defined(BOOST_PP_IS_ITERATING)
-
-#define N BOOST_PP_ITERATION()
-
- template <>
- struct get_vector_n<N>
- {
- template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename T)>
- struct call
- {
- typedef BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> type;
- };
- };
-
-#undef N
-#endif // defined(BOOST_PP_IS_ITERATING)

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/limits.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/limits.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/limits.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,18 +1,23 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_VECTOR_LIMITS_07072005_1246)
-#define FUSION_VECTOR_LIMITS_07072005_1246
 
-#if !defined(FUSION_MAX_VECTOR_SIZE)
-# define FUSION_MAX_VECTOR_SIZE 10
-#else
-# if FUSION_MAX_VECTOR_SIZE < 3
-# undef FUSION_MAX_VECTOR_SIZE
-# define FUSION_MAX_VECTOR_SIZE 10
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_LIMITS_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_LIMITS_HPP
+
+#include <boost/config.hpp>
+
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# if !defined(FUSION_MAX_VECTOR_SIZE)
+# define FUSION_MAX_VECTOR_SIZE 10
+# else
+# if FUSION_MAX_VECTOR_SIZE < 3
+# undef FUSION_MAX_VECTOR_SIZE
+# define FUSION_MAX_VECTOR_SIZE 10
+# endif
 # endif
 #endif
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,10 +4,13 @@
     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_VECTOR_07072005_1244)
-#define FUSION_VECTOR_07072005_1244
+
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_VECTOR_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_VECTOR_HPP
 
 #include <boost/fusion/container/vector/vector_fwd.hpp>
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+#include <boost/fusion/container/vector/vector_iterator.hpp>
 #include <boost/fusion/container/vector/detail/vector_n_chooser.hpp>
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 #include <boost/mpl/at.hpp>
@@ -147,5 +150,24 @@
         vector_n vec;
     };
 }}
+#else
+# include <boost/fusion/support/ref.hpp>
+# include <boost/fusion/container/vector/vector_iterator.hpp>
+
+# include <boost/fusion/container/vector/detail/at_impl.hpp>
+# include <boost/fusion/container/vector/detail/value_at_impl.hpp>
+# include <boost/fusion/container/vector/detail/begin_impl.hpp>
+# include <boost/fusion/container/vector/detail/end_impl.hpp>
+
+namespace boost { namespace fusion {
+
+struct vector_tag;
+struct fusion_sequence_tag;
+struct random_access_traversal_tag;
+
+}}
+
+# include <boost/fusion/container/vector/detail/variadic_templates/vector_impl.hpp>
+#endif
 
 #endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector10.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector10.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector10.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,23 +1,31 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_VECTOR10_05042005_0257)
-#define FUSION_VECTOR10_05042005_0257
 
-#include <boost/fusion/support/sequence_base.hpp>
-#include <boost/fusion/support/detail/access.hpp>
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_VECTOR10_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_VECTOR10_HPP
+
+#include <boost/config.hpp>
+
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+#ifndef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/vector/vector.hpp>
+#endif
+
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/ref.hpp>
+
 #include <boost/fusion/container/vector/detail/at_impl.hpp>
 #include <boost/fusion/container/vector/detail/value_at_impl.hpp>
 #include <boost/fusion/container/vector/detail/begin_impl.hpp>
 #include <boost/fusion/container/vector/detail/end_impl.hpp>
 
-#include <boost/mpl/void.hpp>
 #include <boost/mpl/int.hpp>
 #include <boost/mpl/bool.hpp>
 #include <boost/mpl/at.hpp>
@@ -35,6 +43,7 @@
 
 namespace boost { namespace fusion
 {
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
     struct vector_tag;
     struct fusion_sequence_tag;
     struct random_access_traversal_tag;
@@ -55,12 +64,19 @@
         {}
     };
 
+# define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/pp/vector_n.hpp>
+# define BOOST_PP_ITERATION_LIMITS (1, 10)
+#else
+# define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/variadic_templates/vector_n.hpp>
+# define BOOST_PP_ITERATION_LIMITS (0, 10)
+#endif
+
 // expand vector1 to vector10
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/vector_n.hpp>
-#define BOOST_PP_ITERATION_LIMITS (1, 10)
-#include BOOST_PP_ITERATE()
+# include BOOST_PP_ITERATE()
 
 }}
-
+#else
+# include <boost/fusion/container/vector/vector.hpp>
 #endif
 
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector20.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector20.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector20.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,23 +1,30 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_VECTOR20_05052005_0205)
-#define FUSION_VECTOR20_05052005_0205
 
-#include <boost/fusion/support/sequence_base.hpp>
-#include <boost/fusion/support/detail/access.hpp>
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_VECTOR20_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_VECTOR20_HPP
+
+#include <boost/config.hpp>
+
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+#ifndef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/vector/vector.hpp>
+#endif
+
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/ref.hpp>
+
 #include <boost/fusion/container/vector/detail/at_impl.hpp>
 #include <boost/fusion/container/vector/detail/value_at_impl.hpp>
 #include <boost/fusion/container/vector/detail/begin_impl.hpp>
 #include <boost/fusion/container/vector/detail/end_impl.hpp>
-
-#include <boost/mpl/void.hpp>
 #include <boost/mpl/int.hpp>
 #include <boost/mpl/at.hpp>
 #include <boost/mpl/bool.hpp>
@@ -40,11 +47,16 @@
     struct random_access_traversal_tag;
 
 // expand vector11 to vector20
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/vector_n.hpp>
-#define BOOST_PP_ITERATION_LIMITS (11, 20)
-#include BOOST_PP_ITERATE()
+# ifdef BOOST_NO_VARIADIC_TEMPLATES
+# define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/pp/vector_n.hpp>
+# else
+# define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/variadic_templates/vector_n.hpp>
+# endif
+# define BOOST_PP_ITERATION_LIMITS (11, 20)
+# include BOOST_PP_ITERATE()
 
 }}
-
+#else
+# include <boost/fusion/container/vector/vector.hpp>
+#endif
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector30.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector30.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector30.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,23 +1,31 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_VECTOR30_05052005_0206)
-#define FUSION_VECTOR30_05052005_0206
 
-#include <boost/fusion/support/sequence_base.hpp>
-#include <boost/fusion/support/detail/access.hpp>
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_VECTOR30_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_VECTOR30_HPP
+
+#include <boost/config.hpp>
+
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+#ifndef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/vector/vector.hpp>
+#endif
+
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/ref.hpp>
+
 #include <boost/fusion/container/vector/detail/at_impl.hpp>
 #include <boost/fusion/container/vector/detail/value_at_impl.hpp>
 #include <boost/fusion/container/vector/detail/begin_impl.hpp>
 #include <boost/fusion/container/vector/detail/end_impl.hpp>
 
-#include <boost/mpl/void.hpp>
 #include <boost/mpl/int.hpp>
 #include <boost/mpl/at.hpp>
 #include <boost/mpl/bool.hpp>
@@ -38,13 +46,19 @@
     struct vector_tag;
     struct fusion_sequence_tag;
     struct random_access_traversal_tag;
-
+
 // expand vector21 to vector30
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/vector_n.hpp>
-#define BOOST_PP_ITERATION_LIMITS (21, 30)
-#include BOOST_PP_ITERATE()
+# ifdef BOOST_NO_VARIADIC_TEMPLATES
+# define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/pp/vector_n.hpp>
+# else
+# define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/variadic_templates/vector_n.hpp>
+# endif
+# define BOOST_PP_ITERATION_LIMITS (21, 30)
+# include BOOST_PP_ITERATE()
 
 }}
-
+#else
+# include <boost/fusion/container/vector/vector.hpp>
 #endif
 
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector40.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector40.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector40.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,23 +1,31 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_VECTOR40_05052005_0208)
-#define FUSION_VECTOR40_05052005_0208
 
-#include <boost/fusion/support/sequence_base.hpp>
-#include <boost/fusion/support/detail/access.hpp>
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_VECTOR40_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_VECTOR40_HPP
+
+#include <boost/config.hpp>
+
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+#ifndef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/vector/vector.hpp>
+#endif
+
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/ref.hpp>
+
 #include <boost/fusion/container/vector/detail/at_impl.hpp>
 #include <boost/fusion/container/vector/detail/value_at_impl.hpp>
 #include <boost/fusion/container/vector/detail/begin_impl.hpp>
 #include <boost/fusion/container/vector/detail/end_impl.hpp>
 
-#include <boost/mpl/void.hpp>
 #include <boost/mpl/int.hpp>
 #include <boost/mpl/at.hpp>
 #include <boost/mpl/bool.hpp>
@@ -40,11 +48,17 @@
     struct random_access_traversal_tag;
 
 // expand vector31 to vector40
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/vector_n.hpp>
-#define BOOST_PP_ITERATION_LIMITS (31, 40)
-#include BOOST_PP_ITERATE()
+# ifdef BOOST_NO_VARIADIC_TEMPLATES
+# define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/pp/vector_n.hpp>
+# else
+# define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/variadic_templates/vector_n.hpp>
+# endif
+# define BOOST_PP_ITERATION_LIMITS (31, 40)
+# include BOOST_PP_ITERATE()
 
 }}
-
+#else
+# include <boost/fusion/container/vector/vector.hpp>
 #endif
 
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector50.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector50.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector50.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,23 +1,31 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_VECTOR50_05052005_0207)
-#define FUSION_VECTOR50_05052005_0207
 
-#include <boost/fusion/support/sequence_base.hpp>
-#include <boost/fusion/support/detail/access.hpp>
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_VECTOR50_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_VECTOR50_HPP
+
+#include <boost/config.hpp>
+
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+#ifndef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/vector/vector.hpp>
+#endif
+
 #include <boost/fusion/iterator/next.hpp>
 #include <boost/fusion/iterator/deref.hpp>
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/ref.hpp>
+
 #include <boost/fusion/container/vector/detail/at_impl.hpp>
 #include <boost/fusion/container/vector/detail/value_at_impl.hpp>
 #include <boost/fusion/container/vector/detail/begin_impl.hpp>
 #include <boost/fusion/container/vector/detail/end_impl.hpp>
 
-#include <boost/mpl/void.hpp>
 #include <boost/mpl/int.hpp>
 #include <boost/mpl/at.hpp>
 #include <boost/mpl/bool.hpp>
@@ -40,11 +48,17 @@
     struct random_access_traversal_tag;
 
 // expand vector41 to vector50
-#define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/vector_n.hpp>
-#define BOOST_PP_ITERATION_LIMITS (41, 50)
-#include BOOST_PP_ITERATE()
+# ifdef BOOST_NO_VARIADIC_TEMPLATES
+# define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/pp/vector_n.hpp>
+# else
+# define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/variadic_templates/vector_n.hpp>
+# endif
+# define BOOST_PP_ITERATION_LIMITS (41, 50)
+# include BOOST_PP_ITERATE()
 
 }}
-
+#else
+# include <boost/fusion/container/vector/vector.hpp>
 #endif
 
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector_fwd.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector_fwd.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector_fwd.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -2,23 +2,19 @@
     Copyright (c) 1999-2003 Jaakko Jarvi
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_VECTOR_FORWARD_07072005_0125)
-#define FUSION_VECTOR_FORWARD_07072005_0125
+
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_VECTOR_FWD_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_VECTOR_FWD_HPP
 
 #include <boost/fusion/container/vector/limits.hpp>
-#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/fusion/support/template.hpp>
 
 namespace boost { namespace fusion
 {
- struct void_;
-
- template <
- BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
- FUSION_MAX_VECTOR_SIZE, typename T, void_)
- >
+ VARIADIC_TEMPLATE_WITH_DEFAULT(FUSION_MAX_VECTOR_SIZE)
     struct vector;
 }}
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector_iterator.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector_iterator.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector_iterator.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -1,11 +1,14 @@
 /*=============================================================================
     Copyright (c) 2001-2006 Joel de Guzman
 
- Distributed under the Boost Software License, Version 1.0. (See accompanying
+ 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_VECTOR_ITERATOR_05042005_0635)
-#define FUSION_VECTOR_ITERATOR_05042005_0635
+
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_VECTOR_ITERATOR_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_VECTOR_ITERATOR_HPP
+
+//TODO cschmidt: move in detail
 
 #include <boost/fusion/support/iterator_base.hpp>
 #include <boost/fusion/container/vector/detail/deref_impl.hpp>
@@ -15,7 +18,9 @@
 #include <boost/fusion/container/vector/detail/equal_to_impl.hpp>
 #include <boost/fusion/container/vector/detail/distance_impl.hpp>
 #include <boost/fusion/container/vector/detail/advance_impl.hpp>
-#include <boost/type_traits/add_const.hpp>
+
+#include <boost/type_traits/remove_const.hpp>
+#include <boost/type_traits/remove_cv.hpp>
 #include <boost/mpl/int.hpp>
 
 namespace boost { namespace fusion
@@ -27,20 +32,25 @@
     struct vector_iterator_identity;
 
     template <typename Vector, int N>
- struct vector_iterator : iterator_base<vector_iterator<Vector, N> >
+ struct vector_iterator
+ : iterator_base<vector_iterator<Vector, N> >
     {
         typedef mpl::int_<N> index;
         typedef Vector vector;
         typedef vector_iterator_tag fusion_tag;
         typedef random_access_traversal_tag category;
- typedef vector_iterator_identity<
- typename add_const<Vector>::type, N> identity;
+ typedef
+ vector_iterator_identity<
+ typename detail::identity<Vector>::type
+ , N>
+ identity;
+
+ explicit vector_iterator(Vector vec)
+ : vec(vec)
+ {}
 
- vector_iterator(Vector& vec)
- : vec(vec) {}
- Vector& vec;
+ Vector vec;
     };
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,12 +6,11 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_HPP_INCLUDED)
-#define BOOST_FUSION_FUNCTIONAL_HPP_INCLUDED
+#ifndef BOOST_FUSION_FUNCTIONAL_HPP
+#define BOOST_FUSION_FUNCTIONAL_HPP
 
 #include <boost/fusion/functional/invocation.hpp>
 #include <boost/fusion/functional/adapter.hpp>
 #include <boost/fusion/functional/generation.hpp>
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/adapter.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_HPP_INCLUDED)
-#define BOOST_FUSION_FUNCTIONAL_ADAPTER_HPP_INCLUDED
+#ifndef BOOST_FUSION_FUNCTIONAL_ADAPTER_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_HPP
 #include <boost/fusion/functional/adapter/fused.hpp>
 #include <boost/fusion/functional/adapter/fused_procedure.hpp>
 #include <boost/fusion/functional/adapter/fused_function_object.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/access.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/access.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/access.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_ACCESS_HPP_INCLUDED)
-#define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_ACCESS_HPP_INCLUDED
+#ifndef BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_ACCESS_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_ACCESS_HPP
 
 namespace boost { namespace fusion { namespace detail
 {
@@ -38,4 +38,3 @@
 }}}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_HPP_INCLUDED)
-#define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_HPP_INCLUDED
+#ifndef BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_HPP
 
 #include <boost/type_traits/add_reference.hpp>
 
@@ -82,4 +82,3 @@
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused_function_object.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused_function_object.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused_function_object.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_FUNCTION_OBJECT_HPP_INCLUDED)
-#define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_FUNCTION_OBJECT_HPP_INCLUDED
+#ifndef BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_FUNCTION_OBJECT_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_FUNCTION_OBJECT_HPP
 
 #include <boost/type_traits/add_reference.hpp>
 
@@ -87,4 +87,3 @@
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused_procedure.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused_procedure.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused_procedure.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_PROCEDURE_HPP_INCLUDED)
-#define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_PROCEDURE_HPP_INCLUDED
+#ifndef BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_PROCEDURE_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_PROCEDURE_HPP
 
 #include <boost/type_traits/add_reference.hpp>
 
@@ -67,4 +67,3 @@
 }}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/limits.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/limits.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/limits.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_LIMITS_HPP_INCLUDED)
-# define BOOST_FUSION_FUNCTIONAL_ADAPTER_LIMITS_HPP_INCLUDED
+#ifndef BOOST_FUSION_FUNCTIONAL_ADAPTER_LIMITS_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_LIMITS_HPP
 
 # include <boost/fusion/container/vector/limits.hpp>
 
@@ -36,4 +36,3 @@
 # endif
 
 #endif
-

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -0,0 +1,150 @@
+/*=============================================================================
+ Copyright (c) 2006-2007 Tobias Schwinger
+
+ 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).
+==============================================================================*/
+
+#ifndef BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_HPP
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/facilities/intercept.hpp>
+
+#include <boost/utility/result_of.hpp>
+
+#include <boost/fusion/container/vector/vector.hpp>
+
+#include <boost/fusion/functional/adapter/limits.hpp>
+#include <boost/fusion/functional/adapter/detail/access.hpp>
+
+namespace boost { namespace fusion
+{
+ template <class Function, bool AllowNullary = true>
+ class unfused;
+
+ //----- ---- --- -- - - - -
+
+ template <class Function>
+ class unfused<Function,true>
+ : public unfused<Function,false>
+ {
+ typedef typename detail::qf_c<Function>::type function_c;
+ typedef typename detail::qf<Function>::type function;
+ typedef typename detail::call_param<Function>::type func_const_fwd_t;
+ public:
+
+ using unfused<Function,false>::operator();
+
+ inline explicit unfused(func_const_fwd_t f = function())
+ : unfused<Function,false>(f)
+ { }
+
+ typedef typename boost::result_of<
+ function_c(fusion::vector0 &) >::type call_const_0_result;
+
+ inline call_const_0_result operator()() const
+ {
+ fusion::vector0 arg;
+ return this->fnc_transformed(arg);
+ }
+
+ typedef typename boost::result_of<
+ function(fusion::vector0 &) >::type call_0_result;
+
+ inline call_0_result operator()()
+ {
+ fusion::vector0 arg;
+ return this->fnc_transformed(arg);
+ }
+ };
+
+ template <class Function> class unfused<Function,false>
+ {
+ protected:
+ Function fnc_transformed;
+ typedef typename detail::qf_c<Function>::type function_c;
+ typedef typename detail::qf<Function>::type function;
+ typedef typename detail::call_param<Function>::type func_const_fwd_t;
+ public:
+
+ inline explicit unfused(func_const_fwd_t f = function())
+ : fnc_transformed(f)
+ { }
+
+ template <typename Sig>
+ struct result;
+
+ #define BOOST_PP_FILENAME_1 \
+ <boost/fusion/functional/adapter/unfused.hpp>
+ #define BOOST_PP_ITERATION_LIMITS \
+ (1,BOOST_FUSION_UNFUSED_MAX_ARITY)
+ #include BOOST_PP_ITERATE()
+ };
+}}
+
+namespace boost
+{
+ template<class F>
+ struct result_of< boost::fusion::unfused<F> const () >
+ {
+ typedef typename boost::fusion::unfused<F>::call_const_0_result type;
+ };
+ template<class F>
+ struct result_of< boost::fusion::unfused<F>() >
+ {
+ typedef typename boost::fusion::unfused<F>::call_0_result type;
+ };
+}
+
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_HPP_INCLUDED
+#else // defined(BOOST_PP_IS_ITERATING)
+////////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+////////////////////////////////////////////////////////////////////////////////
+#define N BOOST_PP_ITERATION()
+
+ template <class Self, BOOST_PP_ENUM_PARAMS(N,typename T)>
+ struct result< Self const (BOOST_PP_ENUM_PARAMS(N,T)) >
+ : boost::result_of< function_c(
+ BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N,
+ typename detail::mref<T,>::type BOOST_PP_INTERCEPT) > & )>
+ { };
+
+ template <class Self, BOOST_PP_ENUM_PARAMS(N,typename T)>
+ struct result< Self(BOOST_PP_ENUM_PARAMS(N,T)) >
+ : boost::result_of< function(
+ BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N,
+ typename detail::mref<T,>::type BOOST_PP_INTERCEPT) > & )>
+ { };
+
+ template <BOOST_PP_ENUM_PARAMS(N,typename T)>
+ inline typename boost::result_of<function_c(BOOST_PP_CAT(fusion::vector,N)
+ <BOOST_PP_ENUM_BINARY_PARAMS(N,T,& BOOST_PP_INTERCEPT)> & )>::type
+ operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,& a)) const
+ {
+ BOOST_PP_CAT(fusion::vector,N)<
+ BOOST_PP_ENUM_BINARY_PARAMS(N,T,& BOOST_PP_INTERCEPT) >
+ arg(BOOST_PP_ENUM_PARAMS(N,a));
+ return this->fnc_transformed(arg);
+ }
+
+ template <BOOST_PP_ENUM_PARAMS(N,typename T)>
+ inline typename boost::result_of<function(BOOST_PP_CAT(fusion::vector,N)
+ <BOOST_PP_ENUM_BINARY_PARAMS(N,T,& BOOST_PP_INTERCEPT)> & )>::type
+ operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,& a))
+ {
+ BOOST_PP_CAT(fusion::vector,N)<
+ BOOST_PP_ENUM_BINARY_PARAMS(N,T,& BOOST_PP_INTERCEPT) >
+ arg(BOOST_PP_ENUM_PARAMS(N,a));
+ return this->fnc_transformed(arg);
+ }
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_generic.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_generic.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_generic.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_GENERIC_HPP_INCLUDED)
-#if !defined(BOOST_PP_IS_ITERATING)
+#ifndef BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_GENERIC_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_GENERIC_HPP
 
 #include <boost/config.hpp>
 #include <boost/detail/workaround.hpp>
@@ -172,4 +172,3 @@
 
 #endif // defined(BOOST_PP_IS_ITERATING)
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_lvalue_args.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_lvalue_args.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_lvalue_args.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_LVALUE_ARGS_HPP_INCLUDED)
-#if !defined(BOOST_PP_IS_ITERATING)
+#ifndef BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_LVALUE_ARGS_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_LVALUE_ARGS_HPP
 
 #include <boost/preprocessor/cat.hpp>
 #include <boost/preprocessor/iteration/iterate.hpp>
@@ -133,4 +133,3 @@
 #undef N
 #endif // defined(BOOST_PP_IS_ITERATING)
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_rvalue_args.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_rvalue_args.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_rvalue_args.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_RVALUE_ARGS_HPP_INCLUDED)
-#if !defined(BOOST_PP_IS_ITERATING)
+#ifndef BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_RVALUE_ARGS_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_RVALUE_ARGS_HPP
 
 #include <boost/preprocessor/cat.hpp>
 #include <boost/preprocessor/iteration/iterate.hpp>
@@ -134,4 +134,3 @@
 #undef N
 #endif // defined(BOOST_PP_IS_ITERATING)
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_typed.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_typed.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_typed.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_TYPED_HPP_INCLUDED)
-#if !defined(BOOST_PP_IS_ITERATING)
+#ifndef BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_TYPED_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_TYPED_HPP
 
 #include <boost/preprocessor/cat.hpp>
 #include <boost/preprocessor/iteration/iterate.hpp>
@@ -152,4 +152,3 @@
 #undef N
 #endif // defined(BOOST_PP_IS_ITERATING)
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/generation.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/generation.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/generation.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_HPP_INCLUDED)
-#define BOOST_FUSION_FUNCTIONAL_GENERATION_HPP_INCLUDED
+#ifndef BOOST_FUSION_FUNCTIONAL_GENERATION_HPP
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_HPP
 
 #include <boost/fusion/functional/generation/make_fused.hpp>
 #include <boost/fusion/functional/generation/make_fused_procedure.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_HPP_INCLUDED)
-#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_HPP_INCLUDED
+#ifndef BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_HPP
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_HPP
 
 #include <boost/fusion/functional/adapter/fused.hpp>
 
@@ -15,4 +15,3 @@
 #include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused_function_object.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused_function_object.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused_function_object.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_FUNCTION_OBJECT_HPP_INCLUDED)
-#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_FUNCTION_OBJECT_HPP_INCLUDED
+#ifndef BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_FUNCTION_OBJECT_HPP
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_FUNCTION_OBJECT_HPP
 
 #include <boost/fusion/functional/adapter/fused_function_object.hpp>
 
@@ -15,4 +15,3 @@
 #include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused_procedure.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused_procedure.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused_procedure.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_PROCEDURE_HPP_INCLUDED)
-#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_PROCEDURE_HPP_INCLUDED
+#ifndef BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_PROCEDURE_HPP
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_PROCEDURE_HPP
 
 #include <boost/fusion/functional/adapter/fused_procedure.hpp>
 
@@ -15,4 +15,3 @@
 #include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_generic.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_generic.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_generic.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_GENERIC_HPP_INCLUDED)
-#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_GENERIC_HPP_INCLUDED
+#ifndef BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_GENERIC_HPP
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_GENERIC_HPP
 
 #include <boost/fusion/functional/adapter/unfused_generic.hpp>
 
@@ -15,4 +15,3 @@
 #include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_lvalue_args.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_lvalue_args.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_lvalue_args.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_LVALUE_ARGS_HPP_INCLUDED)
-#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_LVALUE_ARGS_HPP_INCLUDED
+#ifndef BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_LVALUE_ARGS_HPP
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_LVALUE_ARGS_HPP
 
 #include <boost/fusion/functional/adapter/unfused_lvalue_args.hpp>
 
@@ -15,4 +15,3 @@
 #include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_rvalue_args.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_rvalue_args.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_rvalue_args.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_RVALUE_ARGS_HPP_INCLUDED)
-#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_RVALUE_ARGS_HPP_INCLUDED
+#ifndef BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_RVALUE_ARGS_HPP
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_RVALUE_ARGS_HPP
 
 #include <boost/fusion/functional/adapter/unfused_rvalue_args.hpp>
 
@@ -15,4 +15,3 @@
 #include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/invocation.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_HPP_INCLUDED)
-#define BOOST_FUSION_FUNCTIONAL_INVOCATION_HPP_INCLUDED
+#ifndef BOOST_FUSION_FUNCTIONAL_INVOCATION_HPP
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_HPP
 
 #include <boost/fusion/functional/invocation/invoke.hpp>
 #include <boost/fusion/functional/invocation/invoke_procedure.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_DETAIL_THAT_PTR_HPP_INCLUDED)
-#define BOOST_FUSION_FUNCTIONAL_INVOCATION_DETAIL_THAT_PTR_HPP_INCLUDED
+#ifndef BOOST_FUSION_FUNCTIONAL_INVOCATION_DETAIL_THAT_PTR_HPP
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_DETAIL_THAT_PTR_HPP
 
 #include <boost/get_pointer.hpp>
 #include <boost/utility/addressof.hpp>
@@ -84,4 +84,3 @@
 }}}
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -7,8 +7,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_HPP_INCLUDED)
-#if !defined(BOOST_PP_IS_ITERATING)
+#ifndef BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_HPP
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_HPP
 
 #include <boost/preprocessor/cat.hpp>
 #include <boost/preprocessor/iteration/iterate.hpp>
@@ -303,4 +303,3 @@
 #undef N
 #endif // defined(BOOST_PP_IS_ITERATING)
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke_function_object.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke_function_object.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke_function_object.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -7,8 +7,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_FUNCTION_OBJECT_HPP_INCLUDED)
-#if !defined(BOOST_PP_IS_ITERATING)
+#ifndef BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_FUNCTION_OBJECT_HPP
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_FUNCTION_OBJECT_HPP
 
 #include <boost/preprocessor/cat.hpp>
 #include <boost/preprocessor/iteration/iterate.hpp>
@@ -174,4 +174,3 @@
 #undef N
 #endif // defined(BOOST_PP_IS_ITERATING)
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke_procedure.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke_procedure.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke_procedure.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -7,8 +7,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_PROCEDURE_HPP_INCLUDED)
-#if !defined(BOOST_PP_IS_ITERATING)
+#ifndef BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_PROCEDURE_HPP
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_PROCEDURE_HPP
 
 #include <boost/preprocessor/cat.hpp>
 #include <boost/preprocessor/iteration/iterate.hpp>
@@ -168,4 +168,3 @@
 #undef N
 #endif // defined(BOOST_PP_IS_ITERATING)
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/limits.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/limits.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/limits.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -6,8 +6,8 @@
     http://www.boost.org/LICENSE_1_0.txt).
 ==============================================================================*/
 
-#if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_LIMITS_HPP_INCLUDED)
-# define BOOST_FUSION_FUNCTIONAL_INVOCATION_LIMITS_HPP_INCLUDED
+#ifndef BOOST_FUSION_FUNCTIONAL_INVOCATION_LIMITS_HPP
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_LIMITS_HPP
 
 # if !defined(BOOST_FUSION_INVOKE_MAX_ARITY)
 # define BOOST_FUSION_INVOKE_MAX_ARITY 6
@@ -20,4 +20,3 @@
 # endif
 
 #endif
-

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/accumulate.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/accumulate.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/accumulate.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_ACCUMULATE)
-#define FUSION_INCLUDE_ACCUMULATE
+
+#ifndef BOOST_FUSION_INCLUDE_ACCUMULATE_HPP
+#define BOOST_FUSION_INCLUDE_ACCUMULATE_HPP
 
 #include <boost/fusion/algorithm/iteration/accumulate.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/adapt_struct.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/adapt_struct.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/adapt_struct.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_ADAPT_STRUCT)
-#define FUSION_INCLUDE_ADAPT_STRUCT
+
+#ifndef BOOST_FUSION_INCLUDE_ADAPT_STRUCT_HPP
+#define BOOST_FUSION_INCLUDE_ADAPT_STRUCT_HPP
 
 #include <boost/fusion/adapted/struct/adapt_struct.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/adapted.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/adapted.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/adapted.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_ADAPTED)
-#define FUSION_INCLUDE_ADAPTED
+
+#ifndef BOOST_FUSION_INCLUDE_ADAPTED_HPP
+#define BOOST_FUSION_INCLUDE_ADAPTED_HPP
 
 #include <boost/fusion/adapted.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/adapter.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/adapter.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/adapter.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_ADAPTER)
-#define FUSION_INCLUDE_ADAPTER
+
+#ifndef BOOST_FUSION_INCLUDE_ADAPTER_HPP
+#define BOOST_FUSION_INCLUDE_ADAPTER_HPP
 
 #include <boost/fusion/functional/adapter.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/advance.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/advance.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/advance.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_ADVANCE)
-#define FUSION_INCLUDE_ADVANCE
+
+#ifndef BOOST_FUSION_INCLUDE_ADVANCE_HPP
+#define BOOST_FUSION_INCLUDE_ADVANCE_HPP
 
 #include <boost/fusion/iterator/advance.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/algorithm.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/algorithm.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/algorithm.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_ALGORITHM)
-#define FUSION_INCLUDE_ALGORITHM
+
+#ifndef BOOST_FUSION_INCLUDE_ALGORITHM_HPP
+#define BOOST_FUSION_INCLUDE_ALGORITHM_HPP
 
 #include <boost/fusion/algorithm.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/all.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/all.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/all.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_ALL)
-#define FUSION_INCLUDE_ALL
+
+#ifndef BOOST_FUSION_INCLUDE_ALL_HPP
+#define BOOST_FUSION_INCLUDE_ALL_HPP
 
 #include <boost/fusion/algorithm/query/all.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/any.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/any.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/any.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_ANY)
-#define FUSION_INCLUDE_ANY
+
+#ifndef BOOST_FUSION_INCLUDE_ANY_HPP
+#define BOOST_FUSION_INCLUDE_ANY_HPP
 
 #include <boost/fusion/algorithm/query/any.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/array.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/array.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/array.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_ARRAY)
-#define FUSION_INCLUDE_ARRAY
+
+#ifndef BOOST_FUSION_INCLUDE_ARRAY_HPP
+#define BOOST_FUSION_INCLUDE_ARRAY_HPP
 
 #include <boost/fusion/adapted/array.hpp>
 

Deleted: sandbox/SOC/2009/fusion/boost/fusion/include/as_deque.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/as_deque.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,12 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2007 Joel de Guzman
-
- 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_INCLUDE_AS_DEQUE)
-#define FUSION_INCLUDE_AS_DEQUE
-
-#include <boost/fusion/container/deque/convert.hpp>
-
-#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/as_list.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/as_list.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/as_list.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_AS_LIST)
-#define FUSION_INCLUDE_AS_LIST
+
+#ifndef BOOST_FUSION_INCLUDE_AS_LIST_HPP
+#define BOOST_FUSION_INCLUDE_AS_LIST_HPP
 
 #include <boost/fusion/container/list/convert.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/as_map.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/as_map.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/as_map.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_AS_MAP)
-#define FUSION_INCLUDE_AS_MAP
+
+#ifndef BOOST_FUSION_INCLUDE_AS_MAP_HPP
+#define BOOST_FUSION_INCLUDE_AS_MAP_HPP
 
 #include <boost/fusion/container/map/convert.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/as_set.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/as_set.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/as_set.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_AS_SET)
-#define FUSION_INCLUDE_AS_SET
+
+#ifndef BOOST_FUSION_INCLUDE_AS_SET_HPP
+#define BOOST_FUSION_INCLUDE_AS_SET_HPP
 
 #include <boost/fusion/container/set/convert.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/as_vector.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/as_vector.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/as_vector.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_AS_VECTOR)
-#define FUSION_INCLUDE_AS_VECTOR
+
+#ifndef BOOST_FUSION_INCLUDE_AS_VECTOR_HPP
+#define BOOST_FUSION_INCLUDE_AS_VECTOR_HPP
 
 #include <boost/fusion/container/vector/convert.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/at.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/at.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/at.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_AT)
-#define FUSION_INCLUDE_AT
+
+#ifndef BOOST_FUSION_INCLUDE_AT_HPP
+#define BOOST_FUSION_INCLUDE_AT_HPP
 
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/at_c.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/at_c.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/at_c.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_AT_C)
-#define FUSION_INCLUDE_AT_C
+
+#ifndef BOOST_FUSION_INCLUDE_AT_C_HPP
+#define BOOST_FUSION_INCLUDE_AT_C_HPP
 
 #include <boost/fusion/sequence/intrinsic/at_c.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/at_key.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/at_key.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/at_key.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_AT_KEY)
-#define FUSION_INCLUDE_AT_KEY
+
+#ifndef BOOST_FUSION_INCLUDE_AT_KEY_HPP
+#define BOOST_FUSION_INCLUDE_AT_KEY_HPP
 
 #include <boost/fusion/sequence/intrinsic/at_key.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/back.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/back.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/back.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_BACK)
-#define FUSION_INCLUDE_BACK
+
+#ifndef BOOST_FUSION_INCLUDE_BACK_HPP
+#define BOOST_FUSION_INCLUDE_BACK_HPP
 
 #include <boost/fusion/sequence/intrinsic/back.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/begin.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/begin.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/begin.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_BEGIN)
-#define FUSION_INCLUDE_BEGIN
+
+#ifndef BOOST_FUSION_INCLUDE_BEGIN_HPP
+#define BOOST_FUSION_INCLUDE_BEGIN_HPP
 
 #include <boost/fusion/sequence/intrinsic/begin.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/boost_tuple.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/boost_tuple.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/boost_tuple.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_BOOST_TUPLE)
-#define FUSION_INCLUDE_BOOST_TUPLE
+
+#ifndef BOOST_FUSION_INCLUDE_BOOST_TUPLE_HPP
+#define BOOST_FUSION_INCLUDE_BOOST_TUPLE_HPP
 
 #include <boost/fusion/adapted/boost_tuple.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/category_of.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/category_of.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/category_of.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_CATEGORY_OF)
-#define FUSION_INCLUDE_CATEGORY_OF
+
+#ifndef BOOST_FUSION_INCLUDE_CATEGORY_OF_HPP
+#define BOOST_FUSION_INCLUDE_CATEGORY_OF_HPP
 
 #include <boost/fusion/support/category_of.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/clear.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/clear.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/clear.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_CLEAR)
-#define FUSION_INCLUDE_CLEAR
+
+#ifndef BOOST_FUSION_INCLUDE_CLEAR_HPP
+#define BOOST_FUSION_INCLUDE_CLEAR_HPP
 
 #include <boost/fusion/algorithm/transformation/clear.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/comparison.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/comparison.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/comparison.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_COMPARISON)
-#define FUSION_INCLUDE_COMPARISON
+
+#ifndef BOOST_FUSION_INCLUDE_COMPARISON_HPP
+#define BOOST_FUSION_INCLUDE_COMPARISON_HPP
 
 #include <boost/fusion/sequence/comparison.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/cons.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/cons.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/cons.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_CONS)
-#define FUSION_INCLUDE_CONS
+
+#ifndef BOOST_FUSION_INCLUDE_CONS_HPP
+#define BOOST_FUSION_INCLUDE_CONS_HPP
 
 #include <boost/fusion/container/list/cons.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/cons_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/cons_tie.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/cons_tie.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_CONS_TIE)
-#define FUSION_INCLUDE_CONS_TIE
+
+#ifndef BOOST_FUSION_INCLUDE_CONS_TIE_HPP
+#define BOOST_FUSION_INCLUDE_CONS_TIE_HPP
 
 #include <boost/fusion/container/generation/cons_tie.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/container.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/container.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/container.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_CONTAINER)
-#define FUSION_INCLUDE_CONTAINER
+
+#ifndef BOOST_FUSION_INCLUDE_CONTAINER_HPP
+#define BOOST_FUSION_INCLUDE_CONTAINER_HPP
 
 #include <boost/fusion/container.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/convert.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/convert.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/convert.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_CONVERT)
-#define FUSION_INCLUDE_CONVERT
+
+#ifndef BOOST_FUSION_INCLUDE_CONVERT_HPP
+#define BOOST_FUSION_INCLUDE_CONVERT_HPP
 
 #include <boost/fusion/sequence/convert.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/count.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/count.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/count.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_COUNT)
-#define FUSION_INCLUDE_COUNT
+
+#ifndef BOOST_FUSION_INCLUDE_COUNT_HPP
+#define BOOST_FUSION_INCLUDE_COUNT_HPP
 
 #include <boost/fusion/algorithm/query/count.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/count_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/count_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/count_if.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_COUNT_IF)
-#define FUSION_INCLUDE_COUNT_IF
+
+#ifndef BOOST_FUSION_INCLUDE_COUNT_IF_HPP
+#define BOOST_FUSION_INCLUDE_COUNT_IF_HPP
 
 #include <boost/fusion/algorithm/query/count_if.hpp>
 

Deleted: sandbox/SOC/2009/fusion/boost/fusion/include/deduce.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/deduce.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,12 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2007 Joel de Guzman
-
- 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_INCLUDE_DEDUCE)
-#define FUSION_INCLUDE_DEDUCE
-
-#include <boost/fusion/support/deduce.hpp>
-
-#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/deduce_sequence.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/deduce_sequence.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/deduce_sequence.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_DEDUCE_SEQUENCE)
-#define FUSION_INCLUDE_DEDUCE_SEQUENCE
+
+#ifndef BOOST_FUSION_INCLUDE_DEDUCE_SEQUENCE_HPP
+#define BOOST_FUSION_INCLUDE_DEDUCE_SEQUENCE_HPP
 
 #include <boost/fusion/support/deduce_sequence.hpp>
 

Deleted: sandbox/SOC/2009/fusion/boost/fusion/include/deque.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/deque.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,12 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2007 Joel de Guzman
-
- 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_INCLUDE_DEQUE)
-#define FUSION_INCLUDE_DEQUE
-
-#include <boost/fusion/container/deque.hpp>
-
-#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/include/deque_fwd.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/deque_fwd.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,12 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2007 Joel de Guzman
-
- 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_INCLUDE_DEQUE)
-#define FUSION_INCLUDE_DEQUE
-
-#include <boost/fusion/container/deque/deque_fwd.hpp>
-
-#endif

Deleted: sandbox/SOC/2009/fusion/boost/fusion/include/deque_tie.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/deque_tie.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
+++ (empty file)
@@ -1,13 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2007 Joel de Guzman
-
- 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_INCLUDE_GENERATION)
-#define FUSION_INCLUDE_GENERATION
-
-#include <boost/fusion/container/generation.hpp>
-#include <boost/fusion/functional/generation.hpp>
-
-#endif

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/deref.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/deref.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/deref.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_DEREF)
-#define FUSION_INCLUDE_DEREF
+
+#ifndef BOOST_FUSION_INCLUDE_DEREF_HPP
+#define BOOST_FUSION_INCLUDE_DEREF_HPP
 
 #include <boost/fusion/iterator/deref.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/distance.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/distance.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/distance.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_DISTANCE)
-#define FUSION_INCLUDE_DISTANCE
+
+#ifndef BOOST_FUSION_INCLUDE_DISTANCE_HPP
+#define BOOST_FUSION_INCLUDE_DISTANCE_HPP
 
 #include <boost/fusion/iterator/distance.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/empty.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/empty.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/empty.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_EMPTY)
-#define FUSION_INCLUDE_EMPTY
+
+#ifndef BOOST_FUSION_INCLUDE_EMPTY_HPP
+#define BOOST_FUSION_INCLUDE_EMPTY_HPP
 
 #include <boost/fusion/sequence/intrinsic/empty.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/end.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/end.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/end.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_END)
-#define FUSION_INCLUDE_END
+
+#ifndef BOOST_FUSION_INCLUDE_END_HPP
+#define BOOST_FUSION_INCLUDE_END_HPP
 
 #include <boost/fusion/sequence/intrinsic/end.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/equal_to.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/equal_to.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/equal_to.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_EQUAL_TO)
-#define FUSION_INCLUDE_EQUAL_TO
+
+#ifndef BOOST_FUSION_INCLUDE_EQUAL_TO_HPP
+#define BOOST_FUSION_INCLUDE_EQUAL_TO_HPP
 
 #include <boost/fusion/iterator/equal_to.hpp>
 #include <boost/fusion/sequence/comparison/equal_to.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/erase.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/erase.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/erase.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_ERASE)
-#define FUSION_INCLUDE_ERASE
+
+#ifndef BOOST_FUSION_INCLUDE_ERASE_HPP
+#define BOOST_FUSION_INCLUDE_ERASE_HPP
 
 #include <boost/fusion/algorithm/transformation/erase.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/erase_key.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/erase_key.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/erase_key.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_ERASE_KEY)
-#define FUSION_INCLUDE_ERASE_KEY
+
+#ifndef BOOST_FUSION_INCLUDE_ERASE_KEY_HPP
+#define BOOST_FUSION_INCLUDE_ERASE_KEY_HPP
 
 #include <boost/fusion/algorithm/transformation/erase_key.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/filter.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/filter.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/filter.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_FILTER)
-#define FUSION_INCLUDE_FILTER
+
+#ifndef BOOST_FUSION_INCLUDE_FILTER_HPP
+#define BOOST_FUSION_INCLUDE_FILTER_HPP
 
 #include <boost/fusion/algorithm/transformation/filter.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/filter_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/filter_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/filter_if.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_FILTER_IF)
-#define FUSION_INCLUDE_FILTER_IF
+
+#ifndef BOOST_FUSION_INCLUDE_FILTER_IF_HPP
+#define BOOST_FUSION_INCLUDE_FILTER_IF_HPP
 
 #include <boost/fusion/algorithm/transformation/filter_if.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/filter_view.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/filter_view.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/filter_view.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_FILTER_VIEW)
-#define FUSION_INCLUDE_FILTER_VIEW
+
+#ifndef BOOST_FUSION_INCLUDE_FILTER_VIEW_HPP
+#define BOOST_FUSION_INCLUDE_FILTER_VIEW_HPP
 
 #include <boost/fusion/view/filter_view.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/find.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/find.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/find.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_FIND)
-#define FUSION_INCLUDE_FIND
+
+#ifndef BOOST_FUSION_INCLUDE_FIND_HPP
+#define BOOST_FUSION_INCLUDE_FIND_HPP
 
 #include <boost/fusion/algorithm/query/find.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/find_if.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/find_if.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/find_if.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_FIND_IF)
-#define FUSION_INCLUDE_FIND_IF
+
+#ifndef BOOST_FUSION_INCLUDE_FIND_IF_HPP
+#define BOOST_FUSION_INCLUDE_FIND_IF_HPP
 
 #include <boost/fusion/algorithm/query/find_if.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/fold.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/fold.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/fold.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_FOLD)
-#define FUSION_INCLUDE_FOLD
+
+#ifndef BOOST_FUSION_INCLUDE_FOLD_HPP
+#define BOOST_FUSION_INCLUDE_FOLD_HPP
 
 #include <boost/fusion/algorithm/iteration/fold.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/for_each.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/for_each.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/for_each.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_FOR_EACH)
-#define FUSION_INCLUDE_FOR_EACH
+
+#ifndef BOOST_FUSION_INCLUDE_FOR_EACH_HPP
+#define BOOST_FUSION_INCLUDE_FOR_EACH_HPP
 
 #include <boost/fusion/algorithm/iteration/for_each.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/front.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/front.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/front.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_FRONT)
-#define FUSION_INCLUDE_FRONT
+
+#ifndef BOOST_FUSION_INCLUDE_FRONT_HPP
+#define BOOST_FUSION_INCLUDE_FRONT_HPP
 
 #include <boost/fusion/sequence/intrinsic/front.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/functional.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/functional.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/functional.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_FUNCTIONAL)
-#define FUSION_INCLUDE_FUNCTIONAL
+
+#ifndef BOOST_FUSION_INCLUDE_FUNCTIONAL_HPP
+#define BOOST_FUSION_INCLUDE_FUNCTIONAL_HPP
 
 #include <boost/fusion/functional.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/fused.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/fused.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/fused.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_FUSED)
-#define FUSION_INCLUDE_FUSED
+
+#ifndef BOOST_FUSION_INCLUDE_FUSED_HPP
+#define BOOST_FUSION_INCLUDE_FUSED_HPP
 
 #include <boost/fusion/functional/adapter/fused.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/fused_function_object.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/fused_function_object.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/fused_function_object.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_FUSED_FUNCTION_OBJECT)
-#define FUSION_INCLUDE_FUSED_FUNCTION_OBJECT
+
+#ifndef BOOST_FUSION_INCLUDE_FUSED_FUNCTION_OBJECT_HPP
+#define BOOST_FUSION_INCLUDE_FUSED_FUNCTION_OBJECT_HPP
 
 #include <boost/fusion/functional/adapter/fused_function_object.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/fused_procedure.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/fused_procedure.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/fused_procedure.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_FUSED_PROCEDURE)
-#define FUSION_INCLUDE_FUSED_PROCEDURE
+
+#ifndef BOOST_FUSION_INCLUDE_FUSED_PROCEDURE_HPP
+#define BOOST_FUSION_INCLUDE_FUSED_PROCEDURE_HPP
 
 #include <boost/fusion/functional/adapter/fused_procedure.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/generation.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/generation.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/generation.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_GENERATION)
-#define FUSION_INCLUDE_GENERATION
+
+#ifndef BOOST_FUSION_INCLUDE_GENERATION_HPP
+#define BOOST_FUSION_INCLUDE_GENERATION_HPP
 
 #include <boost/fusion/container/generation.hpp>
 #include <boost/fusion/functional/generation.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/greater.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/greater.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/greater.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_NOT_GREATER)
-#define FUSION_INCLUDE_NOT_GREATER
+
+#ifndef BOOST_FUSION_INCLUDE_GREATER_HPP
+#define BOOST_FUSION_INCLUDE_GREATER_HPP
 
 #include <boost/fusion/sequence/comparison/greater.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/greater_equal.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/greater_equal.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/greater_equal.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_GREATER_EQUAL)
-#define FUSION_INCLUDE_GREATER_EQUAL
+
+#ifndef BOOST_FUSION_INCLUDE_GREATER_EQUAL_HPP
+#define BOOST_FUSION_INCLUDE_GREATER_EQUAL_HPP
 
 #include <boost/fusion/sequence/comparison/greater_equal.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/has_key.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/has_key.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/has_key.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_HAS_KEY)
-#define FUSION_INCLUDE_EMPTY
+
+#ifndef BOOST_FUSION_INCLUDE_HAS_KEY_HPP
+#define BOOST_FUSION_INCLUDE_HAS_KEY_HPP
 
 #include <boost/fusion/sequence/intrinsic/has_key.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/ignore.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/ignore.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/ignore.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_GENERATION)
-#define FUSION_INCLUDE_GENERATION
+
+#ifndef BOOST_FUSION_INCLUDE_IGNORE_HPP
+#define BOOST_FUSION_INCLUDE_IGNORE_HPP
 
 #include <boost/fusion/container/generation.hpp>
 #include <boost/fusion/functional/generation.hpp>

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/in.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/in.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/in.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_IN)
-#define FUSION_INCLUDE_IN
+
+#ifndef BOOST_FUSION_INCLUDE_IN_HPP
+#define BOOST_FUSION_INCLUDE_IN_HPP
 
 #include <boost/fusion/sequence/io/in.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/insert.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/insert.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/insert.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_INSERT)
-#define FUSION_INCLUDE_INSERT
+
+#ifndef BOOST_FUSION_INCLUDE_INSERT_HPP
+#define BOOST_FUSION_INCLUDE_INSERT_HPP
 
 #include <boost/fusion/algorithm/transformation/insert.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/insert_range.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/insert_range.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/insert_range.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_INSERT_RANGE)
-#define FUSION_INCLUDE_INSERT_RANGE
+
+#ifndef BOOST_FUSION_INCLUDE_INSERT_RANGE_HPP
+#define BOOST_FUSION_INCLUDE_INSERT_RANGE_HPP
 
 #include <boost/fusion/algorithm/transformation/insert_range.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/intrinsic.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/intrinsic.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/intrinsic.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_INTRINSIC)
-#define FUSION_INCLUDE_INTRINSIC
+
+#ifndef BOOST_FUSION_INCLUDE_INTRINSIC_HPP
+#define BOOST_FUSION_INCLUDE_INTRINSIC_HPP
 
 #include <boost/fusion/sequence/intrinsic.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/invocation.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/invocation.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/invocation.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_INVOCATION)
-#define FUSION_INCLUDE_INVOCATION
+
+#ifndef BOOST_FUSION_INCLUDE_INVOCATION_HPP
+#define BOOST_FUSION_INCLUDE_INVOCATION_HPP
 
 #include <boost/fusion/functional/invocation.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/invoke.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/invoke.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/invoke.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     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_INCLUDE_INVOKE)
-#define FUSION_INCLUDE_INVOKE
+
+#ifndef BOOST_FUSION_INCLUDE_INVOKE_HPP
+#define BOOST_FUSION_INCLUDE_INVOKE_HPP
 
 #include <boost/fusion/functional/invocation/invoke.hpp>
 

Modified: sandbox/SOC/2009/fusion/boost/fusion/include/invoke_function_object.hpp
==============================================================================
--- sandbox/SOC/2009/fusion/boost/fusion/include/invoke_function_object.hpp (original)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/invoke_function_object.hpp 2009-06-30 18:02:55 EDT (Tue, 30 Jun 2009)
@@ -4,8 +4,9 @@
     Distributed unde