Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r55636 - in sandbox/SOC/2009/fusion: . boost boost/fusion boost/fusion/adapted boost/fusion/adapted/detail boost/fusion/adapted/detail/array boost/fusion/adapted/detail/boost_tuple boost/fusion/adapted/detail/mpl boost/fusion/adapted/detail/struct boost/fusion/adapted/struct boost/fusion/algorithm boost/fusion/algorithm/iteration boost/fusion/algorithm/iteration/detail boost/fusion/algorithm/query boost/fusion/algorithm/query/detail boost/fusion/algorithm/transformation boost/fusion/algorithm/transformation/detail boost/fusion/algorithm/transformation/detail/filter_key_view boost/fusion/algorithm/transformation/detail/pp boost/fusion/algorithm/transformation/detail/variadic_templates boost/fusion/container boost/fusion/container/detail boost/fusion/container/detail/pp boost/fusion/container/detail/variadic_templates 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/map boost/fusion/container/map/detail boost/fusion/container/set boost/fusion/container/set/detail 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/adapter/detail/0x boost/fusion/functional/adapter/detail/no_0x boost/fusion/functional/generation boost/fusion/functional/generation/detail boost/fusion/functional/invocation boost/fusion/functional/invocation/detail boost/fusion/functional/invocation/detail/0x boost/fusion/functional/invocation/detail/no_0x boost/fusion/include boost/fusion/iterator boost/fusion/iterator/detail boost/fusion/mpl boost/fusion/sequence boost/fusion/sequence/comparison boost/fusion/sequence/comparison/detail boost/fusion/sequence/intrinsic boost/fusion/sequence/io boost/fusion/sequence/io/detail boost/fusion/support boost/fusion/support/internal boost/fusion/support/internal/variadic_templates boost/fusion/support/internal/variadic_templates/detail boost/fusion/tuple boost/fusion/view boost/fusion/view/detail 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/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 libs/fusion libs/fusion/doc libs/fusion/doc/html libs/fusion/doc/html/images libs/fusion/example libs/fusion/example/cookbook libs/fusion/example/extension libs/fusion/example/extension/detail libs/fusion/example/performance libs/fusion/example/test libs/fusion/test libs/fusion/test/algorithm libs/fusion/test/functional libs/fusion/test/sequence
From: mr.chr.schmidt_at_[hidden]
Date: 2009-08-17 19:48:18


Author: cschmidt
Date: 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
New Revision: 55636
URL: http://svn.boost.org/trac/boost/changeset/55636

Log:
total recommit as subclipse messed the repository up (2)
Added:
   sandbox/SOC/2009/fusion/LICENSE_1_0.txt (contents, props changed)
   sandbox/SOC/2009/fusion/boost/
   sandbox/SOC/2009/fusion/boost-build.jam (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/
   sandbox/SOC/2009/fusion/boost/fusion/adapted/
   sandbox/SOC/2009/fusion/boost/fusion/adapted.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_array.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/category_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/is_sequence_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/is_view_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/size_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/tag_of.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/category_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/is_sequence_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/is_view_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/size_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/tag_of.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/advance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/category_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/distance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/empty_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/equal_to_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/get_mpl_it.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/has_key_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/is_iterator_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/is_sequence_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/is_view_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/mpl_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/next_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/prior_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/size_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/tag_of.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_assoc_struct.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_base.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_struct.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/category_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_data_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/extension.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/is_sequence_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/is_view_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/key_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/size_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_data_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_array.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/adapt_assoc_struct.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/adapt_struct.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/
   sandbox/SOC/2009/fusion/boost/fusion/algorithm.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/accumulate.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/fold.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/for_each.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/fold.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/for_each.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/all.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/any.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count_if.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find_if.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find_key.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/none.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/clear.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/at_key_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/filter_key_view_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/has_key_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/value_at_key_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/is_in_seq.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/pp/
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/pp/zip.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace_if.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/variadic_templates/
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/variadic_templates/zip.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase_key.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter_if.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert_range.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/join.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_back.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_front.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_back.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_front.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove_if.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace_if.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/reverse.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/transform.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/zip.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/
   sandbox/SOC/2009/fusion/boost/fusion/container.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/convert_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/forward_ctor.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/as_seq.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/forward_ctor.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/variadic_templates/
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/variadic_templates/as_seq.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/detail/variadic_templates/forward_ctor.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/
   sandbox/SOC/2009/fusion/boost/fusion/container/generation.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/cons_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/make_seq.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/
   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_seq.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/seq_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/seq_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/make_map.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_seq.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/seq_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/ignore.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/list_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_cons.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_list.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_map.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_set.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_vector.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/map_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/pair_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/vector_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/
   sandbox/SOC/2009/fusion/boost/fusion/container/list.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/convert.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/
   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/cons_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/cons_iterator.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/deref_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/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/limits.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/list_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/
   sandbox/SOC/2009/fusion/boost/fusion/container/map.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/convert.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/deref_data_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/key_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/value_of_data_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/limits.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/map_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/
   sandbox/SOC/2009/fusion/boost/fusion/container/set.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/convert.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/deref_data_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/key_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/value_of_data_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/limits.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/set_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/
   sandbox/SOC/2009/fusion/boost/fusion/container/vector.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/convert.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/end_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/vector.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/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/value_of_impl.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/vector.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/container/vector/limits.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector10.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector20.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector30.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector40.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector50.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/
   sandbox/SOC/2009/fusion/boost/fusion/functional.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/0x/
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/0x/fused_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/0x/unfused_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/access.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/fused.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/fused_function_object.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/fused_procedure.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/unfused.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/unfused_typed.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused_function_object.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused_procedure.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/limits.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_typed.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation/
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation/detail/
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation/detail/gen_make_adapter.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused_function_object.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused_procedure.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/0x/
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/0x/invoke_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/0x/invoke_impl_detail.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/no_0x/
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/no_0x/invoke.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/no_0x/invoke_function_object.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/no_0x/invoke_procedure.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke_function_object.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke_procedure.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/limits.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/accumulate.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/adapt_struct.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/adapted.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/adapter.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/advance.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/advance_c.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/algorithm.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/all.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/any.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/array.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/as_list.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/as_map.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/as_set.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/as_vector.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/at.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/at_c.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/at_key.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/back.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/begin.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/boost_array.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/boost_tuple.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/category_of.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/clear.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/comparison.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/cons.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/cons_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/container.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/convert.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/count.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/count_if.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/deduce_sequence.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/deref.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/deref_data.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/distance.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/empty.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/end.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/equal_to.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/erase.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/erase_key.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/filter.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/filter_if.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/filter_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/find.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/find_if.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/find_key.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/fold.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/for_each.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/front.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/functional.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/fused.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/fused_function_object.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/fused_procedure.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/generation.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/greater.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/greater_equal.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/has_key.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/ignore.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/in.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/insert.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/insert_range.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/intrinsic.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/invocation.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/invoke.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/invoke_function_object.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/invoke_procedure.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/io.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/is_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/is_sequence.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/is_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/iteration.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/iterator_base.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/iterator_facade.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/iterator_range.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/join.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/joint_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/key_of.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/less.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/less_equal.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/list.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/list_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/list_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/make_cons.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/make_fused.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/make_fused_function_object.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/make_fused_procedure.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/make_list.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/make_map.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/make_set.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/make_tuple.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/make_unfused.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/make_vector.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/map.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/map_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/map_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/mpl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/next.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/none.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/not_equal_to.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/out.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/pair.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/pair_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/pop_back.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/pop_front.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/prior.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/push_back.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/push_front.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/query.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/remove.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/remove_if.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/replace.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/replace_if.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/reverse.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/reverse_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/sequence.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/sequence_base.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/sequence_facade.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/set.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/set_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/single_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/size.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/std_array.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/std_pair.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/struct.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/support.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/swap.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/tag_of.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/tag_of_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/transform.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/transform_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/transformation.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/tuple.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/tuple_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/tuple_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/unfused.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/unfused_typed.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/unused.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/value_at.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/value_at_c.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/value_at_key.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/value_of.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/value_of_data.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/vector.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/vector10.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/vector20.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/vector30.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/vector40.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/vector50.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/vector_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/vector_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/zip.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/zip_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/
   sandbox/SOC/2009/fusion/boost/fusion/iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/advance.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/advance_c.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/basic_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/deref.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/deref_data.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/
   sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/advance.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/distance.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/distance.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/equal_to.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/iterator_facade.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/key_of.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/next.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/prior.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/value_of.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/value_of_data.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/
   sandbox/SOC/2009/fusion/boost/fusion/mpl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/at.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/back.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/begin.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/clear.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/empty.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/end.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/erase.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/erase_key.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/front.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/fusion_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/has_key.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/insert.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/insert_range.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/pop_back.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/pop_front.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/push_back.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/push_front.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/size.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/
   sandbox/SOC/2009/fusion/boost/fusion/sequence.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/enable_comparison.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/equal_to.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/greater.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/greater_equal.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/less.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/less_equal.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/not_equal_to.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/equal_to.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/greater.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/greater_equal.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/less.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/less_equal.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/not_equal_to.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/convert.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at_c.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at_key.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/back.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/begin.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/empty.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/end.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/front.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/has_key.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/size.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/swap.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/value_at.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/sequence/intrinsic/value_at_key.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/io/
   sandbox/SOC/2009/fusion/boost/fusion/sequence/io.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/io/detail/
   sandbox/SOC/2009/fusion/boost/fusion/sequence/io/detail/in.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/io/detail/manip.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/io/detail/out.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/io/in.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/io/out.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/sequence_facade.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/
   sandbox/SOC/2009/fusion/boost/fusion/support.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/category_of.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/deduce.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/deduce_sequence.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/as_fusion_element.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/assert.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/assign_tags.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/ref.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/result_of.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/sequence_assign.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/template.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/variadic_templates/
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/variadic_templates/detail/
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/variadic_templates/detail/variadic_arguments_to_vector_n.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/variadic_templates/variadic_arguments_to_vector.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/internal/variadic_templates/variadic_quote.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/is_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/is_sequence.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/is_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/iterator_base.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/pair.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/sequence_base.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/tag_of.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/tag_of_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/unused.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/tuple/
   sandbox/SOC/2009/fusion/boost/fusion/tuple.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/tuple/make_tuple.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/tuple/tuple.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/tuple/tuple_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/tuple/tuple_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/
   sandbox/SOC/2009/fusion/boost/fusion/view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/detail/
   sandbox/SOC/2009/fusion/boost/fusion/view/detail/strictest_traversal.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/detail/view_storage.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/deref_data_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/equal_to_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/filter_view_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/filter_view_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/key_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/next_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/size_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/value_of_data_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/filter_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/detail/
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/detail/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/detail/iterator_range_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/detail/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/iterator_range.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/deref_data_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/equal_to_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/joint_view_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/joint_view_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/key_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/next_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/value_of_data_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/joint_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/advance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/deref_data_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/distance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/equal_to_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/key_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/next_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/prior_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/reverse_view_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/reverse_view_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/value_of_data_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/reverse_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/equal_to_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/next_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/single_view_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/single_view_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/single_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/advance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/distance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/equal_to_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/next_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/prior_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/transform_view_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/transform_view_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/advance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/distance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/equal_to_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/next_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/prior_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/size_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/zip_view_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/zip_view_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/build.bat (contents, props changed)
   sandbox/SOC/2009/fusion/libs/
   sandbox/SOC/2009/fusion/libs/fusion/
   sandbox/SOC/2009/fusion/libs/fusion/doc/
   sandbox/SOC/2009/fusion/libs/fusion/doc/Jamfile (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/acknowledgements.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/adapted.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/algorithm.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/changelog.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/container.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/extension.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/functional.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/fusion.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/html/
   sandbox/SOC/2009/fusion/libs/fusion/doc/html/images/
   sandbox/SOC/2009/fusion/libs/fusion/doc/html/images/alert.png (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/html/images/caution.png (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/html/images/fusion_org.png (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/html/images/home.png (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/html/images/important.png (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/html/images/next.png (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/html/images/note.png (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/html/images/prev.png (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/html/images/smiley.png (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/html/images/tip.png (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/html/images/up.png (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/html/images/warning.png (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/introduction.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/iterator.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/notes.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/organization.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/preface.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/quick_start.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/references.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/sequence.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/support.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/tuple.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/doc/view.qbk (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/
   sandbox/SOC/2009/fusion/libs/fusion/example/cookbook/
   sandbox/SOC/2009/fusion/libs/fusion/example/cookbook/do_the_bind.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/cookbook/fill_em_up.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/Jamfile (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/advance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/at_key_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/category_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/distance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/equal_to_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/has_key_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/is_sequence_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/is_view_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/next_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/prior_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/size_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/value_at_key_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/detail/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/example_struct_type.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/tag_of.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/test_example.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/extension/triple.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/Jamfile (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/accumulate.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/functional.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/inner_product.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/inner_product2.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/measure.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/sequence_efficiency.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/timings.txt (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/example/performance/zip_efficiency.cpp (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/module.cmake (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/
   sandbox/SOC/2009/fusion/libs/fusion/test/CMakeLists.txt (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/Jamfile (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/all.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/any.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/clear.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/count.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/count_if.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/erase.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/erase_key.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/filter.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/filter_if.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/find.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/find_if.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/fold.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/for_each.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/insert.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/insert_range.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/join.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/none.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/pop_back.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/pop_front.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/push_back.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/push_front.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/remove.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/remove_if.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/replace.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/replace_if.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/reverse.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/transform.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/zip.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/zip2.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/zip_ignore.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/fused.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/fused_function_object.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/fused_procedure.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/invoke.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/invoke_function_object.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/invoke_procedure.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_fused.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_fused_function_object.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_fused_procedure.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_unfused.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/unfused.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/unfused_typed.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/adapt_assoc_struct.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/adapt_struct.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/array.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_list.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_map.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_set.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/as_vector.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/boost_tuple.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/comparison.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/cons.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/construction.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/copy.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deduce_sequence.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/filter_view.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/io.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/iterator_range.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/joint_view.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_comparison.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_construction.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_copy.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_iterator.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_make.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_misc.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_mutate.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/list_tie.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/make.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/map.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/map_tie.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/misc.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/mutate.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/reverse_view.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/set.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/single_view.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/std_pair.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/swap.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tr1_tuple_auto_conv.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/transform_view.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tuple_comparison.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tuple_construction.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tuple_copy.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tuple_element.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tuple_make.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tuple_misc.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tuple_mutate.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/tuple_tie.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/value_at.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_comparison.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_construction.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_copy.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_iterator.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_make.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_misc.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_mutate.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_n.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_tie.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/vector_value_at.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/zip_view.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/zip_view2.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/zip_view_ignore.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/todo.txt (contents, props changed)
   sandbox/SOC/2009/fusion/project-root.jam (contents, props changed)

Added: sandbox/SOC/2009/fusion/LICENSE_1_0.txt
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/LICENSE_1_0.txt 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,23 @@
+Boost Software License - Version 1.0 - August 17th, 2003
+
+Permission is hereby granted, free of charge, to any person or organization
+obtaining a copy of the software and accompanying documentation covered by
+this license (the "Software") to use, reproduce, display, distribute,
+execute, and transmit the Software, and to prepare derivative works of the
+Software, and to permit third-parties to whom the Software is furnished to
+do so, all subject to the following:
+
+The copyright notices in the Software and this entire statement, including
+the above license grant, this restriction and the following disclaimer,
+must be included in all copies of the Software, in whole or in part, and
+all derivative works of the Software, unless such copies or derivative
+works are solely in the form of machine-executable object code generated by
+a source language processor.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.

Added: sandbox/SOC/2009/fusion/boost-build.jam
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost-build.jam 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,6 @@
+# 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)
+
+boost-build $(BOOST_ROOT)/tools/build/v2 ;

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,21 @@
+/*=============================================================================
+ 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_ADAPTED_HPP
+#define BOOST_FUSION_ADAPTED_HPP
+
+#include <boost/fusion/adapted/array.hpp>
+#include <boost/fusion/adapted/boost_array.hpp>
+#include <boost/fusion/adapted/boost_tuple.hpp>
+#include <boost/fusion/adapted/mpl.hpp>
+//TODO!!!
+//#include <boost/fusion/adapted/std_array.hpp>
+#include <boost/fusion/adapted/std_pair.hpp>
+#include <boost/fusion/adapted/struct.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/array.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,11 @@
+// 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_ARRAY_HPP
+#define BOOST_FUSION_ADAPTED_ARRAY_HPP
+
+#include <boost/fusion/adapted/boost_array.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_array.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_array.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,28 @@
+// 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_BOOST_ARRAY_HPP
+#define BOOST_FUSION_ADAPTED_BOOST_ARRAY_HPP
+
+#include <boost/fusion/support/internal/ref.hpp>
+
+#define BOOST_FUSION_ADAPTED_ARRAY_TYPE class
+#define BOOST_FUSION_ADAPTED_ARRAY_NAMESPACE boost
+#include <boost/fusion/adapted/detail/array/tag_of.hpp>
+#undef BOOST_FUSION_ADAPTED_ARRAY_NAMESPACE
+#undef BOOST_FUSION_ADAPTED_ARRAY_TYPE
+
+#include <boost/fusion/adapted/detail/array/is_view_impl.hpp>
+#include <boost/fusion/adapted/detail/array/is_sequence_impl.hpp>
+#include <boost/fusion/adapted/detail/array/category_of_impl.hpp>
+#include <boost/fusion/adapted/detail/array/begin_impl.hpp>
+#include <boost/fusion/adapted/detail/array/end_impl.hpp>
+#include <boost/fusion/adapted/detail/array/size_impl.hpp>
+#include <boost/fusion/adapted/detail/array/at_impl.hpp>
+#include <boost/fusion/adapted/detail/array/value_at_impl.hpp>
+#include <boost/fusion/adapted/detail/array/deref_impl.hpp>
+#include <boost/fusion/adapted/detail/array/value_of_impl.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,29 @@
+/*=============================================================================
+ 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_BOOST_TUPLE_HPP
+#define BOOST_FUSION_ADAPTED_BOOST_TUPLE_HPP
+
+//TODO adapt std::(tr1::)tuple
+
+#include <boost/fusion/support/internal/ref.hpp>
+
+#include <boost/tuple/tuple.hpp>
+
+#include <boost/fusion/adapted/detail/boost_tuple/tag_of.hpp>
+#include <boost/fusion/adapted/detail/boost_tuple/is_view_impl.hpp>
+#include <boost/fusion/adapted/detail/boost_tuple/is_sequence_impl.hpp>
+#include <boost/fusion/adapted/detail/boost_tuple/category_of_impl.hpp>
+#include <boost/fusion/adapted/detail/boost_tuple/size_impl.hpp>
+#include <boost/fusion/adapted/detail/boost_tuple/at_impl.hpp>
+#include <boost/fusion/adapted/detail/boost_tuple/value_at_impl.hpp>
+#include <boost/fusion/adapted/detail/boost_tuple/begin_impl.hpp>
+#include <boost/fusion/adapted/detail/boost_tuple/end_impl.hpp>
+#include <boost/fusion/adapted/detail/boost_tuple/deref_impl.hpp>
+#include <boost/fusion/adapted/detail/boost_tuple/value_of_impl.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/at_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_ARRAY_AT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_ARRAY_AT_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct at_impl;
+
+ template<>
+ struct at_impl<array_tag>
+ {
+ template<typename SeqRef, typename N>
+ struct apply
+ {
+ typedef typename
+ detail::forward_as<
+ SeqRef
+ , typename detail::remove_reference<SeqRef>::type::value_type
+ >::type
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return seq[N::value];
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/begin_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,43 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_ARRAY_BEGIN_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_ARRAY_BEGIN_IMPL_HPP
+
+#include <boost/fusion/iterator/basic_iterator.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<array_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ basic_iterator<
+ array_iterator_tag
+ , random_access_traversal_tag
+ , SeqRef
+ , 0
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq,0);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/category_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/category_of_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,33 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_ARRAY_CATEGORY_OF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_ARRAY_CATEGORY_OF_IMPL_HPP
+
+namespace boost { namespace fusion
+{
+ struct random_access_traversal_tag;
+
+ namespace extension
+ {
+ template<typename SeqRef>
+ struct category_of_impl;
+
+ template<>
+ struct category_of_impl<array_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ {
+ typedef random_access_traversal_tag type;
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/deref_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/deref_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,40 @@
+// 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_DETAIL_ARRAY_DEREF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_ARRAY_DEREF_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct deref_impl;
+
+ template <>
+ struct deref_impl<array_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+
+ typedef typename
+ detail::forward_as<
+ typename it::seq_type
+ , typename detail::remove_reference<
+ typename it::seq_type
+ >::type::value_type
+ >::type
+ type;
+
+ static type
+ call(ItRef it_)
+ {
+ return (*it_.seq)[it::index::value];
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/end_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,43 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_ARRAY_END_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_ARRAY_END_IMPL_HPP
+
+#include <boost/fusion/iterator/basic_iterator.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<array_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ basic_iterator<
+ array_iterator_tag
+ , random_access_traversal_tag
+ , SeqRef
+ , detail::remove_reference<SeqRef>::type::static_size
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq,0);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/is_sequence_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/is_sequence_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_ADAPTED_DETAIL_ARRAY_IS_SEQUENCE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_ARRAY_IS_SEQUENCE_IMPL_HPP
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct is_sequence_impl;
+
+ template<>
+ struct is_sequence_impl<array_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ : mpl::true_
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/is_view_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/is_view_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,30 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_ARRAY_IS_VIEW_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_ARRAY_IS_VIEW_IMPL_HPP
+
+#include <boost/mpl/bool.hpp>
+
+//TODO doc!!!
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct is_view_impl;
+
+ template<>
+ struct is_view_impl<array_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ : mpl::false_
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/size_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/size_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,27 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_ARRAY_SIZE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_ARRAY_SIZE_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct size_impl;
+
+ template<>
+ struct size_impl<array_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ : mpl::int_<detail::remove_reference<SeqRef>::type::static_size>
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/tag_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/tag_of.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,40 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#include <boost/fusion/support/tag_of_fwd.hpp>
+
+#include <cstddef>
+
+namespace BOOST_FUSION_ADAPTED_ARRAY_NAMESPACE
+{
+ template<typename T, std::size_t N>
+ BOOST_FUSION_ADAPTED_ARRAY_TYPE array;
+}
+
+namespace boost { namespace fusion
+{
+ struct array_tag;
+ struct array_iterator_tag;
+ struct random_access_traversal_tag;
+
+ namespace traits
+ {
+#define BOOST_FUSION_TAG_OF_SPECIALIZATION(COMBINATION,_)\
+ template<typename T, std::size_t N>\
+ struct tag_of<\
+ BOOST_FUSION_ADAPTED_ARRAY_NAMESPACE::array<T,N> COMBINATION>\
+ {\
+ typedef array_tag type;\
+ };
+
+ BOOST_FUSION_ALL_CV_REF_NON_REF_COMBINATIONS(
+ BOOST_FUSION_TAG_OF_SPECIALIZATION,_)
+
+#undef BOOST_FUSION_TAG_OF_SPECIALIZATION
+ }
+}}

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/value_at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/value_at_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,28 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_ARRAY_VALUE_AT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_ARRAY_VALUE_AT_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<array_tag>
+ {
+ template <typename SeqRef, typename N>
+ struct apply
+ {
+ typedef typename SeqRef::value_type type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/value_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/array/value_of_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,29 @@
+// 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_DETAIL_ARRAY_VALUE_OF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_ARRAY_VALUE_OF_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <>
+ struct value_of_impl<array_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename
+ detail::remove_reference<
+ typename detail::remove_reference<ItRef>::type::seq_type
+ >::type::value_type
+ type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/at_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_DETAIL_BOOST_TUPLE_AT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_BOOST_TUPLE_AT_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct at_impl;
+
+ template <>
+ struct at_impl<boost_tuple_tag>
+ {
+ template <typename SeqRef, typename N>
+ struct apply
+ {
+ typedef typename
+ detail::forward_as<
+ SeqRef
+ , typename tuples::element<
+ N::value
+ , typename detail::identity<SeqRef>::type
+ >::type
+ >::type
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return tuples::get<N::value>(
+ BOOST_FUSION_FORWARD(SeqRef,seq));
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/begin_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_DETAIL_BOOST_TUPLE_BEGIN_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_BOOST_TUPLE_BEGIN_IMPL_HPP
+
+#include <boost/fusion/iterator/basic_iterator.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<boost_tuple_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ basic_iterator<
+ boost_tuple_iterator_tag
+ , random_access_traversal_tag
+ , SeqRef
+ , 0
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq,0);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/category_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/category_of_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,32 @@
+/*=============================================================================
+ 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_DETAIL_BOOST_TUPLE_CATEGORY_OF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_BOOST_TUPLE_CATEGORY_OF_IMPL_HPP
+
+namespace boost { namespace fusion
+{
+ struct random_access_traversal_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct category_of_impl;
+
+ template<>
+ struct category_of_impl<boost_tuple_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ {
+ typedef random_access_traversal_tag type;
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/deref_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/deref_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_ADAPTED_DETAIL_BOOST_TUPLE_DEREF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_BOOST_TUPLE_DEREF_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct deref_impl;
+
+ template <>
+ struct deref_impl<boost_tuple_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+
+ typedef typename
+ detail::forward_as<
+ typename it::seq_type
+ , typename tuples::element<
+ it::index::value
+ , typename detail::remove_reference<
+ typename it::seq_type
+ >::type
+ >::type
+ >::type
+ type;
+
+ static type
+ call(ItRef it_)
+ {
+ return get<it::index::value>(*it_.seq);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/end_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,44 @@
+/*=============================================================================
+ 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_DETAIL_BOOST_TUPLE_END_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_BOOST_TUPLE_END_IMPL_HPP
+
+#include <boost/fusion/iterator/basic_iterator.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<boost_tuple_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ basic_iterator<
+ boost_tuple_iterator_tag
+ , random_access_traversal_tag
+ , SeqRef
+ , tuples::length<
+ typename detail::identity<SeqRef>::type
+ >::value
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq,0);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/is_sequence_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/is_sequence_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_ADAPTED_DETAIL_BOOST_TUPLE_IS_SEQUENCE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_BOOST_TUPLE_IS_SEQUENCE_IMPL_HPP
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct is_sequence_impl;
+
+ template<>
+ struct is_sequence_impl<boost_tuple_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ : mpl::true_
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/is_view_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/is_view_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_ADAPTED_DETAIL_BOOST_TUPLE_IS_VIEW_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_BOOST_TUPLE_IS_VIEW_IMPL_HPP
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct is_view_impl;
+
+ template<>
+ struct is_view_impl<boost_tuple_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ : mpl::false_
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/size_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/size_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,32 @@
+/*=============================================================================
+ 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_DETAIL_BOOST_TUPLE_SIZE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_BOOST_TUPLE_SIZE_IMPL_HPP
+
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct size_impl;
+
+ template <>
+ struct size_impl<boost_tuple_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ : mpl::int_<
+ tuples::length<
+ typename detail::identity<SeqRef>::type
+ >::value
+ >
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/tag_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/tag_of.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,51 @@
+/*=============================================================================
+ 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_DETAIL_BOOST_TUPLE_TAG_OF_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_BOOST_TUPLE_TAG_OF_HPP
+
+#include <boost/fusion/support/tag_of_fwd.hpp>
+
+namespace boost { namespace fusion
+{
+ struct boost_tuple_tag;
+ struct boost_tuple_iterator_tag;
+
+ namespace traits
+ {
+#define BOOST_FUSION_TAG_OF_SPECIALIZATION(COMBINATION,_)\
+ template <\
+ class T0, class T1, class T2, class T3, class T4, \
+ class T5, class T6, class T7, class T8, class T9\
+ >\
+ struct tag_of<\
+ tuples::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> COMBINATION\
+ >\
+ {\
+ typedef boost_tuple_tag type;\
+ };\
+ \
+ template <class Head, class Tail>\
+ struct tag_of<tuples::cons<Head, Tail> COMBINATION>\
+ {\
+ typedef boost_tuple_tag type;\
+ };\
+ \
+ template <>\
+ struct tag_of<tuples::null_type COMBINATION>\
+ {\
+ typedef boost_tuple_tag type;\
+ };
+
+ BOOST_FUSION_ALL_CV_REF_NON_REF_COMBINATIONS(
+ BOOST_FUSION_TAG_OF_SPECIALIZATION,_)
+
+#undef BOOST_FUSION_TAG_OF_SPECIALIZATION
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/value_at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/value_at_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,29 @@
+/*=============================================================================
+ 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_DETAIL_BOOST_TUPLE_VALUE_AT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_BOOST_TUPLE_VALUE_AT_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<boost_tuple_tag>
+ {
+ template <typename SeqRef, typename N>
+ struct apply
+ : tuples::element<
+ N::value
+ , typename detail::identity<SeqRef>::type
+ >
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/value_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/boost_tuple/value_of_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,34 @@
+// 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_DETAIL_BOOST_TUPLE_VALUE_OF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_BOOST_TUPLE_VALUE_OF_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <>
+ struct value_of_impl<boost_tuple_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+
+ typedef typename
+ tuples::element<
+ it::index::value
+ , typename detail::remove_reference<
+ typename it::seq_type
+ >::type
+ >::type
+ type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/advance_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/advance_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_ADAPTED_DETAIL_MPL_ADVANCE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_ADVANCE_IMPL_HPP
+
+#include <boost/mpl/advance.hpp>
+
+namespace boost { namespace fusion { 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;
+
+ template<typename ItRef2>
+ static type
+ call(ItRef2)
+ {
+ return type();
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/at_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,38 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_MPL_AT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_AT_IMPL_HPP
+
+#include <boost/mpl/at.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct at_impl;
+
+ template <>
+ struct at_impl<mpl_sequence_tag>
+ {
+ template <typename SeqRef, typename N>
+ struct apply
+ {
+ typedef typename
+ mpl::at<typename detail::identity<SeqRef>::type, N>::type
+ type;
+
+ static type
+ call(SeqRef)
+ {
+ return type();
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/begin_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,42 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_MPL_BEGIN_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_BEGIN_IMPL_HPP
+
+#include <boost/mpl/begin.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<mpl_sequence_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ mpl_iterator<
+ typename mpl::begin<
+ typename detail::identity<SeqRef>::type
+ >::type
+ >
+ type;
+
+ static type
+ call(SeqRef)
+ {
+ return type();
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/category_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/category_of_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,88 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_MPL_CATEGORY_OF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_CATEGORY_OF_IMPL_HPP
+
+#include <boost/mpl/begin.hpp>
+#include <boost/mpl/is_sequence.hpp>
+#include <boost/mpl/iterator_category.hpp>
+#include <boost/mpl/iterator_tags.hpp>
+
+namespace boost { namespace fusion
+{
+ struct forward_traversal_tag;
+ struct bidirectional_traversal_tag;
+ struct random_access_traversal_tag;
+
+ namespace detail
+ {
+ template <typename Category>
+ struct mpl_iterator_category;
+
+ template <>
+ struct mpl_iterator_category<mpl::forward_iterator_tag>
+ {
+ typedef forward_traversal_tag type;
+ };
+
+ template <>
+ struct mpl_iterator_category<mpl::bidirectional_iterator_tag>
+ {
+ typedef bidirectional_traversal_tag type;
+ };
+
+ template <>
+ struct mpl_iterator_category<mpl::random_access_iterator_tag>
+ {
+ typedef random_access_traversal_tag type;
+ };
+ }
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct category_of_impl;
+
+ template<>
+ struct category_of_impl<mpl_sequence_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ {
+ typedef typename
+ detail::mpl_iterator_category<
+ typename mpl::iterator_category<
+ typename mpl::begin<
+ typename detail::identity<SeqRef>::type
+ >::type
+ >::type
+ >::type
+ type;
+ };
+ };
+
+ template<>
+ struct category_of_impl<mpl_iterator_tag>
+ {
+ template<typename ItRef>
+ struct apply
+ {
+ typedef typename
+ detail::mpl_iterator_category<
+ typename mpl::iterator_category<
+ typename detail::identity<ItRef>::type
+ >::type
+ >::type
+ type;
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/deref_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/deref_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_ADAPTED_DETAIL_MPL_DEREF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_DEREF_IMPL_HPP
+
+#include <boost/mpl/deref.hpp>
+
+namespace boost { namespace fusion { 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;
+
+ template<typename ItRef2>
+ static type
+ call(ItRef2)
+ {
+ return type();
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/distance_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/distance_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,35 @@
+/*=============================================================================
+ 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_DETAIL_MPL_DISTANCE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_DISTANCE_IMPL_HPP
+
+#include <boost/fusion/adapted/detail/mpl/get_mpl_it.hpp>
+
+#include <boost/mpl/distance.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct distance_to_impl;
+
+ template <>
+ struct distance_to_impl<mpl_iterator_tag>
+ {
+ template <typename It1Ref, typename It2Ref>
+ struct apply
+ : mpl::distance<
+ typename detail::identity<It1Ref>::type
+ , typename detail::get_mpl_it<
+ typename detail::identity<It2Ref>::type
+ >::type
+ >
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/empty_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/empty_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,29 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_MPL_EMPTY_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_EMPTY_IMPL_HPP
+
+#include <boost/mpl/empty.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct empty_impl;
+
+ template <>
+ struct empty_impl<mpl_sequence_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ : mpl::empty<typename detail::identity<SeqRef>::type>
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/end_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,42 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_MPL_END_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_END_IMPL_HPP
+
+#include <boost/mpl/end.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<mpl_sequence_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ mpl_iterator<
+ typename mpl::end<
+ typename detail::identity<SeqRef>::type
+ >::type
+ >
+ type;
+
+ static type
+ call(SeqRef)
+ {
+ return type();
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/equal_to_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/equal_to_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,35 @@
+/*=============================================================================
+ 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_DETAIL_MPL_EQUAL_TO_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_EQUAL_TO_IMPL_HPP
+
+#include <boost/fusion/adapted/detail/mpl/get_mpl_it.hpp>
+
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct equal_to_impl;
+
+ template <>
+ struct equal_to_impl<mpl_iterator_tag>
+ {
+ template <typename It1Ref, typename It2Ref>
+ struct apply
+ : is_same<
+ typename detail::identity<It1Ref>::type
+ , typename detail::get_mpl_it<
+ typename detail::identity<It2Ref>::type
+ >::type
+ >
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/get_mpl_it.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/get_mpl_it.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_DETAIL_MPL_GET_MPL_IT_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_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

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/has_key_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/has_key_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,29 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_MPL_HAS_KEY_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_HAS_KEY_IMPL_HPP
+
+#include <boost/mpl/has_key.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct has_key_impl;
+
+ template <>
+ struct has_key_impl<mpl_sequence_tag>
+ {
+ template <typename SeqRef, typename Key>
+ struct apply
+ : mpl::has_key<typename detail::identity<SeqRef>::type, Key>
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/is_iterator_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/is_iterator_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,29 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_MPL_IS_ITERATOR_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_IS_ITERATOR_IMPL_HPP
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct is_iterator_impl;
+
+ template<>
+ struct is_iterator_impl<mpl_iterator_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ : mpl::true_
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/is_sequence_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/is_sequence_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,29 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_MPL_IS_SEQUENCE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_IS_SEQUENCE_IMPL_HPP
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct is_sequence_impl;
+
+ template<>
+ struct is_sequence_impl<mpl_sequence_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ : mpl::true_
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/is_view_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/is_view_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,29 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_MPL_IS_VIEW_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_IS_VIEW_IMPL_HPP
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct is_view_impl;
+
+ template<>
+ struct is_view_impl<mpl_sequence_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ : mpl::true_
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/mpl_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/mpl_iterator.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,116 @@
+/*=============================================================================
+ 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_DETAIL_MPL_MPL_ITERATOR_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_MPL_ITERATOR_HPP
+
+#include <boost/fusion/iterator/iterator_facade.hpp>
+#include <boost/fusion/support/category_of.hpp>
+
+//TODO doc no assoc iterator!
+
+namespace boost { namespace fusion
+{
+ struct mpl_iterator_tag;
+ struct mpl_sequence_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <typename Tag>
+ struct equal_to_impl;
+
+ template <typename Tag>
+ struct deref_impl;
+
+ template <typename Tag>
+ struct next_impl;
+
+ template <typename Tag>
+ struct prior_impl;
+
+ template <typename Tag>
+ struct advance_impl;
+
+ template <typename Tag>
+ struct distance_impl;
+ }
+
+ namespace detail
+ {
+ template<typename>
+ struct get_mpl_iterator_tag
+ {
+ typedef mpl_iterator_tag type;
+ };
+ }
+
+ 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 get_mpl_it.hpp!
+ typedef void void_;
+ typedef It it_type;
+
+ template <typename ItRef>
+ struct value_of
+ : extension::value_of_impl<
+ typename detail::get_mpl_iterator_tag<ItRef>::type
+ >::template apply<It&>
+ {};
+
+ template <typename It1Ref, typename It2Ref>
+ struct equal_to
+ : extension::equal_to_impl<
+ typename detail::get_mpl_iterator_tag<It1Ref>::type
+ >:: template apply<It&,It2Ref>
+ {};
+
+ template <typename ItRef>
+ struct deref
+ : extension::deref_impl<
+ typename detail::get_mpl_iterator_tag<ItRef>::type
+ >::template apply<It&>
+ {};
+
+ template <typename ItRef>
+ struct next
+ : extension::next_impl<
+ typename detail::get_mpl_iterator_tag<ItRef>::type
+ >::template apply<It&>
+ {};
+
+ template <typename ItRef>
+ struct prior
+ : extension::prior_impl<
+ typename detail::get_mpl_iterator_tag<ItRef>::type
+ >::template apply<It&>
+ {};
+
+ template <typename ItRef, typename N>
+ struct advance
+ : extension::advance_impl<
+ typename detail::get_mpl_iterator_tag<ItRef>::type
+ >::template apply<It&,N>
+ {};
+
+ template <typename It1Ref, typename It2Ref>
+ struct distance
+ : extension::distance_impl<
+ typename detail::get_mpl_iterator_tag<It1Ref>::type
+ >::template apply<It&,It2Ref>
+ {};
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/next_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/next_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_DETAIL_MPL_NEXT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_NEXT_IMPL_HPP
+
+#include <boost/mpl/next.hpp>
+
+namespace boost { namespace fusion { 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;
+
+ template<typename ItRef2>
+ static type
+ call(ItRef2)
+ {
+ return type();
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/prior_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/prior_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_DETAIL_MPL_PRIOR_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_PRIOR_IMPL_HPP
+
+#include <boost/mpl/prior.hpp>
+
+namespace boost { namespace fusion { 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;
+
+ template<typename ItRef2>
+ static type
+ call(ItRef2)
+ {
+ return type();
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/size_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/size_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,29 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_MPL_SIZE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_SIZE_IMPL_HPP
+
+#include <boost/mpl/size.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct size_impl;
+
+ template <>
+ struct size_impl<mpl_sequence_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ : mpl::size<typename detail::identity<SeqRef>::type>
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/tag_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/tag_of.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,83 @@
+// 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_DETAIL_MPL_TAG_OF_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_TAG_OF_HPP
+
+#include <boost/fusion/support/tag_of.hpp>
+
+#include <boost/mpl/iterator_tags.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/equal_to.hpp>
+#include <boost/mpl/is_sequence.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace boost
+{
+ namespace fusion
+ {
+ struct mpl_sequence_tag;
+ struct mpl_iterator_tag;
+
+ namespace detail
+ {
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(category);
+
+ template<typename T, typename Category>
+ struct category_is
+ : mpl::equal_to<typename T::category, Category>
+ {};
+ }
+
+ namespace traits
+ {
+ template<typename T>
+ struct tag_of<
+ T
+ , typename disable_if<
+ typename detail::has_fusion_tag<
+ typename detail::identity<T>::type
+ >::type
+ >::type
+ >
+ {
+ typedef typename detail::identity<T>::type identity_t;
+
+ typedef typename
+ mpl::eval_if<
+ mpl::is_sequence<identity_t>
+ , mpl::identity<mpl_sequence_tag>
+ , mpl::eval_if<
+ mpl::and_<
+ detail::has_category<identity_t>
+ , mpl::or_<
+ detail::category_is<
+ identity_t
+ , mpl::forward_iterator_tag
+ >
+ , detail::category_is<
+ identity_t
+ , mpl::bidirectional_iterator_tag
+ >
+ , detail::category_is<
+ identity_t
+ , mpl::random_access_iterator_tag
+ >
+ >
+ >
+ , mpl::identity<mpl_iterator_tag>
+ , tag_of<T, bool>
+ >
+ >::type
+ type;
+ };
+ }
+ }
+}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/value_at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/value_at_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,29 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_MPL_VALUE_AT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_VALUE_AT_IMPL_HPP
+
+#include <boost/mpl/at.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<mpl_sequence_tag>
+ {
+ template <typename SeqRef, typename N>
+ struct apply
+ : mpl::at<typename detail::identity<SeqRef>::type, N>
+ {};
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/value_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/mpl/value_of_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_ADAPTED_DETAIL_MPL_VALUE_OF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_MPL_VALUE_OF_IMPL_HPP
+
+#include <boost/mpl/deref.hpp>
+
+namespace boost { namespace fusion { 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

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_assoc_struct.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_assoc_struct.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,38 @@
+// 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_DETAIL_STRUCT_ADAPT_ASSOC_STRUCT_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_ADAPT_ASSOC_STRUCT_HPP
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+
+#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0(X, Y, Z)\
+ ((X, Y, Z)) BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_1
+#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_1(X, Y, Z)\
+ ((X, Y, Z)) BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0
+#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0_END
+#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_1_END
+
+#define BOOST_FUSION_ADAPT_ASSOC_STRUCT(NAME, SEQ)\
+ BOOST_FUSION_ADAPT_STRUCT_BASE(\
+ NAME,\
+ assoc_struct_tag,\
+ BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_STRUCT_FILLER_0 SEQ,_END),\
+ BOOST_FUSION_ADAPT_ASSOC_STRUCT_C)
+
+#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_C(R, NAME, I, XYZ) \
+ BOOST_FUSION_ADAPT_STRUCT_C_BASE(NAME, I, XYZ, 3) \
+ \
+namespace boost { namespace fusion { namespace extension \
+{ \
+ template<> \
+ struct struct_assoc_key<NAME, I> \
+ { \
+ typedef BOOST_PP_TUPLE_ELEM(3, 2, XYZ) type; \
+ }; \
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_base.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_base.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,63 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+ Copyright (c) 2009 Dan Christopher Schmidt
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_ADAPTED_DETAIL_STRUCT_ADAPT_BASE_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_ADAPT_BASE_HPP
+
+#include <boost/fusion/support/tag_of_fwd.hpp>
+
+#include <boost/preprocessor/seq/size.hpp>
+#include <boost/preprocessor/seq/for_each_i.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+
+#define BOOST_FUSION_ADAPT_STRUCT_TAG_OF_SPECIALIZATION(COMBINATION, DATA) \
+ template <> \
+ struct tag_of<BOOST_PP_TUPLE_ELEM(2,0,DATA) COMBINATION> \
+ { \
+ typedef BOOST_PP_TUPLE_ELEM(2,1,DATA) type; \
+ };
+
+#define BOOST_FUSION_ADAPT_STRUCT_BASE(NAME,TAG,TUPLE_SEQ,CALLBACK) \
+ BOOST_PP_SEQ_FOR_EACH_I(CALLBACK,NAME,TUPLE_SEQ) \
+ \
+namespace boost { namespace fusion \
+{ \
+ namespace traits \
+ { \
+ BOOST_FUSION_ALL_CV_REF_NON_REF_COMBINATIONS( \
+ BOOST_FUSION_ADAPT_STRUCT_TAG_OF_SPECIALIZATION,(NAME,TAG)) \
+ } \
+ \
+ namespace extension \
+ { \
+ template <> \
+ struct struct_size<NAME> \
+ : mpl::int_<BOOST_PP_SEQ_SIZE(TUPLE_SEQ)> \
+ {}; \
+ } \
+}}
+
+#define BOOST_FUSION_ADAPT_STRUCT_C_BASE(NAME, I, TUPLE, MAX_SIZE) \
+namespace boost { namespace fusion { namespace extension \
+{ \
+ template <> \
+ struct struct_member<NAME, I> \
+ { \
+ typedef BOOST_PP_TUPLE_ELEM(MAX_SIZE, 0, TUPLE) type; \
+ \
+ template<typename Seq> \
+ static typename detail::forward_as<Seq&,type>::type \
+ call(Seq& seq) \
+ { \
+ return seq.BOOST_PP_TUPLE_ELEM(MAX_SIZE, 1, TUPLE); \
+ } \
+ }; \
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_struct.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/adapt_struct.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,28 @@
+// 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_DETAIL_STRUCT_ADAPT_STRUCT_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_ADAPT_STRUCT_HPP
+
+#include <boost/preprocessor/cat.hpp>
+
+#define BOOST_FUSION_ADAPT_STRUCT_FILLER_0(X, Y)\
+ ((X, Y)) BOOST_FUSION_ADAPT_STRUCT_FILLER_1
+#define BOOST_FUSION_ADAPT_STRUCT_FILLER_1(X, Y)\
+ ((X, Y)) BOOST_FUSION_ADAPT_STRUCT_FILLER_0
+#define BOOST_FUSION_ADAPT_STRUCT_FILLER_0_END
+#define BOOST_FUSION_ADAPT_STRUCT_FILLER_1_END
+
+#define BOOST_FUSION_ADAPT_STRUCT(NAME, SEQ)\
+ BOOST_FUSION_ADAPT_STRUCT_BASE(\
+ NAME,\
+ assoc_struct_tag,\
+ BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_FILLER_0 SEQ,_END),\
+ BOOST_FUSION_ADAPT_STRUCT_C)
+
+#define BOOST_FUSION_ADAPT_STRUCT_C(R, NAME, I, XY)\
+ BOOST_FUSION_ADAPT_STRUCT_C_BASE(NAME, I, XY, 2)
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/at_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,53 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_STRUCT_AT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_AT_IMPL_HPP
+
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct at_impl;
+
+ template <>
+ struct at_impl<struct_tag>
+ {
+ template <typename SeqRef, typename N>
+ struct apply
+ {
+ typedef typename
+ detail::forward_as<
+ SeqRef
+ , typename struct_member<
+ typename detail::identity<SeqRef>::type
+ , N::value
+ >::type
+ >::type
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return
+ struct_member<
+ typename detail::identity<SeqRef>::type
+ , N::value
+ >::call(seq);
+ }
+ };
+ };
+
+ template <>
+ struct at_impl<assoc_struct_tag>
+ : at_impl<struct_tag>
+ {};
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/begin_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,66 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_STRUCT_BEGIN_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_BEGIN_IMPL_HPP
+
+#include <boost/fusion/iterator/basic_iterator.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<struct_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ basic_iterator<
+ struct_iterator_tag
+ , random_access_traversal_tag
+ , SeqRef
+ , 0
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq,0);
+ }
+ };
+ };
+
+ template <>
+ struct begin_impl<assoc_struct_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ basic_iterator<
+ assoc_struct_iterator_tag
+ , assoc_struct_category
+ , SeqRef
+ , 0
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq,0);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/category_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/category_of_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,45 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_STRUCT_CATEGORY_OF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_CATEGORY_OF_IMPL_HPP
+
+#include <boost/fusion/support/category_of.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace extension
+ {
+ template<typename Tag>
+ struct category_of_impl;
+
+ template<>
+ struct category_of_impl<struct_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ {
+ typedef random_access_traversal_tag type;
+ };
+ };
+
+ template<>
+ struct category_of_impl<assoc_struct_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ {
+ struct type
+ : random_access_traversal_tag, associative_sequence_tag
+ {};
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_data_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_data_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,20 @@
+// 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_DETAIL_STRUCT_DEREF_DATA_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_DEREF_DATA_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct deref_data_impl;
+
+ template <>
+ struct deref_data_impl<assoc_struct_iterator_tag>
+ : deref_impl<assoc_struct_iterator_tag>
+ {};
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/deref_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,53 @@
+// 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_DETAIL_STRUCT_DEREF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_DEREF_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct deref_impl;
+
+ template <>
+ struct deref_impl<struct_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+ typedef typename
+ detail::identity<typename it::seq_type>::type
+ identity_struct;
+
+ typedef typename
+ detail::forward_as<
+ typename it::seq_type
+ , typename extension::struct_member<
+ identity_struct
+ , it::index::value
+ >::type
+ >::type
+ type;
+
+ static type
+ call(ItRef it)
+ {
+ return
+ extension::struct_member<
+ identity_struct
+ , it::index::value
+ >::call(*it.seq);
+ }
+ };
+ };
+
+ template <>
+ struct deref_impl<assoc_struct_iterator_tag>
+ : deref_impl<struct_iterator_tag>
+ {};
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/end_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,66 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_STRUCT_END_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_END_IMPL_HPP
+
+#include <boost/fusion/iterator/basic_iterator.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<struct_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ basic_iterator<
+ struct_iterator_tag
+ , random_access_traversal_tag
+ , SeqRef
+ , struct_size<typename detail::identity<SeqRef>::type>::value
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq,0);
+ }
+ };
+ };
+
+ template <>
+ struct end_impl<assoc_struct_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ basic_iterator<
+ assoc_struct_iterator_tag
+ , assoc_struct_category
+ , SeqRef
+ , struct_size<typename detail::identity<SeqRef>::type>::value
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq,0);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/extension.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/extension.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,40 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 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_ADAPTED_DETAIL_STRUCT_EXTENSION_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_EXTENSION_HPP
+
+#include <boost/fusion/support/category_of.hpp>
+
+namespace boost { namespace fusion
+{
+ struct struct_tag;
+ struct struct_iterator_tag;
+ struct assoc_struct_tag;
+ struct assoc_struct_iterator_tag;
+
+ struct assoc_struct_category
+ : bidirectional_traversal_tag, associative_sequence_tag
+ {};
+
+ namespace extension
+ {
+ struct no_such_member;
+
+ template<typename Seq, int N>
+ struct struct_member;
+
+ template<typename Seq, int N>
+ struct struct_assoc_key;
+
+ template<typename Seq>
+ struct struct_size;
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/is_sequence_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/is_sequence_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,34 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_STRUCT_IS_SEQUENCE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_IS_SEQUENCE_IMPL_HPP
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct is_sequence_impl;
+
+ template<>
+ struct is_sequence_impl<struct_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ : mpl::true_
+ {};
+ };
+
+ template <>
+ struct is_sequence_impl<assoc_struct_tag>
+ : is_sequence_impl<struct_tag>
+ {};
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/is_view_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/is_view_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,34 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_STRUCT_IS_VIEW_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_IS_VIEW_IMPL_HPP
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct is_view_impl;
+
+ template<>
+ struct is_view_impl<struct_tag>
+ {
+ template<typename SeqRef>
+ struct apply
+ : mpl::false_
+ {};
+ };
+
+ template <>
+ struct is_view_impl<assoc_struct_tag>
+ : is_view_impl<struct_tag>
+ {};
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/key_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/key_of_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,32 @@
+// 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_DETAIL_STRUCT_KEY_OF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_KEY_OF_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct key_of_impl;
+
+ template <>
+ struct key_of_impl<assoc_struct_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+
+ typedef typename
+ extension::struct_assoc_key<
+ typename detail::identity<typename it::seq_type>::type
+ , it::index::value
+ >::type
+ type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/size_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/size_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,34 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_STRUCT_SIZE_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_SIZE_IMPL_HPP
+
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct size_impl;
+
+ template <>
+ struct size_impl<struct_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ : struct_size<typename detail::identity<SeqRef>::type>
+ {};
+ };
+
+ template <>
+ struct size_impl<assoc_struct_tag>
+ : size_impl<struct_tag>
+ {};
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_at_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,32 @@
+/*=============================================================================
+ 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_ADAPTED_DETAIL_STRUCT_VALUE_AT_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_VALUE_AT_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template<typename Tag>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<struct_tag>
+ {
+ template <typename SeqRef, typename N>
+ struct apply
+ : struct_member<typename detail::identity<SeqRef>::type, N::value>
+ {};
+ };
+
+ template <>
+ struct value_at_impl<assoc_struct_tag>
+ : value_at_impl<struct_tag>
+ {};
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_data_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_data_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,20 @@
+// 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_DETAIL_STRUCT_VALUE_OF_DATA_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_VALUE_OF_DATA_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct value_of_data_impl;
+
+ template <>
+ struct value_of_data_impl<assoc_struct_iterator_tag>
+ : value_of_impl<assoc_struct_iterator_tag>
+ {};
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/detail/struct/value_of_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,37 @@
+// 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_DETAIL_STRUCT_VALUE_OF_IMPL_HPP
+#define BOOST_FUSION_ADAPTED_DETAIL_STRUCT_VALUE_OF_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <>
+ struct value_of_impl<struct_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+
+ typedef typename
+ extension::struct_member<
+ typename detail::identity<typename it::seq_type>::type
+ , it::index::value
+ >::type
+ type;
+ };
+ };
+
+ template <>
+ struct value_of_impl<assoc_struct_iterator_tag>
+ : value_of_impl<struct_iterator_tag>
+ {};
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,35 @@
+/*=============================================================================
+ 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_ADAPTED_MPL_HPP
+#define BOOST_FUSION_ADAPTED_MPL_HPP
+
+#include <boost/fusion/support/internal/ref.hpp>
+
+#include <boost/fusion/adapted/detail/mpl/mpl_iterator.hpp>
+#include <boost/fusion/adapted/detail/mpl/advance_impl.hpp>
+#include <boost/fusion/adapted/detail/mpl/at_impl.hpp>
+#include <boost/fusion/adapted/detail/mpl/begin_impl.hpp>
+#include <boost/fusion/adapted/detail/mpl/category_of_impl.hpp>
+#include <boost/fusion/adapted/detail/mpl/deref_impl.hpp>
+#include <boost/fusion/adapted/detail/mpl/distance_impl.hpp>
+#include <boost/fusion/adapted/detail/mpl/empty_impl.hpp>
+#include <boost/fusion/adapted/detail/mpl/end_impl.hpp>
+#include <boost/fusion/adapted/detail/mpl/equal_to_impl.hpp>
+#include <boost/fusion/adapted/detail/mpl/has_key_impl.hpp>
+#include <boost/fusion/adapted/detail/mpl/is_iterator_impl.hpp>
+#include <boost/fusion/adapted/detail/mpl/is_view_impl.hpp>
+#include <boost/fusion/adapted/detail/mpl/is_sequence_impl.hpp>
+#include <boost/fusion/adapted/detail/mpl/next_impl.hpp>
+#include <boost/fusion/adapted/detail/mpl/prior_impl.hpp>
+#include <boost/fusion/adapted/detail/mpl/size_impl.hpp>
+#include <boost/fusion/adapted/detail/mpl/tag_of.hpp>
+#include <boost/fusion/adapted/detail/mpl/value_at_impl.hpp>
+#include <boost/fusion/adapted/detail/mpl/value_of_impl.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_array.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_array.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,32 @@
+// 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_STD_ARRAY_HPP
+#define BOOST_FUSION_ADAPTED_STD_ARRAY_HPP
+
+#include <boost/config.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+
+#define BOOST_FUSION_ADAPTED_ARRAY_TYPE struct
+//TODO!!!
+#ifdef BOOST_HAS_TR1_ARRAY
+# define BOOST_FUSION_ADAPTED_ARRAY_NAMESPACE std::tr1
+#else
+# define BOOST_FUSION_ADAPTED_ARRAY_NAMESPACE std
+#endif
+#include <boost/fusion/adapted/detail/array/tag_of.hpp>
+#undef BOOST_FUSION_ADAPTED_ARRAY_NAMESPACE
+#undef BOOST_FUSION_ADAPTED_ARRAY_TYPE
+
+#include <boost/fusion/adapted/detail/array/is_view_impl.hpp>
+#include <boost/fusion/adapted/detail/array/is_sequence_impl.hpp>
+#include <boost/fusion/adapted/detail/array/category_of_impl.hpp>
+#include <boost/fusion/adapted/detail/array/begin_impl.hpp>
+#include <boost/fusion/adapted/detail/array/end_impl.hpp>
+#include <boost/fusion/adapted/detail/array/size_impl.hpp>
+#include <boost/fusion/adapted/detail/array/at_impl.hpp>
+#include <boost/fusion/adapted/detail/array/value_at_impl.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,65 @@
+// 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_STD_PAIR_HPP
+#define BOOST_FUSION_ADAPTED_STD_PAIR_HPP
+
+#include <boost/fusion/adapted/struct.hpp>
+#include <boost/fusion/support/tag_of_fwd.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+
+#include <boost/mpl/int.hpp>
+#include <boost/config/no_tr1/utility.hpp>
+
+#define BOOST_FUSION_STD_PAIR_TAG_OF_SPECIALIZATION(COMBINATION, _) \
+ template <typename T1, typename T2> \
+ struct tag_of<std::pair<T1, T2> COMBINATION> \
+ { \
+ typedef struct_tag type; \
+ };
+
+namespace boost { namespace fusion { namespace traits \
+{ \
+ BOOST_FUSION_ALL_CV_REF_NON_REF_COMBINATIONS( \
+ BOOST_FUSION_STD_PAIR_TAG_OF_SPECIALIZATION,name) \
+}}} \
+
+#undef BOOST_FUSION_STD_PAIR_TAG_OF_SPECIALIZATION
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename T1, typename T2>
+ struct struct_member<std::pair<T1, T2>, 0>
+ {
+ typedef T1 type;
+
+ template<typename Pair>
+ static typename detail::forward_as<Pair&, type>::type
+ call(Pair& pair)
+ {
+ return pair.first;
+ }
+ };
+
+ template <typename T1, typename T2>
+ struct struct_member<std::pair<T1, T2>, 1>
+ {
+ typedef T2 type;
+
+ template<typename Pair>
+ static typename detail::forward_as<Pair&, type>::type
+ call(Pair& pair)
+ {
+ return pair.second;
+ }
+ };
+
+ template <typename T1, typename T2>
+ struct struct_size<std::pair<T1, T2> >
+ : mpl::int_<2>
+ {};
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,15 @@
+/*=============================================================================
+ 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_ADAPTED_STRUCT_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_HPP
+
+#include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
+#include <boost/fusion/adapted/struct/adapt_struct.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/adapt_assoc_struct.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/adapt_assoc_struct.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,29 @@
+// 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_STRUCT_ADAPT_ASSOC_STRUCT_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_ASSOC_STRUCT_HPP
+
+#include <boost/fusion/support/internal/ref.hpp>
+
+#include <boost/fusion/adapted/detail/struct/extension.hpp>
+#include <boost/fusion/adapted/detail/struct/adapt_base.hpp>
+#include <boost/fusion/adapted/detail/struct/adapt_assoc_struct.hpp>
+
+#include <boost/fusion/adapted/detail/struct/at_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/is_view_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/is_sequence_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/value_at_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/category_of_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/size_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/begin_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/end_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/value_of_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/deref_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/deref_data_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/key_of_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/value_of_data_impl.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/adapt_struct.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/adapt_struct.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,26 @@
+// 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_STRUCT_ADAPT_STRUCT_HPP
+#define BOOST_FUSION_ADAPTED_STRUCT_ADAPT_STRUCT_HPP
+
+#include <boost/fusion/support/internal/ref.hpp>
+
+#include <boost/fusion/adapted/detail/struct/extension.hpp>
+#include <boost/fusion/adapted/detail/struct/adapt_base.hpp>
+#include <boost/fusion/adapted/detail/struct/adapt_struct.hpp>
+
+#include <boost/fusion/adapted/detail/struct/at_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/is_view_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/is_sequence_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/value_at_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/category_of_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/size_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/begin_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/end_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/value_of_impl.hpp>
+#include <boost/fusion/adapted/detail/struct/deref_impl.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,15 @@
+/*=============================================================================
+ 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_ALGORITHM_HPP
+#define BOOST_FUSION_ALGORITHM_HPP
+
+#include <boost/fusion/algorithm/iteration.hpp>
+#include <boost/fusion/algorithm/query.hpp>
+#include <boost/fusion/algorithm/transformation.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,15 @@
+/*=============================================================================
+ 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_ALGORITHM_ITERATION_HPP
+#define BOOST_FUSION_ALGORITHM_ITERATION_HPP
+
+#include <boost/fusion/algorithm/iteration/accumulate.hpp>
+#include <boost/fusion/algorithm/iteration/fold.hpp>
+#include <boost/fusion/algorithm/iteration/for_each.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/accumulate.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/accumulate.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,55 @@
+/*=============================================================================
+ 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_ALGORITHM_ITERATION_ACCUMULATE_HPP
+#define BOOST_FUSION_ALGORITHM_ITERATION_ACCUMULATE_HPP
+
+#include <boost/fusion/algorithm/iteration/fold.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq, typename State, typename F>
+ struct accumulate
+ : fold<Seq, State, F>
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+ };
+ }
+
+ template <typename Seq, typename State, typename F>
+ inline typename result_of::accumulate<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(State)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
+ >::type
+ accumulate(BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_CLREF(State) state,
+ BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ return fusion::fold(
+ BOOST_FUSION_FORWARD(Seq,seq),
+ BOOST_FUSION_FORWARD(State,state),
+ BOOST_FUSION_FORWARD(F,f));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename State, typename F>
+ inline typename
+ result_of::accumulate<Seq&, State const&, F const&>::type
+ accumulate(Seq& seq,State const& state,F const& f)
+ {
+ return fusion::fold(seq,state,f);
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/fold.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/fold.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,254 @@
+/*=============================================================================
+ 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_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/sequence/intrinsic/size.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/support/internal/result_of.hpp>
+
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/type_traits/add_const.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template<int N>
+ struct unrolled_fold
+ {
+ template<typename Result,typename It0, typename State, typename F>
+ static Result
+ call(It0 const& it0,
+ BOOST_FUSION_R_ELSE_CLREF(State) state,
+ BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ typedef typename result_of::next<It0 const&>::type It1;
+ It1 it1 = fusion::next(it0);
+ typedef typename result_of::next<It1&>::type It2;
+ It2 it2 = fusion::next(it1);
+ typedef typename result_of::next<It2&>::type It3;
+ It3 it3 = fusion::next(it2);
+
+ return unrolled_fold<N-4>::template call<Result>(
+ fusion::next(it3),
+ f(fusion::deref(it3),
+ f(fusion::deref(it2),
+ f(fusion::deref(it1),
+ f(fusion::deref(it0),
+ BOOST_FUSION_FORWARD(State,state)
+ )
+ )
+ )
+ ),
+ BOOST_FUSION_FORWARD(F,f));
+ }
+ };
+
+ template<>
+ struct unrolled_fold<3>
+ {
+ template<typename Result,typename It0, typename State, typename F>
+ static Result
+ call(It0 const& it0,
+ BOOST_FUSION_R_ELSE_CLREF(State) state,
+ BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ typedef typename result_of::next<It0 const&>::type It1;
+ It1 it1 = fusion::next(it0);
+ typedef typename result_of::next<It1&>::type It2;
+ It2 it2 = fusion::next(it1);
+
+ return f(fusion::deref(it2),
+ f(fusion::deref(it1),
+ f(
+ fusion::deref(it0),
+ BOOST_FUSION_FORWARD(State,state)
+ )
+ )
+ );
+ }
+ };
+
+ template<>
+ struct unrolled_fold<2>
+ {
+ template<typename Result,typename It0, typename State, typename F>
+ static Result
+ call(It0 const& it0,
+ BOOST_FUSION_R_ELSE_CLREF(State) state,
+ BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ return f(fusion::deref(fusion::next(it0)),
+ f(fusion::deref(it0),
+ BOOST_FUSION_FORWARD(State,state)));
+ }
+ };
+
+ template<>
+ struct unrolled_fold<1>
+ {
+ template<typename Result,typename It0, typename State, typename F>
+ static Result
+ call(It0 const& it0,
+ BOOST_FUSION_R_ELSE_CLREF(State) state,
+ BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ return f(fusion::deref(it0), BOOST_FUSION_FORWARD(State,state));
+ }
+ };
+
+ template<>
+ struct unrolled_fold<0>
+ {
+ template<typename Result,typename It0, typename State, typename F>
+ static Result
+ call(It0 const&,
+ BOOST_FUSION_R_ELSE_CLREF(State) state,
+ BOOST_FUSION_R_ELSE_CLREF(F))
+ {
+ return state;
+ }
+ };
+
+ template <typename It, typename StateRef, typename FRef>
+ struct fold_apply
+ {
+ typedef typename result_of::deref<It>::type deref_type;
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ typedef typename
+ internal::result_of<
+ typename get_func_base<FRef>::type(deref_type, StateRef)
+ >::type
+ type;
+#else
+ typedef typename
+ mpl::eval_if<
+ typename is_lrref<deref_type>::type
+ , internal::result_of<
+ typename get_func_base<FRef>::type(deref_type, StateRef)
+ >
+ , internal::result_of<
+ typename get_func_base<FRef>::type(deref_type&&, StateRef)
+ >
+ >::type
+ type;
+#endif
+ };
+
+ template <typename It, typename State, typename FRef>
+ struct fold_apply_r_else_clref
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ : fold_apply<
+ It
+ , typename add_lref<typename add_const<State>::type>::type
+ , FRef
+ >
+#else
+ : fold_apply<It,State&&,FRef>
+#endif
+ {};
+
+ template<typename It0, typename StateRef, typename FRef, int N>
+ struct result_of_unrolled_fold
+ {
+ typedef typename fold_apply<It0, StateRef, FRef>::type rest1;
+ typedef typename result_of::next<It0>::type it1;
+ typedef typename fold_apply_r_else_clref<it1, rest1, FRef>::type rest2;
+ typedef typename result_of::next<it1>::type it2;
+ typedef typename fold_apply_r_else_clref<it2, rest2, FRef>::type rest3;
+ typedef typename result_of::next<it2>::type it3;
+ typedef typename fold_apply_r_else_clref<it3, rest3, FRef>::type rest4;
+ typedef typename result_of::next<it3>::type it4;
+
+ typedef typename
+ mpl::eval_if_c<
+ !(N-4)
+ , mpl::identity<rest4>
+ , result_of_unrolled_fold<
+ it4
+ , BOOST_FUSION_R_ELSE_CLREF(rest4)
+ , FRef
+ , N-4
+ >
+ >::type
+ type;
+ };
+
+ template<typename It0, typename StateRef, typename FRef>
+ struct result_of_unrolled_fold<It0, StateRef, FRef, 3>
+ {
+ typedef typename fold_apply<It0, StateRef, FRef>::type rest1;
+ typedef typename result_of::next<It0>::type it1;
+ typedef typename fold_apply_r_else_clref<it1, rest1, FRef>::type rest2;
+ typedef typename result_of::next<it1>::type it2;
+
+ typedef typename fold_apply_r_else_clref<it2, rest2, FRef>::type type;
+ };
+
+ template<typename It0, typename StateRef, typename FRef>
+ struct result_of_unrolled_fold<It0, StateRef, FRef, 2>
+ {
+ typedef typename fold_apply<It0, StateRef, FRef>::type rest;
+ typedef typename result_of::next<It0>::type it1;
+
+ typedef typename fold_apply_r_else_clref<it1, rest, FRef>::type type;
+ };
+
+ template<typename It0, typename StateRef, typename FRef>
+ struct result_of_unrolled_fold<It0, StateRef, FRef, 1>
+ {
+ typedef typename
+ fold_apply_r_else_clref<It0, StateRef, FRef>::type
+ type;
+ };
+
+ template<int SeqSize, typename It0, typename StateRef, typename FRef>
+ struct fold_impl
+ {
+ typedef typename
+ mpl::eval_if<
+ typename is_preevaluable<FRef>::type
+ , preevaluate<FRef>
+ , result_of_unrolled_fold<It0, StateRef, FRef, SeqSize>
+ >::type
+ type;
+
+ static type
+ call(It0 const& it0, StateRef state, FRef f)
+ {
+ return unrolled_fold<SeqSize>::template call<type>(
+ it0,
+ BOOST_FUSION_FORWARD(StateRef,state),
+ BOOST_FUSION_FORWARD(FRef,f));
+ }
+ };
+
+ template<typename It0, typename StateRef, typename FRef>
+ struct fold_impl<0,It0,StateRef,FRef>
+ {
+ typedef StateRef type;
+
+ static StateRef
+ call(It0 const&, StateRef state, FRef)
+ {
+ return state;
+ }
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/for_each.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/detail/for_each.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,99 @@
+/*=============================================================================
+ 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_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/sequence/intrinsic/size.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template<int N>
+ struct for_each_unrolled
+ {
+ template<typename It0, typename F>
+ static void call(It0 const& it0, BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ typedef typename result_of::next<It0 const&>::type It1;
+ It1 it1(fusion::next(it0));
+ typedef typename result_of::next<It1&>::type It2;
+ It2 it2(fusion::next(it1));
+ typedef typename result_of::next<It2&>::type It3;
+ It3 it3(fusion::next(it2));
+
+ f(fusion::deref(it0));
+ f(fusion::deref(it1));
+ f(fusion::deref(it2));
+ f(fusion::deref(it3));
+
+ for_each_unrolled<N-4>::call(
+ fusion::next(it3)
+ , BOOST_FUSION_FORWARD(F,f));
+ }
+ };
+
+ template<>
+ struct for_each_unrolled<3>
+ {
+ template<typename It0, typename F>
+ static void call(It0 const& it0, BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ typedef typename result_of::next<It0 const&>::type It1;
+ It1 it1(fusion::next(it0));
+ typedef typename result_of::next<It1&>::type It2;
+ It2 it2(fusion::next(it1));
+
+ f(fusion::deref(it0));
+ f(fusion::deref(it1));
+ f(fusion::deref(it2));
+ }
+ };
+
+ template<>
+ struct for_each_unrolled<2>
+ {
+ template<typename It0, typename F>
+ static void call(It0 const& it0, BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ typedef typename result_of::next<It0 const&>::type It1;
+ It1 it1(fusion::next(it0));
+
+ f(fusion::deref(it0));
+ f(fusion::deref(it1));
+ }
+ };
+
+ template<>
+ struct for_each_unrolled<1>
+ {
+ template<typename It0, typename F>
+ static void call(It0 const& it0, BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ f(fusion::deref(it0));
+ }
+ };
+
+ template<>
+ struct for_each_unrolled<0>
+ {
+ template<typename It, typename F>
+ static void call(It const&, BOOST_FUSION_R_ELSE_CLREF(F))
+ {
+ }
+ };
+}}}
+
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/fold.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/fold.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,82 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+ Copyright (c) 2007 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_ALGORITHM_ITERATION_FOLD_HPP
+#define BOOST_FUSION_ALGORITHM_ITERATION_FOLD_HPP
+
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/fusion/algorithm/iteration/detail/fold.hpp>
+
+namespace boost { namespace fusion {
+
+ struct random_access_traversal_tag;
+
+ namespace result_of
+ {
+ template <typename Seq, typename State, typename F>
+ struct fold
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef
+ detail::fold_impl<
+ size<Seq>::value
+ , typename begin<Seq>::type
+ , typename detail::add_lref<State>::type
+ , typename detail::add_lref<F>::type
+ >
+ gen;
+
+ typedef typename gen::type type;
+ };
+ }
+
+ template <typename Seq, typename State, typename F>
+ inline typename
+ result_of::fold<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(State)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
+ >::type
+ fold(BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_CLREF(State) state,
+ BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ return
+ result_of::fold<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(State)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
+ >::gen::call(fusion::begin(seq), state, f);
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename State, typename F>
+ inline typename result_of::fold<Seq&,State const&,F const&>::type
+ fold(Seq& seq,
+ State const& state,
+ F const& f)
+ {
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable: 4180)
+#endif
+ return result_of::fold<Seq&,State const&,F const&>::gen::call(
+ fusion::begin(seq), state, f);
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/for_each.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/for_each.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,60 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+ Copyright (c) 2007 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_ALGORITHM_ITERATION_FOR_EACH_HPP
+#define BOOST_FUSION_ALGORITHM_ITERATION_FOR_EACH_HPP
+
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/fusion/algorithm/iteration/detail/for_each.hpp>
+
+namespace boost { namespace fusion
+{
+ struct random_access_traversal_tag;
+
+ namespace result_of
+ {
+ template <typename Seq, typename>
+ struct for_each
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef void type;
+ };
+ }
+
+ template <typename Seq, typename F>
+ inline typename
+ result_of::for_each<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
+ >::type
+ for_each(BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ detail::for_each_unrolled<
+ result_of::size<BOOST_FUSION_R_ELSE_CLREF(Seq)>::value
+ >::call(fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)),
+ BOOST_FUSION_FORWARD(F,f));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename F>
+ inline typename result_of::for_each<Seq&,F const&>::type
+ for_each(Seq& seq,F const& f)
+ {
+ detail::for_each_unrolled<result_of::size<Seq&>::value>::call(
+ fusion::begin(seq),f);
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,20 @@
+/*=============================================================================
+ 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_ALGORITHM_QUERY_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_HPP
+
+#include <boost/fusion/algorithm/query/all.hpp>
+#include <boost/fusion/algorithm/query/any.hpp>
+#include <boost/fusion/algorithm/query/count_if.hpp>
+#include <boost/fusion/algorithm/query/count.hpp>
+#include <boost/fusion/algorithm/query/find_if.hpp>
+#include <boost/fusion/algorithm/query/find_key.hpp>
+#include <boost/fusion/algorithm/query/find.hpp>
+#include <boost/fusion/algorithm/query/none.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/all.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/all.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,62 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2007 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_ALL_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_ALL_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/fusion/algorithm/query/detail/all.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq, typename>
+ struct all
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef bool type;
+ };
+ }
+
+ template <typename Seq, typename F>
+ inline typename
+ result_of::all<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
+ >::type
+ all(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ return
+ detail::unrolled_all<
+ result_of::size<BOOST_FUSION_R_ELSE_CLREF(Seq)>::value
+ >::call(
+ fusion::begin(BOOST_FUSION_FORWARD(Seq,seq))
+ , BOOST_FUSION_FORWARD(F,f));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename F>
+ inline typename result_of::all<Seq&, F const&>::type
+ all(Seq& seq, F const& f)
+ {
+ return
+ detail::unrolled_all<
+ result_of::size<Seq const&>::value
+ >::call(fusion::begin(seq), f);
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/any.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/any.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,76 @@
+/*=============================================================================
+ 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
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_ANY_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_ANY_HPP
+
+#include <boost/fusion/algorithm/query/all.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace detail
+ {
+ template<typename FRef>
+ struct any_helper
+ {
+ typedef bool result_type;
+
+ any_helper(FRef f)
+ : f(f)
+ {}
+
+ template<typename E>
+ inline bool
+ operator()(BOOST_FUSION_R_ELSE_CLREF(E) e)const
+ {
+ return !f(BOOST_FUSION_FORWARD(E,e));
+ }
+
+ FRef f;
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename Seq, typename>
+ struct any
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef bool type;
+ };
+ }
+
+ template <typename Seq, typename F>
+ inline typename
+ result_of::any<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
+ >::type
+ any(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ return !fusion::all(
+ BOOST_FUSION_FORWARD(Seq,seq),
+ detail::any_helper<BOOST_FUSION_R_ELSE_CLREF(F)>(f));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename F>
+ inline typename result_of::any<Seq&,F const&>::type
+ any(Seq& seq, F const& f)
+ {
+ return !fusion::all(seq,detail::any_helper<F const&>(f));
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,55 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2007
+
+ Distributed under the 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_ALGORITHM_QUERY_COUNT_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_COUNT_HPP
+
+#include <boost/fusion/algorithm/query/count_if.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/fusion/algorithm/query/detail/count.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq, typename>
+ struct count
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef int type;
+ };
+ }
+
+ template <typename Seq, typename T>
+ inline typename
+ result_of::count<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(T)
+ >::type
+ count(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, BOOST_FUSION_R_ELSE_CLREF(T) x)
+ {
+ return fusion::count_if(
+ BOOST_FUSION_FORWARD(Seq,seq),
+ detail::count_helper<BOOST_FUSION_R_ELSE_CLREF(T)>(x));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename T>
+ inline typename result_of::count<Seq&, T const&>::type
+ count(Seq& seq, T const& x)
+ {
+ return fusion::count_if(seq,detail::count_helper<T const&>(x));
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count_if.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/count_if.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,77 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2007 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_COUNT_IF_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_COUNT_IF_HPP
+
+#include <boost/fusion/algorithm/iteration/fold.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace detail
+ {
+ template<typename FRef>
+ struct count_if_helper
+ {
+ typedef int result_type;
+
+ count_if_helper(FRef f)
+ : f(f)
+ {}
+
+ template<typename E>
+ inline int
+ operator()(BOOST_FUSION_R_ELSE_CLREF(E) e, int count)const
+ {
+ return f(BOOST_FUSION_FORWARD(E,e)) ? ++count : count;
+ }
+
+ FRef f;
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename Seq, typename>
+ struct count_if
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef int type;
+ };
+ }
+
+ template <typename Seq, typename F>
+ inline typename
+ result_of::count_if<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
+ >::type
+ count_if(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ return fold(BOOST_FUSION_FORWARD(Seq,seq),
+ 0,
+ detail::count_if_helper<BOOST_FUSION_R_ELSE_CLREF(F)>(f));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename F>
+ inline typename result_of::count_if<Seq&,F const&>::type
+ count_if(Seq& seq, F const& f)
+ {
+ return fold(seq,
+ 0,
+ detail::count_if_helper<F const&>(f));
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,126 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2007 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_DETAIL_ALL_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_DETAIL_ALL_HPP
+
+#include <boost/fusion/iterator/advance.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template<int N>
+ struct unrolled_all
+ {
+ template <typename It0, typename F>
+ static bool
+ call(It0 const& it0, BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ if(!f(fusion::deref(it0)))
+ {
+ return false;
+ }
+
+ typedef typename result_of::next<It0 const&>::type It1;
+ It1 it1 = fusion::next(it0);
+ if(!f(fusion::deref(it1)))
+ {
+ return false;
+ }
+
+ typedef typename result_of::next<It1&>::type It2;
+ It2 it2 = fusion::next(it1);
+ if(!f(fusion::deref(it2)))
+ {
+ return false;
+ }
+
+ typedef typename result_of::next<It2&>::type It3;
+ It3 it3 = fusion::next(it3);
+ if(!f(fusion::deref(it3)))
+ {
+ return false;
+ }
+
+ return unrolled_all<N-4>::call(
+ fusion::next(it3)
+ , BOOST_FUSION_FORWARD(F,f));
+ }
+ };
+
+ template<>
+ struct unrolled_all<3>
+ {
+ template <typename It0, typename F>
+ static bool
+ call(It0 const& it0, BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ if(!f(fusion::deref(it0)))
+ {
+ return false;
+ }
+
+ typedef typename result_of::next<It0 const&>::type It1;
+ It1 it1 = fusion::next(it0);
+ if(!f(fusion::deref(it1)))
+ {
+ return false;
+ }
+
+ typedef typename result_of::next<It1&>::type It2;
+ It2 it2 = fusion::next(it1);
+ return f(fusion::deref(it2));
+ }
+ };
+
+ template<>
+ struct unrolled_all<2>
+ {
+ template <typename It0, typename F>
+ static bool
+ call(It0 const& it0, BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ if(!f(fusion::deref(it0)))
+ {
+ return false;
+ }
+
+ typedef typename result_of::next<It0 const&>::type It1;
+ It1 it1 = fusion::next(it0);
+ return f(fusion::deref(it1));
+ }
+ };
+
+ template<>
+ struct unrolled_all<1>
+ {
+ template <typename It0, typename F>
+ static bool
+ call(It0 const& it0, BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ return f(fusion::deref(it0));
+ }
+ };
+
+ template<>
+ struct unrolled_all<0>
+ {
+ template <typename It0, typename F>
+ static bool
+ call(It0 const& it0, F const& f)
+ {
+ return false;
+ }
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_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>
+
+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>
+ {
+ template <typename T1, typename T2>
+ static bool
+ call(BOOST_FUSION_R_ELSE_CLREF(T1) x, BOOST_FUSION_R_ELSE_CLREF(T2) y)
+ {
+ return BOOST_FUSION_FORWARD(T1,x) == BOOST_FUSION_FORWARD(T2,y);
+ }
+ };
+
+ // T1 is NEITHER convertible to T2 NOR vice versa
+ template <>
+ struct compare_convertible<false>
+ {
+ template <typename T1, typename T2>
+ static bool
+ call(BOOST_FUSION_R_ELSE_CLREF(T1) x, BOOST_FUSION_R_ELSE_CLREF(T2) y)
+ {
+ return false;
+ }
+ };
+
+ template <typename T1Ref>
+ struct count_helper
+ {
+ count_helper(T1Ref x)
+ : x(x)
+ {}
+
+ template <typename T2>
+ bool
+ operator()(BOOST_FUSION_R_ELSE_CLREF(T2) y)const
+ {
+ typedef typename remove_reference<T1Ref>::type T1_nonref;
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ typedef T2 T2_nonref;
+#else
+ typedef typename remove_reference<T2>::type T2_nonref;
+#endif
+
+ typedef
+ compare_convertible<
+ mpl::or_<
+ is_convertible<T1_nonref, T2_nonref>
+ , is_convertible<T2_nonref, T1_nonref>
+ >::value
+ >
+ gen;
+
+ return gen::call(
+ BOOST_FUSION_FORWARD(T1Ref,x),
+ BOOST_FUSION_FORWARD(T2,y));
+ }
+
+ T1Ref x;
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/find_if.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,223 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2007 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#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/equal_to.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/advance_c.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/apply.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost { namespace fusion {
+ struct random_access_traversal_tag;
+
+ namespace detail
+ {
+ template <typename First, typename Last, typename Pred>
+ struct main_find_if;
+
+ template <typename First, typename Last, typename Pred>
+ struct recursive_find_if
+ {
+ typedef typename
+ main_find_if<
+ typename result_of::next<First>::type
+ , Last
+ , Pred
+ >::type
+ type;
+ };
+
+ template <typename First, typename Last, typename Pred>
+ struct main_find_if
+ {
+ typedef typename
+ mpl::eval_if<
+ mpl::or_<
+ result_of::equal_to<First, Last>
+ , mpl::apply1<Pred,First>
+ >
+ , mpl::identity<First>
+ , recursive_find_if<First, Last, Pred>
+ >::type
+ type;
+ };
+
+ 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>
+ {};
+
+ template<typename It, typename Pred, int N>
+ struct unroll_again;
+
+ template <typename It, typename Pred, int Offset>
+ struct apply_offset_filter
+ : mpl::apply1<
+ Pred
+ , typename result_of::advance_c<It, Offset>::type
+ >::type
+ {};
+
+ template<typename It, typename Pred, int N>
+ struct unrolled_find_if
+ {
+ typedef typename
+ mpl::eval_if<
+ typename mpl::apply1<Pred,It>::type
+ , mpl::identity<It>
+ , mpl::eval_if<
+ apply_offset_filter<It, Pred, 1>
+ , result_of::next<It>
+ , 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
+ >
+ >
+ >
+ >
+ >::type
+ type;
+ };
+
+ template<typename It, typename Pred, int n>
+ struct unroll_again
+ {
+ typedef typename
+ unrolled_find_if<
+ typename result_of::advance_c<It, 4>::type
+ , Pred
+ , n-4
+ >::type
+ type;
+ };
+
+ template<typename It, typename Pred>
+ struct unrolled_find_if<It, Pred, 3>
+ {
+ typedef typename
+ mpl::eval_if<
+ typename mpl::apply1<Pred,It>::type
+ , mpl::identity<It>
+ , mpl::eval_if<
+ apply_offset_filter<It, Pred, 1>
+ , result_of::next<It>
+ , 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 It, typename Pred>
+ struct unrolled_find_if<It, Pred, 2>
+ {
+ typedef typename
+ mpl::eval_if<
+ typename mpl::apply1<Pred,It>::type
+ , mpl::identity<It>
+ , mpl::eval_if<
+ apply_offset_filter<It, Pred, 1>
+ , result_of::next<It>
+ , result_of::advance_c<It, 2>
+ >
+ >::type
+ type;
+ };
+
+ template<typename It, typename Pred>
+ struct unrolled_find_if<It, Pred, 1>
+ {
+ typedef typename
+ mpl::eval_if<
+ typename mpl::apply1<Pred,It>::type
+ , mpl::identity<It>
+ , result_of::next<It>
+ >::type
+ type;
+ };
+
+ template<typename It, typename Pred>
+ struct unrolled_find_if<It, Pred, 0>
+ {
+ typedef It type;
+ };
+
+ template<typename First, typename Last, typename Pred>
+ struct choose_find_if<First, Last, Pred, true>
+ {
+ typedef typename
+ unrolled_find_if<
+ First
+ , Pred
+ , result_of::distance<First, Last>::value
+ >::type
+ type;
+ };
+
+ template <typename First, typename Last, typename Pred>
+ struct static_find_if
+ {
+ typedef typename
+ choose_find_if<
+ First
+ , Last
+ , Pred
+ , traits::is_random_access<First>::type::value
+ >::type
+ type;
+
+ template <typename It>
+ static type
+ call(It const& it)
+ {
+ return
+ fusion::advance<
+ typename result_of::distance<It, type>::type
+ >(it);
+ }
+ };
+
+ template <typename First, typename Last, typename Pred>
+ struct static_seq_find_if
+ : static_find_if<First, Last, Pred>
+ {
+ template <typename Seq>
+ static typename static_find_if<First, Last, Pred>::type
+ call(BOOST_FUSION_R_ELSE_LREF(Seq) seq)
+ {
+ return static_find_if<First, Last, Pred>::call(
+ fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)));
+ }
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,68 @@
+/*=============================================================================
+ 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_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/iterator/value_of.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/workaround.hpp>
+
+#include <boost/mpl/placeholders.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/fusion/algorithm/query/detail/find_if.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq, typename T>
+ struct find
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef
+ detail::static_seq_find_if<
+ typename begin<Seq>::type
+ , typename end<Seq>::type
+ , is_same<value_of<mpl::_1>, T>
+ >
+ filter;
+
+ typedef typename filter::type type;
+ };
+ }
+
+ 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)
+ {
+ return
+ result_of::find<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , T
+ >::filter::call(seq);
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename T, typename Seq>
+ inline BOOST_FUSION_EXPLICIT_TEMPLATE_NON_CONST_ARG_OVERLOAD(
+ result_of::find<,Seq,&, T>) const
+ find(Seq& seq)
+ {
+ return result_of::find<Seq&, T>::filter::call(seq);
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find_if.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find_if.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,72 @@
+/*=============================================================================
+ 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_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/fusion/iterator/value_of.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/internal/workaround.hpp>
+
+#include <boost/mpl/quote.hpp>
+#include <boost/mpl/lambda.hpp>
+#include <boost/mpl/bind.hpp>
+#include <boost/mpl/placeholders.hpp>
+
+#include <boost/fusion/algorithm/query/detail/find_if.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq, typename Pred>
+ struct find_if
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef
+ detail::static_find_if<
+ typename begin<Seq>::type
+ , typename end<Seq>::type
+ , mpl::bind1<
+ typename mpl::lambda<Pred>::type
+ , mpl::bind1<mpl::quote1<value_of>,mpl::_1>
+ >
+ >
+ gen;
+
+ typedef typename gen::type type;
+ };
+ }
+
+ 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)
+ {
+ return
+ result_of::find_if<
+ BOOST_FUSION_R_ELSE_CLREF(Seq), Pred
+ >::gen::call(fusion::begin(seq));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Pred, typename Seq>
+ inline BOOST_FUSION_EXPLICIT_TEMPLATE_NON_CONST_ARG_OVERLOAD(
+ result_of::find_if<,Seq,&,Pred>)
+ find_if(Seq& seq)
+ {
+ return result_of::find_if<Seq&, Pred>::gen::call(fusion::begin(seq));
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/find_key.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,67 @@
+/*=============================================================================
+ 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_ALGORITHM_QUERY_FIND_KEY_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_FIND_KEY_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/iterator/key_of.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/workaround.hpp>
+
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/fusion/algorithm/query/detail/find_if.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq, typename T>
+ struct find_key
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef
+ detail::static_seq_find_if<
+ typename begin<Seq>::type
+ , typename end<Seq>::type
+ , is_same<key_of<mpl::_1>, T>
+ >
+ filter;
+
+ typedef typename filter::type type;
+ };
+ }
+
+ template <typename T, typename Seq>
+ inline typename
+ result_of::find_key<BOOST_FUSION_R_ELSE_CLREF(Seq), T>::type const
+ find_key(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return
+ result_of::find_key<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , T
+ >::filter::call(seq);
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename T, typename Seq>
+ inline BOOST_FUSION_EXPLICIT_TEMPLATE_NON_CONST_ARG_OVERLOAD(
+ result_of::find_key<,Seq,&, T>) const
+ find_key(Seq& seq)
+ {
+ return result_of::find_key<Seq&, T>::filter::call(seq);
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/none.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/none.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,53 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2007 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_ALGORITHM_QUERY_NONE_HPP
+#define BOOST_FUSION_ALGORITHM_QUERY_NONE_HPP
+
+#include <boost/fusion/algorithm/query/any.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq, typename F>
+ struct none
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef bool type;
+ };
+ }
+
+ template <typename Seq, typename F>
+ inline typename
+ result_of::none<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
+ >::type
+ none(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ return !fusion::any(
+ BOOST_FUSION_FORWARD(Seq,seq),
+ BOOST_FUSION_FORWARD(F,f));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename F>
+ inline typename result_of::none<Seq&, F const&>::type
+ none(Seq& seq, F const& f)
+ {
+ return !fusion::any(seq,f);
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,31 @@
+/*=============================================================================
+ 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_ALGORITHM_TRANSFORMATION_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_HPP
+
+#include <boost/fusion/algorithm/transformation/clear.hpp>
+#include <boost/fusion/algorithm/transformation/erase_key.hpp>
+#include <boost/fusion/algorithm/transformation/erase.hpp>
+#include <boost/fusion/algorithm/transformation/filter_if.hpp>
+#include <boost/fusion/algorithm/transformation/filter.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_if.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

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/clear.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/clear.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,49 @@
+/*=============================================================================
+ 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_ALGORITHM_TRANSFORMATION_CLEAR_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_CLEAR_HPP
+
+#include <boost/fusion/sequence/convert.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/container/vector/convert.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ //TODO doc!!!
+ template <typename Seq>
+ struct clear
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+ : convert<typename traits::tag_of<Seq>::type, vector0<> >
+#else
+ : convert<typename traits::tag_of<Seq>::type, vector<> >
+#endif
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ };
+ }
+
+ template <typename Seq>
+ inline typename result_of::clear<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
+ clear(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return typename
+ result_of::clear<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type();
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,80 @@
+// 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_ALGORITHM_TRANSFORMATION_DETAIL_FILTER_KEY_VIEW_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_DETAIL_FILTER_KEY_VIEW_HPP
+
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/view/detail/view_storage.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+
+#include <boost/mpl/bool.hpp>
+
+#include <boost/fusion/algorithm/transformation/detail/filter_key_view/filter_key_view_fwd.hpp>
+#include <boost/fusion/algorithm/transformation/detail/filter_key_view/has_key_impl.hpp>
+#include <boost/fusion/algorithm/transformation/detail/filter_key_view/at_key_impl.hpp>
+#include <boost/fusion/algorithm/transformation/detail/filter_key_view/value_at_key_impl.hpp>
+
+//TODO: test
+
+namespace boost { namespace fusion
+{
+ struct fusion_sequence_tag;
+
+ namespace detail
+ {
+ template <typename Seq, typename Pred>
+ struct filter_key_view
+ : sequence_base<filter_key_view<Seq, Pred> >
+ {
+ typedef view_storage<Seq> storage_type;
+ typedef typename storage_type::type seq_type;
+ typedef Pred pred_type;
+
+ typedef associative_sequence_tag category;
+ typedef filter_key_view_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::true_ is_view;
+
+#define BOOST_FUSION_FILTER_KEY_VIEW_CTOR(COMBINATION,_)\
+ template<typename OtherSeq>\
+ filter_key_view(filter_key_view<OtherSeq,Pred> COMBINATION view)\
+ : seq(static_cast<filter_key_view<OtherSeq,Pred>COMBINATION>(\
+ view).seq)\
+ {}
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(
+ BOOST_FUSION_FILTER_KEY_VIEW_CTOR,_)
+
+#undef BOOST_FUSION_FILTER_KEY_VIEW_CTOR
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ explicit
+ filter_key_view(typename storage_type::call_param seq)
+ : seq(seq)
+ {}
+#else
+ template<typename OtherSeq>
+ explicit
+ filter_key_view(OtherSeq&& seq)
+ : seq(std::forward<OtherSeq>(seq))
+ {}
+#endif
+
+ template<typename OtherFilterKeyView>
+ filter_key_view&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(OtherFilterKeyView) other_view)
+ {
+ seq=BOOST_FUSION_FORWARD(OtherFilterKeyView,other_view).seq;
+ return *this;
+ }
+
+ detail::view_storage<Seq> seq;
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/at_key_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/at_key_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_ALGORITHM_TRANSFORMATION_DETAIL_FILTER_KEY_VIEW_AT_KEY_IMPL_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_DETAIL_FILTER_KEY_VIEW_AT_KEY_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/at_key.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct at_key_impl;
+
+ template <>
+ struct at_key_impl<detail::filter_key_view_tag>
+ {
+ template <typename SeqRef,typename Key>
+ struct apply
+ {
+ typedef typename
+ result_of::at_key<
+ typename detail::forward_as<
+ SeqRef
+ , typename detail::remove_reference<SeqRef>::type_seq_type
+ >::type
+ , Key
+ >::type
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return at_key<Key>(seq.seq.get());
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/filter_key_view_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/filter_key_view_fwd.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,14 @@
+// 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_ALGORITHM_TRANSFORMATION_DETAIL_FILTER_KEY_VIEW_FILTER_KEY_VIEW_FWD_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_DETAIL_FILTER_KEY_VIEW_FILTER_KEY_VIEW_FWD_HPP
+
+namespace boost { namespace fusion { namespace detail
+{
+ struct filter_key_view_tag;
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/has_key_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/has_key_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,40 @@
+// 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_ALGORITHM_TRANSFORMATION_DETAIL_FILTER_KEY_VIEW_HAS_KEY_IMPL_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_DETAIL_FILTER_KEY_VIEW_HAS_KEY_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/has_key.hpp>
+
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct has_key;
+
+ template <>
+ struct has_key<detail::filter_key_view_tag>
+ {
+ template <typename SeqRef,typename Key>
+ struct apply
+ {
+ typedef typename detail::remove_reference<SeqRef>::type seq;
+
+ typedef typename
+ mpl::eval_if<
+ mpl::apply1<typename seq::pred_type,Key>
+ , mpl::identity<mpl::false_>
+ , result_of::has_key<typename seq::storage_type,Key>
+ >::type
+ type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/value_at_key_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/filter_key_view/value_at_key_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,32 @@
+// 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_ALGORITHM_TRANSFORMATION_DETAIL_FILTER_KEY_VIEW_VALUE_AT_KEY_IMPL_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_DETAIL_FILTER_KEY_VIEW_VALUE_AT_KEY_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct value_at_key;
+
+ template <>
+ struct value_at_key<detail::filter_key_view_tag>
+ {
+ template <typename SeqRef,typename Key>
+ struct apply
+ {
+ typedef typename
+ result_of::value_at_key<
+ typename detail::remove_reference<SeqRef>::type_seq_type
+ , Key
+ >::type
+ type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/is_in_seq.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/is_in_seq.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,54 @@
+// 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_SUPPORT_DETAIL_IS_IN_SEQ_HPP
+#define BOOST_FUSION_SUPPORT_DETAIL_IS_IN_SEQ_HPP
+
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/fusion/sequence/intrinsic/begin.hpp>
+# include <boost/fusion/sequence/intrinsic/end.hpp>
+# include <boost/fusion/iterator/next.hpp>
+# include <boost/fusion/iterator/next.hpp>
+# include <boost/fusion/iterator/equal_to.hpp>
+
+# include <boost/mpl/bool.hpp>
+# include <boost/mpl/identity.hpp>
+# include <boost/mpl/eval_if.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template<typename It, typename Begin,typename End>
+ struct next_is_in_range;
+
+ template<typename It, typename Begin,typename End>
+ struct is_in_range
+ : mpl::eval_if<
+ result_of::equal_to<It,Begin>
+ , mpl::identity<mpl::true_>
+ , mpl::eval_if<
+ result_of::equal_to<Begin,End>
+ , mpl::identity<mpl::false_>
+ , next_is_in_range<It,Begin,End>
+ >
+ >::type
+ {};
+
+ template<typename It, typename Begin,typename End>
+ struct next_is_in_range
+ : is_in_range<It,typename result_of::next<Begin>::type,End>
+ {};
+
+ template<typename It, typename Seq>
+ struct is_in_seq
+ : is_in_range<
+ It
+ , typename result_of::begin<Seq>::type
+ , typename result_of::end<Seq>::type
+ >
+ {};
+}}}
+
+#endif
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/pp/zip.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/pp/zip.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,86 @@
+// 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_PP_IS_ITERATING
+#ifndef BOOST_FUSION_ALGORITHM_TRANSFORMATION_DETAIL_PP_ZIP_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_DETAIL_PP_ZIP_HPP
+
+#include <boost/fusion/container/generation/vector_tie.hpp>
+#include <boost/fusion/view/zip_view.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/template.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ VARIADIC_TEMPLATE_WITH_DEFAULT(FUSION_MAX_ZIP_SEQUENCES)
+ struct zip;
+ }
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/algorithm/transformation/detail/pp/zip.hpp>
+#define BOOST_PP_ITERATION_LIMITS (2, FUSION_MAX_ZIP_SEQUENCES)
+#include BOOST_PP_ITERATE()
+
+}}
+
+#endif
+#else
+
+#define BOOST_FUSION_N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ VARIADIC_TEMPLATE(BOOST_FUSION_N)
+ struct zip
+ EXPAND_TEMPLATE_ARGUMENTS_SPECIALIZATION(
+ FUSION_MAX_ZIP_SEQUENCES,BOOST_FUSION_N)
+ {
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERS
+#define BOOST_FUSION_IS_FORWARD_ASSERT(Z,N,_)\
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<BOOST_PP_CAT(T,N)>));
+
+ BOOST_PP_REPEAT(BOOST_FUSION_N,BOOST_FUSION_IS_FORWARD_ASSERT,_)
+
+#undef BOOST_FUSION_IS_FORWARD_ASSERT
+#endif
+
+ typedef
+ zip_view<
+ typename result_of::vector_tie<
+ EXPAND_TEMPLATE_ARGUMENTS(BOOST_FUSION_N)
+ >::type
+ >
+ type;
+ };
+ }
+
+ VARIADIC_TEMPLATE_A(BOOST_FUSION_N)
+ inline
+#if BOOST_FUSION_N
+ typename
+#endif
+ result_of::zip<
+ EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_CLREF(BOOST_FUSION_N)
+ >::type
+ zip(EXPAND_TEMPLATE_ARGUMENTS_PARAMETERS_A_R_ELSE_CLREF(BOOST_FUSION_N))
+ {
+ return
+#if BOOST_FUSION_N
+ typename
+#endif
+ result_of::zip<
+ EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_CLREF(BOOST_FUSION_N)
+ >::type(fusion::vector_tie(EXPAND_PARAMETERS_A(BOOST_FUSION_N)));
+ }
+
+#undef BOOST_FUSION_N
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace_if.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace_if.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,92 @@
+/*=============================================================================
+ 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_ALGORITHM_TRANSFORMATION_DETAIL_REPLACE_IF_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_DETAIL_REPLACE_IF_HPP
+
+#include <boost/fusion/support/internal/result_of.hpp>
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/type_traits/remove_const.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename F, typename NewValue>
+ struct replace_if_helper
+ {
+ template<typename Params>
+ struct result;
+
+ template<typename Self, typename U>
+ struct result<Self(U)>
+ {
+ typedef U type;
+ };
+
+ template<typename OtherF, typename OtherNewValue>
+ replace_if_helper(
+ BOOST_FUSION_R_ELSE_CLREF(OtherF) f,
+ BOOST_FUSION_R_ELSE_CLREF(OtherNewValue) new_value)
+ : f(BOOST_FUSION_FORWARD(OtherF,f))
+ , new_value(BOOST_FUSION_FORWARD(OtherNewValue,new_value))
+ {}
+
+ template<typename Replacer>
+ replace_if_helper(BOOST_FUSION_R_ELSE_CLREF(Replacer) replacer)
+ : f(BOOST_FUSION_FORWARD(Replacer,replacer).f)
+ , new_value(BOOST_FUSION_FORWARD(Replacer,replacer).new_value)
+ {}
+
+ template<typename Replacer>
+ replace_if_helper&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Replacer) replacer)
+ {
+ f=BOOST_FUSION_FORWARD(Replacer,replacer).f;
+ new_value=BOOST_FUSION_FORWARD(Replacer,replacer).new_value;
+ return *this;
+ }
+
+ template <typename U>
+ U&
+ call_impl(U& x, mpl::false_) const
+ {
+ return x;
+ }
+
+ template <typename U>
+ U&
+ call_impl(U& x, mpl::true_) const
+ {
+ if(f(x))
+ {
+ return new_value;
+ }
+
+ return x;
+ }
+
+ template <typename U>
+ typename result<replace_if_helper(U&)>::type
+ operator()(U& x) const
+ {
+ //TODO cschmidt: update doc. according to real behavior!
+ return call_impl(
+ x,
+ typename is_convertible<
+ typename detail::remove_reference<NewValue>::type*
+ , U*
+ >::type());
+ }
+
+ F f;
+ mutable typename remove_const<NewValue>::type new_value;
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/variadic_templates/zip.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/variadic_templates/zip.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,46 @@
+// 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_ALGORITHM_TRANSFORMATION_DETAIL_VARIADIC_TEMPLATES_ZIP_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_DETAIL_VARIADIC_TEMPLATES_ZIP_HPP
+
+#include <boost/fusion/container/vector.hpp>
+#include <boost/fusion/container/generation/vector_tie.hpp>
+#include <boost/fusion/view/zip_view.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/mpl/and.hpp>
+#endif
+
+namespace boost { namespace fusion {
+
+ namespace result_of
+ {
+ template<typename... Seqs>
+ struct zip
+ {
+ //TODO variadic template to fixed length macro!!!
+ //BOOST_FUSION_MPL_ASSERT((mpl::and_<traits::is_forward<Seqs>...>));
+
+ typedef
+ zip_view<typename result_of::vector_tie<Seqs...>::type>
+ type;
+ };
+ }
+
+ template<typename... Seqs>
+ inline typename result_of::zip<BOOST_FUSION_R_ELSE_CLREF(Seqs)...>::type
+ zip(BOOST_FUSION_R_ELSE_CLREF(Seqs)... seqs)
+ {
+ return typename
+ result_of::zip<BOOST_FUSION_R_ELSE_CLREF(Seqs)...>::type(
+ vector_tie(seqs...));
+ }
+
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,185 @@
+/*=============================================================================
+ 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_ALGORITHM_TRANSFORMATION_ERASE_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_ERASE_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/view/joint_view/joint_view.hpp>
+#include <boost/fusion/view/iterator_range/iterator_range.hpp>
+#include <boost/fusion/support/internal/as_fusion_element.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/algorithm/transformation/detail/is_in_seq.hpp>
+
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace detail
+ {
+ template <typename Seq, typename FirstRef>
+ struct compute_erase_last
+ {
+ typedef typename result_of::end<Seq>::type last_type;
+
+ typedef typename
+ mpl::eval_if<
+ result_of::equal_to<FirstRef, last_type>
+ , mpl::identity<FirstRef>
+ , result_of::next<FirstRef>
+ >::type
+ type;
+
+ static type
+ call(FirstRef first, mpl::false_)
+ {
+ return fusion::next(first);
+ }
+
+ static type
+ call(FirstRef first, mpl::true_)
+ {
+ return first;
+ }
+
+ static type
+ call(FirstRef first)
+ {
+ return call(first,
+ result_of::equal_to<FirstRef, last_type>());
+ }
+ };
+ }
+
+ namespace result_of
+ {
+ template <
+ typename Seq
+ , typename First
+ , typename Last =
+ typename detail::compute_erase_last<
+ Seq
+ , typename detail::add_lref<First>::type
+ >::type
+ >
+ struct erase
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<First>));
+ BOOST_FUSION_MPL_ASSERT((detail::is_in_seq<First, Seq>));
+ BOOST_FUSION_MPL_ASSERT((
+ detail::is_in_range<
+ Last
+ , First
+ , typename result_of::end<Seq>::type
+ >));
+
+ typedef typename begin<Seq>::type seq_first_type;
+ typedef typename end<Seq>::type seq_last_type;
+ 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 Seq, typename First, typename Last>
+ typename result_of::erase<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , First const&
+ , Last const&
+ >::type
+ erase(BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
+ First const& first,
+ Last const& last)
+ {
+ typedef
+ result_of::erase<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , First const&
+ , Last const&
+ >
+ result;
+ typedef typename result::left_type left_type;
+ typedef typename result::right_type right_type;
+ typedef typename result::type result_type;
+
+ return result_type(
+ left_type(
+ fusion::begin(seq)
+ , first
+ )
+ , right_type(
+ last
+ , fusion::end(seq)
+ ));
+ }
+
+ template <typename Seq, typename First>
+ typename result_of::erase<BOOST_FUSION_R_ELSE_CLREF(Seq), First const&>::type
+ erase(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, First const& first)
+ {
+ return erase(
+ BOOST_FUSION_FORWARD(Seq,seq)
+ , first
+ , detail::compute_erase_last<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , First const&
+ >::call(first));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename First, typename Last>
+ typename result_of::erase<Seq&, First const&, Last const&>::type
+ erase(Seq& seq,First const& first,Last const& last)
+ {
+ typedef result_of::erase<Seq&, First const&, Last const&> result;
+ typedef typename result::left_type left_type;
+ typedef typename result::right_type right_type;
+ typedef typename result::type result_type;
+
+ return result_type(
+ left_type(
+ fusion::begin(seq)
+ , first
+ )
+ , right_type(
+ last
+ , fusion::end(seq)
+ ));
+ }
+
+ template <typename Seq, typename First>
+ typename result_of::erase<Seq&, First const&>::type
+ erase(Seq& seq, First const& first)
+ {
+ return erase(
+ seq
+ , first
+ , detail::compute_erase_last<Seq&, First const&>::call(first));
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/erase_key.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,95 @@
+/*=============================================================================
+ 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_ALGORITHM_TRANSFORMATION_ERASE_KEY_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_ERASE_KEY_HPP
+
+#include <boost/fusion/algorithm/query/find_key.hpp>
+#include <boost/fusion/algorithm/transformation/erase.hpp>
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/fusion/sequence/intrinsic/has_key.hpp>
+#endif
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/workaround.hpp>
+
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/fusion/algorithm/transformation/detail/filter_key_view.hpp>
+
+//TODO doc singular?!
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq, typename Key>
+ struct erase_key
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_associative<Seq>));
+ BOOST_FUSION_MPL_ASSERT((has_key<Seq,Key>));
+
+ typedef typename
+ mpl::eval_if<
+ traits::is_forward<Seq>
+ , erase<
+ Seq
+ , typename find_key<
+ typename detail::add_lref<Seq>::type
+ , Key
+ >::type
+ >
+ , mpl::identity<
+ detail::filter_key_view<Seq,is_same<mpl::_1,Key> >
+ >
+ >::type
+ type;
+
+ static type
+ call_impl(Seq seq,mpl::true_ /*is_forward*/)
+ {
+ return fusion::erase(seq,fusion::find_key<Key>(seq));
+ }
+
+ static type
+ call_impl(Seq seq,mpl::false_ /*is_forward*/)
+ {
+ return type(seq);
+ }
+
+ static type
+ call(Seq seq)
+ {
+ return call_impl(seq,typename traits::is_forward<Seq>::type());
+ }
+ };
+ }
+
+ template <typename Key, typename Seq>
+ inline typename
+ result_of::erase_key<BOOST_FUSION_R_ELSE_CLREF(Seq), Key>::type
+ erase_key(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return
+ result_of::erase_key<BOOST_FUSION_R_ELSE_CLREF(Seq), Key>::call(
+ seq);
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Key, typename Seq>
+ inline BOOST_FUSION_EXPLICIT_TEMPLATE_NON_CONST_ARG_OVERLOAD(
+ result_of::erase_key<,Seq,&, Key>)
+ erase_key(Seq& seq)
+ {
+ return result_of::erase_key<Seq&, Key>::call(seq);
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,51 @@
+/*=============================================================================
+ 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_ALGORITHM_TRANSFORMATION_FILTER_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_FILTER_HPP
+
+#include <boost/fusion/algorithm/transformation/filter_if.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/internal/workaround.hpp>
+
+#include <boost/mpl/placeholders.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq, typename T>
+ struct filter
+ : filter_if<Seq, is_same<mpl::_1, T> >
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+ };
+ }
+
+ template <typename T, typename Seq>
+ inline typename result_of::filter<BOOST_FUSION_R_ELSE_CLREF(Seq), T>::type
+ filter(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return filter_if<is_same<mpl::_1, T> >(BOOST_FUSION_FORWARD(Seq,seq));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename T, typename Seq>
+ inline BOOST_FUSION_EXPLICIT_TEMPLATE_NON_CONST_ARG_OVERLOAD(
+ result_of::filter<,Seq,&, T>)
+ filter(Seq& seq)
+ {
+ return filter_if<is_same<mpl::_1, T> >(seq);
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter_if.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/filter_if.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,51 @@
+/*=============================================================================
+ 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_ALGORITHM_TRANSFORMATION_FILTER_IF_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_FILTER_IF_HPP
+
+#include <boost/fusion/view/filter_view/filter_view.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/internal/workaround.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq, typename Pred>
+ struct filter_if
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef filter_view<Seq, Pred> type;
+ };
+ }
+
+ template <typename Pred, typename Seq>
+ inline typename
+ result_of::filter_if<BOOST_FUSION_R_ELSE_CLREF(Seq), Pred>::type
+ filter_if(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return typename
+ result_of::filter_if<BOOST_FUSION_R_ELSE_CLREF(Seq), Pred>::type(
+ BOOST_FUSION_FORWARD(Seq,seq));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Pred, typename Seq>
+ inline BOOST_FUSION_EXPLICIT_TEMPLATE_NON_CONST_ARG_OVERLOAD(
+ result_of::filter_if<,Seq,&, Pred>)
+ filter_if(Seq& seq)
+ {
+ return typename result_of::filter_if<Seq&, Pred>::type(seq);
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,64 @@
+/*=============================================================================
+ 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_ALGORITHM_TRANSFORMATION_INSERT_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_INSERT_HPP
+
+#include <boost/fusion/view/single_view/single_view.hpp>
+#include <boost/fusion/algorithm/transformation/insert_range.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/algorithm/transformation/detail/is_in_seq.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq, typename Pos, typename T>
+ struct insert
+ : insert_range<
+ Seq
+ , Pos
+ , BOOST_FUSION_R_ELSE_CLREF(
+ single_view<typename detail::as_fusion_element<T>::type>)
+ >
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<Pos>));
+ BOOST_FUSION_MPL_ASSERT((detail::is_in_seq<Pos, Seq>));
+ };
+ }
+
+ template <typename Seq, typename Pos, typename T>
+ inline typename
+ result_of::insert<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , Pos const&
+ , BOOST_FUSION_R_ELSE_CLREF(T)
+ >::type
+ insert(BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
+ Pos const& pos,
+ BOOST_FUSION_R_ELSE_CLREF(T) x)
+ {
+ return insert_range(
+ BOOST_FUSION_FORWARD(Seq,seq)
+ , pos
+ , fusion::make_single_view(BOOST_FUSION_FORWARD(T,x)));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename Pos, typename T>
+ inline typename result_of::insert<Seq&, Pos const&, T const&>::type
+ insert(Seq& seq,Pos const& pos,T const& x)
+ {
+ return insert_range(seq, pos, fusion::make_single_view(x));
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert_range.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/insert_range.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,109 @@
+/*=============================================================================
+ 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_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/internal/as_fusion_element.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/algorithm/transformation/detail/is_in_seq.hpp>
+
+#include <boost/preprocessor/empty.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq, typename Pos, typename Range>
+ struct insert_range
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<Pos>));
+ BOOST_FUSION_MPL_ASSERT((detail::is_in_seq<Pos, Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Range>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Range>));
+
+ typedef
+ iterator_range<
+ typename begin<Seq>::type
+ , typename detail::identity<Pos>::type
+ >
+ left_type;
+ typedef
+ iterator_range<
+ typename detail::identity<Pos>::type
+ , typename end<Seq>::type
+ >
+ right_type;
+ typedef
+ joint_view<
+ left_type
+ , typename detail::add_lref<Range>::type
+ >
+ left_insert_type;
+
+ typedef joint_view<left_insert_type, right_type> type;
+ };
+ }
+
+#define BOOST_FUSION_INSERT_RANGE(SEQ_CV_REF_MODIFIER,RANGE_CV_REF_MODIFIER)\
+ template <typename Seq, typename Pos, typename Range>\
+ inline typename\
+ result_of::insert_range<\
+ Seq SEQ_CV_REF_MODIFIER\
+ , Pos const&\
+ , Range RANGE_CV_REF_MODIFIER\
+ >::type\
+ insert_range(Seq SEQ_CV_REF_MODIFIER seq,\
+ Pos const& pos,\
+ Range RANGE_CV_REF_MODIFIER range)\
+ {\
+ typedef\
+ result_of::insert_range<\
+ Seq SEQ_CV_REF_MODIFIER\
+ , Pos const&\
+ , Range RANGE_CV_REF_MODIFIER\
+ >\
+ result;\
+ typedef typename result::left_type left_type;\
+ typedef typename result::right_type right_type;\
+ typedef typename result::left_insert_type left_insert_type;\
+ \
+ return typename result::type(\
+ left_insert_type(\
+ left_type(\
+ fusion::begin(seq),\
+ pos\
+ ),\
+ BOOST_FUSION_FORWARD(Range RANGE_CV_REF_MODIFIER,range)\
+ ),\
+ right_type(\
+ pos,\
+ fusion::end(seq)\
+ )\
+ );\
+ }
+
+ BOOST_FUSION_INSERT_RANGE(
+ BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY()),
+ BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY()));
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ BOOST_FUSION_INSERT_RANGE(&,const&);
+ BOOST_FUSION_INSERT_RANGE(const&,&);
+ BOOST_FUSION_INSERT_RANGE(&,&);
+#endif
+
+#undef BOOST_FUSION_INSERT_RANGE
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/join.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/join.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,64 @@
+/*=============================================================================
+ 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_ALGORITHM_TRANSFORMATION_JOIN_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_JOIN_HPP
+
+#include <boost/fusion/view/joint_view.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/preprocessor/empty.hpp>
+
+namespace boost { namespace fusion {
+
+ namespace result_of
+ {
+ template<typename Seq1, typename Seq2>
+ struct join
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq2>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq2>));
+
+ typedef joint_view<Seq1,Seq2> type;
+ };
+ }
+
+#define BOOST_FUSION_JOIN(SEQ1_CV_REF_MODIFIER,SEQ2_CV_REF_MODIFIER)\
+ template<typename Seq1, typename Seq2>\
+ inline typename\
+ result_of::join<\
+ Seq1 SEQ1_CV_REF_MODIFIER\
+ , Seq2 SEQ2_CV_REF_MODIFIER\
+ >::type\
+ join(Seq1 SEQ1_CV_REF_MODIFIER seq1,\
+ Seq2 SEQ2_CV_REF_MODIFIER seq2)\
+ {\
+ return typename\
+ result_of::join<\
+ Seq1 SEQ1_CV_REF_MODIFIER\
+ , Seq2 SEQ2_CV_REF_MODIFIER\
+ >::type(BOOST_FUSION_FORWARD(Seq1 SEQ1_CV_REF_MODIFIER,seq1)\
+ , BOOST_FUSION_FORWARD(Seq2 SEQ2_CV_REF_MODIFIER,seq2));\
+ }
+
+ BOOST_FUSION_JOIN(
+ BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY()),
+ BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY()));
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ BOOST_FUSION_JOIN(&,const&);
+ BOOST_FUSION_JOIN(const&,&);
+ BOOST_FUSION_JOIN(&,&);
+#endif
+
+#undef BOOST_FUSION_JOIN
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_back.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_back.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,64 @@
+/*=============================================================================
+ 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_ALGORITHM_TRANSFORMATION_POP_BACK_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_POP_BACK_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/fusion/sequence/intrinsic/empty.hpp>
+#endif
+#include <boost/fusion/iterator/prior.hpp>
+#include <boost/fusion/view/iterator_range/iterator_range.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq>
+ struct pop_back
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+ BOOST_FUSION_MPL_ASSERT_NOT((empty<Seq>));
+
+ typedef
+ iterator_range<
+ typename begin<Seq>::type
+ , typename prior<typename end<Seq>::type>::type
+ >
+ type;
+ };
+ }
+
+ template <typename Seq>
+ inline typename result_of::pop_back<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
+ pop_back(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return typename
+ result_of::pop_back<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type(
+ fusion::begin(seq)
+ , fusion::prior(fusion::end(seq)));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq>
+ inline typename result_of::pop_back<Seq&>::type
+ pop_back(Seq& seq)
+ {
+ return typename
+ result_of::pop_back<Seq&>::type(
+ fusion::begin(seq)
+ , fusion::prior(fusion::end(seq)));
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_front.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/pop_front.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,63 @@
+/*=============================================================================
+ 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_ALGORITHM_TRANSFORMATION_POP_FRONT_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_POP_FRONT_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/fusion/sequence/intrinsic/empty.hpp>
+#endif
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/view/iterator_range/iterator_range.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq>
+ struct pop_front
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+ BOOST_FUSION_MPL_ASSERT_NOT((empty<Seq>));
+
+ typedef
+ iterator_range<
+ typename next<typename begin<Seq>::type>::type
+ , typename end<Seq>::type
+ >
+ type;
+ };
+ }
+
+ template <typename Seq>
+ inline typename result_of::pop_front<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
+ pop_front(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return typename
+ result_of::pop_front<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ >::type(fusion::next(fusion::begin(seq)), fusion::end(seq));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq>
+ inline typename result_of::pop_front<Seq&>::type
+ pop_front(Seq& seq)
+ {
+ return typename
+ result_of::pop_front<Seq&>::type(
+ fusion::next(fusion::begin(seq)), fusion::end(seq));
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_back.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_back.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,63 @@
+/*=============================================================================
+ 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_ALGORITHM_TRANSFORMATION_PUSH_BACK_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_PUSH_BACK_HPP
+
+#include <boost/fusion/view/joint_view/joint_view.hpp>
+#include <boost/fusion/view/single_view/single_view.hpp>
+#include <boost/fusion/support/internal/as_fusion_element.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq, typename T>
+ struct push_back
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef
+ joint_view<
+ Seq
+ , single_view<typename detail::as_fusion_element<T>::type>
+ >
+ type;
+ };
+ }
+
+ template <typename Seq, typename T>
+ inline typename
+ result_of::push_back<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(T)
+ >::type
+ push_back(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, BOOST_FUSION_R_ELSE_CLREF(T) x)
+ {
+ return typename
+ result_of::push_back<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(T)
+ >::type(BOOST_FUSION_FORWARD(Seq,seq),
+ fusion::make_single_view(BOOST_FUSION_FORWARD(T,x)));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename T>
+ inline typename result_of::push_back<Seq&, T const&>::type
+ push_back(Seq& seq, T const& x)
+ {
+ return typename result_of::push_back<Seq&, T const&>::type(
+ seq,fusion::make_single_view(x));
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_front.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/push_front.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,66 @@
+/*=============================================================================
+ 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_ALGORITHM_TRANSFORMATION_PUSH_FRONT_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_PUSH_FRONT_HPP
+
+#include <boost/fusion/view/joint_view/joint_view.hpp>
+#include <boost/fusion/view/single_view/single_view.hpp>
+#include <boost/fusion/support/internal/as_fusion_element.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq, typename T>
+ struct push_front
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef
+ joint_view<
+ single_view<typename detail::as_fusion_element<T>::type>
+ , Seq
+ >
+ type;
+ };
+ }
+
+ template <typename Seq, typename T>
+ inline typename
+ result_of::push_front<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(T)
+ >::type
+ push_front(
+ BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_CLREF(T) x)
+ {
+ return typename
+ result_of::push_front<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(T)
+ >::type(fusion::make_single_view(BOOST_FUSION_FORWARD(T,x)),
+ BOOST_FUSION_FORWARD(Seq,seq));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename T>
+ inline typename result_of::push_front<Seq&, T const&>::type
+ push_front(Seq& seq, T const& x)
+ {
+ return typename result_of::push_front<Seq&, T const&>::type(
+ fusion::make_single_view(BOOST_FUSION_FORWARD(T,x)),
+ BOOST_FUSION_FORWARD(Seq,seq));
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,51 @@
+/*=============================================================================
+ 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_ALGORITHM_TRANSFORMATION_REMOVE_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_REMOVE_HPP
+
+#include <boost/fusion/algorithm/transformation/remove_if.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/internal/workaround.hpp>
+
+#include <boost/mpl/not.hpp>
+#include <boost/mpl/placeholders.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq, typename T>
+ struct remove
+ : remove_if<Seq, is_same<mpl::_1, T> >
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+ };
+ }
+
+ template <typename T, typename Seq>
+ inline typename result_of::remove<BOOST_FUSION_R_ELSE_CLREF(Seq), T>::type
+ remove(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return remove_if<is_same<mpl::_1, T> >(BOOST_FUSION_FORWARD(Seq,seq));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename T, typename Seq>
+ inline BOOST_FUSION_EXPLICIT_TEMPLATE_NON_CONST_ARG_OVERLOAD(
+ result_of::remove<,Seq,&, T>)
+ remove_if(Seq& seq)
+ {
+ return remove_if<is_same<mpl::_1, T> >(seq);
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove_if.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/remove_if.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,53 @@
+/*=============================================================================
+ 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_ALGORITHM_TRANSFORMATION_REMOVE_IF_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_REMOVE_IF_HPP
+
+#include <boost/fusion/view/filter_view/filter_view.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/internal/workaround.hpp>
+
+#include <boost/mpl/not.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq, typename Pred>
+ struct remove_if
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef filter_view<Seq, mpl::not_<Pred> > type;
+ };
+ }
+
+ template <typename Pred, typename Seq>
+ inline typename
+ result_of::remove_if<BOOST_FUSION_R_ELSE_CLREF(Seq), Pred>::type
+ remove_if(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return typename
+ result_of::remove_if<BOOST_FUSION_R_ELSE_CLREF(Seq), Pred>::type(
+ BOOST_FUSION_FORWARD(Seq,seq));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Pred, typename Seq>
+ inline BOOST_FUSION_EXPLICIT_TEMPLATE_NON_CONST_ARG_OVERLOAD(
+ result_of::remove_if<,Seq,&, Pred>)
+ remove_if(Seq& seq)
+ {
+ return typename result_of::remove_if<Seq&, Pred>::type(seq);
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_ALGORITHM_TRANSFORMATION_REPLACE_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_REPLACE_HPP
+
+#include <boost/fusion/algorithm/transformation/replace_if.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/internal/as_fusion_element.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace detail
+ {
+ template <typename OldValue>
+ struct replace_helper
+ {
+ template <typename OtherOldValue>
+ replace_helper(
+ BOOST_FUSION_R_ELSE_CLREF(OtherOldValue) old_value
+ , int)
+ : old_value(BOOST_FUSION_FORWARD(OtherOldValue,old_value))
+ {}
+
+ template<typename Replacer>
+ replace_helper(BOOST_FUSION_R_ELSE_CLREF(Replacer) replacer)
+ : old_value(BOOST_FUSION_FORWARD(Replacer,replacer).old_value)
+ {}
+
+ template<typename Replacer>
+ replace_helper&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Replacer) replacer)
+ {
+ old_value=BOOST_FUSION_FORWARD(Replacer,replacer).old_value;
+ return *this;
+ }
+
+ template <typename U>
+ bool
+ operator()(BOOST_FUSION_R_ELSE_LREF(U) x) const
+ {
+ return x==old_value;
+ }
+
+ OldValue old_value;
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename Seq, typename T>
+ struct replace
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef
+ detail::replace_helper<
+ typename detail::as_fusion_element<T>::type
+ >
+ replacer;
+
+ typedef typename
+ replace_if<Seq, BOOST_FUSION_R_ELSE_CLREF(replacer), T>::type
+ type;
+ };
+ }
+
+ template <typename Seq, typename OldValue, typename NewValue>
+ inline typename
+ result_of::replace<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(OldValue)
+ >::type
+ replace(BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_CLREF(OldValue) old_value,
+ BOOST_FUSION_R_ELSE_CLREF(NewValue) new_value)
+ {
+ typedef typename
+ result_of::replace<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(OldValue)
+ >::replacer
+ replacer;
+
+ return replace_if(
+ BOOST_FUSION_FORWARD(Seq,seq)
+ , replacer(BOOST_FUSION_FORWARD(OldValue,old_value),0)
+ , BOOST_FUSION_FORWARD(NewValue,new_value));
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace_if.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/replace_if.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,75 @@
+/*=============================================================================
+ 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_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/algorithm/transformation/detail/replace_if.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/internal/as_fusion_element.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq, typename F, typename NewValue>
+ struct replace_if
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef
+ detail::replace_if_helper<
+ typename detail::as_fusion_element<F>::type
+ , typename detail::as_fusion_element<NewValue>::type
+ >
+ replacer;
+
+ typedef transform_view<Seq, replacer> type;
+ };
+ }
+
+ template <typename Seq, typename F, typename NewValue>
+ inline typename result_of::replace_if<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
+ , BOOST_FUSION_R_ELSE_CLREF(NewValue)
+ >::type
+ replace_if(BOOST_FUSION_R_ELSE_CLREF(Seq) seq,
+ BOOST_FUSION_R_ELSE_CLREF(F) pred,
+ BOOST_FUSION_R_ELSE_CLREF(NewValue) new_value)
+ {
+ typedef
+ result_of::replace_if<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
+ , BOOST_FUSION_R_ELSE_CLREF(NewValue)
+ >
+ result;
+
+ return typename result::type(BOOST_FUSION_FORWARD(Seq,seq),
+ typename result::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 const&, NewValue const&>::type
+ replace_if(Seq& seq,F const& pred,NewValue const& new_value)
+ {
+ typedef result_of::replace_if<Seq&, F const&, NewValue const&> result;
+
+ return typename result::type(seq,
+ typename result::replacer(pred,new_value));
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/reverse.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/reverse.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_ALGORITHM_TRANSFORMATION_REVERSE_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_REVERSE_HPP
+
+#include <boost/fusion/view/reverse_view/reverse_view.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Seq>
+ struct reverse
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef reverse_view<Seq> type;
+ };
+ }
+
+ template <typename Seq>
+ inline typename result_of::reverse<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
+ reverse(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return typename
+ result_of::reverse<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type(
+ BOOST_FUSION_FORWARD(Seq,seq));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq>
+ inline typename result_of::reverse<Seq&>::type
+ reverse(Seq& seq)
+ {
+ return typename result_of::reverse<Seq&>::type(seq);
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/transform.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/transform.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,115 @@
+/*=============================================================================
+ 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_ALGORITHM_TRANSFORMATION_TRANSFORM_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_TRANSFORM_HPP
+
+#include <boost/fusion/view/transform_view/transform_view.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/preprocessor/empty.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <typename Seq1, typename Seq2, typename F = void_>
+ struct transform
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq2>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq2>));
+
+ typedef transform_view<Seq1,Seq2,F> type;
+ };
+
+ template <typename Seq, typename F>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ struct transform<Seq, F, void_>
+#else
+ struct transform<Seq, F>
+#endif
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef transform_view<Seq, F> type;
+ };
+ }
+
+ template <typename Seq, typename F>
+ inline typename
+ result_of::transform<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
+ >::type
+ transform(BOOST_FUSION_R_ELSE_CLREF(Seq) seq, BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ return typename
+ result_of::transform<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , BOOST_FUSION_R_ELSE_CLREF(F)
+ >::type(BOOST_FUSION_FORWARD(Seq,seq), BOOST_FUSION_FORWARD(F,f));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq, typename F>
+ inline typename result_of::transform<Seq&, F const&>::type
+ transform(Seq& seq, F const& f)
+ {
+#ifdef BOOST_MSVC
+# pragma warning(push)
+# pragma warning(disable: 4180)
+#endif
+ return typename result_of::transform<Seq&, F const&>::type(seq, f);
+#ifdef BOOST_MSVC
+# pragma warning(pop)
+#endif
+ }
+#endif
+
+#define BOOST_FUSION_TRANSFORM_BINARY(SEQ1_CV_REF_MODIFIER,SEQ2_CV_REF_MODIFIER)\
+ template <typename Seq1, typename Seq2, typename F>\
+ inline typename\
+ result_of::transform<\
+ Seq1 SEQ1_CV_REF_MODIFIER\
+ , Seq2 SEQ2_CV_REF_MODIFIER\
+ , BOOST_FUSION_R_ELSE_CLREF(F)\
+ >::type\
+ transform(\
+ Seq1 SEQ1_CV_REF_MODIFIER seq1\
+ , Seq2 SEQ2_CV_REF_MODIFIER seq2\
+ , BOOST_FUSION_R_ELSE_CLREF(F) f)\
+ {\
+ return typename\
+ result_of::transform<\
+ Seq1 SEQ1_CV_REF_MODIFIER\
+ , Seq2 SEQ2_CV_REF_MODIFIER\
+ , BOOST_FUSION_R_ELSE_CLREF(F)\
+ >::type(\
+ BOOST_FUSION_FORWARD(Seq1 SEQ1_CV_REF_MODIFIER,seq1)\
+ , BOOST_FUSION_FORWARD(Seq2 SEQ2_CV_REF_MODIFIER,seq2)\
+ , BOOST_FUSION_FORWARD(F,f));\
+ }
+
+ BOOST_FUSION_TRANSFORM_BINARY(
+ BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY()),
+ BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY()));
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ BOOST_FUSION_TRANSFORM_BINARY(&,const&);
+ BOOST_FUSION_TRANSFORM_BINARY(const&,&);
+ BOOST_FUSION_TRANSFORM_BINARY(&,&);
+#endif
+
+#undef BOOST_FUSION_TRANSFORM_BINARY
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/zip.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/zip.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,24 @@
+/*=============================================================================
+ 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_ALGORITHM_TRANSFORMATION_ZIP_HPP
+#define BOOST_FUSION_ALGORITHM_TRANSFORMATION_ZIP_HPP
+
+#include <boost/config.hpp>
+
+#if (defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)) && !defined(FUSION_MAX_ZIP_SEQUENCES)
+# define FUSION_MAX_ZIP_SEQUENCES 10
+#endif
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/algorithm/transformation/detail/pp/zip.hpp>
+#else
+# include <boost/fusion/algorithm/transformation/detail/variadic_templates/zip.hpp>
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,17 @@
+/*=============================================================================
+ 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_HPP
+#define BOOST_FUSION_CONTAINER_HPP
+
+#include <boost/fusion/container/generation.hpp>
+#include <boost/fusion/container/list.hpp>
+#include <boost/fusion/container/map.hpp>
+#include <boost/fusion/container/set.hpp>
+#include <boost/fusion/container/vector.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/detail/convert_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/detail/convert_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,90 @@
+// 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)
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/sequence/intrinsic/begin.hpp>
+# include <boost/fusion/sequence/intrinsic/size.hpp>
+#endif
+#include <boost/fusion/support/internal/ref.hpp>
+
+#include <boost/preprocessor/cat.hpp>
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/detail/pp/as_seq.hpp>
+#else
+
+# include <boost/fusion/container/detail/variadic_templates/as_seq.hpp>
+#endif
+
+namespace boost { namespace fusion
+{
+ namespace extension
+ {
+ template <typename T>
+ struct convert_impl;
+
+ template <>
+ struct convert_impl<BOOST_PP_CAT(BOOST_FUSION_SEQ_NAME,_tag)>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+ typedef typename
+ detail::BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME)<
+ result_of::size<SeqRef>::value
+ >
+ gen;
+ typedef typename
+ gen::template apply<
+ typename result_of::begin<SeqRef>::type
+ >::type
+ type;
+#else
+ typedef typename
+ detail::BOOST_PP_CAT(
+ BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME),_impl)<SeqRef>
+ gen;
+ typedef typename gen::apply::type type;
+#endif
+
+ static type call(SeqRef seq)
+ {
+ return type(fusion::sequence_assign(
+ BOOST_FUSION_FORWARD(SeqRef,seq)));
+ }
+ };
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename Seq>
+ struct BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME)
+ {
+ typedef typename
+ extension::convert_impl<
+ BOOST_PP_CAT(BOOST_FUSION_SEQ_NAME,_tag)
+ >::template apply<typename detail::add_lref<Seq>::type>
+ gen;
+
+ typedef typename gen::type type;
+ };
+ }
+
+ template <typename Seq>
+ inline typename
+ result_of::BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME)<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ >::type
+ BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME)(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return
+ result_of::BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME)<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ >::gen::call(seq);
+ }
+
+}}

Added: sandbox/SOC/2009/fusion/boost/fusion/container/detail/forward_ctor.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/detail/forward_ctor.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,23 @@
+// 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)
+
+#if !defined(BOOST_FUSION_SEQ_NAME) && !defined(BOOST_FUSION_CONTAINER_DETAIL_FORWARD_CTOR_HPP)
+# define BOOST_FUSION_CONTAINER_DETAIL_FORWARD_CTOR_HPP
+# include <boost/config.hpp>
+#endif
+
+#ifdef BOOST_FUSION_USE_BASE_TYPE
+# define BOOST_FUSION_INIT_BASE base_type
+#else
+# define BOOST_FUSION_INIT_BASE data
+#endif
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/detail/pp/forward_ctor.hpp>
+#else
+# include <boost/fusion/container/detail/variadic_templates/forward_ctor.hpp>
+#endif
+
+#undef BOOST_FUSION_INIT_BASE

Added: sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/as_seq.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/as_seq.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,63 @@
+// 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_PP_IS_ITERATING
+
+#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_from_to.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/dec.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <int Size>
+ struct BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME);
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/detail/pp/as_seq.hpp>
+#define BOOST_PP_ITERATION_LIMITS (0, BOOST_FUSION_MAX_SEQ_SIZE)
+#include BOOST_PP_ITERATE()
+}}}
+
+#else
+
+#define BOOST_FUSION_N BOOST_PP_ITERATION()
+
+ template <>
+ struct BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME)<BOOST_FUSION_N>
+ {
+ template <typename It0>
+ struct apply
+ {
+#if BOOST_FUSION_N
+ typedef typename result_of::value_of<It0>::type T0;
+#endif
+
+#define BOOST_FUSION_IT_VALUE_ENUM(Z, N, _)\
+ typedef typename\
+ result_of::next<BOOST_PP_CAT(It, BOOST_PP_DEC(N))>::type\
+ BOOST_PP_CAT(It, N);\
+ typedef typename\
+ result_of::value_of<BOOST_PP_CAT(It, N)>::type\
+ BOOST_PP_CAT(T, N);
+
+ BOOST_PP_REPEAT_FROM_TO(
+ 1, BOOST_FUSION_N, BOOST_FUSION_IT_VALUE_ENUM, _)
+
+#undef BOOST_FUSION_IT_VALUE_ENUM
+
+ typedef
+ BOOST_FUSION_SEQ_NAME<BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, T)>
+ type;
+ };
+ };
+
+#undef BOOST_FUSION_N
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/forward_ctor.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/detail/pp/forward_ctor.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,44 @@
+// 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_PP_IS_ITERATING
+# ifndef BOOST_FUSION_SEQ_NAME
+# ifndef BOOST_FUSION_CONTAINER_DETAIL_PP_FORWARD_CTOR_HPP
+# include <boost/fusion/support/internal/template.hpp>
+
+# include <boost/config.hpp>
+# include <boost/preprocessor/iterate.hpp>
+# include <boost/preprocessor/repetition/enum_params.hpp>
+# include <boost/preprocessor/repetition/enum_binary_params.hpp>
+# endif
+# else
+# define BOOST_PP_FILENAME_1 <boost/fusion/container/detail/pp/forward_ctor.hpp>
+# define BOOST_PP_ITERATION_LIMITS (1, BOOST_FUSION_MAX_SEQ_SIZE)
+# include BOOST_PP_ITERATE()
+
+ template<typename SeqAssign>
+ BOOST_FUSION_SEQ_NAME(SeqAssign const& seq_assign)
+ : BOOST_FUSION_INIT_BASE(seq_assign)
+ {}
+# endif
+#else
+# define BOOST_FUSION_N BOOST_PP_ITERATION()
+
+# ifndef BOOST_NO_RVALUE_REFERENCES
+ VARIADIC_TEMPLATE_A(BOOST_FUSION_N)
+# endif
+# if BOOST_FUSION_N == 1
+ explicit
+# endif
+# ifdef BOOST_NO_RVALUE_REFERENCES
+ BOOST_FUSION_SEQ_NAME(EXPAND_TEMPLATE_ARGUMENTS_CALL_PARAMS(BOOST_FUSION_N))
+# else
+ BOOST_FUSION_SEQ_NAME(EXPAND_TEMPLATE_ARGUMENTS_A(BOOST_FUSION_N))
+# endif
+ : BOOST_FUSION_INIT_BASE(EXPAND_PARAMETERS_A(BOOST_FUSION_N))
+ {}
+
+# undef BOOST_FUSION_N
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/detail/variadic_templates/as_seq.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/detail/variadic_templates/as_seq.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,57 @@
+// 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)
+
+//cschmidt: to avoid cyclic references - as some of the (here unneeded) mpl
+//sequence modification metafunctions might instantiate result_of::as_xxx - just
+//include the relevant /fusion/mpl/ headers.
+#include <boost/fusion/support/category_of.hpp>
+
+#include <boost/fusion/mpl/at.hpp>
+#include <boost/fusion/mpl/back.hpp>
+#include <boost/fusion/mpl/begin.hpp>
+#include <boost/fusion/mpl/empty.hpp>
+#include <boost/fusion/mpl/end.hpp>
+#include <boost/fusion/mpl/front.hpp>
+#include <boost/fusion/mpl/size.hpp>
+
+#include <boost/fusion/support/internal/variadic_templates/variadic_quote.hpp>
+
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/fold.hpp>
+#include <boost/mpl/quote.hpp>
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/push_back.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/unpack_args.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+
+ template<typename SeqRef>
+ struct BOOST_PP_CAT(BOOST_PP_CAT(as_,BOOST_FUSION_SEQ_NAME),_impl)
+ {
+ struct apply
+ {
+ typedef typename detail::remove_reference<SeqRef>::type seq;
+
+ typedef typename
+ mpl::apply<
+ mpl::unpack_args<variadic_quote<BOOST_FUSION_SEQ_NAME> >
+ , typename mpl::eval_if<
+ traits::is_random_access<SeqRef>
+ , mpl::identity<seq>
+ , mpl::fold<
+ seq
+ , mpl::vector0<>
+ , mpl::quote2<mpl::push_back>
+ >
+ >::type
+ >::type
+ type;
+ };
+ };
+}}}
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/detail/variadic_templates/forward_ctor.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/detail/variadic_templates/forward_ctor.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,30 @@
+// 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_SEQ_NAME
+# ifndef BOOST_FUSION_CONTAINER_DETAIL_VARIADIC_TEMPLATES_FORWARD_CTOR_HPP
+# define BOOST_FUSION_CONTAINER_DETAIL_VARIADIC_TEMPLATES_FORWARD_CTOR_HPP
+# include <boost/call_traits.hpp>
+# endif
+#else
+# ifdef BOOST_NO_RVALUE_REFERENCES
+ explicit
+ BOOST_FUSION_SEQ_NAME(
+ typename call_traits<Arguments>::param_type... arguments)
+ : BOOST_FUSION_INIT_BASE(arguments)
+ {}
+# else
+ template <typename... OtherArguments>
+ explicit
+ BOOST_FUSION_SEQ_NAME(OtherArguments&&... arguments)
+ : BOOST_FUSION_INIT_BASE(std::forward<OtherArguments>(arguments)...)
+ {}
+# endif
+
+ template<typename SeqAssign>
+ BOOST_FUSION_SEQ_NAME(SeqAssign const& seq_assign)
+ : BOOST_FUSION_INIT_BASE(seq_assign)
+ {}
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,23 @@
+/*=============================================================================
+ 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_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_HPP
+
+#include <boost/fusion/container/generation/cons_tie.hpp>
+#include <boost/fusion/container/generation/ignore.hpp>
+#include <boost/fusion/container/generation/list_tie.hpp>
+#include <boost/fusion/container/generation/make_cons.hpp>
+#include <boost/fusion/container/generation/make_list.hpp>
+#include <boost/fusion/container/generation/make_map.hpp>
+#include <boost/fusion/container/generation/make_set.hpp>
+#include <boost/fusion/container/generation/make_vector.hpp>
+#include <boost/fusion/container/generation/map_tie.hpp>
+#include <boost/fusion/container/generation/pair_tie.hpp>
+#include <boost/fusion/container/generation/vector_tie.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/cons_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/cons_tie.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,60 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_CONTAINER_GENERATION_CONS_TIE_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_CONS_TIE_HPP
+
+#include <boost/fusion/container/list/cons.hpp>
+#include <boost/fusion/support/internal/as_fusion_element.hpp>
+
+namespace boost { namespace fusion
+{
+ struct nil;
+
+ namespace result_of
+ {
+ template <typename Car, typename Cdr = nil>
+ struct cons_tie
+ {
+ typedef
+ cons<
+ typename detail::as_fusion_element_ref<Car>::type
+ , typename detail::as_fusion_element<Cdr>::type
+ >
+ type;
+ };
+ }
+
+ // $$$ do we really want a cons_tie? $$$
+ template <typename Car>
+ inline typename result_of::cons_tie<BOOST_FUSION_R_ELSE_LREF(Car)>::type
+ cons_tie(BOOST_FUSION_R_ELSE_LREF(Car) car)
+ {
+ return typename
+ result_of::cons_tie<BOOST_FUSION_R_ELSE_LREF(Car)>::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)
+ {
+ return typename
+ result_of::cons_tie<
+ BOOST_FUSION_R_ELSE_LREF(Car)
+ , BOOST_FUSION_R_ELSE_LREF(Cdr)>::type(
+ BOOST_FUSION_FORWARD(Car,car)
+ , BOOST_FUSION_FORWARD(Cdr,cdr));
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/make_seq.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/make_seq.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,12 @@
+// 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)
+
+#include <boost/config.hpp>
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/generation/detail/pp/make_seq.hpp>
+#else
+# include <boost/fusion/container/generation/detail/variadic_templates/make_seq.hpp>
+#endif

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-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,116 @@
+// 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_PP_IS_ITERATING
+#ifndef BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAKE_MAP_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAKE_MAP_HPP
+
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/support/internal/as_fusion_element.hpp>
+#include <boost/fusion/support/pair.hpp>
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/empty.hpp>
+#include <boost/preprocessor/facilities/intercept.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>
+
+namespace boost { namespace fusion
+{
+ 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 T,
+ void_)
+ >
+ struct make_map;
+ }
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp/make_map.hpp>
+#define BOOST_PP_ITERATION_LIMITS (0, FUSION_MAX_MAP_SIZE)
+#include BOOST_PP_ITERATE()
+
+}}
+
+#endif
+#else
+
+#define BOOST_FUSION_N BOOST_PP_ITERATION()
+#if BOOST_FUSION_N
+# define BOOST_FUSION_COMMA ,
+#else
+# define BOOST_FUSION_COMMA
+#endif
+
+ namespace result_of
+ {
+ template<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename K)
+ BOOST_FUSION_COMMA
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename T)
+ >
+ struct make_map
+#if BOOST_FUSION_N!=FUSION_MAX_MAP_SIZE
+ <
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, K)
+ BOOST_FUSION_COMMA
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, T)
+ >
+#endif
+ {
+#define BOOST_FUSION_MAP_ELEMENT(Z,N,_)\
+ pair<\
+ BOOST_PP_CAT(K,N)\
+ , typename detail::as_fusion_element<BOOST_PP_CAT(T,N)>::type\
+ >
+
+ typedef
+ map<BOOST_PP_ENUM(BOOST_FUSION_N, BOOST_FUSION_MAP_ELEMENT, _)>
+ type;
+
+#undef BOOST_FUSION_MAP_ELEMENT
+ };
+ }
+
+#if BOOST_FUSION_N
+ template<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename K)
+ , BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename A)
+ >
+#endif
+ inline
+#if BOOST_FUSION_N
+ typename
+#endif
+ result_of::make_map<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, K)
+ BOOST_FUSION_COMMA
+ EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_CLREF(BOOST_FUSION_N)
+ >::type
+ make_map(
+ EXPAND_TEMPLATE_ARGUMENTS_PARAMETERS_A_R_ELSE_CLREF(BOOST_FUSION_N))
+ {
+ return
+#if BOOST_FUSION_N
+ typename
+#endif
+ result_of::make_map<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, K)
+ BOOST_FUSION_COMMA
+ EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_CLREF(BOOST_FUSION_N)
+ >::type(EXPAND_PARAMETERS_A(BOOST_FUSION_N));
+ }
+
+#undef BOOST_FUSION_COMMA
+#undef BOOST_FUSION_N
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_seq.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/make_seq.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,72 @@
+// 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_PP_IS_ITERATING
+
+#include <boost/fusion/support/internal/as_fusion_element.hpp>
+#include <boost/fusion/support/internal/template.hpp>
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ VARIADIC_TEMPLATE_WITH_DEFAULT(BOOST_FUSION_MAX_SEQ_SIZE)
+ struct BOOST_PP_CAT(make_,BOOST_FUSION_SEQ_NAME);
+ }
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp/make_seq.hpp>
+#define BOOST_PP_ITERATION_LIMITS (0, BOOST_FUSION_MAX_SEQ_SIZE)
+#include BOOST_PP_ITERATE()
+
+}}
+
+#else
+
+#define BOOST_FUSION_N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ VARIADIC_TEMPLATE(BOOST_FUSION_N)
+ struct BOOST_PP_CAT(make_,BOOST_FUSION_SEQ_NAME)
+ EXPAND_TEMPLATE_ARGUMENTS_SPECIALIZATION(
+ BOOST_FUSION_MAX_SEQ_SIZE,BOOST_FUSION_N)
+ {
+ typedef
+ BOOST_FUSION_SEQ_NAME<
+ EXPAND_TEMPLATE_ARGUMENTS_BINARY(
+ BOOST_FUSION_N,
+ typename detail::as_fusion_element<,
+ >::type
+ )
+ >
+ type;
+ };
+ }
+
+ VARIADIC_TEMPLATE_A(BOOST_FUSION_N)
+ inline
+#if BOOST_FUSION_N
+ typename
+#endif
+ result_of::BOOST_PP_CAT(make_,BOOST_FUSION_SEQ_NAME)<
+ EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_CLREF(BOOST_FUSION_N)
+ >::type
+ BOOST_PP_CAT(make_,BOOST_FUSION_SEQ_NAME)(
+ EXPAND_TEMPLATE_ARGUMENTS_PARAMETERS_A_R_ELSE_CLREF(BOOST_FUSION_N))
+ {
+ return
+#if BOOST_FUSION_N
+ typename
+#endif
+ result_of::BOOST_PP_CAT(make_,BOOST_FUSION_SEQ_NAME)<
+ EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_CLREF(BOOST_FUSION_N)
+ >::type(EXPAND_PARAMETERS_A(BOOST_FUSION_N));
+ }
+
+#undef BOOST_FUSION_N
+#endif

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-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,115 @@
+// 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_PP_IS_ITERATING
+#ifndef BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAP_TIE_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_PP_MAP_TIE_HPP
+
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/support/internal/as_fusion_element.hpp>
+#include <boost/fusion/support/pair.hpp>
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/empty.hpp>
+#include <boost/preprocessor/facilities/intercept.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>
+
+namespace boost { namespace fusion
+{
+ 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 T,
+ void_)
+ >
+ struct map_tie;
+ }
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp/map_tie.hpp>
+#define BOOST_PP_ITERATION_LIMITS (0, FUSION_MAX_MAP_SIZE)
+#include BOOST_PP_ITERATE()
+
+}}
+
+#endif
+#else
+
+#define BOOST_FUSION_N BOOST_PP_ITERATION()
+#if BOOST_FUSION_N
+# define BOOST_FUSION_COMMA ,
+#else
+# define BOOST_FUSION_COMMA
+#endif
+
+ namespace result_of
+ {
+ template<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename K)
+ BOOST_FUSION_COMMA
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename T)
+ >
+ struct map_tie
+#if BOOST_FUSION_N!=FUSION_MAX_MAP_SIZE
+ <
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, K)
+ BOOST_FUSION_COMMA
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, T)
+ >
+#endif
+ {
+#define BOOST_FUSION_MAP_ELEMENT(Z,N,_)\
+ pair<\
+ BOOST_PP_CAT(K,N)\
+ , typename detail::as_fusion_element_ref<BOOST_PP_CAT(T,N)>::type\
+ >
+
+ typedef
+ map<BOOST_PP_ENUM(BOOST_FUSION_N, BOOST_FUSION_MAP_ELEMENT, _)>
+ type;
+
+#undef BOOST_FUSION_MAP_ELEMENT
+ };
+ }
+
+#if BOOST_FUSION_N
+ template<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename K)
+ , BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename A)
+ >
+#endif
+ inline
+#if BOOST_FUSION_N
+ typename
+#endif
+ result_of::map_tie<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, K)
+ BOOST_FUSION_COMMA
+ EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_LREF(BOOST_FUSION_N)
+ >::type
+ map_tie(EXPAND_TEMPLATE_ARGUMENTS_PARAMETERS_A_R_ELSE_LREF(BOOST_FUSION_N))
+ {
+ return
+#if BOOST_FUSION_N
+ typename
+#endif
+ result_of::map_tie<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, K)
+ BOOST_FUSION_COMMA
+ EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_LREF(BOOST_FUSION_N)
+ >::type(EXPAND_PARAMETERS_A(BOOST_FUSION_N));
+ }
+
+#undef BOOST_FUSION_COMMA
+#undef BOOST_FUSION_N
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/seq_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/pp/seq_tie.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,72 @@
+// 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_PP_IS_ITERATING
+
+#include <boost/fusion/support/internal/as_fusion_element.hpp>
+#include <boost/fusion/support/internal/template.hpp>
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ VARIADIC_TEMPLATE_WITH_DEFAULT(BOOST_FUSION_MAX_SEQ_SIZE)
+ struct BOOST_FUSION_FUNCTION_NAME;
+ }
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/detail/pp/seq_tie.hpp>
+#define BOOST_PP_ITERATION_LIMITS (0, BOOST_FUSION_MAX_SEQ_SIZE)
+#include BOOST_PP_ITERATE()
+
+}}
+
+#else
+
+#define BOOST_FUSION_N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ VARIADIC_TEMPLATE(BOOST_FUSION_N)
+ struct BOOST_FUSION_FUNCTION_NAME
+ EXPAND_TEMPLATE_ARGUMENTS_SPECIALIZATION(
+ BOOST_FUSION_MAX_SEQ_SIZE,BOOST_FUSION_N)
+ {
+ typedef
+ BOOST_FUSION_SEQ_NAME<
+ EXPAND_TEMPLATE_ARGUMENTS_BINARY(
+ BOOST_FUSION_N,
+ typename detail::as_fusion_element_ref<,
+ >::type
+ )
+ >
+ type;
+ };
+ }
+
+ VARIADIC_TEMPLATE_A(BOOST_FUSION_N)
+ inline
+#if BOOST_FUSION_N
+ typename
+#endif
+ result_of::BOOST_FUSION_FUNCTION_NAME<
+ EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_LREF(BOOST_FUSION_N)
+ >::type
+ BOOST_FUSION_FUNCTION_NAME(
+ EXPAND_TEMPLATE_ARGUMENTS_PARAMETERS_A_R_ELSE_LREF(BOOST_FUSION_N))
+ {
+ return
+#if BOOST_FUSION_N
+ typename
+#endif
+ result_of::BOOST_FUSION_FUNCTION_NAME<
+ EXPAND_TEMPLATE_ARGUMENTS_A_R_ELSE_LREF(BOOST_FUSION_N)
+ >::type(EXPAND_PARAMETERS_A(BOOST_FUSION_N));
+ }
+
+#undef N
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/seq_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/seq_tie.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,25 @@
+// 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)
+
+#include <boost/config.hpp>
+#include <boost/fusion/container/generation/ignore.hpp>
+
+#ifndef BOOST_FUSION_FUNCTION_NAME
+# include <boost/preprocessor/cat.hpp>
+
+# define BOOST_FUSION_UNDEF_FUNCTION_NAME
+# define BOOST_FUSION_FUNCTION_NAME BOOST_PP_CAT(BOOST_FUSION_SEQ_NAME,_tie)
+#endif
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/generation/detail/pp/seq_tie.hpp>
+#else
+# include <boost/fusion/container/generation/detail/variadic_templates/seq_tie.hpp>
+#endif
+
+#ifdef BOOST_FUSION_UNDEF_FUNCTION_NAME
+# undef BOOST_FUSION_FUNCTION_NAME
+# undef BOOST_FUSION_UNDEF_FUNCTION_NAME
+#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-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,86 @@
+// 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_GENERATION_DETAIL_VARIADIC_TEMPLATES_MAKE_MAP_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_VARIADIC_TEMPLATES_MAKE_MAP_HPP
+
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/support/internal/as_fusion_element.hpp>
+#include <boost/fusion/support/internal/variadic_templates/variadic_arguments_to_vector.hpp>
+#include <boost/fusion/support/internal/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/apply.hpp>
+#include <boost/mpl/unpack_args.hpp>
+#include <boost/mpl/vector.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
+ detail::variadic_arguments_to_vector<KeysTypes...>::type
+ args;
+ typedef typename mpl::begin<args>::type args_begin;
+ typedef typename
+ mpl::advance<
+ args_begin
+ , mpl::divides<mpl::size<args>, mpl::int_<2> >
+ >::type
+ args_middle;
+
+ typedef mpl::iterator_range<args_begin, args_middle> keys;
+ typedef
+ mpl::iterator_range<
+ args_middle
+ , 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<detail::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_seq.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/make_seq.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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)
+
+#include <boost/fusion/support/internal/as_fusion_element.hpp>
+
+#include <boost/preprocessor/cat.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename... Types>
+ struct BOOST_PP_CAT(make_,BOOST_FUSION_SEQ_NAME)
+ {
+ typedef
+ BOOST_FUSION_SEQ_NAME<
+ typename detail::as_fusion_element<Types>::type...
+ >
+ type;
+ };
+ }
+
+ template <typename... Types>
+ inline typename
+ result_of::BOOST_PP_CAT(make_,BOOST_FUSION_SEQ_NAME)<
+ BOOST_FUSION_R_ELSE_CLREF(Types)...
+ >::type
+ BOOST_PP_CAT(make_,BOOST_FUSION_SEQ_NAME)(
+ BOOST_FUSION_R_ELSE_CLREF(Types)... types)
+ {
+ return typename
+ result_of::BOOST_PP_CAT(make_,BOOST_FUSION_SEQ_NAME)<
+ BOOST_FUSION_R_ELSE_CLREF(Types)...
+ >::type(BOOST_FUSION_FORWARD(Types, types)...);
+ }
+}}
+

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-08-17 19:47:17 EDT (Mon, 17 Aug 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_GENERATION_DETAIL_VARIADIC_TEMPLATES_MAP_TIE_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_DETAIL_VARIADIC_TEMPLATES_MAP_TIE_HPP
+
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/support/internal/as_fusion_element.hpp>
+#include <boost/fusion/support/internal/variadic_templates/variadic_arguments_to_vector.hpp>
+#include <boost/fusion/support/internal/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/apply.hpp>
+#include <boost/mpl/unpack_args.hpp>
+#include <boost/mpl/vector.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
+ detail::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_ref<mpl::_2> >
+ >
+ >
+ map_args;
+
+ typedef typename
+ mpl::apply<
+ mpl::unpack_args<detail::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_CLREF(Types)...>::type
+ map_tie(BOOST_FUSION_R_ELSE_CLREF(Types)... types)
+ {
+ typedef typename
+ result_of::map_tie<Keys...,BOOST_FUSION_R_ELSE_CLREF(Types)...>::type
+ type;
+ return type(BOOST_FUSION_FORWARD(Types, types)...);
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/seq_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/detail/variadic_templates/seq_tie.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,38 @@
+// 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)
+
+#include <boost/fusion/support/internal/as_fusion_element.hpp>
+
+#include <boost/preprocessor/cat.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename... Types>
+ struct BOOST_FUSION_FUNCTION_NAME
+ {
+ typedef
+ BOOST_FUSION_SEQ_NAME<
+ typename detail::as_fusion_element_ref<Types>::type...
+ >
+ type;
+ };
+ }
+
+ template <typename... Types>
+ inline typename
+ result_of::BOOST_FUSION_FUNCTION_NAME<
+ BOOST_FUSION_R_ELSE_CLREF(Types)...
+ >::type
+ BOOST_FUSION_FUNCTION_NAME(BOOST_FUSION_R_ELSE_CLREF(Types)... types)
+ {
+ return typename
+ result_of::BOOST_FUSION_FUNCTION_NAME<
+ BOOST_FUSION_R_ELSE_CLREF(Types)...
+ >::type(BOOST_FUSION_FORWARD(Types, types)...);
+ }
+}}
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/ignore.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/ignore.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,33 @@
+/*=============================================================================
+ Copyright (c) 2001 Doug Gregor
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ 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_IGNORE_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_IGNORE_HPP
+
+namespace boost { namespace fusion
+{
+ // Swallows any assignment (by Doug Gregor)
+ namespace detail
+ {
+ struct swallow_assign
+ {
+ template<typename T>
+ swallow_assign const&
+ operator=(const T&) const
+ {
+ return *this;
+ }
+ };
+ }
+
+ // "ignore" allows tuple positions to be ignored when using "tie".
+ detail::swallow_assign const ignore = detail::swallow_assign();
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/list_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/list_tie.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,17 @@
+// 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_GENERATION_LIST_TIE_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_LIST_TIE_HPP
+
+#include <boost/fusion/container/list/list.hpp>
+
+#define BOOST_FUSION_SEQ_NAME list
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_LIST_SIZE
+#include <boost/fusion/container/generation/detail/seq_tie.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_cons.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_cons.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,65 @@
+/*=============================================================================
+ 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_GENERATION_MAKE_CONS_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_MAKE_CONS_HPP
+
+#include <boost/fusion/container/list/cons.hpp>
+#include <boost/fusion/support/internal/as_fusion_element.hpp>
+
+namespace boost { namespace fusion
+{
+ struct nil;
+
+ namespace result_of
+ {
+ template <typename Car, typename Cdr = nil>
+ struct make_cons
+ {
+ typedef
+ cons<typename detail::as_fusion_element<Car>::type
+ , typename detail::as_fusion_element<Cdr>::type
+ >
+ type;
+ };
+ }
+
+ template <typename Car>
+ inline typename result_of::make_cons<BOOST_FUSION_R_ELSE_CLREF(Car)>::type
+ make_cons(BOOST_FUSION_R_ELSE_CLREF(Car) 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 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)
+ {
+ 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

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_list.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_list.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,17 @@
+// 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_GENERATION_MAKE_LIST_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_MAKE_LIST_HPP
+
+#include <boost/fusion/container/list/list.hpp>
+
+#define BOOST_FUSION_SEQ_NAME list
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_LIST_SIZE
+#include <boost/fusion/container/generation/detail/make_seq.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_map.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_map.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,16 @@
+// 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_GENERATION_MAKE_MAP_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_MAKE_MAP_HPP
+
+#include <boost/config.hpp>
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/generation/detail/pp/make_map.hpp>
+#else
+# include <boost/fusion/container/generation/detail/variadic_templates/make_map.hpp>
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_set.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_set.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,17 @@
+// 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_GENERATION_MAKE_SET_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_MAKE_SET_HPP
+
+#include <boost/fusion/container/set/set.hpp>
+
+#define BOOST_FUSION_SEQ_NAME set
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_SET_SIZE
+#include <boost/fusion/container/generation/detail/make_seq.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_vector.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,17 @@
+// 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_GENERATION_MAKE_VECTOR_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_MAKE_VECTOR_HPP
+
+#include <boost/fusion/container/vector/vector.hpp>
+
+#define BOOST_FUSION_SEQ_NAME vector
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_VECTOR_SIZE
+#include <boost/fusion/container/generation/detail/make_seq.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/map_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/map_tie.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,18 @@
+// 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_GENERATION_MAP_TIE_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_MAP_TIE_HPP
+
+#include <boost/config.hpp>
+#include <boost/fusion/container/generation/ignore.hpp>
+
+#ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include <boost/fusion/container/generation/detail/pp/map_tie.hpp>
+#else
+# include <boost/fusion/container/generation/detail/variadic_templates/map_tie.hpp>
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/pair_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/pair_tie.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,45 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined (BOOST_FUSION_PAIR_TIE_20060812_2058)
+#define BOOST_FUSION_PAIR_TIE_20060812_2058
+
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/as_fusion_element.hpp>
+
+namespace boost { namespace fusion
+{
+ template<typename Key, typename T>
+ struct pair;
+
+ namespace result_of
+ {
+ template<typename Key, typename T>
+ struct pair_tie
+ {
+ typedef
+ fusion::pair<
+ Key
+ , typename detail::as_fusion_element_ref<T>::type
+ >
+ type;
+ };
+ }
+
+ template<typename Key, typename T>
+ typename result_of::pair_tie<Key, BOOST_FUSION_R_ELSE_CLREF(T)>::type
+ pair_tie(BOOST_FUSION_R_ELSE_LREF(T) t)
+ {
+ return typename
+ result_of::pair_tie<
+ Key
+ , BOOST_FUSION_R_ELSE_CLREF(T)
+ >::type(BOOST_FUSION_FORWARD(T,t));
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/vector_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/vector_tie.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,17 @@
+// 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_GENERATION_VECTOR_TIE_HPP
+#define BOOST_FUSION_CONTAINER_GENERATION_VECTOR_TIE_HPP
+
+#include <boost/fusion/container/vector/vector.hpp>
+
+#define BOOST_FUSION_SEQ_NAME vector
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_VECTOR_SIZE
+#include <boost/fusion/container/generation/detail/seq_tie.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +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_FUSION_CONTAINER_LIST_HPP
+#define BOOST_FUSION_CONTAINER_LIST_HPP
+
+#include <boost/fusion/container/list/limits.hpp>
+#include <boost/fusion/container/list/cons.hpp>
+#include <boost/fusion/container/list/list.hpp>
+#include <boost/fusion/container/list/convert.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,226 @@
+/*=============================================================================
+ 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_CONS_HPP
+#define BOOST_FUSION_CONTAINER_LIST_CONS_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/front.hpp>
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/fusion/sequence/intrinsic/empty.hpp>
+#endif
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assign_tags.hpp>
+#include <boost/fusion/support/internal/sequence_assign.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/or.hpp>
+//#include <boost/utility/enable_if.hpp>
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/mpl/equal_to.hpp>
+#endif
+#ifdef BOOST_NO_RVALUE_REFERENCES
+# include <boost/call_traits.hpp>
+#endif
+
+#include <boost/fusion/container/list/detail/cons/cons_fwd.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/fusion/container/list/detail/cons/cons_iterator.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/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
+{
+ struct void_;
+ struct fusion_sequence_tag;
+
+ struct nil
+ : sequence_base<nil>
+ {
+ typedef mpl::int_<0> size;
+ typedef cons_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef forward_traversal_tag category;
+ typedef void_ car_type;
+ typedef void_ cdr_type;
+
+ nil()
+ {}
+
+ nil(const nil&)
+ {}
+
+ template<typename SeqAssign>
+ nil(BOOST_FUSION_R_ELSE_CLREF(SeqAssign))
+ {
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ BOOST_FUSION_MPL_ASSERT((
+ result_of::empty<typename SeqAssign::seq_type>));
+#else
+ BOOST_FUSION_MPL_ASSERT((
+ result_of::empty<
+ typename detail::remove_reference<SeqAssign>::type::seq_type
+ >));
+#endif
+ }
+
+ template<typename It>
+ nil(detail::assign_by_deref,It const&)
+ {}
+
+ template<typename Seq>
+ nil&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Seq))
+ {
+ BOOST_FUSION_MPL_ASSERT((result_of::empty<Seq>));
+ return *this;
+ }
+
+ template<typename It>
+ void
+ assign(It const&)
+ {}
+ };
+
+ template <typename Car, typename Cdr = nil>
+ struct cons : sequence_base<cons<Car, Cdr> >
+ {
+ typedef mpl::int_<Cdr::size::value+1> size;
+ typedef cons_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+ typedef forward_traversal_tag category;
+ typedef Car car_type;
+ typedef Cdr cdr_type;
+
+ cons()
+ : car()
+ , cdr()
+ {}
+
+ //cschmidt: iterators so we do not have to deal with the cv-ness
+ //of cons_.car/cons_.cdr explicitly
+#define BOOST_FUSION_CONS_CTOR(COMBINATION,_)\
+ cons(cons COMBINATION cons_)\
+ : car(fusion::front(BOOST_FUSION_FORWARD(cons COMBINATION,cons_)))\
+ , cdr(detail::assign_by_deref(),\
+ fusion::next(fusion::begin(\
+ BOOST_FUSION_FORWARD(cons COMBINATION,cons_))))\
+ {}
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_CONS_CTOR,_);
+
+#undef BOOST_FUSION_CONS_CTOR
+
+ //cschmidt: rvalue ref if possible, so this does not collide with
+ //cons(OtherCar&&,OtherCdr&&)
+ template<typename It>
+ cons(detail::assign_by_deref,BOOST_FUSION_R_ELSE_CLREF(It) it)
+ : car(fusion::deref(it))
+ , cdr(detail::assign_by_deref(),fusion::next(it))
+ {}
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ explicit
+ cons(typename call_traits<Car>::param_type car)
+ : car(car)
+ {}
+#else
+ template<typename OtherCar>
+ explicit
+ cons(OtherCar&& car)
+ : car(std::forward<OtherCar>(car))
+ {}
+#endif
+
+#define BOOST_FUSION_CONS_ASSIGN_CTOR(COMBINATION,_)\
+ template<typename SeqRef>\
+ cons(detail::sequence_assign_type<SeqRef> COMBINATION seq_assign)\
+ : car(fusion::front(seq_assign.get()))\
+ , cdr(detail::assign_by_deref(),\
+ fusion::next(fusion::begin(seq_assign.get())))\
+ {\
+ BOOST_FUSION_MPL_ASSERT_NOT((\
+ mpl::equal_to<size,result_of::size<SeqRef> >));\
+ }
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_CONS_ASSIGN_CTOR,_);
+
+#undef BOOST_FUSION_CONS_ASSIGN_CTOR
+
+ /*
+ template<typename Seq>
+ vector(typename enable_if_c<sizeof...(Elements)!=1,
+ BOOST_FUSION_R_ELSE_CLREF(Seq)>::type seq)
+ : base(detail::assign_by_deref(),
+ fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)))
+ {}
+ */
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ cons(typename call_traits<Car>::param_type car,Cdr const& cdr)
+ : car(car)
+ , cdr(cdr)
+ {}
+#else
+ template<typename OtherCar,typename OtherCdr>
+ cons(BOOST_FUSION_R_ELSE_CLREF(OtherCar) car,
+ BOOST_FUSION_R_ELSE_CLREF(OtherCdr) cdr)
+ : car(BOOST_FUSION_FORWARD(OtherCar,car))
+ , cdr(BOOST_FUSION_FORWARD(OtherCdr,cdr))
+ {}
+#endif
+
+ template<typename Seq>
+ cons&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ BOOST_FUSION_MPL_ASSERT_NOT((result_of::empty<Seq>));
+
+ assign(fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)));
+ return *this;
+ }
+
+ template<typename Seq>
+ cons&
+ operator=(cons const& seq)
+ {
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ return this->operator=<cons<Car,Cdr> >(seq);
+#else
+ return this->operator=<cons<Car,Cdr> const&>(seq);
+#endif
+ }
+
+ template<typename It>
+ void
+ assign(It const& it)
+ {
+ car=fusion::deref(it);
+ cdr.assign(fusion::next(it));
+ }
+
+ car_type car;
+ cdr_type cdr;
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/convert.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/convert.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,22 @@
+/*=============================================================================
+ 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_CONVERT_HPP
+#define BOOST_FUSION_CONTAINER_LIST_CONVERT_HPP
+
+#include <boost/fusion/container/list/list.hpp>
+#include <boost/fusion/container/list/cons.hpp>
+
+#define BOOST_FUSION_SEQ_NAME list
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_LIST_SIZE
+#include <boost/fusion/container/detail/convert_impl.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
+
+#include <boost/fusion/container/list/detail/cons/convert_impl.hpp>
+
+#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-08-17 19:47:17 EDT (Mon, 17 Aug 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/config.hpp>
+#include <boost/fusion/support/internal/workaround.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
+ };
+ }
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct at_impl;
+
+ template <>
+ struct at_impl<cons_tag>
+ {
+ template <typename SeqRef, typename N>
+ struct apply
+ {
+ typedef typename
+ detail::forward_as<
+ SeqRef
+ , typename detail::cons_advance<SeqRef, N::value>::type
+ >::type
+ type;
+
+ template <typename Cons, int N2>
+ static type
+ call(Cons& cons, mpl::int_<N2>)
+ {
+ return call(cons.cdr, mpl::int_<N2-1>());
+ }
+
+ template <typename Cons>
+ static type
+ call(Cons& cons, mpl::int_<0>)
+ {
+ return cons.car;
+ }
+
+ static type
+ call(SeqRef seq)
+ {
+ return call(seq, 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-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,34 @@
+/*=============================================================================
+ 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 { namespace extension
+{
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<cons_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef cons_iterator<SeqRef> type;
+
+ static type
+ call(SeqRef t)
+ {
+ return type(t,0);
+ }
+ };
+ };
+}}}
+
+#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-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,61 @@
+/*=============================================================================
+ 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/cons_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/cons_fwd.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,20 @@
+// 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_DETAIL_CONS_CONS_FWD_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_CONS_CONS_FWD_HPP
+
+namespace boost { namespace fusion
+{
+ struct cons_tag;
+ struct forward_traversal_tag;
+
+ struct nil;
+
+ template <typename Car, typename Cdr>
+ struct cons;
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/cons_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/cons/cons_iterator.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,79 @@
+/*=============================================================================
+ 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_CONS_ITERATOR_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_CONS_CONS_ITERATOR_HPP
+
+#include <boost/fusion/support/iterator_base.hpp>
+
+namespace boost { namespace fusion
+{
+ struct cons_iterator_tag;
+ struct forward_traversal_tag;
+
+ template <typename Cons = nil>
+ struct cons_iterator
+ : iterator_base<cons_iterator<Cons> >
+ {
+ typedef cons_iterator_tag fusion_tag;
+ typedef forward_traversal_tag category;
+ typedef Cons cons_type;
+
+ template<typename OtherIt>
+ cons_iterator(OtherIt const& it)
+ : cons(it.cons)
+ {}
+
+ cons_iterator(cons_type cons, int)
+ : cons(&cons)
+ {}
+
+ template<typename OtherIt>
+ cons_iterator&
+ operator=(OtherIt const& other_it)
+ {
+ cons=other_it.cons;
+ return *this;
+ }
+
+ typename detail::remove_reference<cons_type>::type* cons;
+ };
+
+ struct nil_iterator
+ : iterator_base<nil_iterator>
+ {
+ typedef forward_traversal_tag category;
+ typedef cons_iterator_tag fusion_tag;
+ typedef nil cons_type;
+
+ nil_iterator()
+ {}
+
+ nil_iterator(nil const&,int)
+ {}
+ };
+
+#define BOOST_FUSION_NIL_ITERATOR(COMBINATION,_)\
+ template <>\
+ struct cons_iterator<nil COMBINATION>\
+ : nil_iterator\
+ {\
+ cons_iterator()\
+ {}\
+ \
+ explicit\
+ cons_iterator(nil COMBINATION, int)\
+ {}\
+ };
+
+ BOOST_FUSION_ALL_CV_REF_COMBINATIONS(BOOST_FUSION_NIL_ITERATOR,_)
+
+#undef BOOST_FUSION_NIL_ITERATOR
+}}
+
+#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-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,47 @@
+/*=============================================================================
+ 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 { namespace extension
+{
+ template <typename T>
+ struct convert_impl;
+
+ template <>
+ struct convert_impl<cons_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ detail::build_cons<
+ typename result_of::begin<SeqRef>::type
+ , typename result_of::end<SeqRef>::type
+ >
+ build_cons;
+
+ typedef typename build_cons::type type;
+
+ static type
+ call(SeqRef 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-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,43 @@
+/*=============================================================================
+ 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 { namespace extension
+{
+ template <typename Tag>
+ struct deref_impl;
+
+ template <>
+ struct deref_impl<cons_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename
+ detail::remove_reference<ItRef>::type::cons_type
+ cons_type;
+ typedef typename
+ detail::remove_reference<cons_type>::type::car_type
+ car_type;
+
+ typedef typename
+ detail::forward_as<cons_type,car_type>::type
+ type;
+
+ static type
+ call(ItRef it)
+ {
+ return it.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-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,28 @@
+/*=============================================================================
+ 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 { namespace extension
+{
+ template <typename Tag>
+ struct empty_impl;
+
+ template <>
+ struct empty_impl<cons_tag>
+ {
+ template <typename Seq>
+ struct apply
+ : boost::is_same<typename detail::identity<Seq>::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-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,36 @@
+/*=============================================================================
+ 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 { namespace extension
+{
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<cons_tag>
+ {
+ template <typename Seq>
+ struct apply
+ {
+ typedef
+ cons_iterator<typename detail::forward_as<Seq,nil>::type>
+ type;
+
+ static type
+ call(Seq)
+ {
+ 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-08-17 19:47:17 EDT (Mon, 17 Aug 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_LIST_DETAIL_CONS_EQUAL_TO_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_CONS_EQUAL_TO_IMPL_HPP
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct equal_to_impl;
+
+ template <>
+ struct equal_to_impl<cons_iterator_tag>
+ {
+ template <typename It1Ref, typename It2Ref>
+ struct apply
+ : is_same<
+ typename detail::identity<
+ typename detail::remove_reference<
+ It1Ref
+ >::type::cons_type
+ >::type
+ , typename detail::identity<
+ typename detail::remove_reference<
+ It2Ref
+ >::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-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,45 @@
+/*=============================================================================
+ 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 { namespace extension
+{
+ template <typename Tag>
+ struct next_impl;
+
+ template <>
+ struct next_impl<cons_iterator_tag>
+ {
+ template <typename It>
+ struct apply
+ {
+ typedef typename
+ detail::remove_reference<It>::type::cons_type
+ cons_type;
+ typedef typename
+ detail::remove_reference<cons_type>::type::cdr_type
+ cdr_type;
+
+ typedef
+ cons_iterator<
+ typename detail::forward_as<cons_type, cdr_type>::type
+ >
+ type;
+
+ static type
+ call(It it)
+ {
+ return type(it.cons->cdr,0);
+ }
+ };
+ };
+}}}
+
+#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-08-17 19:47:17 EDT (Mon, 17 Aug 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_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 { namespace extension
+{
+ template <typename Tag>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<cons_tag>
+ {
+ template <typename Seq, typename N>
+ struct apply
+ {
+ typedef typename
+ detail::remove_reference<Seq>::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-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,34 @@
+/*=============================================================================
+ 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 { namespace extension
+{
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <>
+ struct value_of_impl<cons_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename
+ detail::remove_reference<ItRef>::type::cons_type
+ cons_type;
+
+ typedef typename
+ detail::remove_reference<cons_type>::type::car_type
+ type;
+ };
+ };
+}}}
+
+#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-08-17 19:47:17 EDT (Mon, 17 Aug 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_DETAIL_LIST_AT_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_LIST_AT_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct at_impl;
+
+ template <>
+ struct at_impl<list_tag>
+ {
+ template <typename SeqRef, typename N>
+ struct apply
+ {
+ typedef typename
+ result_of::at<
+ typename detail::forward_as<
+ SeqRef
+ , typename detail::remove_reference<
+ SeqRef
+ >::type::storage_type
+ >::type
+ , N
+ >::type
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return fusion::at<N>(seq.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-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,43 @@
+/*=============================================================================
+ 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/iterator/basic_iterator.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<list_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ basic_iterator<
+ list_iterator_tag
+ , bidirectional_traversal_tag
+ , SeqRef
+ , 0
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq,0);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/deref_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/deref_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,45 @@
+// 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_DETAIL_LIST_DEREF_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_LIST_DEREF_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct deref_impl;
+
+ template <>
+ struct deref_impl<list_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+
+ typedef typename
+ result_of::at<
+ typename detail::forward_as<
+ typename it::seq_type
+ , typename detail::remove_reference<
+ typename it::seq_type
+ >::type::storage_type
+ >::type
+ , typename it::index
+ >::type
+ type;
+
+ static type
+ call(ItRef it_)
+ {
+ return at<typename it::index>(it_.seq->get_data());
+ }
+ };
+ };
+}}}
+
+#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-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,44 @@
+/*=============================================================================
+ 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/iterator/basic_iterator.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<list_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ basic_iterator<
+ list_iterator_tag
+ , bidirectional_traversal_tag
+ , SeqRef
+ , result_of::size<SeqRef>::type::value
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq,0);
+ }
+ };
+ };
+}}}
+
+#endif

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-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,35 @@
+// 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_DETAIL_LIST_VALUE_AT_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_LIST_VALUE_AT_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/value_at.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ //TODO doc
+ template <typename Tag>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<list_tag>
+ {
+ template <typename SeqRef, typename N>
+ struct apply
+ {
+ typedef typename
+ result_of::value_at<
+ typename detail::remove_reference<
+ SeqRef
+ >::type::storage_type
+ , N
+ >::type
+ type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/value_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list/value_of_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,36 @@
+// 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_DETAIL_LIST_VALUE_OF_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_LIST_DETAIL_LIST_VALUE_OF_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/value_at.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <>
+ struct value_of_impl<list_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+
+ typedef typename
+ result_of::value_at<
+ typename detail::remove_reference<
+ typename it::seq_type
+ >::type::storage_type
+ , typename it::index
+ >::type
+ type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/limits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/limits.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_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)
+# ifndef 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

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/list.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,77 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#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/vector/vector.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/internal/ref.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>
+#include <boost/fusion/container/list/detail/list/deref_impl.hpp>
+#include <boost/fusion/container/list/detail/list/value_of_impl.hpp>
+
+#include <boost/fusion/container/detail/forward_ctor.hpp>
+
+namespace boost { namespace fusion
+{
+ struct fusion_sequence_tag;
+
+ VARIADIC_TEMPLATE(FUSION_MAX_LIST_SIZE)
+ struct list
+ : sequence_base<list<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_LIST_SIZE)> >
+ {
+ typedef bidirectional_traversal_tag category;
+ typedef list_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+
+ typedef
+ vector<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_LIST_SIZE)>
+ storage_type;
+ typedef typename storage_type::size size;
+
+ list()
+ {}
+
+#define BOOST_FUSION_LIST_CTOR(COMBINATION,_)\
+ list(list COMBINATION list_)\
+ : data(BOOST_FUSION_FORWARD(list COMBINATION,list_).data)\
+ {}
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_LIST_CTOR,_)
+
+#undef BOOST_FUSION_LIST_CTOR
+
+#define BOOST_FUSION_SEQ_NAME list
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_LIST_SIZE
+#include <boost/fusion/container/detail/forward_ctor.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
+
+ template <typename Seq>
+ list&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ data = BOOST_FUSION_FORWARD(Seq, seq);
+ return *this;
+ }
+
+ storage_type& get_data() { return data; }
+ storage_type const& get_data() const { return data; }
+
+ private:
+ storage_type data;
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/list_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/list_fwd.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,25 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#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/fusion/support/internal/template.hpp>
+
+namespace boost { namespace fusion
+{
+ struct list_tag;
+ struct list_iterator_tag;
+ struct forward_traversal_tag;
+ struct bidirectional_traversal_tag;
+
+ VARIADIC_TEMPLATE_WITH_DEFAULT(FUSION_MAX_LIST_SIZE)
+ struct list;
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,15 @@
+/*=============================================================================
+ 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_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/convert.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/convert.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/convert.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,19 @@
+/*=============================================================================
+ 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_CONVERT_HPP
+#define BOOST_FUSION_CONTAINER_MAP_CONVERT_HPP
+
+#include <boost/fusion/container/map/map.hpp>
+
+#define BOOST_FUSION_SEQ_NAME map
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_MAP_SIZE
+#include <boost/fusion/container/detail/convert_impl.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/begin_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,40 @@
+// 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_DETAIL_BEGIN_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_MAP_DETAIL_BEGIN_IMPL_HPP
+
+#include <boost/fusion/iterator/basic_iterator.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<map_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ basic_iterator<
+ map_iterator_tag
+ , map_category
+ , SeqRef
+ , 0
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq,0);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/deref_data_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/deref_data_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_MAP_DETAIL_DEREF_DATA_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_MAP_DETAIL_DEREF_DATA_IMPL_HPP
+
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct deref_data_impl;
+
+ template <>
+ struct deref_data_impl<map_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+
+ typedef typename
+ detail::forward_as<
+ typename it::seq_type
+ , typename result_of::value_of<ItRef>::type::second_type
+ >::type
+ type;
+
+ static type
+ call(ItRef it)
+ {
+ return deref(it).second;
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/deref_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/deref_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,45 @@
+// 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_DETAIL_DEREF_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_MAP_DETAIL_DEREF_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct deref_impl;
+
+ template <>
+ struct deref_impl<map_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+
+ typedef typename
+ result_of::at<
+ typename detail::forward_as<
+ typename it::seq_type
+ , typename detail::remove_reference<
+ typename it::seq_type
+ >::type::storage_type
+ >::type
+ , typename it::index
+ >::type
+ type;
+
+ static type
+ call(ItRef it_)
+ {
+ return at<typename it::index>(it_.seq->get_data());
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/end_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,40 @@
+// 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_DETAIL_END_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_MAP_DETAIL_END_IMPL_HPP
+
+#include <boost/fusion/iterator/basic_iterator.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<map_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ basic_iterator<
+ map_iterator_tag
+ , map_category
+ , SeqRef
+ , detail::remove_reference<SeqRef>::type::size::value
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq,0);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/key_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/key_of_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,30 @@
+// 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_DETAIL_KEY_OF_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_MAP_DETAIL_KEY_OF_IMPL_HPP
+
+#include <boost/fusion/container/map/detail/value_of_impl.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct key_of_impl;
+
+ template <>
+ struct key_of_impl<map_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename
+ value_of_impl<map_iterator_tag>::
+ template apply<ItRef>::type::first_type
+ type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/value_of_data_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/value_of_data_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,30 @@
+// 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_DETAIL_VALUE_OF_DATA_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_MAP_DETAIL_VALUE_OF_DATA_IMPL_HPP
+
+#include <boost/fusion/container/map/detail/value_of_impl.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct value_of_data_impl;
+
+ template <>
+ struct value_of_data_impl<map_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename
+ value_of_impl<map_iterator_tag>::
+ template apply<ItRef>::type::second_type
+ type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/value_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/value_of_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,36 @@
+// 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_DETAIL_VALUE_OF_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_MAP_DETAIL_VALUE_OF_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/value_at.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <>
+ struct value_of_impl<map_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+
+ typedef typename
+ result_of::value_at<
+ typename detail::remove_reference<
+ typename it::seq_type
+ >::type::storage_type
+ , typename it::index
+ >::type
+ type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/limits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/limits.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_MAP_LIMITS_HPP
+#define BOOST_FUSION_CONTAINER_MAP_LIMITS_HPP
+
+#include <boost/fusion/container/vector/limits.hpp>
+
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# ifndef 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

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/map.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,79 @@
+// 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_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/sequence_base.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+
+#include <boost/mpl/bool.hpp>
+
+#include <boost/fusion/container/map/detail/begin_impl.hpp>
+#include <boost/fusion/container/map/detail/end_impl.hpp>
+#include <boost/fusion/container/map/detail/deref_impl.hpp>
+#include <boost/fusion/container/map/detail/value_of_impl.hpp>
+#include <boost/fusion/container/map/detail/value_of_data_impl.hpp>
+#include <boost/fusion/container/map/detail/deref_data_impl.hpp>
+#include <boost/fusion/container/map/detail/key_of_impl.hpp>
+
+#include <boost/fusion/container/detail/forward_ctor.hpp>
+
+namespace boost { namespace fusion
+{
+ struct fusion_sequence_tag;
+
+ VARIADIC_TEMPLATE(FUSION_MAX_MAP_SIZE)
+ struct map
+ : sequence_base<map<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_MAP_SIZE)> >
+ {
+ typedef map_category category;
+ typedef map_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+
+ typedef
+ vector<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_MAP_SIZE)>
+ storage_type;
+ typedef typename storage_type::size size;
+
+ map()
+ {}
+
+#define BOOST_FUSION_MAP_CTOR(COMBINATION,_)\
+ map(map COMBINATION map_)\
+ : data(BOOST_FUSION_FORWARD(map COMBINATION,map_).data)\
+ {}
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_MAP_CTOR,_)
+
+#undef BOOST_FUSION_MAP_CTOR
+
+#define BOOST_FUSION_SEQ_NAME map
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_MAP_SIZE
+#include <boost/fusion/container/detail/forward_ctor.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
+
+ template <typename Seq>
+ map&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ data = BOOST_FUSION_FORWARD(Seq, seq);
+ return *this;
+ }
+
+ storage_type& get_data() { return data; }
+ storage_type const& get_data() const { return data; }
+
+ private:
+ storage_type data;
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/map_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/map_fwd.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,28 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#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/fusion/support/category_of.hpp>
+#include <boost/fusion/support/internal/template.hpp>
+
+namespace boost { namespace fusion
+{
+ struct map_tag;
+ struct map_iterator_tag;
+
+ struct map_category
+ : bidirectional_traversal_tag, associative_sequence_tag
+ {};
+
+ VARIADIC_TEMPLATE_WITH_DEFAULT(FUSION_MAX_MAP_SIZE)
+ struct map;
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,15 @@
+/*=============================================================================
+ 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_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/convert.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/convert.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/convert.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,19 @@
+/*=============================================================================
+ 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_CONVERT_HPP
+#define BOOST_FUSION_CONTAINER_SET_CONVERT_HPP
+
+#include <boost/fusion/container/set/set.hpp>
+
+#define BOOST_FUSION_SEQ_NAME set
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_SET_SIZE
+#include <boost/fusion/container/detail/convert_impl.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/begin_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,40 @@
+// 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_DETAIL_BEGIN_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_SET_DETAIL_BEGIN_IMPL_HPP
+
+#include <boost/fusion/iterator/basic_iterator.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<set_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ basic_iterator<
+ set_iterator_tag
+ , set_category
+ , SeqRef
+ , 0
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq,0);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/deref_data_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/deref_data_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,22 @@
+// 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_DETAIL_DEREF_DATA_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_SET_DETAIL_DEREF_DATA_IMPL_HPP
+
+#include <boost/fusion/container/set/detail/deref_impl.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct deref_data_impl;
+
+ template <>
+ struct deref_data_impl<set_iterator_tag>
+ : deref_impl<set_iterator_tag>
+ {};
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/deref_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/deref_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,45 @@
+// 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_DETAIL_DEREF_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_SET_DETAIL_DEREF_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct deref_impl;
+
+ template <>
+ struct deref_impl<set_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+
+ typedef typename
+ result_of::at<
+ typename detail::forward_as<
+ typename it::seq_type
+ , typename detail::remove_reference<
+ typename it::seq_type
+ >::type::storage_type
+ >::type
+ , typename it::index
+ >::type
+ type;
+
+ static type
+ call(ItRef it_)
+ {
+ return at<typename it::index>(it_.seq->get_data());
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/end_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,40 @@
+// 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_DETAIL_END_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_SET_DETAIL_END_IMPL_HPP
+
+#include <boost/fusion/iterator/basic_iterator.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<set_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ basic_iterator<
+ set_iterator_tag
+ , set_category
+ , SeqRef
+ , detail::remove_reference<SeqRef>::type::size::value
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq,0);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/key_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/key_of_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,22 @@
+// 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_DETAIL_KEY_OF_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_SET_DETAIL_KEY_OF_IMPL_HPP
+
+#include <boost/fusion/container/set/detail/value_of_data_impl.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct key_of_impl;
+
+ template <>
+ struct key_of_impl<set_iterator_tag>
+ : value_of_impl<set_iterator_tag>
+ {};
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/value_of_data_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/value_of_data_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,22 @@
+// 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_DETAIL_VALUE_OF_DATA_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_SET_DETAIL_VALUE_OF_DATA_IMPL_HPP
+
+#include <boost/fusion/container/set/detail/value_of_data_impl.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct value_of_data_impl;
+
+ template <>
+ struct value_of_data_impl<set_iterator_tag>
+ : value_of_impl<set_iterator_tag>
+ {};
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/value_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/value_of_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,36 @@
+// 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_DETAIL_VALUE_OF_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_SET_DETAIL_VALUE_OF_IMPL_HPP
+
+#include <boost/fusion/sequence/intrinsic/value_at.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <>
+ struct value_of_impl<set_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+
+ typedef typename
+ result_of::value_at<
+ typename detail::remove_reference<
+ typename it::seq_type
+ >::type::storage_type
+ , typename it::index
+ >::type
+ type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/limits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/limits.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_LIMITS_HPP
+#define BOOST_FUSION_CONTAINER_SET_LIMITS_HPP
+
+#include <boost/fusion/container/vector/limits.hpp>
+
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# ifndef 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

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/set.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,78 @@
+// 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_SET_HPP
+#define BOOST_FUSION_CONTAINER_SET_SET_HPP
+
+#include <boost/fusion/container/set/set_fwd.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+
+#include <boost/mpl/bool.hpp>
+
+#include <boost/fusion/container/set/detail/begin_impl.hpp>
+#include <boost/fusion/container/set/detail/end_impl.hpp>
+#include <boost/fusion/container/set/detail/deref_impl.hpp>
+#include <boost/fusion/container/set/detail/value_of_impl.hpp>
+#include <boost/fusion/container/set/detail/value_of_data_impl.hpp>
+#include <boost/fusion/container/set/detail/deref_data_impl.hpp>
+#include <boost/fusion/container/set/detail/key_of_impl.hpp>
+
+#include <boost/fusion/container/detail/forward_ctor.hpp>
+
+namespace boost { namespace fusion
+{
+ struct fusion_sequence_tag;
+
+ VARIADIC_TEMPLATE(FUSION_MAX_SET_SIZE)
+ struct set
+ : sequence_base<set<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_SET_SIZE)> >
+ {
+ typedef set_category category;
+ typedef set_tag fusion_tag;
+ typedef fusion_sequence_tag tag;
+ typedef mpl::false_ is_view;
+
+ typedef
+ vector<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_SET_SIZE)>
+ storage_type;
+ typedef typename storage_type::size size;
+
+ set()
+ {}
+
+#define BOOST_FUSION_SET_CTOR(COMBINATION,_)\
+ set(set COMBINATION set_)\
+ : data(BOOST_FUSION_FORWARD(set COMBINATION,set_).data)\
+ {}
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_SET_CTOR,_)
+
+#undef BOOST_FUSION_SET_CTOR
+
+#define BOOST_FUSION_SEQ_NAME set
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_SET_SIZE
+#include <boost/fusion/container/detail/forward_ctor.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
+
+ template <typename Seq>
+ set&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ data = BOOST_FUSION_FORWARD(Seq, seq);
+ return *this;
+ }
+
+ storage_type& get_data() { return data; }
+ storage_type const& get_data() const { return data; }
+
+ private:
+ storage_type data;
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/set_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/set_fwd.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,28 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#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/fusion/support/category_of.hpp>
+#include <boost/fusion/support/internal/template.hpp>
+
+namespace boost { namespace fusion
+{
+ struct set_tag;
+ struct set_iterator_tag;
+
+ struct set_category
+ : bidirectional_traversal_tag, associative_sequence_tag
+ {};
+
+ VARIADIC_TEMPLATE_WITH_DEFAULT(FUSION_MAX_SET_SIZE)
+ struct set;
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,20 @@
+/*=============================================================================
+ 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_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_HPP
+
+#include <boost/fusion/container/vector/limits.hpp>
+#include <boost/fusion/container/vector/vector10.hpp>
+#include <boost/fusion/container/vector/vector20.hpp>
+#include <boost/fusion/container/vector/vector30.hpp>
+#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/convert.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/convert.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/convert.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,19 @@
+/*=============================================================================
+ 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_CONVERT_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_CONVERT_HPP
+
+#include <boost/fusion/container/vector/vector.hpp>
+
+#define BOOST_FUSION_SEQ_NAME vector
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_VECTOR_SIZE
+#include <boost/fusion/container/detail/convert_impl.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/at_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,46 @@
+/*=============================================================================
+ 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_AT_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_AT_IMPL_HPP
+
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/eval_if.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct at_impl;
+
+ template <>
+ struct at_impl<vector_tag>
+ {
+ template <typename SeqRef, typename N>
+ struct apply
+ {
+ typedef typename
+ detail::forward_as<
+ SeqRef
+ , typename mpl::at<
+ typename detail::remove_reference<
+ SeqRef
+ >::type::types
+ , N
+ >::type
+ >::type
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return seq.at_impl(N());
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/begin_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_CONTAINER_VECTOR_DETAIL_BEGIN_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_BEGIN_IMPL_HPP
+
+#include <boost/fusion/iterator/basic_iterator.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<vector_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ basic_iterator<
+ vector_iterator_tag
+ , random_access_traversal_tag
+ , SeqRef
+ , 0
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq,0);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/deref_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/deref_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_VECTOR_DETAIL_DEREF_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_DEREF_IMPL_HPP
+
+#include <boost/mpl/at.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct deref_impl;
+
+ template <>
+ struct deref_impl<vector_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+ typedef typename it::seq_type vector;
+
+ typedef
+ typename detail::forward_as<
+ vector
+ , typename mpl::at<
+ typename detail::remove_reference<
+ vector
+ >::type::types
+ , typename it::index
+ >::type
+ >::type
+ type;
+
+ static type
+ call(ItRef it)
+ {
+ return it.seq->at_impl(typename it::index());
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/end_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_CONTAINER_VECTOR_DETAIL_END_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_END_IMPL_HPP
+
+#include <boost/fusion/iterator/basic_iterator.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<vector_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ basic_iterator<
+ vector_iterator_tag
+ , random_access_traversal_tag
+ , SeqRef
+ , detail::remove_reference<SeqRef>::type::size::value
+ >
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return type(seq,0);
+ }
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/pp/vector.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_VECTOR_DETAIL_PP_VECTOR_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_VECTOR_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/container/vector/detail/pp/vector_n_chooser.hpp>
+
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/add_const.hpp>
+
+#include <boost/fusion/container/detail/forward_ctor.hpp>
+
+namespace boost { namespace fusion
+{
+ struct fusion_sequence_tag;
+
+ VARIADIC_TEMPLATE(FUSION_MAX_VECTOR_SIZE)
+ struct vector
+ : sequence_base<vector<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_VECTOR_SIZE)> >
+ {
+ typedef typename
+ detail::vector_n_chooser<
+ EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_VECTOR_SIZE)
+ >::type
+ vector_n;
+
+ typedef typename vector_n::fusion_tag fusion_tag;
+ typedef typename vector_n::tag tag;
+ typedef typename vector_n::size size;
+ typedef typename vector_n::category category;
+ typedef typename vector_n::is_view is_view;
+
+ typedef typename vector_n::types types;
+ typedef vector<EXPAND_TEMPLATE_ARGUMENTS(FUSION_MAX_VECTOR_SIZE)> self_type;
+
+ vector()
+ {}
+
+#define BOOST_FUSION_VECTOR_CTOR(COMBINATION,_)\
+ vector(self_type COMBINATION vec)\
+ : data(BOOST_FUSION_FORWARD(self_type COMBINATION,vec).data)\
+ {}
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_VECTOR_CTOR,_);
+
+#undef BOOST_FUSION_VECTOR_CTOR
+
+#define BOOST_FUSION_SEQ_NAME vector
+#define BOOST_FUSION_MAX_SEQ_SIZE FUSION_MAX_VECTOR_SIZE
+#include <boost/fusion/container/detail/forward_ctor.hpp>
+#undef BOOST_FUSION_MAX_SEQ_SIZE
+#undef BOOST_FUSION_SEQ_NAME
+
+ template <typename Seq>
+ vector&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ data = BOOST_FUSION_FORWARD(Seq,seq);
+ return *this;
+ }
+
+ template <typename I>
+ typename detail::add_lref<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return data.at_impl(I());
+ }
+
+ template <typename I>
+ typename detail::add_lref<
+ typename add_const<typename mpl::at<types, I>::type>::type
+ >::type
+ at_impl(I) const
+ {
+ return data.at_impl(I());
+ }
+
+ vector_n data;
+ };
+}}
+
+#endif

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-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,290 @@
+// 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_PP_IS_ITERATING
+# include <boost/fusion/container/vector/vector_fwd.hpp>
+# ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/fusion/sequence/intrinsic/size.hpp>
+# endif
+# include <boost/fusion/sequence/intrinsic/begin.hpp>
+# include <boost/fusion/iterator/deref.hpp>
+# include <boost/fusion/iterator/next.hpp>
+# include <boost/fusion/iterator/advance_c.hpp>
+# include <boost/fusion/support/sequence_base.hpp>
+# include <boost/fusion/support/internal/ref.hpp>
+# include <boost/fusion/support/internal/sequence_assign.hpp>
+
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/dec.hpp>
+# include <boost/preprocessor/empty.hpp>
+# include <boost/preprocessor/repetition/enum.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/repetition/repeat_from_to.hpp>
+# include <boost/preprocessor/iteration/iterate.hpp>
+
+# include <boost/mpl/int.hpp>
+# include <boost/mpl/bool.hpp>
+# include <boost/mpl/at.hpp>
+# ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/mpl/equal_to.hpp>
+# endif
+
+# include <boost/type_traits/add_const.hpp>
+# include <boost/utility/enable_if.hpp>
+# ifdef BOOST_NO_RVALUE_REFERENCES
+# include <boost/call_traits.hpp>
+# endif
+
+# 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/fusion/container/vector/detail/deref_impl.hpp>
+# include <boost/fusion/container/vector/detail/value_of_impl.hpp>
+
+# define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/pp/vector_n.hpp>
+# define BOOST_PP_ITERATION_LIMITS (BOOST_FUSION_FROM, BOOST_FUSION_TO)
+# include BOOST_PP_ITERATE()
+
+#else
+# define BOOST_FUSION_N BOOST_PP_ITERATION()
+
+namespace boost { namespace fusion
+{
+# if !BOOST_FUSION_N
+ struct void_;
+
+ template <typename T0=void_>
+ struct vector0;
+
+ template<>
+ struct vector0<void_>
+ : sequence_base<vector0<void_> >
+# else
+ template <BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename T)>
+ struct BOOST_PP_CAT(vector, BOOST_FUSION_N)
+ : sequence_base<BOOST_PP_CAT(vector, BOOST_FUSION_N)<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N,T)>
+ >
+# endif
+ {
+ typedef
+ mpl::BOOST_PP_CAT(vector, BOOST_FUSION_N)<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, T)
+ >
+ 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_<BOOST_FUSION_N> size;
+
+# define BOOST_FUSION_DEFAULT_MEMBER_INIT(Z, N, _) BOOST_PP_CAT(m,N)()
+
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)()
+# if BOOST_FUSION_N
+ : BOOST_PP_ENUM(BOOST_FUSION_N, BOOST_FUSION_DEFAULT_MEMBER_INIT, _)
+# endif
+ {}
+
+# undef BOOST_FUSION_DEFAULT_MEMBER_INIT
+
+# if BOOST_FUSION_N
+# define BOOST_FUSION_SELF_TYPE\
+ BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N,T)>
+
+# define BOOST_FUSION_MEMBER_INIT(Z, N, COMBINATION)\
+ BOOST_PP_CAT(m,N)(\
+ BOOST_FUSION_FORWARD(BOOST_FUSION_SELF_TYPE COMBINATION,vec).\
+ BOOST_PP_CAT(m,N))
+
+# define BOOST_FUSION_VECTOR_CTOR(COMBINATION,_)\
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)(\
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)<\
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N,T)\
+ > COMBINATION vec)\
+ : BOOST_PP_ENUM(BOOST_FUSION_N, BOOST_FUSION_MEMBER_INIT, COMBINATION)\
+ {}
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_VECTOR_CTOR,_)
+
+# undef BOOST_FUSION_MEMBER_INIT
+# undef BOOST_FUSION_SELF_TYPE
+# else
+# define BOOST_FUSION_VECTOR_CTOR(COMBINATION,_)\
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)(\
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)<void_> COMBINATION vec)\
+ {}
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_VECTOR_CTOR,_)
+
+# endif
+# undef BOOST_FUSION_VECTOR_CTOR
+
+# if BOOST_FUSION_N
+# define BOOST_FUSION_MEMBER_INIT(Z, N, _)\
+ BOOST_PP_CAT(m,N)(\
+ BOOST_FUSION_FORWARD(BOOST_PP_CAT(A,N), BOOST_PP_CAT(_,N)))
+
+#ifndef BOOST_NO_RVALUE_REFERENCES
+ template <BOOST_PP_ENUM_PARAMS(N, typename A)>
+#endif
+# if (BOOST_FUSION_N == 1)
+ explicit
+# endif
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)(
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ BOOST_PP_ENUM_BINARY_PARAMS(
+ BOOST_FUSION_N,
+ typename call_traits<T,
+ >::param_type _)
+#else
+ BOOST_PP_ENUM_BINARY_PARAMS(
+ BOOST_FUSION_N,
+ A,
+ BOOST_FUSION_R_ELSE_CLREF(BOOST_PP_EMPTY()) _)
+#endif
+ )
+ : BOOST_PP_ENUM(BOOST_FUSION_N, BOOST_FUSION_MEMBER_INIT, _)
+ {}
+
+# undef BOOST_FUSION_MEMBER_INIT
+# endif
+
+# if BOOST_FUSION_N
+# define BOOST_FUSION_MEMBER_INIT(Z, N, _)\
+ BOOST_PP_CAT(m,N)(fusion::deref(\
+ fusion::advance_c<N>(fusion::begin(seq_assign.get()))))
+# define BOOST_FUSION_VECTOR_ASSIGN_CTOR(COMBINATION,_)\
+ template<typename SeqRef>\
+ BOOST_PP_CAT(vector,BOOST_FUSION_N)(\
+ detail::sequence_assign_type<SeqRef> COMBINATION seq_assign)\
+ : BOOST_PP_ENUM(BOOST_FUSION_N, BOOST_FUSION_MEMBER_INIT, _)\
+ {\
+ BOOST_FUSION_MPL_ASSERT((\
+ mpl::equal_to<size,result_of::size<SeqRef> >));\
+ }
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_VECTOR_ASSIGN_CTOR,_);
+
+# undef BOOST_FUSION_VECTOR_ASSIGN_CTOR
+# undef BOOST_FUSION_MEMBER_INIT
+# else
+# define BOOST_FUSION_VECTOR_ASSIGN_CTOR(COMBINATION,_)\
+ template<typename SeqRef>\
+ BOOST_PP_CAT(vector,BOOST_FUSION_N)(\
+ detail::sequence_assign_type<SeqRef> COMBINATION seq_assign)\
+ {\
+ BOOST_FUSION_MPL_ASSERT((\
+ mpl::equal_to<size,result_of::size<SeqRef> >));\
+ }
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_VECTOR_ASSIGN_CTOR,_);
+
+# undef BOOST_FUSION_VECTOR_ASSIGN_CTOR
+# endif
+
+ template <typename Seq>
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, T)
+ >&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ BOOST_FUSION_MPL_ASSERT((
+ mpl::equal_to<size,result_of::size<Seq> >));
+
+# if BOOST_FUSION_N
+ typedef typename
+ result_of::begin<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
+ It0;
+ It0 it0 = fusion::begin(seq);
+
+ m0=fusion::deref(it0);
+
+# define BOOST_FUSION_DEREF_MEMBER_ASSIGN(Z, N, _)\
+ typedef typename\
+ result_of::next<BOOST_PP_CAT(It, BOOST_PP_DEC(N))>::type\
+ BOOST_PP_CAT(It, N);\
+ BOOST_PP_CAT(It, N) BOOST_PP_CAT(it, N)=\
+ fusion::next(BOOST_PP_CAT(it, BOOST_PP_DEC(N)));\
+ \
+ BOOST_PP_CAT(m, N) = fusion::deref(BOOST_PP_CAT(it, N));
+
+ BOOST_PP_REPEAT_FROM_TO(
+ 1,
+ BOOST_FUSION_N,
+ BOOST_FUSION_DEREF_MEMBER_ASSIGN,
+ _)
+
+# undef BOOST_FUSION_DEREF_MEMBER_ASSIGN
+# endif
+
+ return *this;
+ }
+
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, T)
+ >&
+ operator=(
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)<
+ BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, T)
+ >const& seq)
+ {
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ return this->operator=<
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)
+ <BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, T)>
+ >(seq);
+#else
+ return this->operator=<
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)
+ <BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, T)> const&
+ >(seq);
+#endif
+ }
+
+ template<typename I>
+ typename detail::add_lref<typename mpl::at<types, I>::type>::type
+ at_impl(I)
+ {
+ return at_impl(mpl::int_<I::value>());
+ }
+
+ template<typename I>
+ typename detail::add_lref<
+ typename add_const<typename mpl::at<types, I>::type>::type
+ >::type
+ at_impl(I) const
+ {
+ return at_impl(mpl::int_<I::value>());
+ }
+
+# define BOOST_FUSION_MEMBER_DECL(Z, N, _)\
+ typename detail::add_lref<BOOST_PP_CAT(T,N)>::type\
+ at_impl(mpl::int_<N>)\
+ {\
+ return BOOST_PP_CAT(m,N);\
+ }\
+ \
+ typename detail::add_lref<\
+ typename add_const<BOOST_PP_CAT(T,N)>::type\
+ >::type\
+ at_impl(mpl::int_<N>) const\
+ {\
+ return BOOST_PP_CAT(m,N);\
+ }\
+ \
+ BOOST_PP_CAT(T,N) BOOST_PP_CAT(m,N);
+
+ BOOST_PP_REPEAT(BOOST_FUSION_N, BOOST_FUSION_MEMBER_DECL, _)
+
+# undef BOOST_FUSION_MEMBER_DECL
+ };
+}}
+# undef BOOST_FUSION_N
+#endif
+

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-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,90 @@
+/*=============================================================================
+ 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
+#ifndef BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_VECTOR_N_CHOOSER_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_PP_VECTOR_N_CHOOSER_HPP
+
+#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/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+
+#include <boost/mpl/distance.hpp>
+#include <boost/mpl/find.hpp>
+#include <boost/mpl/begin_end.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+}}
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <int N>
+ struct get_vector_n;
+
+#define BOOST_PP_FILENAME_1 \
+ <boost/fusion/container/vector/detail/pp/vector_n_chooser.hpp>
+#define BOOST_PP_ITERATION_LIMITS (0, 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 BOOST_FUSION_N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/value_at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/value_at_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,34 @@
+/*=============================================================================
+ 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_VALUE_AT_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_VALUE_AT_IMPL_HPP
+
+#include <boost/mpl/at.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<vector_tag>
+ {
+ template <typename SeqRef, typename N>
+ struct apply
+ {
+ typedef typename
+ mpl::at<
+ typename detail::remove_reference<SeqRef>::type::types
+ , N
+ >::type
+ type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/value_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/value_of_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_VECTOR_DETAIL_VALUE_OF_IMPL_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_VALUE_OF_IMPL_HPP
+
+#include <boost/mpl/at.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <>
+ struct value_of_impl<vector_iterator_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ {
+ typedef typename detail::remove_reference<ItRef>::type it;
+
+ typedef typename
+ mpl::at<
+ typename detail::remove_reference<
+ typename it::seq_type
+ >::type::types
+ , typename it::index
+ >::type
+ type;
+ };
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/variadic_templates/vector.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,216 @@
+// 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_DETAIL_VARIADIC_TEMPLATES_VECTOR_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_DETAIL_VARIADIC_TEMPLATES_VECTOR_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/internal/variadic_templates/variadic_arguments_to_vector.hpp>
+#include <boost/fusion/support/internal/sequence_assign.hpp>
+#include <boost/fusion/support/internal/assign_tags.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/mpl/int.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 It>
+ vector_impl(assign_by_deref,It const&)
+ {}
+
+ template<typename It>
+ void
+ assign(It 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 It>
+ vector_impl(assign_by_deref,It const& it)
+ : base(assign_by_deref(),fusion::next(it))
+ , _element(fusion::deref(it))
+ {}
+
+ template<typename It>
+ void
+ assign(It const& it)
+ {
+ _element=fusion::deref(it);
+ static_cast<base*>(this)->assign(fusion::next(it));
+ }
+
+ template<typename OtherHead,typename... OtherElements>
+ vector_impl(assign_directly,
+ BOOST_FUSION_R_ELSE_CLREF(OtherHead) head,
+ BOOST_FUSION_R_ELSE_CLREF(OtherElements)... elements)
+ : base(assign_directly(),
+ BOOST_FUSION_FORWARD(OtherElements,elements)...)
+ , _element(BOOST_FUSION_FORWARD(OtherHead,head))
+ {}
+
+ typename detail::add_lref<Head>::type
+ at_impl(mpl::int_<Index>)
+ {
+ return _element;
+ }
+
+ typename detail::add_lref<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
+ detail::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()
+ {}
+
+#define VECTOR_CTOR(COMBINATION,_)\
+ vector(vector COMBINATION vec)\
+ : base(detail::assign_by_deref(),\
+ fusion::begin(BOOST_FUSION_FORWARD(vector COMBINATION,vec)))\
+ {}
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(VECTOR_CTOR,_)
+
+#undef VECTOR_CTOR
+
+ template<typename... OtherArguments>
+ explicit
+ vector(BOOST_FUSION_R_ELSE_CLREF(OtherArguments)... arguments)
+ : base(detail::assign_directly(),
+ BOOST_FUSION_FORWARD(OtherArguments,arguments)...)
+ {
+ BOOST_FUSION_STATIC_ASSERT((
+ sizeof...(Elements)==sizeof...(OtherArguments)));
+ }
+
+#define BOOST_FUSION_VECTOR_ASSIGN_CTOR(COMBINATION,_)\
+ template<typename SeqRef>\
+ vector(detail::sequence_assign_type<SeqRef> COMBINATION seq_assign)\
+ : base(detail::assign_by_deref(),fusion::begin(seq_assign.get()))\
+ {\
+ BOOST_FUSION_STATIC_ASSERT((\
+ sizeof...(Elements)==result_of::size<SeqRef>::value));\
+ }
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_VECTOR_ASSIGN_CTOR,_);
+
+#undef BOOST_FUSION_VECTOR_ASSIGN_CTOR
+
+ /*
+ template<typename Seq>
+ vector(typename enable_if_c<sizeof...(Elements)!=1,
+ BOOST_FUSION_R_ELSE_CLREF(Seq)>::type seq)
+ : base(detail::assign_by_deref(),
+ fusion::begin(BOOST_FUSION_FORWARD(Seq,seq.seq)))
+ {}
+ */
+
+ template<typename Seq>
+ vector&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ BOOST_FUSION_STATIC_ASSERT((
+ sizeof...(Elements)==result_of::size<Seq>::value));
+
+ static_cast<base*>(this)->assign(
+ fusion::begin(BOOST_FUSION_FORWARD(Seq,seq)));
+ return *this;
+ }
+
+ template<typename I>
+ typename detail::add_lref<
+ typename mpl::at<types, I>::type
+ >::type
+ at_impl(I)
+ {
+ return base::at_impl(mpl::int_<I::value>());
+ }
+
+ template<typename I>
+ typename detail::add_lref<
+ typename add_const<typename mpl::at<types, I>::type>::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-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,94 @@
+// 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_PP_IS_ITERATING
+# include <boost/fusion/container/vector/vector.hpp>
+
+# include <boost/preprocessor/iteration/iterate.hpp>
+# include <boost/preprocessor/cat.hpp>
+# include <boost/preprocessor/repetition/enum.hpp>
+# include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+# define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/variadic_templates/vector_n.hpp>
+# define BOOST_PP_ITERATION_LIMITS (BOOST_FUSION_FROM, BOOST_FUSION_TO)
+# include BOOST_PP_ITERATE()
+
+#else
+# define BOOST_FUSION_N BOOST_PP_ITERATION()
+
+ //cschmidt: template typedefs if possible...
+namespace boost { namespace fusion
+{
+# if !BOOST_FUSION_N
+ struct void_;
+
+ template <typename T0=void_>
+ struct vector0;
+
+ template<>
+ struct vector0<void_>
+# else
+ template <BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename T)>
+ struct BOOST_PP_CAT(vector, BOOST_FUSION_N)
+# endif
+ : vector<BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, T)>
+ {
+ private:
+ typedef vector<BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, T)> base;
+
+ public:
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)()
+ {}
+
+# define BOOST_FUSION_VECTOR_CTOR(COMBINATION,_)\
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)(\
+ BOOST_PP_CAT(vector, BOOST_FUSION_N) COMBINATION vec)\
+ : base(sequence_assign(BOOST_FUSION_FORWARD(\
+ BOOST_PP_CAT(vector, BOOST_FUSION_N) COMBINATION,vec)))\
+ {}
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_VECTOR_CTOR,_)
+
+# undef BOOST_FUSION_VECTOR_CTOR
+
+ template<typename Arg>
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)(BOOST_FUSION_R_ELSE_CLREF(Arg) arg)
+ : base(BOOST_FUSION_FORWARD(Arg,arg))
+ {}
+
+# if BOOST_FUSION_N > 1
+# ifdef BOOST_NO_RVALUE_REFERENCES
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)(
+ BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& a))
+ : base(BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, a))
+ {}
+# else
+# define BOOST_FUSION_FORWARD_ARGUMENT(Z, N, __) std::forward<\
+ BOOST_PP_CAT(A,N)>(BOOST_PP_CAT(_,N))
+
+ template <BOOST_PP_ENUM_PARAMS(BOOST_FUSION_N, typename A)>
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)(
+ BOOST_PP_ENUM_BINARY_PARAMS(BOOST_FUSION_N, A,&& _))
+ : base(
+ BOOST_PP_ENUM(BOOST_FUSION_N, BOOST_FUSION_FORWARD_ARGUMENT, _))
+ {}
+
+# undef BOOST_FUSION_FORWARD_ARGUMENT
+# endif
+# endif
+
+ template<typename Seq>
+ BOOST_PP_CAT(vector, BOOST_FUSION_N)&
+ operator=(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ *static_cast<base*>(this)=BOOST_FUSION_FORWARD(Seq,seq);
+ return *this;
+ }
+ };
+}}
+
+ #undef N
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/limits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/limits.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,24 @@
+/*=============================================================================
+ 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_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)
+# ifndef 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
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,27 @@
+// 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_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/detail/pp/vector.hpp>
+#else
+# include <boost/fusion/container/vector/vector_fwd.hpp>
+# include <boost/fusion/support/internal/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/fusion/container/vector/detail/deref_impl.hpp>
+# include <boost/fusion/container/vector/detail/value_of_impl.hpp>
+
+# include <boost/fusion/container/vector/detail/variadic_templates/vector.hpp>
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector10.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector10.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,28 @@
+// 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_VECTOR10_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_VECTOR10_HPP
+
+#include <boost/config.hpp>
+#include <boost/mpl/vector/vector10.hpp>
+
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# define BOOST_FUSION_FROM 0
+# define BOOST_FUSION_TO 10
+
+# ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include<boost/fusion/container/vector/detail/pp/vector_n.hpp>
+# else
+# include<boost/fusion/container/vector/detail/variadic_templates/vector_n.hpp>
+# endif
+
+# undef BOOST_FUSION_FROM
+# undef BOOST_FUSION_TO
+#else
+# include <boost/fusion/container/vector/vector.hpp>
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector20.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector20.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,28 @@
+// 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_VECTOR20_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_VECTOR20_HPP
+
+#include <boost/config.hpp>
+#include <boost/mpl/vector/vector20.hpp>
+
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# define BOOST_FUSION_FROM 11
+# define BOOST_FUSION_TO 20
+
+# ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include<boost/fusion/container/vector/detail/pp/vector_n.hpp>
+# else
+# include<boost/fusion/container/vector/detail/variadic_templates/vector_n.hpp>
+# endif
+
+# undef BOOST_FUSION_FROM
+# undef BOOST_FUSION_TO
+#else
+# include <boost/fusion/container/vector/vector.hpp>
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector30.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector30.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,28 @@
+// 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_VECTOR30_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_VECTOR30_HPP
+
+#include <boost/config.hpp>
+#include <boost/mpl/vector/vector30.hpp>
+
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# define BOOST_FUSION_FROM 21
+# define BOOST_FUSION_TO 30
+
+# ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include<boost/fusion/container/vector/detail/pp/vector_n.hpp>
+# else
+# include<boost/fusion/container/vector/detail/variadic_templates/vector_n.hpp>
+# endif
+
+# undef BOOST_FUSION_FROM
+# undef BOOST_FUSION_TO
+#else
+# include <boost/fusion/container/vector/vector.hpp>
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector40.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector40.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,28 @@
+// 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_VECTOR40_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_VECTOR40_HPP
+
+#include <boost/config.hpp>
+#include <boost/mpl/vector/vector40.hpp>
+
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# define BOOST_FUSION_FROM 31
+# define BOOST_FUSION_TO 40
+
+# ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include<boost/fusion/container/vector/detail/pp/vector_n.hpp>
+# else
+# include<boost/fusion/container/vector/detail/variadic_templates/vector_n.hpp>
+# endif
+
+# undef BOOST_FUSION_FROM
+# undef BOOST_FUSION_TO
+#else
+# include <boost/fusion/container/vector/vector.hpp>
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector50.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector50.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,28 @@
+// 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_VECTOR50_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_VECTOR50_HPP
+
+#include <boost/config.hpp>
+#include <boost/mpl/vector/vector50.hpp>
+
+#if defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# define BOOST_FUSION_FROM 41
+# define BOOST_FUSION_TO 50
+
+# ifdef BOOST_NO_VARIADIC_TEMPLATES
+# include<boost/fusion/container/vector/detail/pp/vector_n.hpp>
+# else
+# include<boost/fusion/container/vector/detail/variadic_templates/vector_n.hpp>
+# endif
+
+# undef BOOST_FUSION_FROM
+# undef BOOST_FUSION_TO
+#else
+# include <boost/fusion/container/vector/vector.hpp>
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector_fwd.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,25 @@
+/*=============================================================================
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ 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_VECTOR_FWD_HPP
+#define BOOST_FUSION_CONTAINER_VECTOR_VECTOR_FWD_HPP
+
+#include <boost/fusion/container/vector/limits.hpp>
+#include <boost/fusion/support/internal/template.hpp>
+
+namespace boost { namespace fusion
+{
+ struct vector_tag;
+ struct vector_iterator_tag;
+ struct random_access_traversal_tag;
+
+ VARIADIC_TEMPLATE_WITH_DEFAULT(FUSION_MAX_VECTOR_SIZE)
+ struct vector;
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,16 @@
+/*=============================================================================
+ 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_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

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,19 @@
+/*=============================================================================
+ 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_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_HPP
+
+#include <boost/fusion/functional/adapter/fused_function_object.hpp>
+#include <boost/fusion/functional/adapter/fused_procedure.hpp>
+#include <boost/fusion/functional/adapter/fused.hpp>
+#include <boost/fusion/functional/adapter/limits.hpp>
+#include <boost/fusion/functional/adapter/unfused_typed.hpp>
+#include <boost/fusion/functional/adapter/unfused.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/0x/fused_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/0x/fused_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,80 @@
+// 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)
+
+#include <boost/fusion/functional/invocation/invoke.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/result_of.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/preprocessor/empty.hpp>
+
+namespace boost { namespace fusion
+{
+ template<typename F>
+ struct BOOST_FUSION_ADAPTER_NAME
+ {
+ BOOST_FUSION_ADAPTER_NAME()
+ : f()
+ {}
+
+ template<typename... Args>
+ BOOST_FUSION_ADAPTER_NAME(Args&&... args)
+ : f(std::forward<Args>(args)...)
+ {}
+
+#define BOOST_FUSION_CTOR_SPECIALIZATION(COMBINATION,_)\
+ BOOST_FUSION_ADAPTER_NAME(BOOST_FUSION_ADAPTER_NAME COMBINATION adapter)\
+ : f(std::forward<BOOST_FUSION_ADAPTER_NAME COMBINATION>(adapter).f)\
+ {}
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_CTOR_SPECIALIZATION,_)
+
+#undef BOOST_FUSION_CTOR_SPECIALIZATION
+
+ template<typename OtherF>
+ BOOST_FUSION_ADAPTER_NAME&
+ operator=(OtherF&& other_f)
+ {
+ f=std::forward<OtherF>(other_f);
+ return *this;
+ }
+
+#define BOOST_FUSION_ASSIGN_SPECIALIZATION(COMBINATION,_)\
+ BOOST_FUSION_ADAPTER_NAME&\
+ operator=(BOOST_FUSION_ADAPTER_NAME COMBINATION other_adapter)\
+ {\
+ f=std::forward<BOOST_FUSION_ADAPTER_NAME COMBINATION>(\
+ other_adapter).f;\
+ return *this;\
+ }
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_ASSIGN_SPECIALIZATION,_)
+
+#undef BOOST_FUSION_ASSIGN_SPECIALIZATION
+
+#define BOOST_FUSION_CALL_OPERATOR(COMBINATION)\
+ template<typename Seq>\
+ typename result_of::invoke<\
+ typename detail::forward_as<int COMBINATION, F>::type, Seq&&\
+ >::type\
+ operator()(Seq&& seq) COMBINATION\
+ {\
+ /*BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));*/\
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));\
+ \
+ return\
+ invoke<typename detail::forward_as<int COMBINATION, F>::type>(\
+ f,std::forward<Seq>(seq));\
+ }
+
+ BOOST_FUSION_CALL_OPERATOR(BOOST_PP_EMPTY());
+ BOOST_FUSION_CALL_OPERATOR(const);
+
+#undef BOOST_FUSION_CALL_OPERATOR
+
+ F f;
+ };
+}}
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/0x/unfused_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/0x/unfused_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,112 @@
+// 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)
+
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/result_of.hpp>
+
+#include <boost/preprocessor/empty.hpp>
+
+#ifdef BOOST_FUSION_TYPED
+# include <boost/fusion/container/vector/convert.hpp>
+
+# define BOOST_FUSION_ADAPTER_NAME unfused_typed
+#else
+# include <boost/fusion/container/generation/vector_tie.hpp>
+
+# define BOOST_FUSION_ADAPTER_NAME unfused
+#endif
+
+//TODO cschmidt: handle rvalue ref F
+
+namespace boost { namespace fusion
+{
+ template<
+ typename F
+#ifdef BOOST_FUSION_TYPED
+ , typename TransformSeq
+#else
+ , bool=true
+#endif
+ >
+ struct BOOST_FUSION_ADAPTER_NAME
+ {
+ BOOST_FUSION_ADAPTER_NAME()
+ : f()
+ {}
+
+ template<typename... Args>
+ BOOST_FUSION_ADAPTER_NAME(Args&&... args)
+ : f(std::forward<Args>(args)...)
+ {}
+
+#define BOOST_FUSION_CTOR_SPECIALIZATION(COMBINATION,_)\
+ BOOST_FUSION_ADAPTER_NAME(BOOST_FUSION_ADAPTER_NAME COMBINATION adapter)\
+ : f(std::forward<BOOST_FUSION_ADAPTER_NAME COMBINATION>(adapter).f)\
+ {}
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_CTOR_SPECIALIZATION,_)
+
+#undef BOOST_FUSION_CTOR_SPECIALIZATION
+
+ template<typename OtherF>
+ BOOST_FUSION_ADAPTER_NAME&
+ operator=(OtherF&& other_f)
+ {
+ f=std::forward<OtherF>(other_f);
+ return *this;
+ }
+
+#define BOOST_FUSION_ASSIGN_SPECIALIZATION(COMBINATION,_)\
+ BOOST_FUSION_ADAPTER_NAME&\
+ operator=(BOOST_FUSION_ADAPTER_NAME COMBINATION other_adapter)\
+ {\
+ f=std::forward<BOOST_FUSION_ADAPTER_NAME COMBINATION>(\
+ other_adapter).f;\
+ return *this;\
+ }
+
+ BOOST_FUSION_ALL_CTOR_COMBINATIONS(BOOST_FUSION_ASSIGN_SPECIALIZATION,_)
+
+#undef BOOST_FUSION_ASSIGN_SPECIALIZATION
+
+#ifdef BOOST_FUSION_TYPED
+# define BOOST_FUSION_CALL_OPERATOR(COMBINATION)\
+ template<typename... Args>\
+ typename detail::internal::result_of<\
+ typename detail::get_func_base<\
+ typename detail::forward_as<int COMBINATION, F>::type\
+ >::type(typename result_of::as_vector<TransformSeq&&>::type&&)\
+ >::type\
+ operator()(Args&&... args) COMBINATION\
+ {\
+ return f(fusion::as_vector(\
+ TransformSeq(std::forward<Args>(args)...)));\
+ }
+#else
+# define BOOST_FUSION_CALL_OPERATOR(COMBINATION)\
+ template<typename... Args>\
+ typename detail::internal::result_of<\
+ typename detail::get_func_base<\
+ typename detail::forward_as<int COMBINATION, F>::type\
+ >::type(typename result_of::vector_tie<Args&&...>::type&&)\
+ >::type\
+ operator()(Args&&... args) COMBINATION\
+ {\
+ return f(vector_tie(std::forward<Args>(args)...));\
+ }
+#endif
+
+ BOOST_FUSION_CALL_OPERATOR(BOOST_PP_EMPTY());
+ BOOST_FUSION_CALL_OPERATOR(const);
+
+#undef BOOST_FUSION_CALL_OPERATOR
+
+ F f;
+ };
+}}
+
+#undef BOOST_FUSION_ADAPTER_NAME
+
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/access.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/access.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,40 @@
+/*=============================================================================
+ 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_DETAIL_NO_DECLTYPE_OR_VARIADIC_TEMPLATES_ACCESS_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_NO_DECLTYPE_OR_VARIADIC_TEMPLATES_ACCESS_HPP
+
+namespace boost { namespace fusion { namespace detail
+{
+ // const reference deduction for function templates that accept T const&
+ template <typename T> struct cref { typedef T const& type; };
+ template <typename T> struct cref<T&> { typedef T const& type; };
+ template <typename T> struct cref<T const> { typedef T const& type; };
+
+ // mutable reference deduction for function templates that accept T &
+ template <typename T> struct mref { typedef T & type; };
+ template <typename T> struct mref<T&> { typedef T & type; };
+
+ // generic reference deduction for function templates that are overloaded
+ // to accept both T const& and T &
+ template <typename T> struct gref { typedef T const& type; };
+ template <typename T> struct gref<T&> { typedef T & type; };
+ template <typename T> struct gref<T const> { typedef T const& type; };
+
+ // appropriately qualified target function in const context
+ template <typename T> struct qf_c { typedef T const type; };
+ template <typename T> struct qf_c<T const> { typedef T const type; };
+ template <typename T> struct qf_c<T &> { typedef T type; };
+
+ // appropriately qualified target function in non-const context
+ template <typename T> struct qf { typedef T type; };
+ template <typename T> struct qf<T const> { typedef T const type; };
+ template <typename T> struct qf<T &> { typedef T type; };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/fused.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/fused.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,84 @@
+/*=============================================================================
+ 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_DETAIL_NO_DECLTYPE_OR_VARIADIC_TEMPLATES_FUSED_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_NO_DECLTYPE_OR_VARIADIC_TEMPLATES_FUSED_HPP
+
+#include <boost/type_traits/add_reference.hpp>
+
+#include <boost/fusion/functional/adapter/detail/no_0x/access.hpp>
+#include <boost/fusion/functional/invocation/invoke.hpp>
+
+namespace boost { namespace fusion
+{
+ template <typename Function> class fused;
+
+ //----- ---- --- -- - - - -
+
+ template <typename Function>
+ class fused
+ {
+ Function fnc_transformed;
+
+ typedef typename detail::qf_c<Function>::type & func_const_fwd_t;
+ typedef typename detail::qf<Function>::type & func_fwd_t;
+
+ public:
+
+ inline explicit fused(func_const_fwd_t f = Function())
+ : fnc_transformed(f)
+ { }
+
+ template <class Seq>
+ inline typename result_of::invoke<func_const_fwd_t,Seq const>::type
+ operator()(Seq const& s) const
+ {
+ return fusion::invoke<func_const_fwd_t>(this->fnc_transformed,s);
+ }
+
+ template <class Seq>
+ inline typename result_of::invoke<func_fwd_t,Seq const>::type
+ operator()(Seq const& s)
+ {
+ return fusion::invoke<func_fwd_t>(this->fnc_transformed,s);
+ }
+
+ template <class Seq>
+ inline typename result_of::invoke<func_const_fwd_t,Seq>::type
+ operator()(Seq & s) const
+ {
+ return fusion::invoke<func_const_fwd_t>(this->fnc_transformed,s);
+ }
+
+ template <class Seq>
+ inline typename result_of::invoke<func_fwd_t,Seq>::type
+ operator()(Seq & s)
+ {
+ return fusion::invoke<func_fwd_t>(this->fnc_transformed,s);
+ }
+
+ template <typename Sig>
+ struct result;
+
+ template <class Self, class Seq>
+ struct result< Self const (Seq) >
+ : result_of::invoke<func_const_fwd_t,
+ typename boost::remove_reference<Seq>::type >
+ { };
+
+ template <class Self, class Seq>
+ struct result< Self(Seq) >
+ : result_of::invoke<func_fwd_t,
+ typename boost::remove_reference<Seq>::type >
+ { };
+
+ };
+
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/fused_function_object.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/fused_function_object.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,89 @@
+/*=============================================================================
+ 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_DETAIL_NO_DECLTYPE_OR_VARIADIC_TEMPLATES_FUSED_FUNCTION_OBJECT_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_NO_DECLTYPE_OR_VARIADIC_TEMPLATES_FUSED_FUNCTION_OBJECT_HPP
+
+#include <boost/type_traits/add_reference.hpp>
+
+#include <boost/fusion/functional/adapter/detail/no_0x/access.hpp>
+#include <boost/fusion/functional/invocation/invoke_function_object.hpp>
+
+namespace boost { namespace fusion
+{
+ template <class Function> class fused_function_object;
+
+ //----- ---- --- -- - - - -
+
+ template <class Function>
+ class fused_function_object
+ {
+ Function fnc_transformed;
+
+ typedef typename detail::qf_c<Function>::type & func_const_fwd_t;
+ typedef typename detail::qf<Function>::type & func_fwd_t;
+
+ public:
+
+ inline explicit fused_function_object(func_const_fwd_t f = Function())
+ : fnc_transformed(f)
+ { }
+
+ template <class Seq>
+ inline typename result_of::invoke_function_object<func_const_fwd_t,
+ Seq const>::type operator()(Seq const& s) const
+ {
+ return fusion::invoke_function_object<
+ func_const_fwd_t >(this->fnc_transformed,s);
+ }
+
+ template <class Seq>
+ inline typename result_of::invoke_function_object<func_fwd_t,
+ Seq const>::type
+ operator()(Seq const& s)
+ {
+ return fusion::invoke_function_object<
+ func_fwd_t >(this->fnc_transformed,s);
+ }
+
+ template <class Seq>
+ inline typename result_of::invoke_function_object<func_const_fwd_t,
+ Seq>::type
+ operator()(Seq & s) const
+ {
+ return fusion::invoke_function_object<
+ func_const_fwd_t >(this->fnc_transformed,s);
+ }
+
+ template <class Seq>
+ inline typename result_of::invoke_function_object<func_fwd_t,Seq>::type
+ operator()(Seq & s)
+ {
+ return fusion::invoke_function_object<
+ func_fwd_t >(this->fnc_transformed,s);
+ }
+
+ template <typename Sig>
+ struct result;
+
+ template <class Self, class Seq>
+ struct result< Self const (Seq) >
+ : result_of::invoke_function_object<func_const_fwd_t,
+ typename boost::remove_reference<Seq>::type >
+ { };
+
+ template <class Self, class Seq>
+ struct result< Self(Seq) >
+ : result_of::invoke_function_object<func_fwd_t,
+ typename boost::remove_reference<Seq>::type >
+ { };
+ };
+
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/fused_procedure.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/fused_procedure.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,69 @@
+/*=============================================================================
+ 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_DETAIL_NO_DECLTYPE_OR_VARIADIC_TEMPLATES_FUSED_PROCEDURE_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_NO_DECLTYPE_OR_VARIADIC_TEMPLATES_FUSED_PROCEDURE_HPP
+
+#include <boost/type_traits/add_reference.hpp>
+
+#include <boost/fusion/functional/adapter/detail/no_0x/access.hpp>
+#include <boost/fusion/functional/invocation/invoke_procedure.hpp>
+
+namespace boost { namespace fusion
+{
+ template <typename Function> class fused_procedure;
+
+ //----- ---- --- -- - - - -
+
+ template <typename Function>
+ class fused_procedure
+ {
+ Function fnc_transformed;
+
+ typedef typename detail::qf_c<Function>::type & func_const_fwd_t;
+ typedef typename detail::qf<Function>::type & func_fwd_t;
+
+ public:
+
+ inline explicit fused_procedure(func_const_fwd_t f = Function())
+ : fnc_transformed(f)
+ { }
+
+ template <class Seq>
+ inline void operator()(Seq const& s) const
+ {
+ fusion::invoke_procedure<
+ func_const_fwd_t >(this->fnc_transformed,s);
+ }
+
+ template <class Seq>
+ inline void operator()(Seq const& s)
+ {
+ fusion::invoke_procedure<
+ func_fwd_t >(this->fnc_transformed,s);
+ }
+
+ template <class Seq>
+ inline void operator()(Seq & s) const
+ {
+ fusion::invoke_procedure<
+ func_const_fwd_t >(this->fnc_transformed,s);
+ }
+
+ template <class Seq>
+ inline void operator()(Seq & s)
+ {
+ return fusion::invoke_procedure<
+ func_fwd_t >(this->fnc_transformed,s);
+ }
+
+ typedef void result_type;
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/unfused.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/unfused.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,153 @@
+/*=============================================================================
+ 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_PP_IS_ITERATING
+#ifndef BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_NO_DECLTYPE_OR_VARIADIC_TEMPLATES_UNFUSED_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_NO_DECLTYPE_OR_VARIADIC_TEMPLATES_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/no_0x/access.hpp>
+
+#include <boost/call_traits.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 call_traits<Function>::param_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 call_traits<Function>::param_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/detail/no_0x/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;
+ };
+}
+
+#endif
+#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)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/unfused_typed.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/no_0x/unfused_typed.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,155 @@
+/*=============================================================================
+ 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_PP_IS_ITERATING
+#ifndef BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_NO_DECLTYPE_OR_VARIADIC_TEMPLATES_UNFUSED_TYPED_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_NO_DECLTYPE_OR_VARIADIC_TEMPLATES_UNFUSED_TYPED_HPP
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_trailing_params.hpp>
+
+#include <boost/config.hpp>
+
+#include <boost/utility/result_of.hpp>
+
+#include <boost/fusion/sequence/intrinsic/value_at.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
+#include <boost/fusion/container/vector/convert.hpp>
+
+#include <boost/fusion/functional/adapter/limits.hpp>
+#include <boost/fusion/functional/adapter/detail/no_0x/access.hpp>
+
+#include <boost/call_traits.hpp>
+
+namespace boost { namespace fusion
+{
+
+ template <class Function, class Sequence> class unfused_typed;
+
+ //----- ---- --- -- - - - -
+
+ namespace detail
+ {
+ template <class Derived, class Function,
+ class Sequence, long Arity>
+ struct unfused_typed_impl;
+ }
+
+ template <class Function, class Sequence>
+ class unfused_typed
+ : public detail::unfused_typed_impl
+ < unfused_typed<Function,Sequence>, Function, Sequence,
+ result_of::size<Sequence>::value >
+ {
+ Function fnc_transformed;
+
+ template <class D, class F, class S, long A>
+ friend struct detail::unfused_typed_impl;
+
+ typedef typename call_traits<Function>::param_type func_const_fwd_t;
+
+ public:
+
+ inline explicit unfused_typed(func_const_fwd_t f = Function())
+ : fnc_transformed(f)
+ { }
+ };
+
+ #define BOOST_PP_FILENAME_1 <boost/fusion/functional/adapter/detail/no_0x/unfused_typed.hpp>
+ #define BOOST_PP_ITERATION_LIMITS (0,BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY)
+ #include BOOST_PP_ITERATE()
+
+}}
+
+namespace boost
+{
+ template<class F, class Seq>
+ struct result_of< boost::fusion::unfused_typed<F,Seq> const () >
+ : boost::fusion::unfused_typed<F,Seq>::template result<
+ boost::fusion::unfused_typed<F,Seq> const () >
+ { };
+ template<class F, class Seq>
+ struct result_of< boost::fusion::unfused_typed<F,Seq>() >
+ : boost::fusion::unfused_typed<F,Seq>::template result<
+ boost::fusion::unfused_typed<F,Seq> () >
+ { };
+}
+
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+#define N BOOST_PP_ITERATION()
+
+ namespace detail
+ {
+
+ template <class Derived, class Function, class Sequence>
+ struct unfused_typed_impl<Derived,Function,Sequence,N>
+ {
+ typedef typename detail::qf_c<Function>::type function_c;
+ typedef typename detail::qf<Function>::type function;
+ typedef typename result_of::as_vector<Sequence>::type arg_vector_t;
+
+ public:
+
+#define M(z,i,s) \
+ typename call_traits<typename result_of::value_at_c<s,i>::type>::param_type a##i
+
+ inline typename boost::result_of<
+ function_c(arg_vector_t &) >::type
+ operator()(BOOST_PP_ENUM(N,M,arg_vector_t)) const
+ {
+#if N > 0
+ arg_vector_t arg(BOOST_PP_ENUM_PARAMS(N,a));
+#else
+ arg_vector_t arg;
+#endif
+ return static_cast<Derived const *>(this)->fnc_transformed(arg);
+ }
+
+ inline typename boost::result_of<
+ function(arg_vector_t &) >::type
+ operator()(BOOST_PP_ENUM(N,M,arg_vector_t))
+ {
+#if N > 0
+ arg_vector_t arg(BOOST_PP_ENUM_PARAMS(N,a));
+#else
+ arg_vector_t arg;
+#endif
+ return static_cast<Derived *>(this)->fnc_transformed(arg);
+ }
+
+#undef M
+
+ template <typename Sig> struct result { typedef void type; };
+
+ template <class Self BOOST_PP_ENUM_TRAILING_PARAMS(N,typename T)>
+ struct result< Self const (BOOST_PP_ENUM_PARAMS(N,T)) >
+ : boost::result_of< function_c(arg_vector_t &) >
+ { };
+
+ template <class Self BOOST_PP_ENUM_TRAILING_PARAMS(N,typename T)>
+ struct result< Self (BOOST_PP_ENUM_PARAMS(N,T)) >
+ : boost::result_of< function(arg_vector_t &) >
+ { };
+ };
+
+ } // namespace detail
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,18 @@
+// 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_FUNCTIONAL_ADAPTER_FUSED_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_HPP
+
+#include <boost/config.hpp>
+#if defined(BOOST_NO_DECLTYPE) || defined(BOOST_NO_VARIADIC_TEMPLATES) || defined(BOOST_NO_RVALUE_REFERENCES)
+# include <boost/fusion/functional/adapter/detail/no_0x/fused.hpp>
+#else
+# define BOOST_FUSION_ADAPTER_NAME fused
+# include <boost/fusion/functional/adapter/detail/0x/fused_impl.hpp>
+# undef BOOST_FUSION_ADAPTER_NAME
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused_function_object.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused_function_object.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,18 @@
+// 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_FUNCTIONAL_ADAPTER_FUSED_FUNCTION_OBJECT_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_FUNCTION_OBJECT_HPP
+
+#include <boost/config.hpp>
+#if defined(BOOST_NO_DECLTYPE) || defined(BOOST_NO_VARIADIC_TEMPLATES) || defined(BOOST_NO_RVALUE_REFERENCES)
+# include <boost/fusion/functional/adapter/detail/no_0x/fused_function_object.hpp>
+#elif !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# define BOOST_FUSION_ADAPTER_NAME fused_function_object
+# include <boost/fusion/functional/adapter/detail/0x/fused_impl.hpp>
+# undef BOOST_FUSION_ADAPTER_NAME
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused_procedure.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused_procedure.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,18 @@
+// 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_FUNCTIONAL_ADAPTER_FUSED_PROCEDURE_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_PROCEDURE_HPP
+
+#include <boost/config.hpp>
+#if defined(BOOST_NO_DECLTYPE) || defined(BOOST_NO_VARIADIC_TEMPLATES) || defined(BOOST_NO_RVALUE_REFERENCES)
+# include <boost/fusion/functional/adapter/detail/no_0x/fused_procedure.hpp>
+#elif !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# define BOOST_FUSION_ADAPTER_NAME fused_procedure
+# include <boost/fusion/functional/adapter/detail/0x/fused_impl.hpp>
+# undef BOOST_FUSION_ADAPTER_NAME
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/limits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/limits.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,30 @@
+/*=============================================================================
+ 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_LIMITS_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_LIMITS_HPP
+
+#include <boost/config.hpp>
+
+#if defined(BOOST_NO_DECLTYPE) || defined(BOOST_NO_VARIADIC_TEMPLATES) || defined(BOOST_NO_RVALUE_REFERENCES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# include <boost/fusion/container/vector/limits.hpp>
+
+# ifndef BOOST_FUSION_UNFUSED_MAX_ARITY
+# define BOOST_FUSION_UNFUSED_MAX_ARITY 6
+# elif BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY > FUSION_MAX_VECTOR_SIZE
+# error "BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY > FUSION_MAX_VECTOR_SIZE"
+# endif
+
+# ifndef BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY
+# define BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY 6
+# elif BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY > FUSION_MAX_VECTOR_SIZE
+# error "BOOST_FUSION_UNFUSED_TYPED_MAX_ARITY > FUSION_MAX_VECTOR_SIZE"
+# endif
+#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-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,16 @@
+// 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_FUNCTIONAL_ADAPTER_UNFUSED_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_HPP
+
+#include <boost/config.hpp>
+#if defined(BOOST_NO_DECLTYPE) || defined(BOOST_NO_VARIADIC_TEMPLATES) || defined(BOOST_NO_RVALUE_REFERENCES)
+# include <boost/fusion/functional/adapter/detail/no_0x/unfused.hpp>
+#elif !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# include <boost/fusion/functional/adapter/detail/0x/unfused_impl.hpp>
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_typed.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_typed.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,18 @@
+// 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_FUNCTIONAL_ADAPTER_UNFUSED_TYPED_HPP
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_TYPED_HPP
+
+#include <boost/config.hpp>
+#if defined(BOOST_NO_DECLTYPE) || defined(BOOST_NO_VARIADIC_TEMPLATES) || defined(BOOST_NO_RVALUE_REFERENCES)
+# include <boost/fusion/functional/adapter/detail/no_0x/unfused_typed.hpp>
+#else
+# define BOOST_FUSION_TYPED
+# include <boost/fusion/functional/adapter/detail/0x/unfused_impl.hpp>
+# undef BOOST_FUSION_TYPED
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/generation.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/generation.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,17 @@
+/*=============================================================================
+ Copyright (c) 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_GENERATION_HPP
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_HPP
+
+#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
+#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
+#include <boost/fusion/functional/generation/make_fused.hpp>
+#include <boost/fusion/functional/generation/make_unfused.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/generation/detail/gen_make_adapter.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/generation/detail/gen_make_adapter.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,43 @@
+/*=============================================================================
+ Copyright (c) 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).
+==============================================================================*/
+
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/as_fusion_element.hpp>
+
+#include <boost/preprocessor/cat.hpp>
+
+#define BOOST_FUSION_FUNC_NAME BOOST_PP_CAT(make_,BOOST_FUSION_CLASS_TPL_NAME)
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename F>
+ struct BOOST_FUSION_FUNC_NAME
+ {
+ typedef
+ BOOST_FUSION_CLASS_TPL_NAME<
+ typename detail::as_fusion_element<F>::type
+ >
+ type;
+ };
+ }
+
+ template<typename F>
+ inline typename
+ result_of::BOOST_FUSION_FUNC_NAME<BOOST_FUSION_R_ELSE_CLREF(F)>::type
+ BOOST_FUSION_FUNC_NAME(BOOST_FUSION_R_ELSE_CLREF(F) f)
+ {
+ return typename
+ result_of::BOOST_FUSION_FUNC_NAME<BOOST_FUSION_R_ELSE_CLREF(F)>::
+ type(BOOST_FUSION_FORWARD(F,f));
+ }
+}}
+
+#undef BOOST_FUSION_CLASS_TPL_NAME
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,21 @@
+/*=============================================================================
+ Copyright (c) 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_GENERATION_MAKE_FUSED_HPP
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_HPP
+
+#include <boost/config.hpp>
+#if defined(BOOST_NO_DECLTYPE) || defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# include <boost/fusion/functional/adapter/fused.hpp>
+
+# define BOOST_FUSION_CLASS_TPL_NAME fused
+# include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
+# undef BOOST_FUSION_CLASS_TPL_NAME
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused_function_object.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused_function_object.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,21 @@
+/*=============================================================================
+ Copyright (c) 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_GENERATION_MAKE_FUSED_FUNCTION_OBJECT_HPP
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_FUNCTION_OBJECT_HPP
+
+#include <boost/config.hpp>
+#if defined(BOOST_NO_DECLTYPE) || defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# include <boost/fusion/functional/adapter/fused_function_object.hpp>
+
+# define BOOST_FUSION_CLASS_TPL_NAME fused_function_object
+# include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
+# undef BOOST_FUSION_CLASS_TPL_NAME
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused_procedure.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_fused_procedure.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,21 @@
+/*=============================================================================
+ Copyright (c) 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_GENERATION_MAKE_FUSED_PROCEDURE_HPP
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_PROCEDURE_HPP
+
+#include <boost/config.hpp>
+#if defined(BOOST_NO_DECLTYPE) || defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# include <boost/fusion/functional/adapter/fused_procedure.hpp>
+
+# define BOOST_FUSION_CLASS_TPL_NAME fused_procedure
+# include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
+# undef BOOST_FUSION_CLASS_TPL_NAME
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,21 @@
+/*=============================================================================
+ Copyright (c) 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_GENERATION_MAKE_UNFUSED_HPP
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_HPP
+
+#include <boost/config.hpp>
+# if defined(BOOST_NO_DECLTYPE) || defined(BOOST_NO_VARIADIC_TEMPLATES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# include <boost/fusion/functional/adapter/unfused.hpp>
+
+# define BOOST_FUSION_CLASS_TPL_NAME unfused
+# include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
+# undef BOOST_FUSION_CLASS_TPL_NAME
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,17 @@
+/*=============================================================================
+ 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_INVOCATION_HPP
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_HPP
+
+#include <boost/fusion/functional/invocation/invoke_function_object.hpp>
+#include <boost/fusion/functional/invocation/invoke_procedure.hpp>
+#include <boost/fusion/functional/invocation/invoke.hpp>
+#include <boost/fusion/functional/invocation/limits.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/0x/invoke_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/0x/invoke_impl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,37 @@
+// 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)
+
+#include <boost/fusion/functional/invocation/detail/0x/invoke_impl_detail.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template<typename F, typename Seq>
+ struct BOOST_FUSION_INVOKE_NAME
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef
+ detail::invoke_impl<
+ typename detail::add_lref<F>::type
+ , typename detail::add_lref<Seq>::type
+ >
+ gen;
+
+ typedef typename gen::type type;
+ };
+ }
+
+ //TODO doc
+ template <typename F, typename Seq>
+ inline typename result_of::BOOST_FUSION_INVOKE_NAME<F, Seq&&>::type
+ BOOST_FUSION_INVOKE_NAME(BOOST_FUSION_R_ELSE_CLREF(F) f, Seq&& seq)
+ {
+ return result_of::BOOST_FUSION_INVOKE_NAME<F, Seq&&>::gen::call(f,seq);
+ }
+}}
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/0x/invoke_impl_detail.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/0x/invoke_impl_detail.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,239 @@
+// 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_FUNCTIONAL_INVOCATION_DETAIL_DECLTYPE_AND_VARIADIC_TEMPLATES_INVOKE_IMPL_DETAIL_HPP
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_DETAIL_DECLTYPE_AND_VARIADIC_TEMPLATES_INVOKE_IMPL_DETAIL_HPP
+
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
+#include <boost/fusion/sequence/intrinsic/back.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/advance_c.hpp>
+#include <boost/fusion/algorithm/transformation/pop_back.hpp>
+#include <boost/fusion/functional/invocation/detail/that_ptr.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/result_of.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/type_traits/is_function.hpp>
+#include <boost/type_traits/is_member_function_pointer.hpp>
+#include <boost/type_traits/remove_pointer.hpp>
+#include <boost/utility/addressof.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template<typename FRef, typename... Args>
+ struct invoke_impl_result
+ {
+ typedef typename
+ boost::result_of<
+ FRef(Args...)
+ >::type
+ type;
+ };
+
+ template<typename Result, typename F, typename... Args>
+ typename
+ disable_if<
+ is_member_function_pointer<
+ typename detail::remove_reference<F>::type
+ >
+ , Result
+ >::type
+ invoke_impl_call(F&& f, Args&&... args)
+ {
+ return f(std::forward<Args>(args)...);
+ }
+
+ template<
+ typename Result
+ , typename F
+ , typename ClassInstance
+ , typename... Args
+ >
+ typename
+ enable_if<
+ is_member_function_pointer<
+ typename detail::remove_reference<F>::type
+ >
+ , Result
+ >::type
+ invoke_impl_call(F&& f, ClassInstance&& instance,Args&&... args)
+ {
+ return (that_ptr<typename detail::preevaluate<F>::class_type>::
+ get(std::forward<ClassInstance>(instance))->*f)(
+ std::forward<Args>(args)...);
+ }
+
+ namespace bidirectional_traversal
+ {
+ template<
+ typename FRef
+ , typename ArgsSeq
+ , bool Empty
+ , typename... Args
+ >
+ struct invoke_impl_result
+ {
+ typedef typename result_of::pop_back<ArgsSeq>::type new_args_seq;
+
+ typedef typename
+ invoke_impl_result<
+ FRef
+ , new_args_seq
+ , result_of::empty<new_args_seq>::value
+ , typename result_of::back<ArgsSeq>::type
+ , Args...
+ >::type
+ type;
+ };
+
+ template<typename FRef, typename ArgsSeq, typename... Args>
+ struct invoke_impl_result<FRef,ArgsSeq,true,Args...>
+ : detail::invoke_impl_result<FRef,Args...>
+ {};
+
+ template<typename FRef,typename SeqRef>
+ struct invoke_impl
+ {
+ typedef typename
+ mpl::eval_if<
+ typename detail::is_preevaluable<FRef>::type
+ , detail::preevaluate<FRef>
+ , invoke_impl_result<
+ FRef
+ , SeqRef
+ , result_of::empty<SeqRef>::value
+ >
+ >::type
+ type;
+
+ template<typename Seq,typename... Args>
+ static typename
+ enable_if<
+ typename result_of::empty<Seq&&>::type
+ , type
+ >::type
+ call_impl(FRef f,Seq&&, Args&&... args)
+ {
+ return detail::invoke_impl_call<type>(
+ std::forward<FRef>(f),std::forward<Args>(args)...);
+ }
+
+ template<typename Seq,typename... Args>
+ static typename
+ disable_if<
+ typename result_of::empty<Seq&&>::type
+ , type
+ >::type
+ call_impl(FRef f,Seq&& seq, Args&&... args)
+ {
+ return call_impl(
+ f,
+ fusion::pop_back(std::forward<Seq>(seq)),
+ fusion::back(std::forward<Seq>(seq)),
+ std::forward<Args>(args)...);
+ }
+
+ static type
+ call(FRef f,SeqRef seq)
+ {
+ return call_impl(f,std::forward<SeqRef>(seq));
+ }
+ };
+ }
+
+ namespace forward_traversal
+ {
+ template<
+ typename FRef
+ , typename SeqRef
+ , int NumArgsLeft
+ , typename... Args
+ >
+ struct invoke_impl_result
+ : invoke_impl_result<
+ FRef
+ , SeqRef
+ , NumArgsLeft-1
+ , typename result_of::deref<
+ typename result_of::advance_c<
+ typename result_of::begin<SeqRef>::type
+ , NumArgsLeft-1
+ >::type
+ >::type
+ , Args...
+ >
+ {};
+
+ template<typename FRef, typename SeqRef, typename... Args>
+ struct invoke_impl_result<FRef,SeqRef,0,Args...>
+ : detail::invoke_impl_result<FRef,Args...>
+ {
+ };
+
+ template<typename FRef,typename SeqRef>
+ struct invoke_impl
+ {
+ typedef typename
+ mpl::eval_if<
+ typename detail::is_preevaluable<FRef>::type
+ , detail::preevaluate<FRef>
+ , invoke_impl_result<
+ FRef
+ , SeqRef
+ , result_of::size<SeqRef>::value
+ >
+ >::type
+ type;
+
+ template<int NumArgsLeft,typename... Args>
+ static typename enable_if_c<!NumArgsLeft,type>::type
+ call_impl(FRef f,SeqRef, Args&&... args)
+ {
+ return detail::invoke_impl_call<type>(
+ std::forward<FRef>(f),std::forward<Args>(args)...);
+ }
+
+ template<int NumArgsLeft,typename... Args>
+ static typename enable_if_c<NumArgsLeft, type>::type
+ call_impl(FRef f,SeqRef seq, Args&&... args)
+ {
+ return call_impl<NumArgsLeft-1>(
+ f,
+ seq,
+ deref(advance_c<NumArgsLeft-1>(
+ fusion::begin(std::forward<SeqRef>(seq))
+ )),
+ std::forward<Args>(args)...);
+ }
+
+ static type
+ call(FRef f,SeqRef seq)
+ {
+ return call_impl<result_of::size<SeqRef>::value>(
+ f,
+ std::forward<SeqRef>(seq));
+ }
+ };
+ }
+
+ template<typename FRef,typename SeqRef>
+ struct invoke_impl
+ : mpl::if_<
+ typename traits::is_bidirectional<SeqRef>::type
+ , bidirectional_traversal::invoke_impl<FRef,SeqRef>
+ , forward_traversal::invoke_impl<FRef,SeqRef>
+ >::type
+ {};
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/no_0x/invoke.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/no_0x/invoke.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,305 @@
+/*=============================================================================
+ Copyright (c) 2005-2006 Joao Abecasis
+ 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_PP_IS_ITERATING
+#ifndef BOOST_FUSION_FUNCTIONAL_INVOCATION_DETAIL_NO_DECLTYPE_OR_VARIADIC_TEMPLATES_INVOKE_HPP
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_DETAIL_NO_DECLTYPE_OR_VARIADIC_TEMPLATES_INVOKE_HPP
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_shifted.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
+
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/mpl/front.hpp>
+#include <boost/mpl/identity.hpp>
+
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/remove_cv.hpp>
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+
+#include <boost/function_types/is_function.hpp>
+#include <boost/function_types/is_callable_builtin.hpp>
+#include <boost/function_types/is_member_pointer.hpp>
+#include <boost/function_types/is_member_function_pointer.hpp>
+#include <boost/function_types/result_type.hpp>
+#include <boost/function_types/parameter_types.hpp>
+
+#include <boost/utility/result_of.hpp>
+
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/sequence/intrinsic/front.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/functional/invocation/limits.hpp>
+#include <boost/fusion/functional/invocation/detail/that_ptr.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Function, class Sequence> struct invoke;
+ }
+
+ template <typename Function, class Sequence>
+ inline typename result_of::invoke<Function, Sequence>::type
+ invoke(Function, Sequence &);
+
+ template <typename Function, class Sequence>
+ inline typename result_of::invoke<Function, Sequence const>::type
+ invoke(Function, Sequence const&);
+
+ //----- ---- --- -- - - - -
+
+ namespace detail
+ {
+ namespace ft = function_types;
+
+ template<
+ typename Function, class Sequence,
+ int N = result_of::size<Sequence>::value,
+ bool CBI = ft::is_callable_builtin<Function>::value,
+ bool RandomAccess = traits::is_random_access<Sequence>::value
+ >
+ struct invoke_impl;
+
+ template <class Sequence, int N>
+ struct invoke_param_types;
+
+ template <typename T, class Sequence>
+ struct invoke_data_member;
+
+ template <typename Function, class Sequence, int N, bool RandomAccess>
+ struct invoke_mem_fn;
+
+ #define BOOST_PP_FILENAME_1 <boost/fusion/functional/invocation/detail/no_0x/invoke.hpp>
+ #define BOOST_PP_ITERATION_LIMITS (0, BOOST_FUSION_INVOKE_MAX_ARITY)
+ #include BOOST_PP_ITERATE()
+
+ template <typename F, class Sequence, int N, bool RandomAccess>
+ struct invoke_nonmember_builtin
+ // use same implementation as for function objects but...
+ : invoke_impl< // ...work around boost::result_of bugs
+ typename mpl::eval_if< ft::is_function<F>,
+ boost::add_reference<F>, boost::remove_cv<F> >::type,
+ Sequence, N, false, RandomAccess >
+ { };
+
+ template <typename Function, class Sequence, int N, bool RandomAccess>
+ struct invoke_impl<Function,Sequence,N,true,RandomAccess>
+ : mpl::if_< ft::is_member_function_pointer<Function>,
+ invoke_mem_fn<Function,Sequence,N,RandomAccess>,
+ invoke_nonmember_builtin<Function,Sequence,N,RandomAccess>
+ >::type
+ { };
+
+ template <typename Function, class Sequence, bool RandomAccess>
+ struct invoke_impl<Function,Sequence,1,true,RandomAccess>
+ : mpl::eval_if< ft::is_member_pointer<Function>,
+ mpl::if_< ft::is_member_function_pointer<Function>,
+ invoke_mem_fn<Function,Sequence,1,RandomAccess>,
+ invoke_data_member<Function, Sequence> >,
+ mpl::identity< invoke_nonmember_builtin<
+ Function,Sequence,1,RandomAccess> >
+ >::type
+ { };
+
+ template <typename T, class C, class Sequence>
+ struct invoke_data_member< T C::*, Sequence >
+ {
+ private:
+
+ typedef typename result_of::front<Sequence>::type that;
+
+ typedef mpl::or_< boost::is_convertible<that,C*>,
+ boost::is_convertible<that,C&>,
+ non_const_pointee<that> > non_const_cond;
+
+ typedef typename mpl::eval_if< non_const_cond,
+ mpl::identity<C>, add_const<C> >::type qualified_class;
+
+ typedef typename mpl::eval_if< non_const_cond,
+ mpl::identity<T>, add_const<T> >::type qualified_type;
+
+ public:
+
+ typedef typename boost::add_reference<qualified_type>::type
+ result_type;
+
+ static inline result_type call(T C::* f, Sequence & s)
+ {
+ typename result_of::front<Sequence>::type c = fusion::front(s);
+ return that_ptr<qualified_class>::get(c)->*f;
+ }
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename Function, class Sequence> struct invoke
+ {
+ typedef typename detail::invoke_impl<
+ typename boost::remove_reference<Function>::type, Sequence
+ >::result_type type;
+ };
+ }
+
+ template <typename Function, class Sequence>
+ inline typename result_of::invoke<Function,Sequence>::type
+ invoke(Function f, Sequence & s)
+ {
+ return detail::invoke_impl<
+ typename boost::remove_reference<Function>::type,Sequence
+ >::call(f,s);
+ }
+
+ template <typename Function, class Sequence>
+ inline typename result_of::invoke<Function,Sequence const>::type
+ invoke(Function f, Sequence const& s)
+ {
+ return detail::invoke_impl<
+ typename boost::remove_reference<Function>::type,Sequence const
+ >::call(f,s);
+ }
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+#define N BOOST_PP_ITERATION()
+
+ template <typename Function, class Sequence>
+ struct invoke_impl<Function,Sequence,N,false,true>
+ {
+ public:
+
+ typedef typename boost::result_of<
+#define M(z,j,data) typename result_of::at_c<Sequence,j>::type
+ Function(BOOST_PP_ENUM(N,M,~)) >::type result_type;
+#undef M
+
+ template <typename F>
+ static inline result_type
+ call(F & f, Sequence & s)
+ {
+#define M(z,j,data) fusion::at_c<j>(s)
+ return f( BOOST_PP_ENUM(N,M,~) );
+ }
+ };
+
+
+#if N > 0
+ template <typename Function, class Sequence>
+ struct invoke_mem_fn<Function,Sequence,N,true>
+ {
+ public:
+
+ typedef typename ft::result_type<Function>::type result_type;
+
+ template <typename F>
+ static inline result_type
+ call(F & f, Sequence & s)
+ {
+ return (that_ptr<typename mpl::front<
+ ft::parameter_types<Function> >::type
+ >::get(fusion::at_c<0>(s))->*f)(BOOST_PP_ENUM_SHIFTED(N,M,~));
+ }
+ };
+#endif
+
+#undef M
+
+#define M(z,j,data) \
+ typename seq::I##j i##j = \
+ fusion::next(BOOST_PP_CAT(i,BOOST_PP_DEC(j)));
+
+ template <typename Function, class Sequence>
+ struct invoke_impl<Function,Sequence,N,false,false>
+ {
+ private:
+ typedef invoke_param_types<Sequence,N> seq;
+ public:
+
+ typedef typename boost::result_of<
+ Function(BOOST_PP_ENUM_PARAMS(N,typename seq::T))
+ >::type result_type;
+
+ template <typename F>
+ static inline result_type
+ call(F & f, Sequence & s)
+ {
+#if N > 0
+ typename seq::I0 i0 = fusion::begin(s);
+ BOOST_PP_REPEAT_FROM_TO(1,N,M,~)
+#endif
+ return f( BOOST_PP_ENUM_PARAMS(N,*i) );
+ }
+ };
+
+#if N > 0
+ template <typename Function, class Sequence>
+ struct invoke_mem_fn<Function,Sequence,N,false>
+ {
+ private:
+ typedef invoke_param_types<Sequence,N> seq;
+ public:
+
+ typedef typename ft::result_type<Function>::type result_type;
+
+ template <typename F>
+ static inline result_type
+ call(F & f, Sequence & s)
+ {
+ typename seq::I0 i0 = fusion::begin(s);
+ BOOST_PP_REPEAT_FROM_TO(1,N,M,~)
+
+ return (that_ptr< typename mpl::front<
+ ft::parameter_types<Function> >::type
+ >::get(*i0)->*f)(BOOST_PP_ENUM_SHIFTED_PARAMS(N,*i));
+ }
+ };
+#endif
+
+#undef M
+
+ template <class Sequence> struct invoke_param_types<Sequence,N>
+ {
+#if N > 0
+ typedef typename result_of::begin<Sequence>::type I0;
+ typedef typename result_of::deref<I0>::type T0;
+
+#define M(z,i,data) \
+ typedef typename result_of::next< \
+ BOOST_PP_CAT(I,BOOST_PP_DEC(i))>::type I##i; \
+ typedef typename result_of::deref<I##i>::type T##i;
+
+ BOOST_PP_REPEAT_FROM_TO(1,N,M,~)
+#undef M
+#endif
+ };
+
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/no_0x/invoke_function_object.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/no_0x/invoke_function_object.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,176 @@
+/*=============================================================================
+ Copyright (c) 2005-2006 Joao Abecasis
+ 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_PP_IS_ITERATING
+#ifndef BOOST_FUSION_FUNCTIONAL_INVOCATION_DETAIL_NO_DECLTYPE_OR_VARIADIC_TEMPLATES_INVOKE_FUNCTION_OBJECT_HPP
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_DETAIL_NO_DECLTYPE_OR_VARIADIC_TEMPLATES_INVOKE_FUNCTION_OBJECT_HPP
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+
+#include <boost/utility/result_of.hpp>
+
+#include <boost/type_traits/remove_reference.hpp>
+#include <boost/type_traits/remove_const.hpp>
+
+#include <boost/utility/result_of.hpp>
+
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/functional/invocation/limits.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <class Function, class Sequence> struct invoke_function_object;
+ }
+
+ template <class Function, class Sequence>
+ inline typename result_of::invoke_function_object<Function, Sequence>::type
+ invoke_function_object(Function, Sequence &);
+
+ template <class Function, class Sequence>
+ inline typename result_of::invoke_function_object<Function, Sequence const
+ >::type invoke_function_object(Function, Sequence const&);
+
+ //----- ---- --- -- - - - -
+
+ namespace detail
+ {
+ template<
+ class Function, class Sequence,
+ int N = result_of::size<Sequence>::value,
+ bool RandomAccess = traits::is_random_access<Sequence>::value
+ >
+ struct invoke_function_object_impl;
+
+ template <class Sequence, int N>
+ struct invoke_function_object_param_types;
+
+ #define BOOST_PP_FILENAME_1 \
+ <boost/fusion/functional/invocation/detail/no_0x/invoke_function_object.hpp>
+ #define BOOST_PP_ITERATION_LIMITS \
+ (0, BOOST_FUSION_INVOKE_FUNCTION_OBJECT_MAX_ARITY)
+ #include BOOST_PP_ITERATE()
+ }
+
+ namespace result_of
+ {
+ template <class Function, class Sequence> struct invoke_function_object
+ {
+ typedef typename detail::invoke_function_object_impl<
+ typename boost::remove_reference<Function>::type, Sequence
+ >::result_type type;
+ };
+ }
+
+ template <class Function, class Sequence>
+ inline typename result_of::invoke_function_object<Function,Sequence>::type
+ invoke_function_object(Function f, Sequence & s)
+ {
+ return detail::invoke_function_object_impl<
+ typename boost::remove_reference<Function>::type,Sequence
+ >::call(f,s);
+ }
+
+ template <class Function, class Sequence>
+ inline typename result_of::invoke_function_object<Function,Sequence const>::type
+ invoke_function_object(Function f, Sequence const& s)
+ {
+ return detail::invoke_function_object_impl<
+ typename boost::remove_reference<Function>::type,Sequence const
+ >::call(f,s);
+ }
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+#define N BOOST_PP_ITERATION()
+
+ template <class Function, class Sequence>
+ struct invoke_function_object_impl<Function,Sequence,N,true>
+ {
+ public:
+
+ typedef typename boost::result_of<
+#define M(z,j,data) \
+ typename result_of::at_c<Sequence,j>::type
+ Function (BOOST_PP_ENUM(N,M,~)) >::type result_type;
+#undef M
+
+ template <class F>
+ static inline result_type
+ call(F & f, Sequence & s)
+ {
+#define M(z,j,data) fusion::at_c<j>(s)
+ return f( BOOST_PP_ENUM(N,M,~) );
+#undef M
+ }
+ };
+
+ template <class Function, class Sequence>
+ struct invoke_function_object_impl<Function,Sequence,N,false>
+ {
+ private:
+ typedef invoke_function_object_param_types<Sequence,N> seq;
+ public:
+ typedef typename boost::result_of<
+ Function (BOOST_PP_ENUM_PARAMS(N,typename seq::T))
+ >::type result_type;
+
+ template <class F>
+ static inline result_type
+ call(F & f, Sequence & s)
+ {
+#if N > 0
+ typename seq::I0 i0 = fusion::begin(s);
+#define M(z,j,data) \
+ typename seq::I##j i##j = \
+ fusion::next(BOOST_PP_CAT(i,BOOST_PP_DEC(j)));
+ BOOST_PP_REPEAT_FROM_TO(1,N,M,~)
+#undef M
+#endif
+ return f( BOOST_PP_ENUM_PARAMS(N,*i) );
+ }
+ };
+
+ template <class Sequence>
+ struct invoke_function_object_param_types<Sequence,N>
+ {
+#if N > 0
+ typedef typename result_of::begin<Sequence>::type I0;
+ typedef typename result_of::deref<I0>::type T0;
+
+#define M(z,i,data) \
+ typedef typename result_of::next< \
+ BOOST_PP_CAT(I,BOOST_PP_DEC(i))>::type I##i; \
+ typedef typename result_of::deref<I##i>::type T##i;
+
+ BOOST_PP_REPEAT_FROM_TO(1,N,M,~)
+#undef M
+#endif
+ };
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/no_0x/invoke_procedure.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/no_0x/invoke_procedure.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,170 @@
+/*=============================================================================
+ Copyright (c) 2005-2006 Joao Abecasis
+ 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_PP_IS_ITERATING
+#ifndef BOOST_FUSION_FUNCTIONAL_INVOCATION_DETAIL_NO_DECLTYPE_OR_VARIADIC_TEMPLATES_INVOKE_PROCEDURE_HPP
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_DETAIL_NO_DECLTYPE_OR_VARIADIC_TEMPLATES_INVOKE_PROCEDURE_HPP
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_shifted.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
+
+#include <boost/type_traits/remove_reference.hpp>
+
+#include <boost/mpl/front.hpp>
+
+#include <boost/function_types/is_callable_builtin.hpp>
+#include <boost/function_types/is_member_function_pointer.hpp>
+#include <boost/function_types/parameter_types.hpp>
+
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/functional/invocation/limits.hpp>
+#include <boost/fusion/functional/invocation/detail/that_ptr.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Function, class Sequence> struct invoke_procedure
+ {
+ typedef void type;
+ };
+ }
+
+ template <typename Function, class Sequence>
+ inline void invoke_procedure(Function, Sequence &);
+
+ template <typename Function, class Sequence>
+ inline void invoke_procedure(Function, Sequence const&);
+
+ //----- ---- --- -- - - - -
+
+ namespace detail
+ {
+ namespace ft = function_types;
+
+ template<
+ typename Function, class Sequence,
+ int N = result_of::size<Sequence>::value,
+ bool MFP = ft::is_member_function_pointer<Function>::value,
+ bool RandomAccess = traits::is_random_access<Sequence>::value
+ >
+ struct invoke_procedure_impl;
+
+ #define BOOST_PP_FILENAME_1 \
+ <boost/fusion/functional/invocation/detail/no_0x/invoke_procedure.hpp>
+ #define BOOST_PP_ITERATION_LIMITS \
+ (0, BOOST_FUSION_INVOKE_PROCEDURE_MAX_ARITY)
+ #include BOOST_PP_ITERATE()
+
+ }
+
+ template <typename Function, class Sequence>
+ inline void invoke_procedure(Function f, Sequence & s)
+ {
+ detail::invoke_procedure_impl<
+ typename boost::remove_reference<Function>::type,Sequence
+ >::call(f,s);
+ }
+
+ template <typename Function, class Sequence>
+ inline void invoke_procedure(Function f, Sequence const& s)
+ {
+ detail::invoke_procedure_impl<
+ typename boost::remove_reference<Function>::type,Sequence const
+ >::call(f,s);
+ }
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+#define N BOOST_PP_ITERATION()
+
+#define M(z,j,data) fusion::at_c<j>(s)
+
+ template <typename Function, class Sequence>
+ struct invoke_procedure_impl<Function,Sequence,N,false,true>
+ {
+ static inline void call(Function & f, Sequence & s)
+ {
+ f(BOOST_PP_ENUM(N,M,~));
+ }
+ };
+
+#if N > 0
+ template <typename Function, class Sequence>
+ struct invoke_procedure_impl<Function,Sequence,N,true,true>
+ {
+ static inline void call(Function & f, Sequence & s)
+ {
+ (that_ptr<typename mpl::front<
+ ft::parameter_types<Function> >::type
+ >::get(fusion::at_c<0>(s))->*f)(BOOST_PP_ENUM_SHIFTED(N,M,~));
+ }
+ };
+#endif
+
+#undef M
+
+#define M(z,j,data) \
+ typedef typename result_of::next< BOOST_PP_CAT(I,BOOST_PP_DEC(j)) \
+ >::type I ## j ; \
+ I##j i##j = fusion::next(BOOST_PP_CAT(i,BOOST_PP_DEC(j)));
+
+ template <typename Function, class Sequence>
+ struct invoke_procedure_impl<Function,Sequence,N,false,false>
+ {
+ static inline void call(Function & f, Sequence & s)
+ {
+#if N > 0
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(s);
+ BOOST_PP_REPEAT_FROM_TO(1,N,M,~)
+#endif
+ f( BOOST_PP_ENUM_PARAMS(N,*i) );
+ }
+ };
+
+#if N > 0
+ template <typename Function, class Sequence>
+ struct invoke_procedure_impl<Function,Sequence,N,true,false>
+ {
+ static inline void call(Function & f, Sequence & s)
+ {
+ typedef typename result_of::begin<Sequence>::type I0;
+ I0 i0 = fusion::begin(s);
+ BOOST_PP_REPEAT_FROM_TO(1,N,M,~)
+
+ (that_ptr<typename mpl::front<
+ ft::parameter_types<Function> >::type
+ >::get(*i0)->*f)(BOOST_PP_ENUM_SHIFTED_PARAMS(N,*i));
+ }
+ };
+#endif
+
+#undef M
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/that_ptr.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,95 @@
+/*=============================================================================
+ 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_INVOCATION_DETAIL_THAT_PTR_HPP
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_DETAIL_THAT_PTR_HPP
+
+#include <boost/get_pointer.hpp>
+#include <boost/utility/addressof.hpp>
+#include <boost/type_traits/config.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template<typename WantedRef>
+ struct that_ptr
+ {
+ private:
+ typedef typename detail::remove_reference<WantedRef>::type* wanted;
+
+ template<typename T>
+ static inline wanted
+ do_get_pointer(BOOST_FUSION_R_ELSE_LREF(T), wanted ptr)
+ {
+ return ptr;
+ }
+
+ template<typename T>
+ static inline wanted
+ do_get_pointer(BOOST_FUSION_R_ELSE_LREF(T) t, void const*)
+ {
+ return get_pointer(BOOST_FUSION_FORWARD(T,t));
+ }
+
+ public:
+ static inline wanted
+ get(WantedRef x)
+ {
+ return boost::addressof(x);
+ }
+
+ static inline wanted
+ get(wanted ptr)
+ {
+ return ptr;
+ }
+
+ template <typename T>
+ static inline wanted
+ get(BOOST_FUSION_R_ELSE_LREF(T) t)
+ {
+ return do_get_pointer(
+ BOOST_FUSION_FORWARD(T,t),
+ boost::addressof(BOOST_FUSION_FORWARD(T,t)));
+ }
+ };
+
+#if defined(BOOST_NO_DECLTYPE) || defined(BOOST_NO_VARIADIC_TEMPLATES) || defined(BOOST_NO_RVALUE_REFERENCES)
+ template <typename PtrOrSmartPtr>
+ struct non_const_pointee;
+
+ namespace adl_barrier
+ {
+ using boost::get_pointer;
+ void const * BOOST_TT_DECL get_pointer(...); // fallback
+
+ template< typename T> char const_tester(T *);
+ template< typename T> long const_tester(T const *);
+
+ template <typename Ptr>
+ struct non_const_pointee_impl
+ {
+ static Ptr & what;
+
+ static bool const value =
+ sizeof(const_tester(get_pointer(what))) == 1;
+ };
+ }
+
+ template <typename PtrOrSmartPtr> struct non_const_pointee
+ : adl_barrier::non_const_pointee_impl<
+ typename remove_cv<
+ typename remove_reference<PtrOrSmartPtr>::type >::type >
+ {
+ typedef non_const_pointee type;
+ typedef bool value_type;
+ };
+#endif
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,18 @@
+// 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_FUNCTIONAL_INVOCATION_INVOKE_HPP
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_HPP
+
+#include <boost/config.hpp>
+#if defined(BOOST_NO_DECLTYPE) || defined(BOOST_NO_VARIADIC_TEMPLATES) || defined(BOOST_NO_RVALUE_REFERENCES)
+# include <boost/fusion/functional/invocation/detail/no_0x/invoke.hpp>
+#else
+# define BOOST_FUSION_INVOKE_NAME invoke
+# include <boost/fusion/functional/invocation/detail/0x/invoke_impl.hpp>
+# undef BOOST_FUSION_INVOKE_NAME
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke_function_object.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke_function_object.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,18 @@
+// 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_FUNCTIONAL_INVOCATION_INVOKE_FUNCTION_OBJECT_HPP
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_FUNCTION_OBJECT_HPP
+
+#include <boost/config.hpp>
+#if defined(BOOST_NO_DECLTYPE) || defined(BOOST_NO_VARIADIC_TEMPLATES) || defined(BOOST_NO_RVALUE_REFERENCES)
+# include <boost/fusion/functional/invocation/detail/no_0x/invoke_function_object.hpp>
+#elif !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# define BOOST_FUSION_INVOKE_NAME invoke_function_object
+# include <boost/fusion/functional/invocation/detail/0x/invoke_impl.hpp>
+# undef BOOST_FUSION_INVOKE_NAME
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke_procedure.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke_procedure.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,18 @@
+// 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_FUNCTIONAL_INVOCATION_INVOKE_PROCEDURE_HPP
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_PROCEDURE_HPP
+
+#include <boost/config.hpp>
+#if defined(BOOST_NO_DECLTYPE) || defined(BOOST_NO_VARIADIC_TEMPLATES) || defined(BOOST_NO_RVALUE_REFERENCES)
+# include <boost/fusion/functional/invocation/detail/no_0x/invoke_procedure.hpp>
+#elif !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# define BOOST_FUSION_INVOKE_NAME invoke_procedure
+# include <boost/fusion/functional/invocation/detail/0x/invoke_impl.hpp>
+# undef BOOST_FUSION_INVOKE_NAME
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/limits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/limits.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,26 @@
+/*=============================================================================
+ 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_INVOCATION_LIMITS_HPP
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_LIMITS_HPP
+
+#include <boost/config.hpp>
+
+#if defined(BOOST_NO_DECLTYPE) || defined(BOOST_NO_VARIADIC_TEMPLATES) || defined(BOOST_NO_RVALUE_REFERENCES) || !defined(BOOST_FUSION_CPP0X_NO_DEPRECEATED)
+# ifndef BOOST_FUSION_INVOKE_MAX_ARITY
+# define BOOST_FUSION_INVOKE_MAX_ARITY 6
+# endif
+# ifndef BOOST_FUSION_INVOKE_PROCEDURE_MAX_ARITY
+# define BOOST_FUSION_INVOKE_PROCEDURE_MAX_ARITY 6
+# endif
+# ifndef BOOST_FUSION_INVOKE_FUNCTION_OBJECT_MAX_ARITY
+# define BOOST_FUSION_INVOKE_FUNCTION_OBJECT_MAX_ARITY 6
+# endif
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/accumulate.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/accumulate.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_ACCUMULATE_HPP
+#define BOOST_FUSION_INCLUDE_ACCUMULATE_HPP
+
+#include <boost/fusion/algorithm/iteration/accumulate.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/adapt_struct.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/adapt_struct.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_ADAPT_STRUCT_HPP
+#define BOOST_FUSION_INCLUDE_ADAPT_STRUCT_HPP
+
+#include <boost/fusion/adapted/struct/adapt_struct.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/adapted.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/adapted.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_ADAPTED_HPP
+#define BOOST_FUSION_INCLUDE_ADAPTED_HPP
+
+#include <boost/fusion/adapted.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/adapter.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/adapter.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_ADAPTER_HPP
+#define BOOST_FUSION_INCLUDE_ADAPTER_HPP
+
+#include <boost/fusion/functional/adapter.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/advance.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/advance.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_ADVANCE_HPP
+#define BOOST_FUSION_INCLUDE_ADVANCE_HPP
+
+#include <boost/fusion/iterator/advance.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/advance_c.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/advance_c.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,11 @@
+// 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_INCLUDE_ADVANCE_C_HPP
+#define BOOST_FUSION_INCLUDE_ADVANCE_C_HPP
+
+#include <boost/fusion/iterator/advance_c.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/algorithm.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/algorithm.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_ALGORITHM_HPP
+#define BOOST_FUSION_INCLUDE_ALGORITHM_HPP
+
+#include <boost/fusion/algorithm.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/all.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/all.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_ALL_HPP
+#define BOOST_FUSION_INCLUDE_ALL_HPP
+
+#include <boost/fusion/algorithm/query/all.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/any.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/any.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_ANY_HPP
+#define BOOST_FUSION_INCLUDE_ANY_HPP
+
+#include <boost/fusion/algorithm/query/any.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/array.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/array.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_ARRAY_HPP
+#define BOOST_FUSION_INCLUDE_ARRAY_HPP
+
+#include <boost/fusion/adapted/array.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/as_list.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/as_list.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_AS_LIST_HPP
+#define BOOST_FUSION_INCLUDE_AS_LIST_HPP
+
+#include <boost/fusion/container/list/convert.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/as_map.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/as_map.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_AS_MAP_HPP
+#define BOOST_FUSION_INCLUDE_AS_MAP_HPP
+
+#include <boost/fusion/container/map/convert.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/as_set.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/as_set.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_AS_SET_HPP
+#define BOOST_FUSION_INCLUDE_AS_SET_HPP
+
+#include <boost/fusion/container/set/convert.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/as_vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/as_vector.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_AS_VECTOR_HPP
+#define BOOST_FUSION_INCLUDE_AS_VECTOR_HPP
+
+#include <boost/fusion/container/vector/convert.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/at.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/at.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_AT_HPP
+#define BOOST_FUSION_INCLUDE_AT_HPP
+
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/at_c.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/at_c.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_AT_C_HPP
+#define BOOST_FUSION_INCLUDE_AT_C_HPP
+
+#include <boost/fusion/sequence/intrinsic/at_c.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/at_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/at_key.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_AT_KEY_HPP
+#define BOOST_FUSION_INCLUDE_AT_KEY_HPP
+
+#include <boost/fusion/sequence/intrinsic/at_key.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/back.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/back.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_BACK_HPP
+#define BOOST_FUSION_INCLUDE_BACK_HPP
+
+#include <boost/fusion/sequence/intrinsic/back.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/begin.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/begin.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_BEGIN_HPP
+#define BOOST_FUSION_INCLUDE_BEGIN_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/boost_array.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/boost_array.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,11 @@
+// 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_INCLUDE_BOOST_ARRAY_HPP
+#define BOOST_FUSION_INCLUDE_BOOST_ARRAY_HPP
+
+#include <boost/fusion/adapted/boost_array.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/boost_tuple.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/boost_tuple.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_BOOST_TUPLE_HPP
+#define BOOST_FUSION_INCLUDE_BOOST_TUPLE_HPP
+
+#include <boost/fusion/adapted/boost_tuple.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/category_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/category_of.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_CATEGORY_OF_HPP
+#define BOOST_FUSION_INCLUDE_CATEGORY_OF_HPP
+
+#include <boost/fusion/support/category_of.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/clear.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/clear.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_CLEAR_HPP
+#define BOOST_FUSION_INCLUDE_CLEAR_HPP
+
+#include <boost/fusion/algorithm/transformation/clear.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/comparison.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/comparison.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_COMPARISON_HPP
+#define BOOST_FUSION_INCLUDE_COMPARISON_HPP
+
+#include <boost/fusion/sequence/comparison.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/cons.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/cons.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_CONS_HPP
+#define BOOST_FUSION_INCLUDE_CONS_HPP
+
+#include <boost/fusion/container/list/cons.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/cons_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/cons_tie.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_CONS_TIE_HPP
+#define BOOST_FUSION_INCLUDE_CONS_TIE_HPP
+
+#include <boost/fusion/container/generation/cons_tie.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/container.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/container.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_CONTAINER_HPP
+#define BOOST_FUSION_INCLUDE_CONTAINER_HPP
+
+#include <boost/fusion/container.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/convert.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/convert.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_CONVERT_HPP
+#define BOOST_FUSION_INCLUDE_CONVERT_HPP
+
+#include <boost/fusion/sequence/convert.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/count.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/count.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_COUNT_HPP
+#define BOOST_FUSION_INCLUDE_COUNT_HPP
+
+#include <boost/fusion/algorithm/query/count.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/count_if.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/count_if.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_COUNT_IF_HPP
+#define BOOST_FUSION_INCLUDE_COUNT_IF_HPP
+
+#include <boost/fusion/algorithm/query/count_if.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/deduce_sequence.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/deduce_sequence.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_DEDUCE_SEQUENCE_HPP
+#define BOOST_FUSION_INCLUDE_DEDUCE_SEQUENCE_HPP
+
+#include <boost/fusion/support/deduce_sequence.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/deref.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/deref.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_DEREF_HPP
+#define BOOST_FUSION_INCLUDE_DEREF_HPP
+
+#include <boost/fusion/iterator/deref.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/deref_data.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/deref_data.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,11 @@
+// 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_INCLUDE_DEREF_DATA_HPP
+#define BOOST_FUSION_INCLUDE_DEREF_DATA_HPP
+
+#include <boost/fusion/iterator/deref_data.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/distance.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/distance.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_DISTANCE_HPP
+#define BOOST_FUSION_INCLUDE_DISTANCE_HPP
+
+#include <boost/fusion/iterator/distance.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/empty.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/empty.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_EMPTY_HPP
+#define BOOST_FUSION_INCLUDE_EMPTY_HPP
+
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/end.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/end.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_END_HPP
+#define BOOST_FUSION_INCLUDE_END_HPP
+
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/equal_to.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/equal_to.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,14 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#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>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/erase.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/erase.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_ERASE_HPP
+#define BOOST_FUSION_INCLUDE_ERASE_HPP
+
+#include <boost/fusion/algorithm/transformation/erase.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/erase_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/erase_key.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_ERASE_KEY_HPP
+#define BOOST_FUSION_INCLUDE_ERASE_KEY_HPP
+
+#include <boost/fusion/algorithm/transformation/erase_key.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/filter.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/filter.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_FILTER_HPP
+#define BOOST_FUSION_INCLUDE_FILTER_HPP
+
+#include <boost/fusion/algorithm/transformation/filter.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/filter_if.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/filter_if.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_FILTER_IF_HPP
+#define BOOST_FUSION_INCLUDE_FILTER_IF_HPP
+
+#include <boost/fusion/algorithm/transformation/filter_if.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/filter_view.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/filter_view.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_FILTER_VIEW_HPP
+#define BOOST_FUSION_INCLUDE_FILTER_VIEW_HPP
+
+#include <boost/fusion/view/filter_view.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/find.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/find.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_FIND_HPP
+#define BOOST_FUSION_INCLUDE_FIND_HPP
+
+#include <boost/fusion/algorithm/query/find.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/find_if.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/find_if.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_FIND_IF_HPP
+#define BOOST_FUSION_INCLUDE_FIND_IF_HPP
+
+#include <boost/fusion/algorithm/query/find_if.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/find_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/find_key.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,11 @@
+// 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_INCLUDE_FIND_KEY_HPP
+#define BOOST_FUSION_INCLUDE_FIND_KEY_HPP
+
+#include <boost/fusion/algorithm/query/find_key.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/fold.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/fold.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_FOLD_HPP
+#define BOOST_FUSION_INCLUDE_FOLD_HPP
+
+#include <boost/fusion/algorithm/iteration/fold.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/for_each.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/for_each.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_FOR_EACH_HPP
+#define BOOST_FUSION_INCLUDE_FOR_EACH_HPP
+
+#include <boost/fusion/algorithm/iteration/for_each.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/front.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/front.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_FRONT_HPP
+#define BOOST_FUSION_INCLUDE_FRONT_HPP
+
+#include <boost/fusion/sequence/intrinsic/front.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/functional.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/functional.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_FUNCTIONAL_HPP
+#define BOOST_FUSION_INCLUDE_FUNCTIONAL_HPP
+
+#include <boost/fusion/functional.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/fused.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/fused.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_FUSED_HPP
+#define BOOST_FUSION_INCLUDE_FUSED_HPP
+
+#include <boost/fusion/functional/adapter/fused.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/fused_function_object.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/fused_function_object.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#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>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/fused_procedure.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/fused_procedure.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_FUSED_PROCEDURE_HPP
+#define BOOST_FUSION_INCLUDE_FUSED_PROCEDURE_HPP
+
+#include <boost/fusion/functional/adapter/fused_procedure.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/generation.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/generation.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,14 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_GENERATION_HPP
+#define BOOST_FUSION_INCLUDE_GENERATION_HPP
+
+#include <boost/fusion/container/generation.hpp>
+#include <boost/fusion/functional/generation.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/greater.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/greater.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_GREATER_HPP
+#define BOOST_FUSION_INCLUDE_GREATER_HPP
+
+#include <boost/fusion/sequence/comparison/greater.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/greater_equal.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/greater_equal.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_GREATER_EQUAL_HPP
+#define BOOST_FUSION_INCLUDE_GREATER_EQUAL_HPP
+
+#include <boost/fusion/sequence/comparison/greater_equal.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/has_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/has_key.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_HAS_KEY_HPP
+#define BOOST_FUSION_INCLUDE_HAS_KEY_HPP
+
+#include <boost/fusion/sequence/intrinsic/has_key.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/ignore.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/ignore.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,14 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_IGNORE_HPP
+#define BOOST_FUSION_INCLUDE_IGNORE_HPP
+
+#include <boost/fusion/container/generation.hpp>
+#include <boost/fusion/functional/generation.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/in.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/in.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Hartmut Kaiser
+
+ Distributed under the 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_INCLUDE_IN_HPP
+#define BOOST_FUSION_INCLUDE_IN_HPP
+
+#include <boost/fusion/sequence/io/in.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/insert.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/insert.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_INSERT_HPP
+#define BOOST_FUSION_INCLUDE_INSERT_HPP
+
+#include <boost/fusion/algorithm/transformation/insert.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/insert_range.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/insert_range.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_INSERT_RANGE_HPP
+#define BOOST_FUSION_INCLUDE_INSERT_RANGE_HPP
+
+#include <boost/fusion/algorithm/transformation/insert_range.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/intrinsic.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/intrinsic.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_INTRINSIC_HPP
+#define BOOST_FUSION_INCLUDE_INTRINSIC_HPP
+
+#include <boost/fusion/sequence/intrinsic.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/invocation.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/invocation.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_INVOCATION_HPP
+#define BOOST_FUSION_INCLUDE_INVOCATION_HPP
+
+#include <boost/fusion/functional/invocation.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/invoke.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/invoke.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_INVOKE_HPP
+#define BOOST_FUSION_INCLUDE_INVOKE_HPP
+
+#include <boost/fusion/functional/invocation/invoke.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/invoke_function_object.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/invoke_function_object.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_INVOKE_FUNCTION_OBJECT_HPP
+#define BOOST_FUSION_INCLUDE_INVOKE_FUNCTION_OBJECT_HPP
+
+#include <boost/fusion/functional/invocation/invoke_function_object.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/invoke_procedure.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/invoke_procedure.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_INVOKE_PROCEDURE_HPP
+#define BOOST_FUSION_INCLUDE_INVOKE_PROCEDURE_HPP
+
+#include <boost/fusion/functional/invocation/invoke_procedure.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/io.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/io.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Hartmut Kaiser
+
+ Distributed under the 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_INCLUDE_IO_HPP
+#define BOOST_FUSION_INCLUDE_IO_HPP
+
+#include <boost/fusion/sequence/io.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/is_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/is_iterator.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_IS_ITERATOR_HPP
+#define BOOST_FUSION_INCLUDE_IS_ITERATOR_HPP
+
+#include <boost/fusion/support/is_iterator.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/is_sequence.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/is_sequence.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_IS_SEQUENCE_HPP
+#define BOOST_FUSION_INCLUDE_IS_SEQUENCE_HPP
+
+#include <boost/fusion/support/is_sequence.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/is_view.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/is_view.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_IS_VIEW_HPP
+#define BOOST_FUSION_INCLUDE_IS_VIEW_HPP
+
+#include <boost/fusion/support/is_view.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/iteration.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/iteration.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_ITERATION_HPP
+#define BOOST_FUSION_INCLUDE_ITERATION_HPP
+
+#include <boost/fusion/algorithm/iteration.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/iterator.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_ITERATOR_HPP
+#define BOOST_FUSION_INCLUDE_ITERATOR_HPP
+
+#include <boost/fusion/iterator.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/iterator_base.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/iterator_base.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_ITERATOR_BASE_HPP
+#define BOOST_FUSION_INCLUDE_ITERATOR_BASE_HPP
+
+#include <boost/fusion/support/iterator_base.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/iterator_facade.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/iterator_facade.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_ITERATOR_FACADE_HPP
+#define BOOST_FUSION_INCLUDE_ITERATOR_FACADE_HPP
+
+#include <boost/fusion/iterator/iterator_facade.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/iterator_range.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/iterator_range.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_ITERATOR_RANGE_HPP
+#define BOOST_FUSION_INCLUDE_ITERATOR_RANGE_HPP
+
+#include <boost/fusion/view/iterator_range.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/join.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/join.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_JOIN_HPP
+#define BOOST_FUSION_INCLUDE_JOIN_HPP
+
+#include <boost/fusion/algorithm/transformation/join.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/joint_view.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/joint_view.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_JOINT_VIEW_HPP
+#define BOOST_FUSION_INCLUDE_JOINT_VIEW_HPP
+
+#include <boost/fusion/view/joint_view.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/key_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/key_of.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,11 @@
+// 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_INCLUDE_KEY_OF_HPP
+#define BOOST_FUSION_INCLUDE_KEY_OF_HPP
+
+#include <boost/fusion/iterator/key_of.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/less.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/less.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_LESS_HPP
+#define BOOST_FUSION_INCLUDE_LESS_HPP
+
+#include <boost/fusion/sequence/comparison/less.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/less_equal.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/less_equal.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_LESS_EQUAL_HPP
+#define BOOST_FUSION_INCLUDE_LESS_EQUAL_HPP
+
+#include <boost/fusion/sequence/comparison/less_equal.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/list.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/list.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_LIST_HPP
+#define BOOST_FUSION_INCLUDE_LIST_HPP
+
+#include <boost/fusion/container/list.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/list_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/list_fwd.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_LIST_FWD_HPP
+#define BOOST_FUSION_INCLUDE_LIST_FWD_HPP
+
+#include <boost/fusion/container/list/list_fwd.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/list_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/list_tie.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,14 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_LIST_TIE_HPP
+#define BOOST_FUSION_INCLUDE_LIST_TIE_HPP
+
+#include <boost/fusion/container/generation.hpp>
+#include <boost/fusion/functional/generation.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/make_cons.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/make_cons.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_MAKE_CONS_HPP
+#define BOOST_FUSION_INCLUDE_MAKE_CONS_HPP
+
+#include <boost/fusion/container/generation/make_cons.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/make_fused.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/make_fused.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_MAKE_FUSED_HPP
+#define BOOST_FUSION_INCLUDE_MAKE_FUSED_HPP
+
+#include <boost/fusion/functional/generation/make_fused.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/make_fused_function_object.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/make_fused_function_object.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_MAKE_FUSED_FUNCTION_OBJECT_HPP
+#define BOOST_FUSION_INCLUDE_MAKE_FUSED_FUNCTION_OBJECT_HPP
+
+#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/make_fused_procedure.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/make_fused_procedure.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_MAKE_FUSED_PROCEDURE_HPP
+#define BOOST_FUSION_INCLUDE_MAKE_FUSED_PROCEDURE_HPP
+
+#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/make_list.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/make_list.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_MAKE_LIST_HPP
+#define BOOST_FUSION_INCLUDE_MAKE_LIST_HPP
+
+#include <boost/fusion/container/generation/make_list.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/make_map.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/make_map.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_MAKE_MAP_HPP
+#define BOOST_FUSION_INCLUDE_MAKE_MAP_HPP
+
+#include <boost/fusion/container/generation/make_map.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/make_set.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/make_set.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_MAKE_SET_HPP
+#define BOOST_FUSION_INCLUDE_MAKE_SET_HPP
+
+#include <boost/fusion/container/generation/make_set.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/make_tuple.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/make_tuple.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_MAKE_TUPLE_HPP
+#define BOOST_FUSION_INCLUDE_MAKE_TUPLE_HPP
+
+#include <boost/fusion/tuple/make_tuple.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/make_unfused.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/make_unfused.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_MAKE_UNFUSED_HPP
+#define BOOST_FUSION_INCLUDE_MAKE_UNFUSED_HPP
+
+#include <boost/fusion/functional/generation/make_unfused.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/make_vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/make_vector.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_MAKE_VECTOR_HPP
+#define BOOST_FUSION_INCLUDE_MAKE_VECTOR_HPP
+
+#include <boost/fusion/container/generation/make_vector.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/map.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/map.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_MAP_HPP
+#define BOOST_FUSION_INCLUDE_MAP_HPP
+
+#include <boost/fusion/container/map.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/map_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/map_fwd.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_MAP_FWD_HPP
+#define BOOST_FUSION_INCLUDE_MAP_FWD_HPP
+
+#include <boost/fusion/container/map/map_fwd.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/map_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/map_tie.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_MAP_TIE_HPP
+#define BOOST_FUSION_INCLUDE_MAP_TIE_HPP
+
+#include <boost/fusion/container/generation/map_tie.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/mpl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/mpl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,14 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_MPL_HPP
+#define BOOST_FUSION_INCLUDE_MPL_HPP
+
+#include <boost/fusion/adapted/mpl.hpp>
+#include <boost/fusion/mpl.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/next.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/next.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_NEXT_HPP
+#define BOOST_FUSION_INCLUDE_NEXT_HPP
+
+#include <boost/fusion/iterator/next.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/none.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/none.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_NONE_HPP
+#define BOOST_FUSION_INCLUDE_NONE_HPP
+
+#include <boost/fusion/algorithm/query/none.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/not_equal_to.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/not_equal_to.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,14 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_NOT_EQUAL_TO_HPP
+#define BOOST_FUSION_INCLUDE_NOT_EQUAL_TO_HPP
+
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/sequence/comparison/not_equal_to.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/out.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/out.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Hartmut Kaiser
+
+ Distributed under the 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_INCLUDE_OUT_HPP
+#define BOOST_FUSION_INCLUDE_OUT_HPP
+
+#include <boost/fusion/sequence/io/out.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/pair.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/pair.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_PAIR_HPP
+#define BOOST_FUSION_INCLUDE_PAIR_HPP
+
+#include <boost/fusion/support/pair.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/pair_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/pair_tie.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_PAIR_TIE_HPP
+#define BOOST_FUSION_INCLUDE_PAIR_TIE_HPP
+
+#include <boost/fusion/container/generation/pair_tie.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/pop_back.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/pop_back.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_POP_BACK_HPP
+#define BOOST_FUSION_INCLUDE_POP_BACK_HPP
+
+#include <boost/fusion/algorithm/transformation/pop_back.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/pop_front.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/pop_front.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_POP_FRONT_HPP
+#define BOOST_FUSION_INCLUDE_POP_FRONT_HPP
+
+#include <boost/fusion/algorithm/transformation/pop_front.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/prior.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/prior.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_PRIOR_HPP
+#define BOOST_FUSION_INCLUDE_PRIOR_HPP
+
+#include <boost/fusion/iterator/prior.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/push_back.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/push_back.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_PUSH_BACK_HPP
+#define BOOST_FUSION_INCLUDE_PUSH_BACK_HPP
+
+#include <boost/fusion/algorithm/transformation/push_back.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/push_front.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/push_front.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_PUSH_FRONT_HPP
+#define BOOST_FUSION_INCLUDE_PUSH_FRONT_HPP
+
+#include <boost/fusion/algorithm/transformation/push_front.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/query.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/query.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_QUERY_HPP
+#define BOOST_FUSION_INCLUDE_QUERY_HPP
+
+#include <boost/fusion/algorithm/query.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/remove.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/remove.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_REMOVE_HPP
+#define BOOST_FUSION_INCLUDE_REMOVE_HPP
+
+#include <boost/fusion/algorithm/transformation/remove_if.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/remove_if.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/remove_if.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_REMOVE_IF_HPP
+#define BOOST_FUSION_INCLUDE_REMOVE_IF_HPP
+
+#include <boost/fusion/algorithm/transformation/remove_if.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/replace.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/replace.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_REPLACE_HPP
+#define BOOST_FUSION_INCLUDE_REPLACE_HPP
+
+#include <boost/fusion/algorithm/transformation/replace.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/replace_if.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/replace_if.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_REPLACE_IF_HPP
+#define BOOST_FUSION_INCLUDE_REPLACE_IF_HPP
+
+#include <boost/fusion/algorithm/transformation/replace_if.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/reverse.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/reverse.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_REVERSE_HPP
+#define BOOST_FUSION_INCLUDE_REVERSE_HPP
+
+#include <boost/fusion/algorithm/transformation/reverse.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/reverse_view.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/reverse_view.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_REVERSE_VIEW_HPP
+#define BOOST_FUSION_INCLUDE_REVERSE_VIEW_HPP
+
+#include <boost/fusion/view/reverse_view.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/sequence.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/sequence.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_SEQUENCE_HPP
+#define BOOST_FUSION_INCLUDE_SEQUENCE_HPP
+
+#include <boost/fusion/sequence.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/sequence_base.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/sequence_base.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_SEQUENCE_BASE_HPP
+#define BOOST_FUSION_INCLUDE_SEQUENCE_BASE_HPP
+
+#include <boost/fusion/support/sequence_base.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/sequence_facade.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/sequence_facade.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_SEQUENCE_FACADE_HPP
+#define BOOST_FUSION_INCLUDE_SEQUENCE_FACADE_HPP
+
+#include <boost/fusion/sequence/sequence_facade.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/set.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/set.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_SET_HPP
+#define BOOST_FUSION_INCLUDE_SET_HPP
+
+#include <boost/fusion/container/set.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/set_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/set_fwd.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_SET_FWD_HPP
+#define BOOST_FUSION_INCLUDE_SET_FWD_HPP
+
+#include <boost/fusion/container/set/set_fwd.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/single_view.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/single_view.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_SINGLE_VIEW_HPP
+#define BOOST_FUSION_INCLUDE_SINGLE_VIEW_HPP
+
+#include <boost/fusion/view/single_view.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/size.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/size.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_SIZE_HPP
+#define BOOST_FUSION_INCLUDE_SIZE_HPP
+
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/std_array.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/std_array.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,11 @@
+// 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_INCLUDE_STD_ARRAY_HPP
+#define BOOST_FUSION_INCLUDE_STD_ARRAY_HPP
+
+#include <boost/fusion/adapted/std_array.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/std_pair.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/std_pair.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_STD_PAIR_HPP
+#define BOOST_FUSION_INCLUDE_STD_PAIR_HPP
+
+#include <boost/fusion/adapted/std_pair.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/struct.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/struct.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_STRUCT_HPP
+#define BOOST_FUSION_INCLUDE_STRUCT_HPP
+
+#include <boost/fusion/adapted/struct.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/support.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/support.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_SUPPORT_HPP
+#define BOOST_FUSION_INCLUDE_SUPPORT_HPP
+
+#include <boost/fusion/support.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/swap.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/swap.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_SWAP_HPP
+#define BOOST_FUSION_INCLUDE_SWAP_HPP
+
+#include <boost/fusion/sequence/intrinsic/swap.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/tag_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/tag_of.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_TAG_OF_HPP
+#define BOOST_FUSION_INCLUDE_TAG_OF_HPP
+
+#include <boost/fusion/support/tag_of.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/tag_of_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/tag_of_fwd.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_TAG_OF_FWD_HPP
+#define BOOST_FUSION_INCLUDE_TAG_OF_FWD_HPP
+
+#include <boost/fusion/support/tag_of_fwd.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/transform.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/transform.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_TRANSFORM_HPP
+#define BOOST_FUSION_INCLUDE_TRANSFORM_HPP
+
+#include <boost/fusion/algorithm/transformation/transform.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/transform_view.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/transform_view.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_TRANSFORM_VIEW_HPP
+#define BOOST_FUSION_INCLUDE_TRANSFORM_VIEW_HPP
+
+#include <boost/fusion/view/transform_view.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/transformation.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/transformation.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_TRANSFORMATION_HPP
+#define BOOST_FUSION_INCLUDE_TRANSFORMATION_HPP
+
+#include <boost/fusion/algorithm/transformation.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/tuple.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/tuple.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_TUPLE_HPP
+#define BOOST_FUSION_INCLUDE_TUPLE_HPP
+
+#include <boost/fusion/tuple.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/tuple_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/tuple_fwd.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_TUPLE_FWD_HPP
+#define BOOST_FUSION_INCLUDE_TUPLE_FWD_HPP
+
+#include <boost/fusion/tuple/tuple_fwd.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/tuple_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/tuple_tie.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_TUPLE_TIE_HPP
+#define BOOST_FUSION_INCLUDE_TUPLE_TIE_HPP
+
+#include <boost/fusion/tuple/tuple_tie.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/unfused.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/unfused.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_UNFUSED_HPP
+#define BOOST_FUSION_INCLUDE_UNFUSED_HPP
+
+#include <boost/fusion/functional/adapter/unfused.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/unfused_typed.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/unfused_typed.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_UNFUSED_TYPED_HPP
+#define BOOST_FUSION_INCLUDE_UNFUSED_TYPED_HPP
+
+#include <boost/fusion/functional/adapter/unfused_typed.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/unused.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/unused.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_UNUSED_HPP
+#define BOOST_FUSION_INCLUDE_UNUSED_HPP
+
+#include <boost/fusion/support/unused.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/value_at.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/value_at.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Hartmut Kaiser
+
+ Distributed under the 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_INCLUDE_VALUE_AT_HPP
+#define BOOST_FUSION_INCLUDE_VALUE_AT_HPP
+
+#include <boost/fusion/sequence/intrinsic/value_at.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/value_at_c.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/value_at_c.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,11 @@
+// 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_INCLUDE_VALUE_AT_C_HPP
+#define BOOST_FUSION_INCLUDE_VALUE_AT_C_HPP
+
+#include <boost/fusion/sequence/intrinsic/value_at_c.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/value_at_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/value_at_key.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_VALUE_AT_KEY_HPP
+#define BOOST_FUSION_INCLUDE_VALUE_AT_KEY_HPP
+
+#include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/value_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/value_of.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_VALUE_OF_HPP
+#define BOOST_FUSION_INCLUDE_VALUE_OF_HPP
+
+#include <boost/fusion/iterator/value_of.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/value_of_data.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/value_of_data.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,11 @@
+// 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_INCLUDE_VALUE_OF_DATA_HPP
+#define BOOST_FUSION_INCLUDE_VALUE_OF_DATA_HPP
+
+#include <boost/fusion/iterator/value_of_data.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/vector.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_VECTOR_HPP
+#define BOOST_FUSION_INCLUDE_VECTOR_HPP
+
+#include <boost/fusion/container/vector.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/vector10.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/vector10.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_VECTOR10_HPP
+#define BOOST_FUSION_INCLUDE_VECTOR10_HPP
+
+#include <boost/fusion/container/vector/vector10.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/vector20.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/vector20.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_VECTOR20_HPP
+#define BOOST_FUSION_INCLUDE_VECTOR20_HPP
+
+#include <boost/fusion/container/vector/vector20.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/vector30.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/vector30.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_VECTOR30_HPP
+#define BOOST_FUSION_INCLUDE_VECTOR30_HPP
+
+#include <boost/fusion/container/vector/vector30.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/vector40.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/vector40.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_VECTOR40_HPP
+#define BOOST_FUSION_INCLUDE_VECTOR40_HPP
+
+#include <boost/fusion/container/vector/vector40.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/vector50.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/vector50.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_VECTOR50_HPP
+#define BOOST_FUSION_INCLUDE_VECTOR50_HPP
+
+#include <boost/fusion/container/vector/vector50.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/vector_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/vector_fwd.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_VECTOR_FWD_HPP
+#define BOOST_FUSION_INCLUDE_VECTOR_FWD_HPP
+
+#include <boost/fusion/container/vector/vector_fwd.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/vector_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/vector_tie.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_VECTOR_TIE_HPP
+#define BOOST_FUSION_INCLUDE_VECTOR_TIE_HPP
+
+#include <boost/fusion/container/generation/vector_tie.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/view.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/view.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_VIEW_HPP
+#define BOOST_FUSION_INCLUDE_VIEW_HPP
+
+#include <boost/fusion/view.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/zip.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/zip.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_ZIP_HPP
+#define BOOST_FUSION_INCLUDE_ZIP_HPP
+
+#include <boost/fusion/algorithm/transformation/zip.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/zip_view.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/zip_view.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+
+#ifndef BOOST_FUSION_INCLUDE_ZIP_VIEW_HPP
+#define BOOST_FUSION_INCLUDE_ZIP_VIEW_HPP
+
+#include <boost/fusion/view/zip_view.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,25 @@
+/*=============================================================================
+ 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_ITERATOR_HPP
+#define BOOST_FUSION_ITERATOR_HPP
+
+#include <boost/fusion/iterator/advance_c.hpp>
+#include <boost/fusion/iterator/advance.hpp>
+#include <boost/fusion/iterator/basic_iterator.hpp>
+#include <boost/fusion/iterator/deref_data.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/distance.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/iterator/iterator_facade.hpp>
+#include <boost/fusion/iterator/key_of.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/prior.hpp>
+#include <boost/fusion/iterator/value_of_data.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/advance.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/advance.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,90 @@
+/*=============================================================================
+ 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_ITERATOR_ADVANCE_HPP
+#define BOOST_FUSION_ITERATOR_ADVANCE_HPP
+
+#include <boost/fusion/iterator/detail/advance.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace fusion
+{
+ struct random_access_traversal_tag;
+ struct iterator_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct advance_impl
+ {
+ template <typename ItRef, typename N>
+ struct apply
+ : mpl::if_c<
+ (N::value > 0)
+ , advance_detail::forward<ItRef, N::value>
+ , advance_detail::backward<ItRef, N::value>
+ >::type
+ {};
+ };
+
+ template <>
+ struct advance_impl<iterator_facade_tag>
+ {
+ template <typename ItRef, typename N>
+ struct apply
+ : detail::remove_reference<ItRef>::type::
+ template advance<ItRef, N>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename It, int N>
+ struct advance_c
+ : extension::advance_impl<typename traits::tag_of<It>::type>::
+ template apply<
+ typename detail::add_lref<It>::type
+ , mpl::int_<N>
+ >
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<It>));
+ BOOST_FUSION_STATIC_ASSERT((
+ N>=0 ||
+ traits::is_bidirectional<It>::value));
+
+ };
+
+ template <typename It, typename N>
+ struct advance
+ : extension::advance_impl<typename traits::tag_of<It>::type>::
+ template apply<typename detail::add_lref<It>::type, N>
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<It>));
+ BOOST_FUSION_STATIC_ASSERT((
+ N::value>=0 ||
+ traits::is_bidirectional<It>::value));
+ };
+ }
+
+ template <int N, typename It>
+ inline typename result_of::advance_c<It const&, N>::type const
+ advance_c(It const& it)
+ {
+ return result_of::advance_c<It const&, N>::call(it);
+ }
+
+ template<typename N, typename It>
+ inline typename result_of::advance<It const&, N>::type const
+ advance(It const& it)
+ {
+ return result_of::advance<It const&, N>::call(it);
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/advance_c.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/advance_c.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,11 @@
+// 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_ITERATOR_ADVANCE_C_HPP
+#define BOOST_FUSION_ITERATOR_ADVANCE_C_HPP
+
+#include <boost/fusion/iterator/advance.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/basic_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/basic_iterator.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,153 @@
+// 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_ITERATOR_BASIC_ITERATOR_HPP
+#define BOOST_FUSION_ITERATOR_BASIC_ITERATOR_HPP
+
+#include <boost/fusion/iterator/iterator_facade.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/equal_to.hpp>
+#include <boost/mpl/minus.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <typename Tag>
+ struct deref_impl;
+
+ template <typename Tag>
+ struct value_of_data_impl;
+
+ template <typename Tag>
+ struct key_of_impl;
+
+ template <typename Tag>
+ struct deref_data_impl;
+ }
+
+ template<
+ typename Tag
+ , typename Category
+ , typename SeqRef
+ , int Pos
+ >
+ struct basic_iterator
+ : iterator_facade<
+ basic_iterator<Tag,Category,SeqRef,Pos>
+ , Category
+ >
+ {
+ typedef mpl::int_<Pos> index;
+ typedef SeqRef seq_type;
+
+ template <typename ItRef>
+ struct value_of
+ : extension::value_of_impl<Tag>::template apply<ItRef>
+ {};
+
+ template <typename ItRef>
+ struct deref
+ : extension::deref_impl<Tag>::template apply<ItRef>
+ {};
+
+ template <typename ItRef>
+ struct value_of_data
+ : extension::value_of_data_impl<Tag>::template apply<ItRef>
+ {};
+
+ template <typename ItRef>
+ struct key_of
+ : extension::key_of_impl<Tag>::template apply<ItRef>
+ {};
+
+ template <typename ItRef>
+ struct deref_data
+ : extension::deref_data_impl<Tag>::template apply<ItRef>
+ {};
+
+ template <typename ItRef, typename N>
+ struct advance
+ {
+ typedef
+ basic_iterator<
+ Tag
+ , Category
+ , SeqRef
+ , Pos + N::value
+ >
+ type;
+
+ static type
+ call(ItRef it)
+ {
+ return type(*it.seq,0);
+ }
+ };
+
+ template <typename ItRef>
+ struct next
+ : advance<ItRef, mpl::int_<1> >
+ {};
+
+ template <typename ItRef>
+ struct prior
+ : advance<ItRef, mpl::int_<-1> >
+ {};
+
+ template <typename It1Ref, typename It2Ref>
+ struct distance
+ : mpl::minus<
+ typename detail::remove_reference<It2Ref>::type::index
+ , typename detail::remove_reference<It1Ref>::type::index
+ >
+ {};
+
+ template <typename It1Ref, typename It2Ref>
+ struct equal_to
+ {
+ typedef typename detail::remove_reference<It2Ref>::type it2;
+
+ typedef
+ mpl::and_<
+ is_same<
+ typename detail::identity<SeqRef>::type
+ , typename detail::identity<typename it2::seq_type>::type
+ >
+ , mpl::equal_to<index,typename it2::index>
+ >
+ type;
+ };
+
+ template<typename OtherIt>
+ basic_iterator(OtherIt const& it)
+ : seq(it.seq)
+ {}
+
+ basic_iterator(SeqRef seq, int)
+ : seq(&seq)
+ {}
+
+ template<typename OtherIt>
+ basic_iterator&
+ operator=(OtherIt const& it)
+ {
+ seq=it.seq;
+ return *this;
+ }
+
+ typename detail::remove_reference<SeqRef>::type* seq;
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/deref.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/deref.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,61 @@
+/*=============================================================================
+ 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_ITERATOR_DEREF_HPP
+#define BOOST_FUSION_ITERATOR_DEREF_HPP
+
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/iterator_base.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ struct iterator_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct deref_impl;
+
+ template <>
+ struct deref_impl<iterator_facade_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ : detail::remove_reference<ItRef>::type::template deref<ItRef>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename It>
+ struct deref
+ : extension::deref_impl<typename traits::tag_of<It>::type>::
+ template apply<typename detail::add_lref<It>::type>
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<It>));
+ };
+ }
+
+ template <typename It>
+ typename result_of::deref<It const&>::type
+ deref(It const& it)
+ {
+ return result_of::deref<It const&>::call(it);
+ }
+
+ template <typename It>
+ typename result_of::deref<It const&>::type
+ operator*(iterator_base<It> const& it)
+ {
+ return fusion::deref(it.cast());
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/deref_data.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/deref_data.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,55 @@
+/*=============================================================================
+ 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_ITERATOR_DEREF_DATA_HPP
+#define BOOST_FUSION_ITERATOR_DEREF_DATA_HPP
+
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ struct iterator_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct deref_data_impl;
+
+ template <>
+ struct deref_data_impl<iterator_facade_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ : detail::remove_reference<ItRef>::type::
+ template deref_data<ItRef>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename It>
+ struct deref_data
+ : extension::deref_data_impl<typename traits::tag_of<It>::type>::
+ template apply<typename detail::add_lref<It>::type>
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<It>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_associative<It>));
+ };
+ }
+
+ template <typename It>
+ typename result_of::deref_data<It const&>::type
+ deref_data(It const& it)
+ {
+ return result_of::deref_data<It const&>::call(it);
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/advance.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/advance.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_ITERATOR_DETAIL_ADVANCE_HPP
+#define BOOST_FUSION_ITERATOR_DETAIL_ADVANCE_HPP
+
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/prior.hpp>
+
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost { namespace fusion { namespace advance_detail
+{
+ // Default advance implementation, perform next(it)
+ // or prior(it) N times.
+
+ template <typename ItRef, int N>
+ struct forward;
+
+ template <typename ItRef, int N>
+ struct next_forward
+ {
+ typedef typename
+ forward<
+ typename result_of::next<ItRef>::type
+ , N-1
+ >::type
+ type;
+ };
+
+ template <typename ItRef, int N>
+ struct forward
+ {
+ typedef typename
+ mpl::eval_if_c<
+ (N == 0)
+ , mpl::identity<ItRef>
+ , next_forward<ItRef, N>
+ >::type
+ type;
+
+ static type
+ call(type it)
+ {
+ return it;
+ }
+
+ template <typename OtherIt>
+ static type
+ call(OtherIt const& it)
+ {
+ return call(fusion::next(it));
+ }
+ };
+
+ template <typename ItRef, int N>
+ struct backward;
+
+ template <typename ItRef, int N>
+ struct next_backward
+ {
+ typedef typename
+ backward<
+ typename result_of::prior<ItRef>::type
+ , N+1
+ >::type
+ type;
+ };
+
+ template <typename ItRef, int N>
+ struct backward
+ {
+ typedef typename
+ mpl::eval_if_c<
+ (N == 0)
+ , mpl::identity<ItRef>
+ , next_backward<ItRef, N>
+ >::type
+ type;
+
+ static type
+ call(type it)
+ {
+ return it;
+ }
+
+ template <typename OtherIt>
+ static type
+ call(OtherIt const& it)
+ {
+ return call(fusion::prior(it));
+ }
+ };
+
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/distance.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/distance.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,52 @@
+/*=============================================================================
+ 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_ITERATOR_DETAIL_DISTANCE_HPP
+#define BOOST_FUSION_ITERATOR_DETAIL_DISTANCE_HPP
+
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/next.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost { namespace fusion { namespace distance_detail
+{
+ // Default distance implementation, linear
+ // search for the Last iterator.
+
+ template <typename First, typename Last>
+ struct linear_distance;
+
+ template <typename First, typename Last>
+ struct next_distance
+ {
+ typedef typename
+ mpl::next<
+ typename linear_distance<
+ typename result_of::next<First>::type
+ , Last
+ >::type
+ >::type
+ type;
+ };
+
+ template <typename First, typename Last>
+ struct linear_distance
+ : mpl::eval_if<
+ result_of::equal_to<First, Last>
+ , mpl::identity<mpl::int_<0> >
+ , next_distance<First, Last>
+ >::type
+ {};
+
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/distance.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/distance.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,65 @@
+/*=============================================================================
+ 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_ITERATOR_DISTANCE_HPP
+#define BOOST_FUSION_ITERATOR_DISTANCE_HPP
+
+#include <boost/fusion/iterator/detail/distance.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace fusion
+{
+ struct random_access_traversal_tag;
+ struct iterator_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct distance_impl
+ {
+ template <typename FirstRef, typename LastRef>
+ struct apply
+ : distance_detail::linear_distance<FirstRef, LastRef>
+ {};
+ };
+
+ template <>
+ struct distance_impl<iterator_facade_tag>
+ {
+ template <typename FirstRef, typename LastRef>
+ struct apply
+ : detail::remove_reference<FirstRef>::type::
+ template distance<FirstRef, LastRef>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename First, typename Last>
+ struct distance
+ : extension::distance_impl<typename traits::tag_of<First>::type>::
+ template apply<
+ typename detail::add_lref<First>::type
+ , typename detail::add_lref<Last>::type
+ >::type
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<First>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<Last>));
+ };
+ }
+
+ template <typename First, typename Last>
+ inline typename result_of::distance<First const&, Last const&>::type
+ distance(First const& a, Last const& b)
+ {
+ return typename result_of::distance<First const&, Last const&>::type();
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/equal_to.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/equal_to.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,87 @@
+/*=============================================================================
+ 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_ITERATOR_EQUAL_TO_HPP
+#define BOOST_FUSION_ITERATOR_EQUAL_TO_HPP
+
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/is_iterator.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/mpl/and.hpp>
+#include <boost/utility/enable_if.hpp>
+
+//TODO constexpr
+
+namespace boost { namespace fusion
+{
+ struct iterator_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct equal_to_impl;
+
+ template <>
+ struct equal_to_impl<iterator_facade_tag>
+ {
+ template <typename It1Ref, typename It2Ref>
+ struct apply
+ : detail::remove_reference<It1Ref>::type::
+ template equal_to<It1Ref, It2Ref>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename It1, typename It2>
+ struct equal_to
+ : extension::equal_to_impl<typename traits::tag_of<It1>::type>::
+ template apply<
+ typename detail::add_lref<It1>::type
+ , typename detail::add_lref<It2>::type
+ >::type
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<It1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<It2>));
+ };
+ }
+
+ namespace iterator_operators
+ {
+ template <typename It1, typename It2>
+ inline typename
+ enable_if<
+ mpl::and_<traits::is_iterator<It1>, traits::is_iterator<It2> >
+ , bool
+ >::type
+ operator==(It1 const&, It2 const&)
+ {
+ return result_of::equal_to<It1 const&, It1 const&>::value;
+ }
+
+ template <typename It1, typename It2>
+ inline typename
+ enable_if<
+ mpl::and_<
+ traits::is_iterator<It1>
+ , traits::is_iterator<It2>
+ >
+ , bool
+ >::type
+ operator!=(It1 const&, It1 const&)
+ {
+ return !result_of::equal_to<It1 const&, It1 const&>::value;
+ }
+ }
+
+ using iterator_operators::operator==;
+ using iterator_operators::operator!=;
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/iterator_facade.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/iterator_facade.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,47 @@
+// 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_ITERATOR_ITERATOR_FACADE_HPP
+#define BOOST_FUSION_ITERATOR_ITERATOR_FACADE_HPP
+
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/iterator/detail/advance.hpp>
+#include <boost/fusion/support/iterator_base.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/mpl/always.hpp>
+#include <boost/mpl/apply.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+ struct iterator_facade_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct advance_impl;
+ }
+
+ template <typename Derived, typename Category>
+ struct iterator_facade
+ : iterator_base<Derived>
+ {
+ typedef iterator_facade_tag fusion_tag;
+ typedef Derived derived_type;
+ typedef Category category;
+
+ //TODO doc
+
+ template <typename ItRef, typename N>
+ struct advance
+ : extension::advance_impl<
+ typename mpl::apply<mpl::always<void_>,ItRef>::type
+ >::template apply<ItRef,N>
+ {};
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/key_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/key_of.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_ITERATOR_KEY_OF_HPP
+#define BOOST_FUSION_ITERATOR_KEY_OF_HPP
+
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ struct iterator_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct key_of_impl;
+
+ template <>
+ struct key_of_impl<iterator_facade_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ : detail::remove_reference<ItRef>::type::
+ template key_of<ItRef>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename It>
+ struct key_of
+ : extension::key_of_impl<typename traits::tag_of<It>::type>::
+ template apply<typename detail::add_lref<It>::type>
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<It>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_associative<It>));
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/next.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/next.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,52 @@
+/*=============================================================================
+ 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_ITERATOR_NEXT_HPP
+#define BOOST_FUSION_ITERATOR_NEXT_HPP
+
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ struct iterator_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct next_impl;
+
+ template <>
+ struct next_impl<iterator_facade_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ : detail::remove_reference<ItRef>::type::template next<ItRef>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename It>
+ struct next
+ : extension::next_impl<typename traits::tag_of<It>::type>::
+ template apply<typename detail::add_lref<It>::type>
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<It>));
+ };
+ }
+
+ template <typename It>
+ typename result_of::next<It const&>::type const
+ next(It const& it)
+ {
+ return result_of::next<It const&>::call(it);
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/prior.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/prior.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,52 @@
+/*=============================================================================
+ 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_ITERATOR_PRIOR_HPP
+#define BOOST_FUSION_ITERATOR_PRIOR_HPP
+
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ struct iterator_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct prior_impl;
+
+ template <>
+ struct prior_impl<iterator_facade_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ : detail::remove_reference<ItRef>::type::template prior<ItRef>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename It>
+ struct prior
+ : extension::prior_impl<typename traits::tag_of<It>::type>::
+ template apply<typename detail::add_lref<It>::type>
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<It>));
+ };
+ }
+
+ template <typename It>
+ typename result_of::prior<It const&>::type const
+ prior(It const& it)
+ {
+ return result_of::prior<It const&>::call(it);
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/value_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/value_of.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,45 @@
+/*=============================================================================
+ 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_ITERATOR_VALUE_OF_HPP
+#define BOOST_FUSION_ITERATOR_VALUE_OF_HPP
+
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ struct iterator_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <>
+ struct value_of_impl<iterator_facade_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ : detail::remove_reference<ItRef>::type::template value_of<ItRef>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename It>
+ struct value_of
+ : extension::value_of_impl<typename traits::tag_of<It>::type>::
+ template apply<typename detail::add_lref<It>::type>
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<It>));
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/value_of_data.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/value_of_data.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_ITERATOR_VALUE_OF_DATA_HPP
+#define BOOST_FUSION_ITERATOR_VALUE_OF_DATA_HPP
+
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ struct iterator_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_of_data_impl;
+
+ template <>
+ struct value_of_data_impl<iterator_facade_tag>
+ {
+ template <typename ItRef>
+ struct apply
+ : detail::remove_reference<ItRef>::type::
+ template value_of_data<ItRef>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename It>
+ struct value_of_data
+ : extension::value_of_data_impl<typename traits::tag_of<It>::type>::
+ template apply<typename detail::add_lref<It>::type>
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_iterator<It>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_associative<It>));
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,32 @@
+/*=============================================================================
+ 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_MPL_HPP
+#define BOOST_FUSION_MPL_HPP
+
+#include <boost/fusion/support/category_of.hpp>
+
+#include <boost/fusion/mpl/at.hpp>
+#include <boost/fusion/mpl/back.hpp>
+#include <boost/fusion/mpl/begin.hpp>
+#include <boost/fusion/mpl/clear.hpp>
+#include <boost/fusion/mpl/empty.hpp>
+#include <boost/fusion/mpl/end.hpp>
+#include <boost/fusion/mpl/erase_key.hpp>
+#include <boost/fusion/mpl/erase.hpp>
+#include <boost/fusion/mpl/front.hpp>
+#include <boost/fusion/mpl/fusion_iterator.hpp>
+#include <boost/fusion/mpl/has_key.hpp>
+#include <boost/fusion/mpl/insert_range.hpp>
+#include <boost/fusion/mpl/insert.hpp>
+#include <boost/fusion/mpl/pop_back.hpp>
+#include <boost/fusion/mpl/pop_front.hpp>
+#include <boost/fusion/mpl/push_back.hpp>
+#include <boost/fusion/mpl/push_front.hpp>
+#include <boost/fusion/mpl/size.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/at.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/at.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,36 @@
+/*=============================================================================
+ 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_MPL_DETAIL_AT_HPP
+#define BOOST_FUSION_MPL_DETAIL_AT_HPP
+
+#include <boost/fusion/sequence/intrinsic/value_at.hpp>
+
+namespace boost
+{
+ namespace fusion
+ {
+ struct fusion_sequence_tag;
+ }
+
+ namespace mpl
+ {
+ template <typename Tag>
+ struct at_impl;
+
+ template <>
+ struct at_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename SeqRef, typename N>
+ struct apply
+ : fusion::result_of::value_at<SeqRef, N>
+ {};
+ };
+ }
+}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/back.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/back.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,34 @@
+/*=============================================================================
+ 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_MPL_BACK_HPP
+#define BOOST_FUSION_MPL_BACK_HPP
+
+#include <boost/fusion/iterator/prior.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct back_impl;
+
+ template <>
+ struct back_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ : fusion::result_of::value_of<
+ typename fusion::result_of::prior<
+ typename fusion::result_of::end<SeqRef>::type
+ >::type
+ >
+ {};
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/begin.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/begin.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,34 @@
+/*=============================================================================
+ 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_MPL_BEGIN_HPP
+#define BOOST_FUSION_MPL_BEGIN_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/mpl/fusion_iterator.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ {
+ typedef
+ fusion_iterator<
+ typename fusion::result_of::begin<SeqRef>::type
+ >
+ type;
+ };
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/clear.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/clear.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,29 @@
+/*=============================================================================
+ 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_MPL_CLEAR_HPP
+#define BOOST_FUSION_MPL_CLEAR_HPP
+
+#include <boost/fusion/algorithm/transformation/clear.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct clear_impl;
+
+ template <>
+ struct clear_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Seq>
+ struct apply
+ : fusion::result_of::clear<Seq>
+ {};
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/empty.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/empty.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_MPL_EMPTY_HPP
+#define BOOST_FUSION_MPL_EMPTY_HPP
+
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct empty_impl;
+
+ template <>
+ struct empty_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Seq>
+ struct apply
+ : fusion::result_of::empty<Seq>
+ {};
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/end.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/end.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,32 @@
+/*=============================================================================
+ 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_MPL_END_HPP
+#define BOOST_FUSION_MPL_END_HPP
+
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/mpl/fusion_iterator.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Seq>
+ struct apply
+ {
+ typedef
+ fusion_iterator<typename fusion::result_of::end<Seq>::type>
+ type;
+ };
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/erase.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/erase.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,36 @@
+/*=============================================================================
+ 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_MPL_ERASE_HPP
+#define BOOST_FUSION_MPL_ERASE_HPP
+
+#include <boost/fusion/sequence/convert.hpp>
+#include <boost/fusion/algorithm/transformation/erase.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct erase_impl;
+
+ template <>
+ struct erase_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Seq, typename First, typename Last>
+ struct apply
+ {
+ typedef typename
+ fusion::result_of::convert<
+ typename fusion::traits::tag_of<Seq>::type
+ , typename fusion::result_of::erase<Seq, First, Last>::type
+ >::type
+ type;
+ };
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/erase_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/erase_key.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,40 @@
+/*=============================================================================
+ 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_MPL_ERASE_KEY_HPP
+#define BOOST_FUSION_MPL_ERASE_KEY_HPP
+
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/algorithm/transformation/erase_key.hpp>
+#include <boost/fusion/sequence/convert.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct erase_key_impl;
+
+ template <>
+ struct erase_key_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Seq, typename Key>
+ struct apply
+ {
+ typedef typename
+ fusion::result_of::erase_key<Seq, Key>::type
+ result;
+
+ typedef typename
+ fusion::result_of::convert<
+ typename fusion::traits::tag_of<Seq>::type
+ , result
+ >::type
+ type;
+ };
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/front.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/front.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,31 @@
+/*=============================================================================
+ 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_MPL_FRONT_HPP
+#define BOOST_FUSION_MPL_FRONT_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct front_impl;
+
+ template <>
+ struct front_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Seq>
+ struct apply
+ : fusion::result_of::value_of<
+ typename fusion::result_of::begin<Seq>::type
+ >
+ {};
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/fusion_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/fusion_iterator.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,64 @@
+/*=============================================================================
+ 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_MPL_FUSION_ITERATOR_HPP
+#define BOOST_FUSION_MPL_FUSION_ITERATOR_HPP
+
+#include <boost/fusion/iterator/value_of.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>
+#include <boost/fusion/support/category_of.hpp>
+
+#include <boost/mpl/next_prior.hpp>
+#include <boost/mpl/advance_fwd.hpp>
+#include <boost/mpl/distance_fwd.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename It>
+ struct fusion_iterator
+ {
+ typedef typename fusion::result_of::value_of<It>::type type;
+ typedef typename fusion::traits::category_of<It>::type category;
+ typedef It iterator;
+ };
+
+ template <typename It>
+ struct next<fusion_iterator<It> >
+ {
+ typedef
+ fusion_iterator<typename fusion::result_of::next<It>::type>
+ type;
+ };
+
+ template <typename It>
+ struct prior<fusion_iterator<It> >
+ {
+ typedef
+ fusion_iterator<typename fusion::result_of::prior<It>::type>
+ type;
+ };
+
+ template <typename It, typename N>
+ struct advance<fusion_iterator<It>, N>
+ {
+ typedef
+ fusion_iterator<
+ typename fusion::result_of::advance<It, N>::type
+ >
+ type;
+ };
+
+ template <typename First, typename Last>
+ struct distance<fusion_iterator<First>, fusion_iterator<Last> >
+ : fusion::result_of::distance<First, Last>
+ {};
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/has_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/has_key.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_MPL_HAS_KEY_HPP
+#define BOOST_FUSION_MPL_HAS_KEY_HPP
+
+#include <boost/fusion/sequence/intrinsic/has_key.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct has_key_impl;
+
+ template <>
+ struct has_key_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Seq, typename Key>
+ struct apply
+ : fusion::result_of::has_key<Seq, Key>
+ {};
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/insert.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/insert.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,36 @@
+/*=============================================================================
+ 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_MPL_INSERT_HPP
+#define BOOST_FUSION_MPL_INSERT_HPP
+
+#include <boost/fusion/sequence/convert.hpp>
+#include <boost/fusion/algorithm/transformation/insert.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct insert_impl;
+
+ template <>
+ struct insert_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Seq, typename Pos, typename T>
+ struct apply
+ {
+ typedef typename
+ fusion::result_of::convert<
+ typename fusion::traits::tag_of<Seq>::type
+ , typename fusion::result_of::insert<Seq, Pos, T>::type
+ >::type
+ type;
+ };
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/insert_range.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/insert_range.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,36 @@
+/*=============================================================================
+ 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_MPL_INSERT_RANGE_HPP
+#define BOOST_FUSION_MPL_INSERT_RANGE_HPP
+
+#include <boost/fusion/sequence/convert.hpp>
+#include <boost/fusion/algorithm/transformation/insert_range.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct insert_range_impl;
+
+ template <>
+ struct insert_range_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Seq, typename Pos, typename Range>
+ struct apply
+ {
+ typedef typename
+ fusion::result_of::convert<
+ typename fusion::traits::tag_of<Seq>::type
+ , typename fusion::result_of::insert_range<Seq, Pos, Range>::type
+ >::type
+ type;
+ };
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/pop_back.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/pop_back.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,36 @@
+/*=============================================================================
+ 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_MPL_POP_BACK_HPP
+#define BOOST_FUSION_MPL_POP_BACK_HPP
+
+#include <boost/fusion/sequence/convert.hpp>
+#include <boost/fusion/algorithm/transformation/pop_back.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct pop_back_impl;
+
+ template <>
+ struct pop_back_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Seq>
+ struct apply
+ {
+ typedef typename
+ fusion::result_of::convert<
+ typename fusion::traits::tag_of<Seq>::type
+ , typename fusion::result_of::pop_back<Seq>::type
+ >::type
+ type;
+ };
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/pop_front.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/pop_front.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,36 @@
+/*=============================================================================
+ 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_MPL_POP_FRONT_HPP
+#define BOOST_FUSION_MPL_POP_FRONT_HPP
+
+#include <boost/fusion/sequence/convert.hpp>
+#include <boost/fusion/algorithm/transformation/pop_front.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct pop_front_impl;
+
+ template <>
+ struct pop_front_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Seq>
+ struct apply
+ {
+ typedef typename
+ fusion::result_of::convert<
+ typename fusion::traits::tag_of<Seq>::type
+ , typename fusion::result_of::pop_front<Seq>::type
+ >::type
+ type;
+ };
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/push_back.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/push_back.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,36 @@
+/*=============================================================================
+ 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_MPL_PUSH_BACK_HPP
+#define BOOST_FUSION_MPL_PUSH_BACK_HPP
+
+#include <boost/fusion/sequence/convert.hpp>
+#include <boost/fusion/algorithm/transformation/push_back.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct push_back_impl;
+
+ template <>
+ struct push_back_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Seq, typename T>
+ struct apply
+ {
+ typedef typename
+ fusion::result_of::convert<
+ typename fusion::traits::tag_of<Seq>::type
+ , typename fusion::result_of::push_back<Seq, T>::type
+ >::type
+ type;
+ };
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/push_front.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/push_front.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,36 @@
+/*=============================================================================
+ 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_MPL_PUSH_FRONT_HPP
+#define BOOST_FUSION_MPL_PUSH_FRONT_HPP
+
+#include <boost/fusion/sequence/convert.hpp>
+#include <boost/fusion/algorithm/transformation/push_front.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct push_front_impl;
+
+ template <>
+ struct push_front_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Seq, typename T>
+ struct apply
+ {
+ typedef typename
+ fusion::result_of::convert<
+ typename fusion::traits::tag_of<Seq>::type
+ , typename fusion::result_of::push_front<Seq, T>::type
+ >::type
+ type;
+ };
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/size.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/size.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_MPL_SIZE_HPP
+#define BOOST_FUSION_MPL_SIZE_HPP
+
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct size_impl;
+
+ template <>
+ struct size_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Seq>
+ struct apply
+ : fusion::result_of::size<Seq>
+ {};
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,17 @@
+/*=============================================================================
+ 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_SEQUENCE_HPP
+#define BOOST_FUSION_SEQUENCE_HPP
+
+#include <boost/fusion/sequence/comparison.hpp>
+#include <boost/fusion/sequence/convert.hpp>
+#include <boost/fusion/sequence/intrinsic.hpp>
+#include <boost/fusion/sequence/io.hpp>
+#include <boost/fusion/sequence/sequence_facade.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,18 @@
+/*=============================================================================
+ 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_SEQUENCE_COMPARISON_HPP
+#define BOOST_FUSION_SEQUENCE_COMPARISON_HPP
+
+#include <boost/fusion/sequence/comparison/equal_to.hpp>
+#include <boost/fusion/sequence/comparison/greater.hpp>
+#include <boost/fusion/sequence/comparison/greater_equal.hpp>
+#include <boost/fusion/sequence/comparison/less.hpp>
+#include <boost/fusion/sequence/comparison/less_equal.hpp>
+#include <boost/fusion/sequence/comparison/not_equal_to.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/enable_comparison.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/enable_comparison.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 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_SEQUENCE_COMPARISON_DETAIL_ENABLE_COMPARISON_HPP
+#define BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_ENABLE_COMPARISON_HPP
+
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+
+#include <boost/mpl/or.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/equal_to.hpp>
+#include <boost/type_traits/is_base_of.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename Seq1Ref, typename Seq2Ref>
+ struct enable_equality
+ : mpl::or_<
+ traits::is_sequence<Seq1Ref>
+ , traits::is_sequence<Seq2Ref>
+ >
+ {};
+
+ template <typename Seq1Ref, typename Seq2Ref>
+ struct enable_comparison
+ : mpl::and_<
+ mpl::or_<
+ traits::is_sequence<Seq1Ref>
+ , traits::is_sequence<Seq2Ref>
+ >
+ , mpl::equal_to<result_of::size<Seq1Ref>, result_of::size<Seq2Ref> >
+ >
+ {};
+
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/equal_to.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/equal_to.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,63 @@
+/*=============================================================================
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ 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_SEQUENCE_COMPARISON_DETAIL_EQUAL_TO_HPP
+#define BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_EQUAL_TO_HPP
+
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename Seq1Ref, typename Seq2Ref, bool same_size>
+ struct sequence_equal_to
+ {
+ typedef typename result_of::end<Seq1Ref>::type end1_type;
+ typedef typename result_of::end<Seq2Ref>::type end2_type;
+
+ template <typename It1, typename It2>
+ static bool
+ call(It1 const&, It2 const&, mpl::true_)
+ {
+ return true;
+ }
+
+ template <typename It1, typename It2>
+ static bool
+ call(It1 const& it1, It2 const& it2, mpl::false_)
+ {
+ return fusion::deref(it1) == fusion::deref(it2)&&
+ call(fusion::next(it1), fusion::next(it2));
+ }
+
+ template <typename It1, typename It2>
+ static bool
+ call(It1 const& it1, It2 const& it2)
+ {
+ return call(it1,
+ it2,
+ typename result_of::equal_to<It1, end1_type>::type());
+ }
+ };
+
+ template <typename Seq1Ref, typename Seq2Ref>
+ struct sequence_equal_to<Seq1Ref, Seq2Ref, false>
+ {
+ template <typename It1, typename It2>
+ static bool
+ call(It1 const&, It2 const&)
+ {
+ return false;
+ }
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/greater.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/greater.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,53 @@
+/*=============================================================================
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ 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_SEQUENCE_COMPARISON_DETAIL_GREATER_HPP
+#define BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_GREATER_HPP
+
+#include <boost/mpl/bool.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename Seq1, typename Seq2>
+ struct sequence_greater
+ {
+ typedef typename result_of::end<Seq1>::type end1_type;
+ typedef typename result_of::end<Seq2>::type end2_type;
+
+ template <typename It1, typename I2>
+ static bool
+ call(It1 const&, I2 const&, mpl::true_)
+ {
+ return false;
+ }
+
+ template <typename It1, typename I2>
+ static bool
+ call(It1 const& it1, It2 const& it2, mpl::false_)
+ {
+ return fusion::deref(it1) > fusion::deref(it2)||
+ (!(fusion::deref(it2) > fusion::deref(it)) &&
+ call(fusion::next(it1), fusion::next(it2)));
+ }
+
+ template <typename It1, typename It2>
+ static bool
+ call(It1 const& it1, It2 const& it2)
+ {
+ return call(
+ it1,
+ it2,
+ typename result_of::equal_to<It1, end1_type>::type());
+ }
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/greater_equal.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/greater_equal.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,53 @@
+/*=============================================================================
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ 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_SEQUENCE_COMPARISON_DETAIL_GREATER_EQUAL_HPP
+#define BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_GREATER_EQUAL_HPP
+
+#include <boost/mpl/bool.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename Seq1Ref, typename Seq2Ref>
+ struct sequence_greater_equal
+ {
+ typedef typename result_of::end<Seq1Ref>::type end1_type;
+ typedef typename result_of::end<Seq2Ref>::type end2_type;
+
+ template <typename It1, typename It2>
+ static bool
+ call(It1 const&, It2 const&, mpl::true_)
+ {
+ return true;
+ }
+
+ template <typename It1, typename It2>
+ static bool
+ call(It1 const& it1, It2 const& it1, mpl::false_)
+ {
+ return fusion::deref(it1) >= fusion::deref(it2) ||
+ (!(*fusion::deref(it2) >= *fusion::deref(it1)) &&
+ call(fusion::next(a), fusion::next(b)));
+ }
+
+ template <typename It1, typename It2>
+ static bool
+ call(It1 const& it1, It2 const& it2)
+ {
+ return call(
+ it1,
+ it2,
+ typename result_of::equal_to<It1, end1_type>::type());
+ }
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/less.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/less.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,53 @@
+/*=============================================================================
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ 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_SEQUENCE_COMPARISON_DETAIL_LESS_HPP
+#define BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_LESS_HPP
+
+#include <boost/mpl/bool.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename Seq1, typename Seq2>
+ struct sequence_less
+ {
+ typedef typename result_of::end<Seq1>::type end1_type;
+ typedef typename result_of::end<Seq2>::type end2_type;
+
+ template <typename It1, typename It2>
+ static bool
+ call(It1 const&, It2 const&, mpl::true_)
+ {
+ return false;
+ }
+
+ template <typename It1, typename I2>
+ static bool
+ call(It1 const& it1, I2 const& it2, mpl::false_)
+ {
+ return fusion::deref(it1) < fusion::deref(it2) ||
+ (!(fusion::deref(it2) < fusion::deref(it1)) &&
+ call(fusion::next(it1), fusion::next(it2)));
+ }
+
+ template <typename It1, typename It2>
+ static bool
+ call(It1 const& it1, It2 const& it2)
+ {
+ return call(
+ it1,
+ it2,
+ typename result_of::equal_to<It1, end1_type>::type());
+ }
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/less_equal.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/less_equal.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,53 @@
+/*=============================================================================
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ 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_SEQUENCE_COMPARISON_DETAIL_LESS_EQUAL_HPP
+#define BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_LESS_EQUAL_HPP
+
+#include <boost/mpl/bool.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename Seq1, typename Seq2>
+ struct sequence_less_equal
+ {
+ typedef typename result_of::end<Seq1>::type end1_type;
+ typedef typename result_of::end<Seq2>::type end2_type;
+
+ template <typename It1, typename It2>
+ static bool
+ call(It1 const&, It2 const&, mpl::true_)
+ {
+ return true;
+ }
+
+ template <typename It1, typename It2>
+ static bool
+ call(It1 const& it1, It2 const& it2, mpl::false_)
+ {
+ return fusion::deref(it1) <= fusion::deref(it2) ||
+ (!(fusion::deref(it2) <= fusion::deref(it1)) &&
+ call(fusion::next(it1), fusion::next(it2)));
+ }
+
+ template <typename It1, typename It2>
+ static bool
+ call(It1 const& it1, It2 const& it2)
+ {
+ return call(
+ it1,
+ it2,
+ typename result_of::equal_to<It1, end1_type>::type());
+ }
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/not_equal_to.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/not_equal_to.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,63 @@
+/*=============================================================================
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ 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_SEQUENCE_COMPARISON_DETAIL_NOT_EQUAL_TO_HPP
+#define BOOST_FUSION_SEQUENCE_COMPARISON_DETAIL_NOT_EQUAL_TO_HPP
+
+#include <boost/mpl/bool.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename Seq1Ref, typename Seq2Ref, bool same_size>
+ struct sequence_not_equal_to
+ {
+ typedef typename result_of::end<Seq1Ref>::type end1_type;
+ typedef typename result_of::end<Seq2Ref>::type end2_type;
+
+ template <typename It1, typename It2>
+ static bool
+ call(It1 const&, It2 const&, mpl::true_)
+ {
+ return false;
+ }
+
+ template <typename It1, typename It2>
+ static bool
+ call(It1 const& it1, It2 const& it2, mpl::false_)
+ {
+ return fusion::deref(it1) != fusion::deref(it2) ||
+ call(fusion::next(it1), fusion::next(it2));
+ }
+
+ template <typename It1, typename It2>
+ static bool
+ call(It1 const& it1, It2 const& it2)
+ {
+ return call(
+ it1,
+ it2,
+ typename result_of::equal_to<It1, end1_type>::type());
+ }
+ };
+
+ template <typename Seq1Ref, typename Seq2Ref>
+ struct sequence_not_equal_to<Seq1Ref, Seq2Ref, false>
+ {
+ template <typename It1, typename It2>
+ static bool
+ call(It1 const&, It2 const&)
+ {
+ return true;
+ }
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/equal_to.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/equal_to.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,61 @@
+/*=============================================================================
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ 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_SEQUENCE_COMPARISON_EQUAL_TO_HPP
+#define BOOST_FUSION_SEQUENCE_COMPARISON_EQUAL_TO_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/fusion/sequence/comparison/detail/equal_to.hpp>
+#include <boost/fusion/sequence/comparison/detail/enable_comparison.hpp>
+
+namespace boost { namespace fusion
+{
+ template <typename Seq1, typename Seq2>
+ inline bool
+ equal_to(Seq1 const& seq1, Seq2 const& seq2)
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq2>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq2>));
+
+ return
+ detail::sequence_equal_to<
+ Seq1 const&
+ , Seq2 const&
+ , result_of::size<Seq1 const&>::value==
+ result_of::size<Seq2 const&>::value
+ >::call(fusion::begin(seq1), fusion::begin(seq2));
+ }
+
+ namespace operators
+ {
+ template <typename Seq1, typename Seq2>
+ inline typename
+ enable_if<
+ detail::enable_equality<Seq1 const&, Seq2 const&>
+ , bool
+ >::type
+ operator==(Seq1 const& seq1, Seq2 const& seq2)
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq2>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq2>));
+
+ return fusion::equal_to(seq1, seq2);
+ }
+ }
+ using operators::operator==;
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/greater.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/greater.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,66 @@
+/*=============================================================================
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ 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_SEQUENCE_COMPARISON_GREATER_HPP
+#define BOOST_FUSION_SEQUENCE_COMPARISON_GREATER_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/fusion/sequence/comparison/detail/enable_comparison.hpp>
+#ifdef FUSION_DIRECT_OPERATOR_USAGE
+# include <boost/fusion/sequence/comparison/detail/greater.hpp>
+#else
+# include <boost/fusion/sequence/comparison/less.hpp>
+#endif
+
+namespace boost { namespace fusion
+{
+ template <typename Seq1, typename Seq2>
+ inline bool
+ greater(Seq1 const& seq1, Seq2 const& seq2)
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq2>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq2>));
+
+#ifdef FUSION_DIRECT_OPERATOR_USAGE
+ return
+ detail::sequence_greater<
+ Seq1 const&
+ , Seq2 const&
+ >::call(fusion::begin(seq1), fusion::begin(seq2));
+#else
+ return seq2 < seq1;
+#endif
+ }
+
+ namespace operators
+ {
+ template <typename Seq1, typename Seq2>
+ inline typename
+ enable_if<
+ detail::enable_comparison<Seq1 const&, Seq2 const&>
+ , bool
+ >::type
+ operator>(Seq1 const& seq1, Seq2 const& seq2)
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq2>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq2>));
+
+ return fusion::greater(seq1, seq2);
+ }
+ }
+ using operators::operator>;
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/greater_equal.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/greater_equal.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,66 @@
+/*=============================================================================
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ 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_SEQUENCE_COMPARISON_GREATER_EQUAL_HPP
+#define BOOST_FUSION_SEQUENCE_COMPARISON_GREATER_EQUAL_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/fusion/sequence/comparison/detail/enable_comparison.hpp>
+#ifdef FUSION_DIRECT_OPERATOR_USAGE
+# include <boost/fusion/sequence/comparison/detail/greater_equal.hpp>
+#else
+# include <boost/fusion/sequence/comparison/less.hpp>
+#endif
+
+namespace boost { namespace fusion
+{
+ template <typename Seq1, typename Seq2>
+ inline bool
+ greater_equal(Seq1 const& seq1, Seq2 const& seq2)
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq2>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq2>));
+
+#ifdef FUSION_DIRECT_OPERATOR_USAGE
+ return
+ detail::sequence_greater_equal<
+ Seq1 const&
+ , Seq2 const&
+ >::call(fusion::begin(seq1), fusion::begin(seq2));
+#else
+ return !(seq1 < seq2);
+#endif
+ }
+
+ namespace operators
+ {
+ template <typename Seq1, typename Seq2>
+ inline typename
+ enable_if<
+ detail::enable_comparison<Seq1 const&, Seq2 const&>
+ , bool
+ >::type
+ operator>=(Seq1 const& seq1, Seq2 const& seq2)
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq2>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq2>));
+
+ return fusion::greater_equal(seq1, seq2);
+ }
+ }
+ using operators::operator>=;
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/less.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/less.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,58 @@
+/*=============================================================================
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ 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_SEQUENCE_COMPARISON_LESS_HPP
+#define BOOST_FUSION_SEQUENCE_COMPARISON_LESS_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/fusion/sequence/comparison/detail/less.hpp>
+#include <boost/fusion/sequence/comparison/detail/enable_comparison.hpp>
+
+namespace boost { namespace fusion
+{
+ template <typename Seq1, typename Seq2>
+ inline bool
+ less(Seq1 const& seq1, Seq2 const& seq2)
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq2>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq2>));
+
+ return
+ detail::sequence_less<
+ Seq1 const&
+ , Seq2 const&
+ >::call(fusion::begin(seq1), fusion::begin(seq2));
+ }
+
+ namespace operators
+ {
+ template <typename Seq1, typename Seq2>
+ inline typename
+ enable_if<
+ detail::enable_equality<Seq1 const&, Seq2 const&>
+ , bool
+ >::type
+ operator<(Seq1 const& seq1, Seq2 const& seq2)
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq2>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq2>));
+
+ return fusion::less(seq1, seq2);
+ }
+ }
+ using operators::operator<;
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/less_equal.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/less_equal.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,96 @@
+/*=============================================================================
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ 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_SEQUENCE_COMPARISON_LESS_EQUAL_HPP
+#define BOOST_FUSION_SEQUENCE_COMPARISON_LESS_EQUAL_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/fusion/sequence/comparison/detail/enable_comparison.hpp>
+# ifdef FUSION_DIRECT_OPERATOR_USAGE
+#include <boost/fusion/sequence/comparison/detail/less_equal.hpp>
+#else
+# include <boost/fusion/sequence/comparison/less.hpp>
+#endif
+
+namespace boost { namespace fusion
+{
+ template <typename Seq1, typename Seq2>
+ inline bool
+ less_equal(Seq1 const& seq1, Seq2 const& seq2)
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq2>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq2>));
+
+#ifdef FUSION_DIRECT_OPERATOR_USAGE
+ return
+ detail::sequence_less_equal<
+ Seq1 const&
+ , Seq2 const&
+ , result_of::size<Seq1 const&>::value==
+ result_of::size<Seq2 const&>::value
+ >::call(fusion::begin(seq1), fusion::begin(seq2));
+#else
+ return !(seq2 < seq1);
+#endif
+ }
+
+ namespace operators
+ {
+#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1400)
+// Workaround for VC8.0 and VC7.1
+ template <typename Seq1, typename Seq2>
+ inline bool
+ operator<=(sequence_base<Seq1> const& seq1, sequence_base<Seq2 const&> const& seq2)
+ {
+ return less_equal(seq1.derived(), seq2.derived());
+ }
+
+ template <typename Seq1, typename Seq2>
+ inline typename disable_if<detail::is_native_fusion_sequence<Seq2 const&>, bool>::type
+ operator<=(sequence_base<Seq1> const& seq1, Seq2 const& seq2)
+ {
+ return less_equal(seq1.derived(), seq2);
+ }
+
+ template <typename Seq1, typename Seq2>
+ inline typename disable_if<detail::is_native_fusion_sequence<Seq1 const&>, bool>::type
+ operator<=(Seq1 const& seq1, sequence_base<Seq2> const& b)
+ {
+ return less_equal(seq1, seq2.derived());
+ }
+
+#else
+// Somehow VC8.0 and VC7.1 does not like this code
+// but barfs somewhere else.
+
+ template <typename Seq1, typename Seq2>
+ inline typename
+ enable_if<
+ detail::enable_comparison<Seq1 const&, Seq2 const&>
+ , bool
+ >::type
+ operator<=(Seq1 const& seq1, Seq2 const& seq2)
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq2>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq2>));
+
+ return fusion::less_equal(seq1, seq2);
+ }
+#endif
+ }
+ using operators::operator<=;
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/not_equal_to.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/not_equal_to.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,68 @@
+/*=============================================================================
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ 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_SEQUENCE_COMPARISON_NOT_EQUAL_TO_HPP
+#define BOOST_FUSION_SEQUENCE_COMPARISON_NOT_EQUAL_TO_HPP
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/fusion/sequence/comparison/detail/enable_comparison.hpp>
+#ifdef FUSION_DIRECT_OPERATOR_USAGE
+# include <boost/fusion/sequence/comparison/detail/not_equal_to.hpp>
+#else
+# include <boost/fusion/sequence/comparison/equal_to.hpp>
+#endif
+
+namespace boost { namespace fusion
+{
+ template <typename Seq1, typename Seq2>
+ inline bool
+ not_equal_to(Seq1 const& seq1, Seq2 const& seq2)
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq2>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq2>));
+
+#ifdef FUSION_DIRECT_OPERATOR_USAGE
+ return
+ detail::sequence_not_equal_to<
+ Seq1 const&
+ , Seq2 const&
+ , result_of::size<Seq1 const&>::value==
+ result_of::size<Seq2 const&>::value
+ >::call(fusion::begin(seq1), fusion::begin(seq2));
+#else
+ return !(seq1 == seq2);
+#endif
+ }
+
+ namespace operators
+ {
+ template <typename Seq1, typename Seq2>
+ inline typename
+ enable_if<
+ detail::enable_equality<Seq1 const&, Seq2 const&>
+ , bool
+ >::type
+ operator!=(Seq1 const& seq1, Seq2 const& seq2)
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq2>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq2>));
+
+ return fusion::not_equal_to(seq1, seq2);
+ }
+ }
+ using operators::operator!=;
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/convert.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/convert.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,64 @@
+/*=============================================================================
+ 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_SEQUENCE_CONVERT_HPP
+#define BOOST_FUSION_SEQUENCE_CONVERT_HPP
+
+#include <boost/config.hpp>
+#include <boost/fusion/container/vector/convert.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+//TODO doc!!!
+namespace boost { namespace fusion
+{
+ namespace extension
+ {
+ template <typename Tag>
+ struct convert_impl
+ {
+ template<typename SeqRef>
+ struct apply
+ {
+ typedef typename result_of::as_vector<SeqRef>::type type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return fusion::as_vector(seq);
+ }
+ };
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename Tag, typename Seq>
+ struct convert
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+
+ typedef typename extension::convert_impl<Tag> gen;
+
+ typedef typename
+ gen::template apply<typename detail::add_lref<Seq>::type>::type
+ type;
+ };
+ }
+
+ template <typename Tag, typename Seq>
+ inline typename
+ result_of::convert<Tag, BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
+ convert(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return result_of::convert<Tag, BOOST_FUSION_R_ELSE_CLREF(Seq)>::
+ gen::call(seq);
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,26 @@
+/*=============================================================================
+ 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_SEQUENCE_INTRINSIC_HPP
+#define BOOST_FUSION_SEQUENCE_INTRINSIC_HPP
+
+#include <boost/fusion/sequence/intrinsic/at_c.hpp>
+#include <boost/fusion/sequence/intrinsic/at_key.hpp>
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+#include <boost/fusion/sequence/intrinsic/back.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/sequence/intrinsic/front.hpp>
+#include <boost/fusion/sequence/intrinsic/has_key.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/sequence/intrinsic/swap.hpp>
+#include <boost/fusion/sequence/intrinsic/value_at_c.hpp>
+#include <boost/fusion/sequence/intrinsic/value_at_key.hpp>
+#include <boost/fusion/sequence/intrinsic/value_at.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,118 @@
+/*=============================================================================
+ 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_SEQUENCE_INTRINSIC_AT_HPP
+#define BOOST_FUSION_SEQUENCE_INTRINSIC_AT_HPP
+
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/fusion/container/list/list_fwd.hpp>
+# include <boost/fusion/sequence/intrinsic/size.hpp>
+#endif
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/workaround.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/mpl/int.hpp>
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/mpl/or.hpp>
+# include <boost/type_traits/is_same.hpp>
+#endif
+
+namespace boost { namespace fusion
+{
+ struct sequence_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct at_impl;
+
+ template <>
+ struct at_impl<sequence_facade_tag>
+ {
+ template <typename SeqRef, typename N>
+ struct apply
+ : detail::remove_reference<SeqRef>::type::template at<SeqRef, N>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename Seq, typename N>
+ struct at
+ : extension::at_impl<typename traits::tag_of<Seq>::type>::
+ template apply<typename detail::add_lref<Seq>::type, N>
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((
+ mpl::or_<
+ traits::is_random_access<Seq>
+ , is_same<
+ typename traits::tag_of<Seq>::type
+ , list_tag
+ >
+ >));
+
+ BOOST_FUSION_INDEX_CHECK(N::value,size<Seq>::value);
+ };
+
+ template <typename Seq, int N>
+ struct at_c
+ : at<Seq, mpl::int_<N> >
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((
+ mpl::or_<
+ traits::is_random_access<Seq>
+ , is_same<
+ typename traits::tag_of<Seq>::type
+ , list_tag
+ >
+ >));
+ BOOST_FUSION_INDEX_CHECK(N,size<Seq>::value);
+ };
+ }
+
+ template <typename N, typename Seq>
+ inline typename result_of::at<BOOST_FUSION_R_ELSE_CLREF(Seq), N>::type
+ at(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return result_of::at<BOOST_FUSION_R_ELSE_CLREF(Seq), N>::call(seq);
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename N, typename Seq>
+ inline BOOST_FUSION_EXPLICIT_TEMPLATE_NON_CONST_ARG_OVERLOAD(
+ result_of::at<,Seq,&,N>)
+ at(Seq& seq)
+ {
+ return result_of::at<Seq&, N>::call(seq);
+ }
+#endif
+
+ template <int N, typename Seq>
+ inline typename
+ result_of::at_c<BOOST_FUSION_R_ELSE_CLREF(Seq), N>::type
+ at_c(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return fusion::at<mpl::int_<N> >(seq);
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <int N, typename Seq>
+ inline BOOST_FUSION_EXPLICIT_TEMPLATE_NON_CONST_ARG_OVERLOAD(
+ result_of::at_c<,Seq,&, N>)
+ at_c(Seq& seq)
+ {
+ return fusion::at<mpl::int_<N> >(seq);
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at_c.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at_c.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,13 @@
+/*=============================================================================
+ 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_SEQUENCE_INTRINSIC_AT_C_HPP
+#define BOOST_FUSION_SEQUENCE_INTRINSIC_AT_C_HPP
+
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/at_key.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,98 @@
+/*=============================================================================
+ 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_SEQUENCE_INTRINSIC_AT_KEY_HPP
+#define BOOST_FUSION_SEQUENCE_INTRINSIC_AT_KEY_HPP
+
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/fusion/sequence/intrinsic/has_key.hpp>
+#endif
+#include <boost/fusion/iterator/deref_data.hpp>
+#include <boost/fusion/algorithm/query/find_key.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ struct sequence_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct at_key_impl
+ {
+ template <typename SeqRef, typename Key>
+ struct apply
+ {
+ typedef typename
+ result_of::deref_data<
+ typename result_of::find_key<SeqRef, Key>::type
+ >::type
+ type;
+
+ static type
+ call(SeqRef seq)
+ {
+ return deref_data(find_key<Key>(
+ BOOST_FUSION_FORWARD(SeqRef,seq)));
+ }
+ };
+ };
+
+ template <>
+ struct at_key_impl<sequence_facade_tag>
+ {
+ template <typename SeqRef, typename Key>
+ struct apply
+ : detail::remove_reference<SeqRef>::type::
+ template at_key<SeqRef, Key>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename Seq, typename Key>
+ struct at_key
+ : extension::at_key_impl<typename traits::tag_of<Seq>::type>::
+ template apply<typename detail::add_lref<Seq>::type, Key>
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_associative<Seq>));
+ BOOST_FUSION_MPL_ASSERT((has_key<Seq,Key>));
+ };
+ }
+
+ template <typename Key, typename Seq>
+ inline typename
+ result_of::at_key<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , Key
+ >::type
+ at_key(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return
+ result_of::at_key<
+ BOOST_FUSION_R_ELSE_CLREF(Seq)
+ , Key
+ >::call(seq);
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Key, typename Seq>
+ inline typename result_of::at_key<Seq&, Key>::type
+ at_key(Seq& seq)
+ {
+ return result_of::at_key<Seq&, Key>::call(seq);
+ }
+#endif
+
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/back.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/back.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,55 @@
+/*=============================================================================
+ 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_SEQUENCE_INTRINSIC_BACK_HPP
+#define BOOST_FUSION_SEQUENCE_INTRINSIC_BACK_HPP
+
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/fusion/sequence/intrinsic/empty.hpp>
+#endif
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/iterator/prior.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ struct sequence_facade_tag;
+
+ namespace result_of
+ {
+ template <typename Seq>
+ struct back
+ : deref<typename prior<typename end<Seq>::type>::type>
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+ BOOST_FUSION_MPL_ASSERT_NOT((empty<Seq>));
+ };
+ }
+
+ template <typename Seq>
+ inline typename result_of::back<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
+ back(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return *fusion::prior(fusion::end(seq));
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq>
+ inline typename result_of::back<Seq&>::type
+ back(Seq& seq)
+ {
+ return *fusion::prior(fusion::end(seq));
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/begin.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/begin.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,65 @@
+/*=============================================================================
+ 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_SEQUENCE_INTRINSIC_BEGIN_HPP
+#define BOOST_FUSION_SEQUENCE_INTRINSIC_BEGIN_HPP
+
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ struct sequence_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<sequence_facade_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ : detail::remove_reference<SeqRef>::type::template begin<SeqRef>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename Seq>
+ struct begin
+ : extension::begin_impl<typename traits::tag_of<Seq>::type>::
+ template apply<typename detail::add_lref<Seq>::type>
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+ };
+ }
+
+ template <typename Seq>
+ inline typename
+ result_of::begin<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
+ begin(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return result_of::begin<BOOST_FUSION_R_ELSE_CLREF(Seq)>::call(seq);
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq>
+ inline typename result_of::begin<Seq&>::type
+ begin(Seq& seq)
+ {
+ return result_of::begin<Seq&>::call(seq);
+ }
+#endif
+
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/empty.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/empty.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,63 @@
+/*=============================================================================
+ 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_SEQUENCE_INTRINSIC_EMPTY_HPP
+#define BOOST_FUSION_SEQUENCE_INTRINSIC_EMPTY_HPP
+
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ struct sequence_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct empty_impl
+ {
+ template <typename SeqRef>
+ struct apply
+ : mpl::bool_<!result_of::size<SeqRef>::value>
+ {};
+ };
+
+ template <>
+ struct empty_impl<sequence_facade_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ : detail::remove_reference<SeqRef>::type::template empty<SeqRef>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename Seq>
+ struct empty
+ : extension::empty_impl<typename traits::tag_of<Seq>::type>::
+ template apply<typename detail::add_lref<Seq>::type>::type
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+ };
+ }
+
+ template <typename Seq>
+ inline typename result_of::empty<Seq const&>::type
+ empty(Seq const&)
+ {
+ return typename result_of::empty<Seq const&>::type();
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/end.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/end.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,64 @@
+/*=============================================================================
+ 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_SEQUENCE_INTRINSIC_END_HPP
+#define BOOST_FUSION_SEQUENCE_INTRINSIC_END_HPP
+
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ struct sequence_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<sequence_facade_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ : detail::remove_reference<SeqRef>::type::template end<SeqRef>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename Seq>
+ struct end
+ : extension::end_impl<typename traits::tag_of<Seq>::type>::
+ template apply<typename detail::add_lref<Seq>::type>
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+ };
+ }
+
+ template <typename Seq>
+ inline typename
+ result_of::end<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type const
+ end(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return result_of::end<BOOST_FUSION_R_ELSE_CLREF(Seq)>::call(seq);
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq>
+ inline typename result_of::end<Seq&>::type
+ end(Seq& seq)
+ {
+ return result_of::end<Seq&>::call(seq);
+ }
+#endif
+
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/front.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/front.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,54 @@
+/*=============================================================================
+ 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_SEQUENCE_INTRINSIC_FRONT_HPP
+#define BOOST_FUSION_SEQUENCE_INTRINSIC_FRONT_HPP
+
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/fusion/sequence/intrinsic/empty.hpp>
+#endif
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ struct fusion_sequence_tag;
+
+ namespace result_of
+ {
+ template <typename Seq>
+ struct front
+ : deref<typename begin<Seq>::type>
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+ BOOST_FUSION_MPL_ASSERT_NOT((empty<Seq>));
+ };
+ }
+
+ template <typename Seq>
+ inline typename result_of::front<BOOST_FUSION_R_ELSE_CLREF(Seq)>::type
+ front(BOOST_FUSION_R_ELSE_CLREF(Seq) seq)
+ {
+ return *fusion::begin(seq);
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template <typename Seq>
+ inline typename result_of::front<Seq&>::type
+ front(Seq& seq)
+ {
+ return *fusion::begin(seq);
+ }
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/has_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/has_key.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,71 @@
+/*=============================================================================
+ 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_SEQUENCE_INTRINSIC_HAS_KEY_HPP
+#define BOOST_FUSION_SEQUENCE_INTRINSIC_HAS_KEY_HPP
+
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/algorithm/query/find_key.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/mpl/not.hpp>
+
+namespace boost { namespace fusion
+{
+ struct sequence_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct has_key_impl
+ {
+ template <typename SeqRef, typename Key>
+ struct apply
+ : mpl::not_<
+ typename result_of::equal_to<
+ typename result_of::find_key<SeqRef, Key>::type
+ , typename result_of::end<SeqRef>::type
+ >::type
+ >::type
+ {};
+ };
+
+ template <>
+ struct has_key_impl<sequence_facade_tag>
+ {
+ template <typename SeqRef, typename Key>
+ struct apply
+ : detail::remove_reference<SeqRef>::type::
+ template has_key<SeqRef, Key>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename Seq, typename Key>
+ struct has_key
+ : extension::has_key_impl<typename traits::tag_of<Seq>::type>::
+ template apply<typename detail::add_lref<Seq>::type, Key>
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_associative<Seq>));
+ };
+ }
+
+ template <typename Key, typename Seq>
+ inline typename result_of::has_key<Seq const&, Key>::type
+ has_key(Seq const& seq)
+ {
+ return typename result_of::has_key<Seq const&, Key>::type();
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/size.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/size.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,63 @@
+/*=============================================================================
+ 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_SEQUENCE_INTRINSIC_SIZE_HPP
+#define BOOST_FUSION_SEQUENCE_INTRINSIC_SIZE_HPP
+
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion
+{
+ struct sequence_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct size_impl
+ {
+ template <typename SeqRef>
+ struct apply
+ : detail::remove_reference<SeqRef>::type::size
+ {};
+ };
+
+ template <>
+ struct size_impl<sequence_facade_tag>
+ {
+ template <typename SeqRef>
+ struct apply
+ : detail::remove_reference<SeqRef>::type::
+ template size<SeqRef>::type
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename Seq>
+ struct size
+ : extension::size_impl<typename traits::tag_of<Seq>::type>::
+ template apply<typename detail::add_lref<Seq>::type>::type
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq>));
+ };
+ }
+
+ template <typename Seq>
+ inline typename result_of::size<Seq const&>::type
+ size(Seq const&)
+ {
+ return typename result_of::size<Seq const&>::type();
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/swap.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/swap.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,73 @@
+/*=============================================================================
+ 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_SEQUENCE_INTRINSIC_SWAP_HPP
+#define BOOST_FUSION_SEQUENCE_INTRINSIC_SWAP_HPP
+
+#include <boost/config.hpp>
+#ifdef BOOST_NO_RVALUE_REFERENCES
+# include <boost/fusion/container/generation/vector_tie.hpp>
+# include <boost/fusion/view/zip_view.hpp>
+# include <boost/fusion/algorithm/iteration/for_each.hpp>
+# include <boost/fusion/sequence/intrinsic/front.hpp>
+# include <boost/fusion/sequence/intrinsic/back.hpp>
+#endif
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/fusion/sequence/intrinsic/size.hpp>
+#endif
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <algorithm>
+
+namespace boost { namespace fusion {
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ namespace detail
+ {
+ struct swap
+ {
+ typedef void result_type;
+
+ template<typename Elem>
+ void operator()(Elem const& e) const
+ {
+ std::swap(fusion::front(e), fusion::back(e));
+ }
+ };
+ }
+#endif
+
+ namespace result_of
+ {
+ template<typename Seq1, typename Seq2>
+ struct swap
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq1>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq2>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_forward<Seq2>));
+ BOOST_FUSION_STATIC_ASSERT((size<Seq1>::value==size<Seq2>::value));
+
+ typedef void type;
+ };
+ }
+
+#ifdef BOOST_NO_RVALUE_REFERENCES
+ template<typename Seq1, typename Seq2>
+ typename result_of::swap<Seq1&,Seq2&>::type
+ swap(Seq1& seq1, Seq2& seq2)
+ {
+ for_each(zip_view<typename result_of::vector_tie<Seq1&,Seq2&>::type>(
+ vector_tie(seq1, seq2))
+ , detail::swap());
+ }
+#else
+ using std::swap;
+#endif
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/value_at.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/value_at.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,84 @@
+/*=============================================================================
+ 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_SEQUENCE_INTRINSIC_VALUE_AT_HPP
+#define BOOST_FUSION_SEQUENCE_INTRINSIC_VALUE_AT_HPP
+
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/fusion/container/list/list_fwd.hpp>
+# include <boost/fusion/sequence/intrinsic/size.hpp>
+#endif
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/mpl/int.hpp>
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/mpl/or.hpp>
+# include <boost/type_traits/is_same.hpp>
+#endif
+
+namespace boost { namespace fusion
+{
+ struct sequence_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<sequence_facade_tag>
+ {
+ template <typename SeqRef, typename N>
+ struct apply
+ : detail::remove_reference<SeqRef>::type::
+ template value_at<SeqRef, N>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename Seq, typename N>
+ struct value_at
+ : extension::value_at_impl<typename traits::tag_of<Seq>::type>::
+ template apply<typename detail::add_lref<Seq>::type, N>
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((
+ mpl::or_<
+ traits::is_random_access<Seq>
+ , is_same<
+ typename traits::tag_of<Seq>::type
+ , list_tag
+ >
+ >));
+ BOOST_FUSION_INDEX_CHECK(N::value,size<Seq>::value);
+ BOOST_FUSION_INDEX_CHECK(N::value,size<Seq>::value);
+ };
+
+ template <typename Seq, int N>
+ struct value_at_c
+ : result_of::value_at<Seq,mpl::int_<N> >
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((
+ mpl::or_<
+ traits::is_random_access<Seq>
+ , is_same<
+ typename traits::tag_of<Seq>::type
+ , list_tag
+ >
+ >));
+ BOOST_FUSION_INDEX_CHECK(N,size<Seq>::value);
+ BOOST_FUSION_INDEX_CHECK(N,size<Seq>::value);
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/value_at_c.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/value_at_c.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,11 @@
+// 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_SEQUENCE_INTRINSIC_VALUE_AT_C_HPP
+#define BOOST_FUSION_SEQUENCE_INTRINSIC_VALUE_AT_C_HPP
+
+#include <boost/fusion/sequence/intrinsic/value_at.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/value_at_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/value_at_key.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,68 @@
+/*=============================================================================
+ 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_SEQUENCE_INTRINSIC_VALUE_AT_KEY_HPP
+#define BOOST_FUSION_SEQUENCE_INTRINSIC_VALUE_AT_KEY_HPP
+
+#ifdef BOOST_FUSION_ENABLE_STATIC_ASSERTS
+# include <boost/fusion/sequence/intrinsic/has_key.hpp>
+#endif
+#include <boost/fusion/iterator/value_of_data.hpp>
+#include <boost/fusion/algorithm/query/find_key.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/support/internal/ref.hpp>
+#include <boost/fusion/support/internal/assert.hpp>
+
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion
+{
+ struct sequence_facade_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_at_key_impl
+ {
+ template <typename SeqRef, typename Key>
+ struct apply
+ {
+ typedef typename
+ result_of::value_of_data<
+ typename result_of::find_key<SeqRef, Key>::type
+ >::type
+ type;
+ };
+ };
+
+ template <>
+ struct value_at_key_impl<sequence_facade_tag>
+ {
+ template <typename SeqRef, typename Key>
+ struct apply
+ : detail::remove_reference<SeqRef>::type::
+ template value_at_key<SeqRef, Key>
+ {};
+ };
+ }
+
+ namespace result_of
+ {
+ template <typename Seq, typename Key>
+ struct value_at_key
+ : extension::value_at_key_impl<typename traits::tag_of<Seq>::type>::
+ template apply<typename detail::add_lref<Seq>::type, Key>
+ {
+ BOOST_FUSION_MPL_ASSERT((traits::is_sequence<Seq>));
+ BOOST_FUSION_MPL_ASSERT((traits::is_associative<Seq>));
+ BOOST_FUSION_MPL_ASSERT((has_key<Seq,Key>));
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/io.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/io.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,14 @@
+/*=============================================================================
+ 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_SEQUENCE_IO_HPP
+#define BOOST_FUSION_SEQUENCE_IO_HPP
+
+#include <boost/fusion/sequence/io/in.hpp>
+#include <boost/fusion/sequence/io/out.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/io/detail/in.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/io/detail/in.hpp 2009-08-17 19:47:17 EDT (Mon, 17 Aug 2009)
@@ -0,0 +1,93 @@
+/*=============================================================================
+ Copyright (c) 1999-2003 Jaakko Jarvi
+ Copyright (c) 1999-2003 Jeremiah Willcock
+ 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_SEQUENCE_IO_DETAIL_IN_HPP
+#define BOOST_FUSION_SEQUENCE_IO_DETAIL_IN_HPP
+
+#include <istream>
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/sequence/io/detail/manip.hpp>
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename Tag>
+ struct delimiter_in
+ {
+ // read a delimiter
+ template <typename IS>
+ static void
+ read(IS& is, char const* delim, mpl::false_ = mpl::false_())
+ {
+ detail::string_ios_manip<Tag, IS> manip(is);
+ manip.read(delim);
+ }
+
+ template <typename IS>
+ static void
+ read(IS& is, char const* delim, mpl::true_)
+ {
+ }
+ };
+
+ struct read_sequence_loop
+ {
+ template <typename IS, typename First, typename Last>
+ static void
+ call(IS& is, First const&, Last const&, mpl::true_)
+ {
+ }
+
+ template <typename IS, typename First, typename Last>
+ static void
+ call(IS& is, First const& first, Last const& last, mpl::false_)
+ {
+ typedef typename
+ result_of::equal_to<
+ typename result_of::next<First>::type
+ , Last
+ >::type
+ is_last;
+
+ is >> fusion::deref(first);
+ delimiter_in<tuple_delimiter_tag>::read(is, " ", is_last());
+ call(is, fusion::next(first), last, is_last());
+ }
+
+ template <typename IS, typename First, typenam