Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r52970 - in sandbox/SOC/2009/fusion: . boost boost/fusion boost/fusion/adapted boost/fusion/adapted/array boost/fusion/adapted/array/detail boost/fusion/adapted/boost_tuple boost/fusion/adapted/boost_tuple/detail boost/fusion/adapted/mpl boost/fusion/adapted/mpl/detail boost/fusion/adapted/std_pair boost/fusion/adapted/std_pair/detail boost/fusion/adapted/struct boost/fusion/adapted/struct/detail boost/fusion/algorithm boost/fusion/algorithm/iteration boost/fusion/algorithm/iteration/detail boost/fusion/algorithm/iteration/ext_ boost/fusion/algorithm/query boost/fusion/algorithm/query/detail boost/fusion/algorithm/query/ext_ boost/fusion/algorithm/transformation boost/fusion/algorithm/transformation/detail boost/fusion/container boost/fusion/container/deque boost/fusion/container/deque/detail boost/fusion/container/ext_ boost/fusion/container/generation boost/fusion/container/list boost/fusion/container/list/detail 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/functional boost/fusion/functional/adapter boost/fusion/functional/adapter/detail boost/fusion/functional/generation boost/fusion/functional/generation/detail boost/fusion/functional/invocation boost/fusion/functional/invocation/detail boost/fusion/include boost/fusion/iterator boost/fusion/iterator/detail boost/fusion/iterator/mpl boost/fusion/mpl boost/fusion/mpl/detail boost/fusion/sequence boost/fusion/sequence/comparison boost/fusion/sequence/comparison/detail boost/fusion/sequence/intrinsic boost/fusion/sequence/intrinsic/ext_ boost/fusion/sequence/io boost/fusion/sequence/io/detail boost/fusion/support boost/fusion/support/detail boost/fusion/support/ext_ boost/fusion/tuple boost/fusion/tuple/detail boost/fusion/view boost/fusion/view/detail boost/fusion/view/ext_ boost/fusion/view/filter_view boost/fusion/view/filter_view/detail boost/fusion/view/iterator_range boost/fusion/view/iterator_range/detail boost/fusion/view/joint_view boost/fusion/view/joint_view/detail boost/fusion/view/repetitive_view boost/fusion/view/repetitive_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/test libs/fusion/test/algorithm libs/fusion/test/algorithm/ext_ libs/fusion/test/functional libs/fusion/test/sequence libs/fusion/test/sequence/ext_ workaround workaround/conceptgcc workaround/conceptgcc/test
From: mr.chr.schmidt_at_[hidden]
Date: 2009-05-13 15:08:25


Author: cschmidt
Date: 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
New Revision: 52970
URL: http://svn.boost.org/trac/boost/changeset/52970

Log:
Added fork of fusion (of the official 1.39 release)
Added:
   sandbox/SOC/2009/fusion/boost/ (props changed)
   sandbox/SOC/2009/fusion/boost-build.jam (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/array_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/category_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/is_sequence_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/is_view_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/size_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/array/tag_of.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/tag_of.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/category_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/empty_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/has_key_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/is_view_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/size_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/mpl_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/is_sequence_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/is_view_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/size_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/std_pair_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/tag_of.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/ (props changed)
   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/adapted/struct/detail/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/at_key_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/category_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/has_key_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/is_view_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/size_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/value_at_key_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/extension.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/struct_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/ (props changed)
   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/ (props changed)
   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/ext_/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/ext_/for_each_s.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/ (props changed)
   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/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/all.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/any.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/assoc_find.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/count_if.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/ext_/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/ext_/find_if_s.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/none.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/ (props changed)
   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/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace.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/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/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/back_extended_deque.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/convert.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/deque.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/deque_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/deque_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/as_deque.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/convert_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/deque_forward_ctor.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/deque_initial_size.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/deque_keyed_values.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/keyed_element.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/front_extended_deque.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/deque/limits.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/ext_/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/ext_/tree.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/generation/ (props changed)
   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/deque_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_deque.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/ (props changed)
   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/cons_iterator.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/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/build_cons.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/convert_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/empty_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/equal_to_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list_forward_ctor.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list_to_cons.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list_to_cons_call.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/next_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/value_at_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/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/ (props changed)
   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/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/as_map.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/at_key_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/convert_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/lookup_key.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/map_forward_ctor.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/map_lookup.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/value_at_key_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/ (props changed)
   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/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/as_set.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/at_key_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/convert_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/lookup_key.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/set_forward_ctor.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/set_lookup.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/value_at_key_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/ (props changed)
   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/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/advance_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/as_vector.hpp (contents, props changed)
   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/convert_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/distance_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/equal_to_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/next_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/prior_impl.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/vector_forward_ctor.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/vector_n.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/vector_n_chooser.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/container/vector/vector_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/access.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/pow2_explode.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/pt_def.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/pt_undef.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_generic.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_lvalue_args.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_rvalue_args.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/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation/detail/ (props changed)
   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_generic.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_lvalue_args.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_rvalue_args.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/detail/ (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/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_deque.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_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.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/deduce_sequence.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/deque.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/deque_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/deque_tie.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/deref.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/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/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_deque.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_generic.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/make_unfused_lvalue_args.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/make_unfused_rvalue_args.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/repetetive_view.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_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_generic.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/unfused_lvalue_args.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/include/unfused_rvalue_args.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_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/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/void.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/ (props changed)
   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/deref.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/adapt_deref_traits.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/adapt_value_traits.hpp (contents, props changed)
   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/mpl/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/mpl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/mpl/convert_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/iterator/mpl/fusion_iterator.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/mpl/ (props changed)
   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/detail/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/mpl/detail/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/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/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison/detail/ (props changed)
   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/ (props changed)
   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/ext_/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/ext_/segments.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/intrinsic/ext_/size_s.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_key.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/io/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/io.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/sequence/io/detail/ (props changed)
   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/ (props changed)
   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/detail/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/access.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/as_fusion_element.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/category_of.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/is_mpl_sequence.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/is_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/mpl_iterator_category.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/detail/unknown_key.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/ext_/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/support/ext_/is_segmented.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/support/void.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/tuple/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/tuple.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/tuple/detail/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/tuple/detail/tuple_expand.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/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/detail/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/detail/strictest_traversal.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/ext_/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/ext_/multiple_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/ext_/segmented_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/ext_/segmented_iterator_range.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/filter_view/detail/ (props changed)
   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_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/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_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/filter_view/filter_view_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/iterator_range/detail/ (props changed)
   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/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/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/joint_view/detail/ (props changed)
   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_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/next_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/joint_view/joint_view_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/begin_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/deref_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/end_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/next_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/detail/value_of_impl.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/repetitive_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/repetitive_view_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/repetitive_view/repetitive_view_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/reverse_view/detail/ (props changed)
   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_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/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/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/reverse_view/reverse_view_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/single_view/detail/ (props changed)
   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/next_impl.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/single_view/single_view_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/transform_view/detail/ (props changed)
   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/apply_transform_result.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/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/transform_view/transform_view_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/ (props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/detail/ (props changed)
   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/zip_view.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view_iterator.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/boost/fusion/view/zip_view/zip_view_iterator_fwd.hpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/ (props changed)
   sandbox/SOC/2009/fusion/libs/fusion/ (props changed)
   sandbox/SOC/2009/fusion/libs/fusion/CMakeLists.txt (contents, props changed)
   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/module.cmake (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/
   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/ext_/
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/ext_/find_if_s.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/algorithm/ext_/for_each_s.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_generic.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_unfused_lvalue_args.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/make_unfused_rvalue_args.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/unfused_generic.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/unfused_lvalue_args.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/functional/unfused_rvalue_args.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/back_extended_deque.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/deque_comparison.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deque_construction.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deque_copy.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deque_iterator.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deque_make.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deque_misc.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deque_mutate.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deque_tie.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/deque_value_at.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/ext_/
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/ext_/iterator_range_s.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/front_extended_deque.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/list_value_at.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/make_list.cpp (contents, props changed)
   sandbox/SOC/2009/fusion/libs/fusion/test/sequence/make_vector.cpp (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/repetitive_view.cpp (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/workaround/conceptgcc/test/ (props changed)
Properties modified:
   sandbox/SOC/2009/fusion/workaround/ (props changed)
   sandbox/SOC/2009/fusion/workaround/conceptgcc/ (props changed)
Text files modified:
   sandbox/SOC/2009/fusion/build.bat | 16 ++++++----------
   sandbox/SOC/2009/fusion/project-root.jam | 20 +++++++++++++++-----
   sandbox/SOC/2009/fusion/workaround/conceptgcc/utility | 15 ++++++++++-----
   3 files changed, 31 insertions(+), 20 deletions(-)

Added: sandbox/SOC/2009/fusion/boost-build.jam
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost-build.jam 2009-05-13 15:06:33 EDT (Wed, 13 May 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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,17 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_ADAPTED_30122005_1420)
+#define BOOST_FUSION_ADAPTED_30122005_1420
+
+#include <boost/fusion/adapted/boost_tuple.hpp>
+#include <boost/fusion/adapted/std_pair.hpp>
+#include <boost/fusion/adapted/array.hpp>
+#include <boost/fusion/adapted/mpl.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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,22 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_ARRAY_27122005_1035)
+#define BOOST_FUSION_ARRAY_27122005_1035
+
+#include <boost/fusion/adapted/array/array_iterator.hpp>
+#include <boost/fusion/adapted/array/tag_of.hpp>
+#include <boost/fusion/adapted/array/detail/is_view_impl.hpp>
+#include <boost/fusion/adapted/array/detail/is_sequence_impl.hpp>
+#include <boost/fusion/adapted/array/detail/category_of_impl.hpp>
+#include <boost/fusion/adapted/array/detail/begin_impl.hpp>
+#include <boost/fusion/adapted/array/detail/end_impl.hpp>
+#include <boost/fusion/adapted/array/detail/size_impl.hpp>
+#include <boost/fusion/adapted/array/detail/at_impl.hpp>
+#include <boost/fusion/adapted/array/detail/value_at_impl.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/array_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/array_iterator.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,107 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_ARRAY_ITERATOR_26122005_2250)
+#define BOOST_FUSION_ARRAY_ITERATOR_26122005_2250
+
+#include <cstddef>
+#include <boost/config.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/minus.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/fusion/iterator/iterator_facade.hpp>
+
+namespace boost { namespace fusion
+{
+ struct random_access_traversal_tag;
+
+ template <typename Array, int Pos>
+ struct array_iterator
+ : iterator_facade<array_iterator<Array, Pos>, random_access_traversal_tag>
+ {
+ BOOST_MPL_ASSERT_RELATION(Pos, >=, 0);
+ BOOST_MPL_ASSERT_RELATION(Pos, <=, Array::static_size);
+
+ typedef mpl::int_<Pos> index;
+ typedef Array array_type;
+
+ array_iterator(Array& a)
+ : array(a) {}
+
+ Array& array;
+
+ template <typename Iterator>
+ struct value_of
+ {
+ typedef typename Iterator::array_type array_type;
+ typedef typename array_type::value_type type;
+ };
+
+ template <typename Iterator>
+ struct deref
+ {
+ typedef typename Iterator::array_type array_type;
+ typedef typename
+ mpl::if_<
+ is_const<array_type>
+ , typename array_type::const_reference
+ , typename array_type::reference
+ >::type
+ type;
+
+ static type
+ call(Iterator const & it)
+ {
+ return it.array[Iterator::index::value];
+ }
+ };
+
+ template <typename Iterator, typename N>
+ struct advance
+ {
+ typedef typename Iterator::index index;
+ typedef typename Iterator::array_type array_type;
+ typedef array_iterator<array_type, index::value + N::value> type;
+
+ static type
+ call(Iterator const& i)
+ {
+ return type(i.array);
+ }
+ };
+
+ template <typename Iterator>
+ struct next : advance<Iterator, mpl::int_<1> > {};
+
+ template <typename Iterator>
+ struct prior : advance<Iterator, mpl::int_<-1> > {};
+
+ template <typename I1, typename I2>
+ struct distance : mpl::minus<typename I2::index, typename I1::index>
+ {
+ typedef typename
+ mpl::minus<
+ typename I2::index, typename I1::index
+ >::type
+ type;
+
+ static type
+ call(I1 const&, I2 const&)
+ {
+ return type();
+ }
+ };
+
+ private:
+
+ array_iterator<Array, Pos>& operator=(array_iterator<Array, Pos> const&);
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/at_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_AT_IMPL_27122005_1241)
+#define BOOST_FUSION_AT_IMPL_27122005_1241
+
+#include <boost/type_traits/is_const.hpp>
+
+#include <boost/mpl/if.hpp>
+
+namespace boost { namespace fusion {
+
+ struct array_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct at_impl;
+
+ template<>
+ struct at_impl<array_tag>
+ {
+ template<typename Sequence, typename N>
+ struct apply
+ {
+ typedef typename mpl::if_<
+ is_const<Sequence>,
+ typename Sequence::const_reference,
+ typename Sequence::reference>::type type;
+
+ static type
+ call(Sequence& seq)
+ {
+ return seq[N::value];
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/begin_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_BEGIN_IMPL_27122005_1117)
+#define BOOST_FUSION_BEGIN_IMPL_27122005_1117
+
+#include <boost/fusion/adapted/array/array_iterator.hpp>
+
+namespace boost { namespace fusion {
+
+ struct array_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<array_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef array_iterator<Sequence, 0> type;
+
+ static type
+ call(Sequence& v)
+ {
+ return type(v);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/category_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/category_of_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044)
+#define BOOST_FUSION_CATEGORY_OF_IMPL_27122005_1044
+
+#include <boost/config/no_tr1/utility.hpp>
+
+namespace boost { namespace fusion {
+
+ struct array_tag;
+ struct random_access_traversal_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct category_of_impl;
+
+ template<>
+ struct category_of_impl<array_tag>
+ {
+ template<typename T>
+ struct apply
+ {
+ typedef random_access_traversal_tag type;
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/end_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_END_IMPL_27122005_1120)
+#define BOOST_FUSION_END_IMPL_27122005_1120
+
+#include <boost/fusion/adapted/array/array_iterator.hpp>
+
+namespace boost { namespace fusion {
+
+ struct array_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<array_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef array_iterator<Sequence, Sequence::static_size> type;
+
+ static type
+ call(Sequence& v)
+ {
+ return type(v);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/is_sequence_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/is_sequence_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,31 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1648)
+#define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1648
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion {
+
+ struct array_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct is_sequence_impl;
+
+ template<>
+ struct is_sequence_impl<array_tag>
+ {
+ template<typename Sequence>
+ struct apply : mpl::true_ {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/is_view_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/is_view_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_IS_VIEW_IMPL_27042006_2221)
+#define BOOST_FUSION_IS_VIEW_IMPL_27042006_2221
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ struct array_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct is_view_impl;
+
+ template<>
+ struct is_view_impl<array_tag>
+ {
+ template<typename T>
+ struct apply : mpl::false_
+ {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/size_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/size_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SIZE_IMPL_27122005_1251)
+#define BOOST_FUSION_SIZE_IMPL_27122005_1251
+
+namespace boost { namespace fusion {
+
+ struct array_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct size_impl;
+
+ template<>
+ struct size_impl<array_tag>
+ {
+ template<typename Sequence>
+ struct apply : mpl::int_<Sequence::static_size> {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/value_at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/detail/value_at_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_VALUE_AT_IMPL_27122005_1256)
+#define BOOST_FUSION_VALUE_AT_IMPL_27122005_1256
+
+namespace boost { namespace fusion {
+
+ struct array_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<array_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ typedef typename Sequence::value_type type;
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/array/tag_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/array/tag_of.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_SEQUENCE_TAG_OF_27122005_1030)
+#define FUSION_SEQUENCE_TAG_OF_27122005_1030
+
+#include <boost/fusion/support/tag_of_fwd.hpp>
+
+#include <cstddef>
+
+namespace boost
+{
+ template<typename T, std::size_t N>
+ class array;
+}
+
+namespace boost { namespace fusion
+{
+ struct array_tag;
+
+ namespace traits
+ {
+ template<typename T, std::size_t N>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ struct tag_of<boost::array<T,N>, void >
+#else
+ struct tag_of<boost::array<T,N> >
+#endif
+ {
+ typedef array_tag type;
+ };
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_BOOST_TUPLE_09272006_0732)
+#define BOOST_FUSION_BOOST_TUPLE_09272006_0732
+
+#include <boost/fusion/adapted/boost_tuple/tag_of.hpp>
+#include <boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp>
+#include <boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp>
+#include <boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp>
+#include <boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp>
+#include <boost/fusion/adapted/boost_tuple/detail/end_impl.hpp>
+#include <boost/fusion/adapted/boost_tuple/detail/size_impl.hpp>
+#include <boost/fusion/adapted/boost_tuple/detail/at_impl.hpp>
+#include <boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,149 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_BOOST_TUPLE_ITERATOR_09262006_1851)
+#define FUSION_BOOST_TUPLE_ITERATOR_09262006_1851
+
+#include <boost/fusion/iterator/iterator_facade.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/tuple/tuple.hpp>
+
+namespace boost { namespace fusion
+{
+ struct forward_traversal_tag;
+
+ namespace detail
+ {
+ template <typename T>
+ struct boost_tuple_is_empty : mpl::false_ {};
+
+ template <>
+ struct boost_tuple_is_empty<tuples::null_type> : mpl::true_ {};
+
+ template <>
+ struct boost_tuple_is_empty<tuples::null_type const> : mpl::true_ {};
+
+ template <>
+ struct boost_tuple_is_empty<tuples::tuple<> > : mpl::true_ {};
+
+ template <>
+ struct boost_tuple_is_empty<tuples::tuple<> const> : mpl::true_ {};
+ }
+
+ template <typename Cons = tuples::null_type>
+ struct boost_tuple_iterator
+ : iterator_facade<boost_tuple_iterator<Cons>, forward_traversal_tag>
+ {
+ typedef Cons cons_type;
+
+ explicit boost_tuple_iterator(Cons& cons)
+ : cons(cons) {}
+ Cons& cons;
+
+ template <typename Iterator>
+ struct value_of : mpl::identity<typename Iterator::cons_type::head_type> {};
+
+ template <typename Iterator>
+ struct deref
+ {
+ typedef typename value_of<Iterator>::type element;
+
+ typedef typename
+ mpl::if_<
+ is_const<typename Iterator::cons_type>
+ , typename tuples::access_traits<element>::const_type
+ , typename tuples::access_traits<element>::non_const_type
+ >::type
+ type;
+
+ static type
+ call(Iterator const& iter)
+ {
+ return iter.cons.get_head();
+ }
+ };
+
+ template <typename Iterator>
+ struct next
+ {
+ typedef typename Iterator::cons_type cons_type;
+ typedef typename cons_type::tail_type tail_type;
+
+ typedef boost_tuple_iterator<
+ typename mpl::eval_if<
+ is_const<cons_type>
+ , add_const<tail_type>
+ , mpl::identity<tail_type>
+ >::type>
+ type;
+
+ static type
+ call(Iterator const& iter)
+ {
+ return type(iter.cons.get_tail());
+ }
+ };
+ };
+
+ template <typename Null>
+ struct boost_tuple_null_iterator
+ : iterator_facade<boost_tuple_iterator<Null>, forward_traversal_tag>
+ {
+ typedef Null cons_type;
+
+ template <typename I1, typename I2>
+ struct equal_to
+ : mpl::or_<
+ is_same<I1, I2>
+ , mpl::and_<
+ detail::boost_tuple_is_empty<typename I1::cons_type>
+ , detail::boost_tuple_is_empty<typename I2::cons_type>
+ >
+ >
+ {};
+ };
+
+ template <>
+ struct boost_tuple_iterator<tuples::null_type>
+ : boost_tuple_null_iterator<tuples::null_type>
+ {
+ template <typename Cons>
+ explicit boost_tuple_iterator(Cons const&) {}
+ };
+
+ template <>
+ struct boost_tuple_iterator<tuples::null_type const>
+ : boost_tuple_null_iterator<tuples::null_type const>
+ {
+ template <typename Cons>
+ explicit boost_tuple_iterator(Cons const&) {}
+ };
+
+ template <>
+ struct boost_tuple_iterator<tuples::tuple<> >
+ : boost_tuple_null_iterator<tuples::tuple<> >
+ {
+ template <typename Cons>
+ explicit boost_tuple_iterator(Cons const&) {}
+ };
+
+ template <>
+ struct boost_tuple_iterator<tuples::tuple<> const>
+ : boost_tuple_null_iterator<tuples::tuple<> const>
+ {
+ template <typename Cons>
+ explicit boost_tuple_iterator(Cons const&) {}
+ };
+}}
+
+#endif
+
+

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/at_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,50 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_AT_IMPL_09262006_1920)
+#define BOOST_FUSION_AT_IMPL_09262006_1920
+
+#include <boost/tuple/tuple.hpp>
+#include <boost/mpl/if.hpp>
+
+namespace boost { namespace fusion
+{
+ struct boost_tuple_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct at_impl;
+
+ template <>
+ struct at_impl<boost_tuple_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ typedef typename
+ tuples::element<N::value, Sequence>::type
+ element;
+
+ typedef typename
+ mpl::if_<
+ is_const<Sequence>
+ , typename tuples::access_traits<element>::const_type
+ , typename tuples::access_traits<element>::non_const_type
+ >::type
+ type;
+
+ static type
+ call(Sequence& seq)
+ {
+ return tuples::get<N::value>(seq);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/begin_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_BEGIN_IMPL_09272006_0719)
+#define BOOST_FUSION_BEGIN_IMPL_09272006_0719
+
+#include <boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp>
+
+namespace boost { namespace fusion
+{
+ struct boost_tuple_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<boost_tuple_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef boost_tuple_iterator<Sequence> type;
+
+ static type
+ call(Sequence& v)
+ {
+ return type(v);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/category_of_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_09272006_0726)
+#define BOOST_FUSION_CATEGORY_OF_IMPL_09272006_0726
+
+namespace boost { namespace fusion
+{
+ struct boost_tuple_tag;
+ struct forward_traversal_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct category_of_impl;
+
+ template<>
+ struct category_of_impl<boost_tuple_tag>
+ {
+ template<typename T>
+ struct apply
+ {
+ typedef forward_traversal_tag type;
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/end_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_END_IMPL_09272006_0721)
+#define BOOST_FUSION_END_IMPL_09272006_0721
+
+#include <boost/fusion/adapted/boost_tuple/boost_tuple_iterator.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_const.hpp>
+
+namespace boost { namespace tuples
+{
+ struct null_type;
+}}
+
+namespace boost { namespace fusion
+{
+ struct boost_tuple_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<boost_tuple_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef
+ boost_tuple_iterator<
+ typename mpl::if_<
+ is_const<Sequence>
+ , tuples::null_type const
+ , tuples::null_type
+ >::type
+ >
+ type;
+
+ static type
+ call(Sequence& seq)
+ {
+ return type(seq);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/is_sequence_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,30 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_09272006_0726)
+#define BOOST_FUSION_IS_SEQUENCE_IMPL_09272006_0726
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ struct boost_tuple_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct is_sequence_impl;
+
+ template<>
+ struct is_sequence_impl<boost_tuple_tag>
+ {
+ template<typename Sequence>
+ struct apply : mpl::true_ {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/is_view_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,30 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_IS_VIEW_IMPL_09272006_0725)
+#define BOOST_FUSION_IS_VIEW_IMPL_09272006_0725
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ struct boost_tuple_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct is_view_impl;
+
+ template<>
+ struct is_view_impl<boost_tuple_tag>
+ {
+ template<typename T>
+ struct apply : mpl::false_ {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/size_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SIZE_IMPL_09272006_0724)
+#define BOOST_FUSION_SIZE_IMPL_09272006_0724
+
+#include <boost/tuple/tuple.hpp>
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion
+{
+ struct boost_tuple_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct size_impl;
+
+ template <>
+ struct size_impl<boost_tuple_tag>
+ {
+ template <typename Sequence>
+ struct apply : mpl::int_<tuples::length<Sequence>::value> {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/detail/value_at_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,30 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_VALUE_AT_IMPL_09262006_1926)
+#define BOOST_FUSION_VALUE_AT_IMPL_09262006_1926
+
+#include <boost/tuple/tuple.hpp>
+
+namespace boost { namespace fusion
+{
+ struct boost_tuple_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<boost_tuple_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply : tuples::element<N::value, Sequence> {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/tag_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/boost_tuple/tag_of.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_TAG_OF_09262006_1900)
+#define BOOST_FUSION_TAG_OF_09262006_1900
+
+#include <boost/fusion/support/tag_of_fwd.hpp>
+
+namespace boost { namespace tuples
+{
+ struct null_type;
+
+ template <
+ class T0, class T1, class T2, class T3, class T4,
+ class T5, class T6, class T7, class T8, class T9
+ >
+ class tuple;
+
+ template <class Head, class Tail>
+ struct cons;
+}}
+
+namespace boost { namespace fusion
+{
+ struct boost_tuple_tag;
+
+ namespace traits
+ {
+ template <
+ class T0, class T1, class T2, class T3, class T4,
+ class T5, class T6, class T7, class T8, class T9
+ >
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ struct tag_of<tuples::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>, void >
+#else
+ struct tag_of<tuples::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> >
+#endif
+ {
+ typedef boost_tuple_tag type;
+ };
+
+ template <class Head, class Tail>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ struct tag_of<tuples::cons<Head, Tail>, void >
+#else
+ struct tag_of<tuples::cons<Head, Tail> >
+#endif
+ {
+ typedef boost_tuple_tag type;
+ };
+
+ template <>
+ struct tag_of<tuples::null_type>
+ {
+ typedef boost_tuple_tag type;
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_MPL_31122005_1152)
+#define BOOST_FUSION_MPL_31122005_1152
+
+#include <boost/fusion/adapted/mpl/detail/begin_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/end_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/size_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/value_at_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/at_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/has_key_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/category_of_impl.hpp>
+#include <boost/fusion/adapted/mpl/detail/is_view_impl.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/at_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_AT_IMPL_31122005_1642)
+#define BOOST_FUSION_AT_IMPL_31122005_1642
+
+#include <boost/mpl/at.hpp>
+
+namespace boost { namespace fusion
+{
+ struct mpl_sequence_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct at_impl;
+
+ template <>
+ struct at_impl<mpl_sequence_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ typedef typename mpl::at<Sequence, N>::type type;
+
+ static type
+ call(Sequence)
+ {
+ return type();
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/begin_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_BEGIN_IMPL_31122005_1209)
+#define BOOST_FUSION_BEGIN_IMPL_31122005_1209
+
+#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
+#include <boost/mpl/begin.hpp>
+#include <boost/type_traits/remove_const.hpp>
+
+namespace boost { namespace fusion {
+
+ struct mpl_sequence_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<mpl_sequence_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename mpl::begin<
+ typename remove_const<Sequence>::type
+ >::type iterator;
+ typedef mpl_iterator<iterator> type;
+
+ static type
+ call(Sequence)
+ {
+ return type();
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/category_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/category_of_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,54 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141)
+#define BOOST_FUSION_CATEGORY_OF_IMPL_20060217_2141
+
+#include <boost/fusion/support/detail/mpl_iterator_category.hpp>
+#include <boost/mpl/begin_end.hpp>
+#include <boost/mpl/is_sequence.hpp>
+#include <boost/static_assert.hpp>
+
+namespace boost { namespace fusion {
+
+ namespace detail
+ {
+ template <typename T>
+ struct mpl_sequence_category_of
+ {
+ // assumes T is an mpl sequence
+ // there should be no way this will ever be
+ // called where T is an mpl iterator
+
+ BOOST_STATIC_ASSERT(mpl::is_sequence<T>::value);
+ typedef typename
+ mpl_iterator_category<
+ typename mpl::begin<T>::type::category
+ >::type
+ type;
+ };
+ }
+
+ struct mpl_sequence_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct category_of_impl;
+
+ template<>
+ struct category_of_impl<mpl_sequence_tag>
+ {
+ template<typename T>
+ struct apply
+ : detail::mpl_sequence_category_of<T>
+ {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/empty_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/empty_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_EMPTY_IMPL_31122005_1554)
+#define BOOST_FUSION_EMPTY_IMPL_31122005_1554
+
+#include <boost/mpl/empty.hpp>
+
+namespace boost { namespace fusion
+{
+ struct mpl_sequence_tag;
+
+ namespace extension
+ {
+ template <>
+ struct empty_impl<mpl_sequence_tag>
+ {
+ template <typename Sequence>
+ struct apply : mpl::empty<Sequence> {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/end_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_END_IMPL_31122005_1237)
+#define BOOST_FUSION_END_IMPL_31122005_1237
+
+#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
+#include <boost/mpl/end.hpp>
+#include <boost/type_traits/add_const.hpp>
+
+namespace boost { namespace fusion
+{
+ struct mpl_sequence_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<mpl_sequence_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename mpl::end<
+ typename remove_const<Sequence>::type
+ >::type iterator;
+ typedef mpl_iterator<iterator> type;
+
+ static type
+ call(Sequence)
+ {
+ return type();
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/has_key_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/has_key_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,31 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_HAS_KEY_IMPL_31122005_1647)
+#define BOOST_FUSION_HAS_KEY_IMPL_31122005_1647
+
+#include <boost/mpl/has_key.hpp>
+
+namespace boost { namespace fusion
+{
+ struct mpl_sequence_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct has_key_impl;
+
+ template <>
+ struct has_key_impl<mpl_sequence_tag>
+ {
+ template <typename Sequence, typename Key>
+ struct apply : mpl::has_key<Sequence, Key> {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/is_sequence_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,31 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505)
+#define BOOST_FUSION_IS_SEQUENCE_IMPL_31122005_1505
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ struct mpl_sequence_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct is_sequence_impl;
+
+ template<>
+ struct is_sequence_impl<mpl_sequence_tag>
+ {
+ template<typename T>
+ struct apply : mpl::true_ {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/is_view_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/is_view_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_IS_VIEW_IMPL_03202006_0048)
+#define BOOST_FUSION_IS_VIEW_IMPL_03202006_0048
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ struct mpl_sequence_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct is_view_impl;
+
+ template<>
+ struct is_view_impl<mpl_sequence_tag>
+ {
+ template<typename T>
+ struct apply : mpl::true_
+ {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/size_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/size_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,31 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SIZE_IMPL_31122005_1508)
+#define BOOST_FUSION_SIZE_IMPL_31122005_1508
+
+#include <boost/mpl/size.hpp>
+
+namespace boost { namespace fusion
+{
+ struct mpl_sequence_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct size_impl;
+
+ template <>
+ struct size_impl<mpl_sequence_tag>
+ {
+ template <typename Sequence>
+ struct apply : mpl::size<Sequence> {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/value_at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/detail/value_at_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,31 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_VALUE_AT_IMPL_31122005_1621)
+#define BOOST_FUSION_VALUE_AT_IMPL_31122005_1621
+
+#include <boost/mpl/at.hpp>
+
+namespace boost { namespace fusion
+{
+ struct mpl_sequence_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<mpl_sequence_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply : mpl::at<Sequence, N> {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/mpl_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/mpl/mpl_iterator.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,113 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_MPL_ITERATOR_05052005_0731)
+#define FUSION_MPL_ITERATOR_05052005_0731
+
+#include <boost/fusion/support/detail/mpl_iterator_category.hpp>
+#include <boost/fusion/iterator/iterator_facade.hpp>
+#include <boost/type_traits/remove_const.hpp>
+#include <boost/mpl/deref.hpp>
+#include <boost/mpl/next.hpp>
+#include <boost/mpl/prior.hpp>
+#include <boost/mpl/advance.hpp>
+#include <boost/mpl/distance.hpp>
+
+namespace boost { namespace fusion
+{
+ template <typename Iterator_>
+ struct mpl_iterator
+ : iterator_facade<
+ mpl_iterator<Iterator_>
+ , typename detail::mpl_iterator_category<typename Iterator_::category>::type
+ >
+ {
+ typedef typename remove_const<Iterator_>::type iterator_type;
+
+ template <typename Iterator>
+ struct value_of : mpl::deref<typename Iterator::iterator_type> {};
+
+ template <typename Iterator>
+ struct deref
+ {
+ typedef typename mpl::deref<
+ typename Iterator::iterator_type>::type
+ type;
+
+ static type
+ call(Iterator)
+ {
+ return type();
+ }
+ };
+
+ template <typename Iterator>
+ struct next
+ {
+ typedef mpl_iterator<
+ typename mpl::next<typename Iterator::iterator_type>::type>
+ type;
+
+ static type
+ call(Iterator)
+ {
+ return type();
+ }
+ };
+
+ template <typename Iterator>
+ struct prior
+ {
+ typedef mpl_iterator<
+ typename mpl::prior<typename Iterator::iterator_type>::type>
+ type;
+
+ static type
+ call(Iterator)
+ {
+ return type();
+ }
+ };
+
+ template <typename Iterator, typename N>
+ struct advance
+ {
+ typedef mpl_iterator<
+ typename mpl::advance<typename Iterator::iterator_type, N>::type>
+ type;
+
+ static type
+ call(Iterator const& i)
+ {
+ return type();
+ }
+ };
+
+ template <typename I1, typename I2>
+ struct distance :
+ mpl::distance<
+ typename I1::iterator_type
+ , typename I2::iterator_type>
+ {
+ typedef typename
+ mpl::distance<
+ typename I1::iterator_type
+ , typename I2::iterator_type
+ >::type
+ type;
+
+ static type
+ call(I1 const&, I2 const&)
+ {
+ return type();
+ }
+ };
+ };
+}}
+
+#endif
+
+

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,70 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_STD_PAIR_24122005_1744)
+#define BOOST_FUSION_STD_PAIR_24122005_1744
+
+#include <boost/fusion/support/tag_of_fwd.hpp>
+#include <boost/fusion/adapted/struct.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/config/no_tr1/utility.hpp>
+
+namespace boost { namespace fusion
+{
+ struct struct_tag;
+
+ namespace traits
+ {
+ template <typename T1, typename T2>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ struct tag_of<std::pair<T1, T2>, void >
+#else
+ struct tag_of<std::pair<T1, T2> >
+#endif
+ {
+ typedef struct_tag type;
+ };
+ }
+
+ namespace extension
+ {
+ template <typename Struct, int N>
+ struct struct_member;
+
+ template <typename Struct>
+ struct struct_size;
+
+ template <typename T1, typename T2>
+ struct struct_member<std::pair<T1, T2>, 0>
+ {
+ typedef T1 type;
+
+ static type& call(std::pair<T1, T2>& pair)
+ {
+ return pair.first;
+ }
+ };
+
+ template <typename T1, typename T2>
+ struct struct_member<std::pair<T1, T2>, 1>
+ {
+ typedef T2 type;
+
+ static type& call(std::pair<T1, T2>& 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/std_pair/detail/at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/at_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,71 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_AT_IMPL_24122005_1807)
+#define BOOST_FUSION_AT_IMPL_24122005_1807
+
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/static_assert.hpp>
+#include <boost/fusion/support/detail/access.hpp>
+
+namespace boost { namespace fusion {
+
+ struct std_pair_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct at_impl;
+
+ template <>
+ struct at_impl<std_pair_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ static int const n_value = N::value;
+ BOOST_STATIC_ASSERT((n_value >= 0 && n_value < 2));
+ typedef typename
+ mpl::if_c<
+ (n_value == 0)
+ , typename Sequence::first_type
+ , typename Sequence::second_type
+ >
+ element;
+
+ typedef typename
+ mpl::eval_if<
+ is_const<Sequence>
+ , detail::cref_result<element>
+ , detail::ref_result<element>
+ >::type
+ type;
+
+ template <typename RT>
+ static RT get(Sequence& p, mpl::int_<0>)
+ {
+ return p.first;
+ }
+
+ template <typename RT>
+ static RT get(Sequence& p, mpl::int_<1>)
+ {
+ return p.second;
+ }
+
+ static type
+ call(Sequence& p)
+ {
+ return get<type>(p, N());
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/begin_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_BEGIN_IMPL_24122005_1752)
+#define BOOST_FUSION_BEGIN_IMPL_24122005_1752
+
+#include <boost/fusion/adapted/std_pair/std_pair_iterator.hpp>
+
+namespace boost { namespace fusion {
+
+ struct std_pair_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<std_pair_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef std_pair_iterator<Sequence, 0> type;
+
+ static type
+ call(Sequence& v)
+ {
+ return type(v);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/category_of_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731)
+#define BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731
+
+#include <boost/config/no_tr1/utility.hpp>
+
+namespace boost { namespace fusion {
+
+ struct std_pair_tag;
+ struct random_access_traversal_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct category_of_impl;
+
+ template<>
+ struct category_of_impl<std_pair_tag>
+ {
+ template<typename T>
+ struct apply
+ {
+ typedef random_access_traversal_tag type;
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/end_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_END_IMPL_24122005_1755)
+#define BOOST_FUSION_END_IMPL_24122005_1755
+
+#include <boost/fusion/adapted/std_pair/std_pair_iterator.hpp>
+
+namespace boost { namespace fusion {
+
+ struct std_pair_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<std_pair_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef std_pair_iterator<Sequence, 2> type;
+
+ static type
+ call(Sequence& v)
+ {
+ return type(v);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/is_sequence_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/is_sequence_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,31 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651)
+#define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion {
+
+ struct std_pair_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct is_sequence_impl;
+
+ template<>
+ struct is_sequence_impl<std_pair_tag>
+ {
+ template<typename Sequence>
+ struct apply : mpl::true_ {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/is_view_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/is_view_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_IS_VIEW_IMPL_27042006_2219)
+#define BOOST_FUSION_IS_VIEW_IMPL_27042006_2219
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ struct std_pair_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct is_view_impl;
+
+ template<>
+ struct is_view_impl<std_pair_tag>
+ {
+ template<typename T>
+ struct apply : mpl::false_
+ {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/size_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/size_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,31 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SIZE_IMPL_24122005_1759)
+#define BOOST_FUSION_SIZE_IMPL_24122005_1759
+
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion {
+
+ struct std_pair_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct size_impl;
+
+ template <>
+ struct size_impl<std_pair_tag>
+ {
+ template <typename Sequence>
+ struct apply : mpl::int_<2> {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/value_at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/detail/value_at_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_VALUE_AT_IMPL_24122005_1917)
+#define BOOST_FUSION_VALUE_AT_IMPL_24122005_1917
+
+#include <boost/mpl/if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace boost { namespace fusion {
+
+ struct std_pair_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<std_pair_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ static int const n_value = N::value;
+ BOOST_STATIC_ASSERT((n_value >= 0 && n_value < 2));
+ typedef typename
+ mpl::if_c<
+ (n_value == 0)
+ , typename Sequence::first_type
+ , typename Sequence::second_type
+ >::type
+ type;
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/std_pair_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/std_pair_iterator.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,127 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_STD_PAIR_ITERATOR_09262005_0934)
+#define FUSION_STD_PAIR_ITERATOR_09262005_0934
+
+#include <boost/fusion/iterator/iterator_facade.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/minus.hpp>
+#include <boost/config/no_tr1/utility.hpp>
+
+namespace boost { namespace fusion
+{
+ struct random_access_traversal_tag;
+
+ template <typename Pair_, int N_>
+ struct std_pair_iterator
+ : iterator_facade<std_pair_iterator<Pair_, N_>, random_access_traversal_tag>
+ {
+ BOOST_MPL_ASSERT_RELATION(N_, >=, 0);
+ BOOST_MPL_ASSERT_RELATION(N_, <=, 2);
+
+ typedef mpl::int_<N_> index;
+ typedef Pair_ pair_type;
+
+ std_pair_iterator(Pair_& pair)
+ : pair(pair) {}
+ Pair_& pair;
+
+ template <typename Iterator>
+ struct value_of;
+
+ template <typename Pair>
+ struct value_of<std_pair_iterator<Pair, 0> >
+ : mpl::identity<typename Pair::first_type> {};
+
+ template <typename Pair>
+ struct value_of<std_pair_iterator<Pair, 1> >
+ : mpl::identity<typename Pair::second_type> {};
+
+ template <typename Iterator>
+ struct deref;
+
+ template <typename Pair>
+ struct deref<std_pair_iterator<Pair, 0> >
+ {
+ typedef typename
+ mpl::if_<
+ is_const<Pair>
+ , typename Pair::first_type const&
+ , typename Pair::first_type&
+ >::type
+ type;
+
+ static type
+ call(std_pair_iterator<Pair, 0> const& iter)
+ {
+ return iter.pair.first;
+ }
+ };
+
+ template <typename Pair>
+ struct deref<std_pair_iterator<Pair, 1> >
+ {
+ typedef typename
+ mpl::if_<
+ is_const<Pair>
+ , typename Pair::second_type const&
+ , typename Pair::second_type&
+ >::type
+ type;
+
+ static type
+ call(std_pair_iterator<Pair, 1> const& iter)
+ {
+ return iter.pair.second;
+ }
+ };
+
+ template <typename Iterator, typename N>
+ struct advance
+ {
+ typedef typename Iterator::index index;
+ typedef typename Iterator::pair_type pair_type;
+ typedef std_pair_iterator<pair_type, index::value + N::value> type;
+
+ static type
+ call(Iterator const& iter)
+ {
+ return type(iter.pair);
+ }
+ };
+
+ template <typename Iterator>
+ struct next : advance<Iterator, mpl::int_<1> > {};
+
+ template <typename Iterator>
+ struct prior : advance<Iterator, mpl::int_<-1> > {};
+
+ template <typename I1, typename I2>
+ struct distance : mpl::minus<typename I2::index, typename I1::index>
+ {
+ typedef typename
+ mpl::minus<
+ typename I2::index, typename I1::index
+ >::type
+ type;
+
+ static type
+ call(I1 const&, I2 const&)
+ {
+ return type();
+ }
+ };
+ };
+}}
+
+#endif
+
+

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/tag_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/std_pair/tag_of.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_TAG_OF_24122005_1722)
+#define BOOST_FUSION_TAG_OF_24122005_1722
+
+#include <boost/fusion/support/tag_of_fwd.hpp>
+
+#include <boost/config/no_tr1/utility.hpp>
+
+namespace boost { namespace fusion {
+
+ struct std_pair_tag;
+
+ namespace traits
+ {
+ template<typename T1, typename T2>
+ struct tag_of<std::pair<T1, T2> >
+ {
+ typedef std_pair_tag type;
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_STRUCT_24122005_1744)
+#define BOOST_FUSION_STRUCT_24122005_1744
+
+#include <boost/fusion/adapted/struct/extension.hpp>
+#include <boost/fusion/adapted/struct/adapt_struct.hpp>
+#include <boost/fusion/adapted/struct/adapt_assoc_struct.hpp>
+#include <boost/fusion/adapted/struct/struct_iterator.hpp>
+
+#include <boost/fusion/adapted/struct/detail/at_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/at_key_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/begin_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/category_of_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/end_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/has_key_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/is_sequence_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/is_view_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/size_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/value_at_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/value_at_key_impl.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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,94 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_ADAPT_ASSOC_STRUCT_20070508_2207)
+#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_20070508_2207
+
+#include <boost/fusion/support/tag_of_fwd.hpp>
+#include <boost/fusion/adapted/struct/extension.hpp>
+#include <boost/fusion/adapted/struct/struct_iterator.hpp>
+#include <boost/fusion/adapted/struct/detail/is_view_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/is_sequence_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/category_of_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/begin_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/end_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/size_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/at_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/value_at_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/has_key_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/at_key_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/value_at_key_impl.hpp>
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+#include <boost/preprocessor/seq/for_each_i.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/config/no_tr1/utility.hpp>
+
+namespace boost { namespace fusion { namespace extension {
+ template<typename Struct, typename Key>
+ struct struct_assoc_member;
+}}}
+
+
+#define BOOST_FUSION_ADAPT_ASSOC_STRUCT(name, bseq) \
+ BOOST_FUSION_ADAPT_ASSOC_STRUCT_I( \
+ name, BOOST_PP_CAT(BOOST_FUSION_ADAPT_ASSOC_STRUCT_X bseq, 0)) \
+ /***/
+
+#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_X(x, y, z) ((x, y, z)) BOOST_FUSION_ADAPT_ASSOC_STRUCT_Y
+#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_Y(x, y, z) ((x, y, z)) BOOST_FUSION_ADAPT_ASSOC_STRUCT_X
+#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_X0
+#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_Y0
+
+// BOOST_FUSION_ADAPT_ASSOC_STRUCT_I generates the overarching structure and uses
+// SEQ_FOR_EACH_I to generate the "linear" substructures.
+// Thanks to Paul Mensonides for the PP macro help
+
+#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_I(name, seq) \
+ namespace boost { namespace fusion { namespace traits \
+ { \
+ template <> \
+ struct tag_of<name> \
+ { \
+ typedef struct_tag type; \
+ }; \
+ }}} \
+ namespace boost { namespace fusion { namespace extension \
+ { \
+ template <> \
+ struct struct_size<name> : mpl::int_<BOOST_PP_SEQ_SIZE(seq)> {}; \
+ BOOST_PP_SEQ_FOR_EACH_I(BOOST_FUSION_ADAPT_ASSOC_STRUCT_C, name, seq) \
+ }}} \
+ /***/
+
+#define BOOST_FUSION_ADAPT_ASSOC_STRUCT_C(r, name, i, xy) \
+ template <> \
+ struct struct_member<name, i> \
+ { \
+ typedef BOOST_PP_TUPLE_ELEM(3, 0, xy) type; \
+ static type& call(name& struct_) \
+ { \
+ return struct_.BOOST_PP_TUPLE_ELEM(3, 1, xy); \
+ }; \
+ }; \
+ template<> \
+ struct struct_assoc_member<name, BOOST_PP_TUPLE_ELEM(3, 2, xy)> \
+ { \
+ typedef BOOST_PP_TUPLE_ELEM(3, 0, xy) type; \
+ static type& call(name& struct_) \
+ { \
+ return struct_.BOOST_PP_TUPLE_ELEM(3, 1, xy); \
+ }; \
+ };
+ /***/
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,75 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_ADAPT_STRUCT_APRIL_2_2007_1158AM)
+#define BOOST_FUSION_ADAPT_STRUCT_APRIL_2_2007_1158AM
+
+#include <boost/fusion/support/tag_of_fwd.hpp>
+#include <boost/fusion/adapted/struct/extension.hpp>
+#include <boost/fusion/adapted/struct/struct_iterator.hpp>
+#include <boost/fusion/adapted/struct/detail/is_view_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/is_sequence_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/category_of_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/begin_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/end_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/size_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/at_impl.hpp>
+#include <boost/fusion/adapted/struct/detail/value_at_impl.hpp>
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/punctuation/comma_if.hpp>
+#include <boost/preprocessor/seq/for_each_i.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/config/no_tr1/utility.hpp>
+
+#define BOOST_FUSION_ADAPT_STRUCT(name, bseq) \
+ BOOST_FUSION_ADAPT_STRUCT_I( \
+ name, BOOST_PP_CAT(BOOST_FUSION_ADAPT_STRUCT_X bseq, 0)) \
+ /***/
+
+#define BOOST_FUSION_ADAPT_STRUCT_X(x, y) ((x, y)) BOOST_FUSION_ADAPT_STRUCT_Y
+#define BOOST_FUSION_ADAPT_STRUCT_Y(x, y) ((x, y)) BOOST_FUSION_ADAPT_STRUCT_X
+#define BOOST_FUSION_ADAPT_STRUCT_X0
+#define BOOST_FUSION_ADAPT_STRUCT_Y0
+
+// BOOST_FUSION_ADAPT_STRUCT_I generates the overarching structure and uses
+// SEQ_FOR_EACH_I to generate the "linear" substructures.
+// Thanks to Paul Mensonides for the PP macro help
+
+#define BOOST_FUSION_ADAPT_STRUCT_I(name, seq) \
+ namespace boost { namespace fusion { namespace traits \
+ { \
+ template <> \
+ struct tag_of<name> \
+ { \
+ typedef struct_tag type; \
+ }; \
+ }}} \
+ namespace boost { namespace fusion { namespace extension \
+ { \
+ template <> \
+ struct struct_size<name> : mpl::int_<BOOST_PP_SEQ_SIZE(seq)> {}; \
+ BOOST_PP_SEQ_FOR_EACH_I(BOOST_FUSION_ADAPT_STRUCT_C, name, seq) \
+ }}} \
+ /***/
+
+#define BOOST_FUSION_ADAPT_STRUCT_C(r, name, i, xy) \
+ template <> \
+ struct struct_member<name, i> \
+ { \
+ typedef BOOST_PP_TUPLE_ELEM(2, 0, xy) type; \
+ static type& call(name& struct_) \
+ { \
+ return struct_.BOOST_PP_TUPLE_ELEM(2, 1, xy); \
+ }; \
+ }; \
+ /***/
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/at_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,63 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_AT_IMPL_24122005_1807)
+#define BOOST_FUSION_AT_IMPL_24122005_1807
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion
+{
+ struct struct_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct at_impl;
+
+ template <typename Struct, int N>
+ struct struct_member;
+
+ template <typename Struct>
+ struct struct_size;
+
+ template <>
+ struct at_impl<struct_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ static int const n_value = N::value;
+ BOOST_MPL_ASSERT_RELATION(
+ n_value, <=, extension::struct_size<Sequence>::value);
+
+ typedef typename
+ extension::struct_member<Sequence, N::value>
+ element;
+
+ typedef typename
+ mpl::eval_if<
+ is_const<Sequence>
+ , detail::cref_result<element>
+ , detail::ref_result<element>
+ >::type
+ type;
+
+ static type
+ call(Sequence& seq)
+ {
+ return extension::
+ struct_member<Sequence, N::value>::call(seq);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/at_key_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/at_key_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,54 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+ Copyright (c) 2005-2007 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_AT_KEY_IMPL_20070508_2248)
+#define BOOST_FUSION_AT_KEY_IMPL_20070508_2248
+
+#include <boost/fusion/support/detail/access.hpp>
+
+namespace boost { namespace fusion
+{
+ struct struct_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct at_key_impl;
+
+ template <typename Struct, typename Key>
+ struct struct_assoc_member;
+
+ template <>
+ struct at_key_impl<struct_tag>
+ {
+ template <typename Sequence, typename Key>
+ struct apply
+ {
+ typedef typename
+ extension::struct_assoc_member<Sequence, Key>
+ element;
+
+ typedef typename
+ mpl::eval_if<
+ is_const<Sequence>
+ , detail::cref_result<element>
+ , detail::ref_result<element>
+ >::type
+ type;
+
+ static type
+ call(Sequence& seq)
+ {
+ return extension::
+ struct_assoc_member<Sequence, Key>::call(seq);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/begin_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_BEGIN_IMPL_24122005_1752)
+#define BOOST_FUSION_BEGIN_IMPL_24122005_1752
+
+#include <boost/fusion/adapted/struct/struct_iterator.hpp>
+
+namespace boost { namespace fusion
+{
+ struct struct_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<struct_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef struct_iterator<Sequence, 0> type;
+
+ static type
+ call(Sequence& v)
+ {
+ return type(v);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/category_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/category_of_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731)
+#define BOOST_FUSION_CATEGORY_OF_IMPL_24122005_1731
+
+#include <boost/config/no_tr1/utility.hpp>
+
+namespace boost { namespace fusion
+{
+ struct struct_tag;
+ struct random_access_traversal_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct category_of_impl;
+
+ template<>
+ struct category_of_impl<struct_tag>
+ {
+ template<typename T>
+ struct apply
+ {
+ typedef random_access_traversal_tag type;
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/end_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,48 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_END_IMPL_24122005_1755)
+#define BOOST_FUSION_END_IMPL_24122005_1755
+
+#include <boost/fusion/adapted/struct/struct_iterator.hpp>
+
+namespace boost { namespace fusion
+{
+ struct struct_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct end_impl;
+
+ template <typename Struct>
+ struct struct_size;
+
+ template <>
+ struct end_impl<struct_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef
+ struct_iterator<
+ Sequence
+ , struct_size<Sequence>::value
+ >
+ type;
+
+ static type
+ call(Sequence& v)
+ {
+ return type(v);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/has_key_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/has_key_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,40 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+ Copyright (c) 2005-2007 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_HAS_KEY_IMPL_20070508_2231)
+#define BOOST_FUSION_HAS_KEY_IMPL_20070508_2231
+
+#include <boost/type_traits/is_same.hpp>
+#include <boost/mpl/not.hpp>
+
+namespace boost { namespace fusion {
+
+ struct struct_tag;
+
+ namespace extension
+ {
+ struct no_such_member;
+
+ template<typename T>
+ struct has_key_impl;
+
+ template<typename Struct, typename Key>
+ struct struct_assoc_member;
+
+ template<>
+ struct has_key_impl<struct_tag>
+ {
+ template<typename Sequence, typename Key>
+ struct apply
+ : mpl::not_<is_same<no_such_member, typename struct_assoc_member<Sequence, Key>::type> >
+ {
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/is_sequence_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,31 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651)
+#define BOOST_FUSION_IS_SEQUENCE_IMPL_27122005_1651
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ struct struct_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct is_sequence_impl;
+
+ template<>
+ struct is_sequence_impl<struct_tag>
+ {
+ template<typename Sequence>
+ struct apply : mpl::true_ {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/is_view_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/is_view_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_IS_VIEW_IMPL_27042006_2219)
+#define BOOST_FUSION_IS_VIEW_IMPL_27042006_2219
+
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ struct struct_tag;
+
+ namespace extension
+ {
+ template<typename Tag>
+ struct is_view_impl;
+
+ template<>
+ struct is_view_impl<struct_tag>
+ {
+ template<typename T>
+ struct apply : mpl::false_
+ {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/size_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/size_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,37 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SIZE_IMPL_24122005_1759)
+#define BOOST_FUSION_SIZE_IMPL_24122005_1759
+
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace extension
+ {
+ template <typename Struct>
+ struct struct_size;
+ }
+
+ struct struct_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct size_impl;
+
+ template <>
+ struct size_impl<struct_tag>
+ {
+ template <typename Sequence>
+ struct apply : extension::struct_size<Sequence> {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/value_at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/value_at_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_VALUE_AT_IMPL_24122005_1917)
+#define BOOST_FUSION_VALUE_AT_IMPL_24122005_1917
+
+#include <boost/mpl/if.hpp>
+#include <boost/static_assert.hpp>
+
+namespace boost { namespace fusion
+{
+ struct struct_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct value_at_impl;
+
+ template <typename Struct, int N>
+ struct struct_member;
+
+ template <typename Struct>
+ struct struct_size;
+
+ template <>
+ struct value_at_impl<struct_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ static int const n_value = N::value;
+ BOOST_MPL_ASSERT_RELATION(
+ n_value, <=, extension::struct_size<Sequence>::value);
+
+ typedef typename
+ extension::struct_member<Sequence, N::value>::type
+ type;
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/value_at_key_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/detail/value_at_key_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+ Copyright (c) 2005-2007 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_VALUE_AT_KEY_IMPL_20070508_2300)
+#define BOOST_FUSION_VALUE_AT_KEY_IMPL_20070508_2300
+
+#include <boost/mpl/if.hpp>
+
+namespace boost { namespace fusion
+{
+ struct struct_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct value_at_key_impl;
+
+ template <typename Struct, typename Key>
+ struct struct_assoc_member;
+
+ template <>
+ struct value_at_key_impl<struct_tag>
+ {
+ template <typename Sequence, typename Key>
+ struct apply
+ {
+ typedef typename
+ extension::struct_assoc_member<Sequence, Key>::type
+ type;
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/extension.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/extension.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,68 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_STRUCT_EXTENSION_APRIL_2_2007_1008AM)
+#define FUSION_STRUCT_EXTENSION_APRIL_2_2007_1008AM
+
+#include <boost/type_traits/add_const.hpp>
+
+namespace boost { namespace fusion { namespace extension
+{
+ template <typename Struct, int N>
+ struct struct_member;
+
+ template <typename Struct>
+ struct struct_size;
+
+ template <typename Struct, int N>
+ struct struct_member<Struct const, N>
+ {
+ typedef typename
+ add_const<typename struct_member<Struct, N>::type>::type
+ type;
+
+ static type&
+ call(Struct const& struct_)
+ {
+ return struct_member<Struct, N>::call(
+ const_cast<Struct&>(struct_));
+ }
+ };
+
+ template <typename Struct>
+ struct struct_size<Struct const>
+ : struct_size<Struct>
+ {};
+
+ struct no_such_member;
+
+ template<typename Struct, typename Key>
+ struct struct_assoc_member
+ {
+ typedef no_such_member type;
+ };
+
+ template<typename Struct, typename Key>
+ struct struct_assoc_member<Struct const, Key>
+ {
+ typedef typename
+ add_const<typename struct_assoc_member<Struct, Key>::type>::type
+ type;
+
+ static type&
+ call(Struct const& struct_)
+ {
+ return struct_assoc_member<Struct, Key>::call(
+ const_cast<Struct&>(struct_));
+ }
+ };
+
+}}}
+
+#endif
+
+

Added: sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/struct_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/adapted/struct/struct_iterator.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,103 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_STRUCT_ITERATOR_APRIL_2_2007_1008AM)
+#define FUSION_STRUCT_ITERATOR_APRIL_2_2007_1008AM
+
+#include <boost/fusion/iterator/iterator_facade.hpp>
+#include <boost/fusion/adapted/struct/extension.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/minus.hpp>
+#include <boost/config/no_tr1/utility.hpp>
+
+namespace boost { namespace fusion
+{
+ struct random_access_traversal_tag;
+
+ template <typename Struct, int N_>
+ struct struct_iterator
+ : iterator_facade<struct_iterator<Struct, N_>, random_access_traversal_tag>
+ {
+ BOOST_MPL_ASSERT_RELATION(N_, >=, 0);
+ BOOST_MPL_ASSERT_RELATION(N_, <=, extension::struct_size<Struct>::value);
+
+ typedef mpl::int_<N_> index;
+ typedef Struct struct_type;
+
+ struct_iterator(Struct& struct_)
+ : struct_(struct_) {}
+ Struct& struct_;
+
+ template <typename Iterator>
+ struct value_of
+ : extension::struct_member<Struct, N_>
+ {
+ };
+
+ template <typename Iterator>
+ struct deref
+ {
+ typedef typename
+ add_reference<
+ typename extension::struct_member<Struct, N_>::type
+ >::type
+ type;
+
+ static type
+ call(Iterator const& iter)
+ {
+ return extension::struct_member<Struct, N_>::
+ call(iter.struct_);
+ }
+ };
+
+ template <typename Iterator, typename N>
+ struct advance
+ {
+ typedef typename Iterator::index index;
+ typedef typename Iterator::struct_type struct_type;
+ typedef struct_iterator<struct_type, index::value + N::value> type;
+
+ static type
+ call(Iterator const& iter)
+ {
+ return type(iter.struct_);
+ }
+ };
+
+ template <typename Iterator>
+ struct next : advance<Iterator, mpl::int_<1> > {};
+
+ template <typename Iterator>
+ struct prior : advance<Iterator, mpl::int_<-1> > {};
+
+ template <typename I1, typename I2>
+ struct distance : mpl::minus<typename I2::index, typename I1::index>
+ {
+ typedef typename
+ mpl::minus<
+ typename I2::index, typename I1::index
+ >::type
+ type;
+
+ static type
+ call(I1 const&, I2 const&)
+ {
+ return type();
+ }
+ };
+ };
+}}
+
+#endif
+
+

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_ALGORITHM_10022005_0549)
+#define FUSION_ALGORITHM_10022005_0549
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_ALGORITHM_ITERATION_10022005_0549)
+#define FUSION_ALGORITHM_ITERATION_10022005_0549
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_ACCUMULATE_09172005_1032)
+#define FUSION_ACCUMULATE_09172005_1032
+
+#include <boost/fusion/algorithm/iteration/fold.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <typename Sequence, typename State, typename F>
+ struct accumulate
+ : result_of::fold<Sequence, State, F>
+ {};
+ }
+
+ template <typename Sequence, typename State, typename F>
+ inline typename result_of::accumulate<Sequence, State, F>::type
+ accumulate(Sequence& seq, State const& state, F f)
+ {
+ return fusion::fold(seq, state, f);
+ }
+
+ template <typename Sequence, typename State, typename F>
+ inline typename result_of::accumulate<Sequence const, State, F>::type
+ accumulate(Sequence const& seq, State const& state, F f)
+ {
+ return fusion::fold(seq, state, f);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,278 @@
+/*=============================================================================
+ 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_FOLD_HPP_20070528_1253)
+#define BOOST_FUSION_FOLD_HPP_20070528_1253
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/distance.hpp>
+#include <boost/utility/result_of.hpp>
+
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/add_reference.hpp>
+
+namespace boost { namespace fusion {
+namespace result_of
+{
+ template <typename Sequence, typename State, typename F>
+ struct fold;
+}
+namespace detail
+{
+ template <typename F>
+ struct apply_fold_result
+ {
+ template <typename Value, typename State>
+ struct apply
+ : boost::result_of<F(Value,State)>
+ {};
+ };
+
+ template <typename Iterator, typename State, typename F>
+ struct fold_apply
+ {
+ typedef typename result_of::deref<Iterator>::type dereferenced;
+ typedef typename add_reference<typename add_const<State>::type>::type lvalue_state;
+ typedef typename boost::result_of<F(dereferenced, lvalue_state)>::type type;
+ };
+
+ template <typename First, typename Last, typename State, typename F>
+ struct static_fold;
+
+ template <typename First, typename Last, typename State, typename F>
+ struct next_result_of_fold
+ {
+ typedef typename
+ static_fold<
+ typename result_of::next<First>::type
+ , Last
+ , typename fold_apply<First, State, F>::type
+ , F
+ >::type
+ type;
+ };
+
+ template <typename First, typename Last, typename State, typename F>
+ struct static_fold
+ {
+ typedef typename
+ mpl::if_<
+ result_of::equal_to<First, Last>
+ , mpl::identity<State>
+ , next_result_of_fold<First, Last, State, F>
+ >::type
+ result;
+
+ typedef typename result::type type;
+ };
+
+ template<typename I0, typename State, typename F, int N>
+ struct result_of_unrolled_fold;
+
+ template<int N>
+ struct unrolled_fold
+ {
+ template<typename I0, typename State, typename F>
+ static typename result_of_unrolled_fold<I0, State, F, N>::type
+ call(I0 const& i0, State const& state, F f)
+ {
+ typedef typename result_of::next<I0>::type I1;
+ I1 i1 = fusion::next(i0);
+ typedef typename result_of::next<I1>::type I2;
+ I2 i2 = fusion::next(i1);
+ typedef typename result_of::next<I2>::type I3;
+ I3 i3 = fusion::next(i2);
+ typedef typename result_of::next<I3>::type I4;
+ I4 i4 = fusion::next(i3);
+
+ return unrolled_fold<N-4>::call(i4, f(*i3, f(*i2, f(*i1, f(*i0, state)))), f);
+ }
+ };
+
+ template<>
+ struct unrolled_fold<3>
+ {
+ template<typename I0, typename State, typename F>
+ static typename result_of_unrolled_fold<I0, State, F, 3>::type
+ call(I0 const& i0, State const& state, F f)
+ {
+ typedef typename result_of::next<I0>::type I1;
+ I1 i1 = fusion::next(i0);
+ typedef typename result_of::next<I1>::type I2;
+ I2 i2 = fusion::next(i1);
+ return f(*i2, f(*i1, f(*i0, state)));
+ }
+ };
+
+ template<>
+ struct unrolled_fold<2>
+ {
+ template<typename I0, typename State, typename F>
+ static typename result_of_unrolled_fold<I0, State, F, 2>::type
+ call(I0 const& i0, State const& state, F f)
+ {
+ typedef typename result_of::next<I0>::type I1;
+ I1 i1 = fusion::next(i0);
+ return f(*i1, f(*i0, state));
+ }
+ };
+
+ template<>
+ struct unrolled_fold<1>
+ {
+ template<typename I0, typename State, typename F>
+ static typename result_of_unrolled_fold<I0, State, F, 1>::type
+ call(I0 const& i0, State const& state, F f)
+ {
+ return f(*i0, state);
+ }
+ };
+
+ template<>
+ struct unrolled_fold<0>
+ {
+ template<typename I0, typename State, typename F>
+ static State call(I0 const&, State const& state, F)
+ {
+ return state;
+ }
+ };
+
+ // terminal case
+ template <typename First, typename Last, typename State, typename F>
+ inline State const&
+ linear_fold(First const&, Last const&, State const& state, F, mpl::true_)
+ {
+ return state;
+ }
+
+ // non-terminal case
+ template <typename First, typename Last, typename State, typename F>
+ inline typename static_fold<First, Last, State, F>::type
+ linear_fold(
+ First const& first
+ , Last const& last
+ , State const& state
+ , F f
+ , mpl::false_)
+ {
+ return detail::linear_fold(
+ fusion::next(first)
+ , last
+ , f(*first, state)
+ , f
+ , result_of::equal_to<typename result_of::next<First>::type, Last>()
+ );
+ }
+
+ template<typename I0, typename State, typename F, int N>
+ struct result_of_unrolled_fold
+ {
+ typedef typename result_of::next<I0>::type I1;
+ typedef typename result_of::next<I1>::type I2;
+ typedef typename result_of::next<I2>::type I3;
+ typedef typename result_of::next<I3>::type I4;
+ typedef typename fold_apply<I0, State, F>::type Rest1;
+ typedef typename fold_apply<I1, Rest1, F>::type Rest2;
+ typedef typename fold_apply<I2, Rest2, F>::type Rest3;
+ typedef typename fold_apply<I3, Rest3, F>::type Rest4;
+
+ typedef typename result_of_unrolled_fold<I4, Rest4, F, N-4>::type type;
+ };
+
+ template<typename I0, typename State, typename F>
+ struct result_of_unrolled_fold<I0, State, F, 3>
+ {
+ typedef typename result_of::next<I0>::type I1;
+ typedef typename result_of::next<I1>::type I2;
+ typedef typename fold_apply<I0, State, F>::type Rest;
+ typedef typename fold_apply<I1, Rest, F>::type Rest2;
+ typedef typename fold_apply<I2, Rest2, F>::type type;
+ };
+
+ template<typename I0, typename State, typename F>
+ struct result_of_unrolled_fold<I0, State, F, 2>
+ {
+ typedef typename result_of::next<I0>::type I1;
+ typedef typename fold_apply<I0, State, F>::type Rest;
+ typedef typename fold_apply<I1, Rest, F>::type type;
+ };
+
+ template<typename I0, typename State, typename F>
+ struct result_of_unrolled_fold<I0, State, F, 1>
+ {
+ typedef typename fold_apply<I0, State, F>::type type;
+ };
+
+ template<typename I0, typename State, typename F>
+ struct result_of_unrolled_fold<I0, State, F, 0>
+ {
+ typedef State type;
+ };
+
+ template<typename Sequence, typename State, typename F, bool>
+ struct choose_fold;
+
+ template<typename Sequence, typename State, typename F>
+ struct choose_fold<Sequence, State, F, true>
+ {
+ typedef typename result_of::begin<Sequence>::type begin;
+ typedef typename result_of::end<Sequence>::type end;
+ typedef typename result_of_unrolled_fold<
+ begin, State, F, result_of::distance<begin, end>::type::value>::type type;
+ };
+
+ template<typename Sequence, typename State, typename F>
+ struct choose_fold<Sequence, State, F, false>
+ {
+ typedef typename
+ detail::static_fold<
+ typename result_of::begin<Sequence>::type
+ , typename result_of::end<Sequence>::type
+ , State
+ , F
+ >::type
+ type;
+ };
+
+ template<typename Sequence, typename State, typename F, typename Tag>
+ typename result_of::fold<Sequence, State, F>::type
+ fold(Sequence& seq, State const& state, F f, Tag)
+ {
+ return linear_fold(
+ fusion::begin(seq)
+ , fusion::end(seq)
+ , state
+ , f
+ , result_of::equal_to<
+ typename result_of::begin<Sequence>::type
+ , typename result_of::end<Sequence>::type>()
+ );
+ }
+
+ template<typename Sequence, typename State, typename F>
+ typename result_of::fold<Sequence, State, F>::type
+ fold(Sequence& seq, State const& state, F f, random_access_traversal_tag)
+ {
+ typedef typename result_of::begin<Sequence>::type begin;
+ typedef typename result_of::end<Sequence>::type end;
+ return unrolled_fold<result_of::distance<begin, end>::type::value>::call(
+ fusion::begin(seq)
+ , state
+ , f);
+ }
+}}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,130 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_FOR_EACH_05052005_1028)
+#define FUSION_FOR_EACH_05052005_1028
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/distance.hpp>
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion {
+namespace detail
+{
+ template <typename First, typename Last, typename F>
+ inline void
+ for_each_linear(First const&, Last const&, F const&, mpl::true_)
+ {
+ }
+
+ template <typename First, typename Last, typename F>
+ inline void
+ for_each_linear(First const& first, Last const& last, F const& f, mpl::false_)
+ {
+ f(*first);
+ detail::for_each_linear(fusion::next(first), last, f,
+ result_of::equal_to<typename result_of::next<First>::type, Last>());
+ }
+
+
+ template <typename Sequence, typename F, typename Tag>
+ inline void
+ for_each(Sequence& seq, F const& f, Tag)
+ {
+ detail::for_each_linear(
+ fusion::begin(seq)
+ , fusion::end(seq)
+ , f
+ , result_of::equal_to<
+ typename result_of::begin<Sequence>::type
+ , typename result_of::end<Sequence>::type>());
+ }
+
+ template<int N>
+ struct for_each_unrolled
+ {
+ template<typename I0, typename F>
+ static void call(I0 const& i0, F const& f)
+ {
+ f(*i0);
+ typedef typename result_of::next<I0>::type I1;
+ I1 i1(fusion::next(i0));
+ f(*i1);
+ typedef typename result_of::next<I1>::type I2;
+ I2 i2(fusion::next(i1));
+ f(*i2);
+ typedef typename result_of::next<I2>::type I3;
+ I3 i3(fusion::next(i2));
+ f(*i3);
+ for_each_unrolled<N-4>::call(fusion::next(i3), f);
+ }
+ };
+
+ template<>
+ struct for_each_unrolled<3>
+ {
+ template<typename I0, typename F>
+ static void call(I0 const& i0, F const& f)
+ {
+ f(*i0);
+ typedef typename result_of::next<I0>::type I1;
+ I1 i1(fusion::next(i0));
+ f(*i1);
+ typedef typename result_of::next<I1>::type I2;
+ I2 i2(fusion::next(i1));
+ f(*i2);
+ }
+ };
+
+ template<>
+ struct for_each_unrolled<2>
+ {
+ template<typename I0, typename F>
+ static void call(I0 const& i0, F const& f)
+ {
+ f(*i0);
+ typedef typename result_of::next<I0>::type I1;
+ I1 i1(fusion::next(i0));
+ f(*i1);
+ }
+ };
+
+ template<>
+ struct for_each_unrolled<1>
+ {
+ template<typename I0, typename F>
+ static void call(I0 const& i0, F const& f)
+ {
+ f(*i0);
+ }
+ };
+
+ template<>
+ struct for_each_unrolled<0>
+ {
+ template<typename It, typename F>
+ static void call(It const&, F const&)
+ {
+ }
+ };
+
+ template <typename Sequence, typename F>
+ inline void
+ for_each(Sequence& seq, F const& f, random_access_traversal_tag)
+ {
+ typedef typename result_of::begin<Sequence>::type begin;
+ typedef typename result_of::end<Sequence>::type end;
+ for_each_unrolled<result_of::distance<begin, end>::type::value>::call(fusion::begin(seq), f);
+ }
+}}}
+
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/ext_/for_each_s.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/iteration/ext_/for_each_s.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,91 @@
+/*=============================================================================
+ Copyright (c) 2006 Eric Niebler
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_FOR_EACH_S_05022006_1027)
+#define FUSION_FOR_EACH_S_05022006_1027
+
+#include <boost/mpl/assert.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/fusion/algorithm/iteration/for_each.hpp>
+#include <boost/fusion/sequence/intrinsic/ext_/segments.hpp>
+#include <boost/fusion/support/ext_/is_segmented.hpp>
+
+// fwd declarations
+namespace boost { namespace fusion
+{
+ template <typename Sequence, typename F>
+ void
+ for_each_s(Sequence& seq, F const& f);
+
+ template <typename Sequence, typename F>
+ void
+ for_each_s(Sequence const& seq, F const& f);
+}}
+
+namespace boost { namespace fusion { namespace detail
+{
+ template<typename F>
+ struct for_each_s_bind
+ {
+ explicit for_each_s_bind(F const &f)
+ : f_(f)
+ {}
+
+ template<typename Sequence>
+ void operator ()(Sequence &seq) const
+ {
+ fusion::for_each_s(seq, this->f_);
+ }
+
+ template<typename Sequence>
+ void operator ()(Sequence const &seq) const
+ {
+ fusion::for_each_s(seq, this->f_);
+ }
+ private:
+ F const &f_;
+ };
+
+ template<typename Sequence, typename F>
+ void for_each_s(Sequence &seq, F const &f, mpl::true_)
+ {
+ fusion::for_each_s(fusion::segments(seq), for_each_s_bind<F>(f));
+ }
+
+ template<typename Sequence, typename F>
+ void for_each_s(Sequence &seq, F const &f, mpl::false_)
+ {
+ fusion::for_each(seq, f);
+ }
+}}}
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename F>
+ struct for_each_s
+ {
+ typedef void type;
+ };
+ }
+
+ template <typename Sequence, typename F>
+ inline void
+ for_each_s(Sequence& seq, F const& f)
+ {
+ detail::for_each_s(seq, f, traits::is_segmented<Sequence>());
+ }
+
+ template <typename Sequence, typename F>
+ inline void
+ for_each_s(Sequence const& seq, F const& f)
+ {
+ detail::for_each_s(seq, f, traits::is_segmented<Sequence>());
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,48 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_FOLD_05052005_1214)
+#define BOOST_FUSION_FOLD_05052005_1214
+
+#include <boost/fusion/algorithm/iteration/detail/fold.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/support/category_of.hpp>
+
+#include <boost/type_traits/is_base_of.hpp>
+#include <boost/static_assert.hpp>
+
+namespace boost { namespace fusion {
+
+ struct random_access_traversal_tag;
+
+ namespace result_of
+ {
+ template <typename Sequence, typename State, typename F>
+ struct fold
+ : fusion::detail::choose_fold<
+ Sequence, State, F
+ , is_base_of<random_access_traversal_tag, typename traits::category_of<Sequence>::type>::value>
+ {};
+ }
+
+ template <typename Sequence, typename State, typename F>
+ inline typename result_of::fold<Sequence, State, F>::type
+ fold(Sequence& seq, State const& state, F f)
+ {
+ return detail::fold(seq, state, f, typename traits::category_of<Sequence>::type());
+ }
+
+ template <typename Sequence, typename State, typename F>
+ inline typename result_of::fold<Sequence const, State, F>::type
+ fold(Sequence const& seq, State const& state, F f)
+ {
+ return detail::fold(seq, state, f, typename traits::category_of<Sequence>::type());
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,43 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_FOR_EACH_20070527_0943)
+#define BOOST_FUSION_FOR_EACH_20070527_0943
+
+#include <boost/fusion/algorithm/iteration/detail/for_each.hpp>
+
+#include <boost/fusion/support/category_of.hpp>
+
+namespace boost { namespace fusion {
+
+ namespace result_of
+ {
+ template <typename Sequence, typename F>
+ struct for_each
+ {
+ typedef void type;
+ };
+ }
+
+ struct random_access_traversal_tag;
+
+ template <typename Sequence, typename F>
+ inline void
+ for_each(Sequence& seq, F const& f)
+ {
+ detail::for_each(seq, f, typename traits::category_of<Sequence>::type());
+ }
+
+ template <typename Sequence, typename F>
+ inline void
+ for_each(Sequence const& seq, F const& f)
+ {
+ detail::for_each(seq, f, typename traits::category_of<Sequence>::type());
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_ALGORITHM_QUERY_10022005_0549)
+#define FUSION_ALGORITHM_QUERY_10022005_0549
+
+#include <boost/fusion/algorithm/query/all.hpp>
+#include <boost/fusion/algorithm/query/any.hpp>
+#include <boost/fusion/algorithm/query/count.hpp>
+#include <boost/fusion/algorithm/query/count_if.hpp>
+#include <boost/fusion/algorithm/query/find.hpp>
+#include <boost/fusion/algorithm/query/find_if.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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,34 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_ALL_05052005_1238)
+#define BOOST_FUSION_ALL_05052005_1238
+
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/algorithm/query/detail/all.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename F>
+ struct all
+ {
+ typedef bool type;
+ };
+ }
+
+ template <typename Sequence, typename F>
+ inline bool
+ all(Sequence const& seq, F f)
+ {
+ return detail::all(seq, f, typename traits::category_of<Sequence>::type());
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,35 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_ANY_05052005_1230)
+#define FUSION_ANY_05052005_1230
+
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/algorithm/query/detail/any.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename F>
+ struct any
+ {
+ typedef bool type;
+ };
+ }
+
+ template <typename Sequence, typename F>
+ inline bool
+ any(Sequence const& seq, F f)
+ {
+ return detail::any(seq, f, typename traits::category_of<Sequence>::type());
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,35 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_COUNT_09162005_0150)
+#define BOOST_FUSION_COUNT_09162005_0150
+
+#include <boost/fusion/algorithm/query/count_if.hpp>
+#include <boost/fusion/algorithm/query/detail/count.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename F>
+ struct count
+ {
+ typedef int type;
+ };
+ }
+
+ template <typename Sequence, typename T>
+ inline int
+ count(Sequence const& seq, T const& x)
+ {
+ detail::count_compare<T> f(x);
+ return fusion::count_if(seq, f);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,35 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_COUNT_IF_09162005_0137)
+#define BOOST_FUSION_COUNT_IF_09162005_0137
+
+#include <boost/fusion/algorithm/query/detail/count_if.hpp>
+#include <boost/fusion/support/category_of.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename F>
+ struct count_if
+ {
+ typedef int type;
+ };
+ }
+
+ template <typename Sequence, typename F>
+ inline int
+ count_if(Sequence const& seq, F f)
+ {
+ return detail::count_if(
+ seq, f, typename traits::category_of<Sequence>::type());
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,127 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_ALL_05052005_1237)
+#define FUSION_ALL_05052005_1237
+
+#include <boost/mpl/bool.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.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/fusion/iterator/distance.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename First, typename Last, typename F>
+ inline bool
+ linear_all(First const&, Last const&, F const&, mpl::true_)
+ {
+ return true;
+ }
+
+ template <typename First, typename Last, typename F>
+ inline bool
+ linear_all(First const& first, Last const& last, F& f, mpl::false_)
+ {
+ typename result_of::deref<First>::type x = *first;
+ return f(x) &&
+ detail::linear_all(
+ fusion::next(first)
+ , last
+ , f
+ , result_of::equal_to<typename result_of::next<First>::type, Last>());
+ }
+
+ template <typename Sequence, typename F, typename Tag>
+ inline bool
+ all(Sequence const& seq, F f, Tag)
+ {
+ return detail::linear_all(
+ fusion::begin(seq)
+ , fusion::end(seq)
+ , f
+ , result_of::equal_to<
+ typename result_of::begin<Sequence>::type
+ , typename result_of::end<Sequence>::type>());
+ }
+
+ template<int N>
+ struct unrolled_all
+ {
+ template <typename It, typename F>
+ static bool call(It const& it, F f)
+ {
+ return
+ f(*it) &&
+ f(*fusion::advance_c<1>(it))&&
+ f(*fusion::advance_c<2>(it)) &&
+ f(*fusion::advance_c<3>(it)) &&
+ detail::unrolled_all<N-4>::call(fusion::advance_c<4>(it), f);
+ }
+ };
+
+ template<>
+ struct unrolled_all<3>
+ {
+ template <typename It, typename F>
+ static bool call(It const& it, F f)
+ {
+ return
+ f(*it) &&
+ f(*fusion::advance_c<1>(it)) &&
+ f(*fusion::advance_c<2>(it));
+ }
+ };
+
+ template<>
+ struct unrolled_all<2>
+ {
+ template <typename It, typename F>
+ static bool call(It const& it, F f)
+ {
+ return
+ f(*it) &&
+ f(*fusion::advance_c<1>(it));
+ }
+ };
+
+ template<>
+ struct unrolled_all<1>
+ {
+ template <typename It, typename F>
+ static bool call(It const& it, F f)
+ {
+ return f(*it);
+ }
+ };
+
+ template<>
+ struct unrolled_all<0>
+ {
+ template <typename It, typename F>
+ static bool call(It const& it, F f)
+ {
+ return false;
+ }
+ };
+
+ template <typename Sequence, typename F>
+ inline bool
+ all(Sequence const& seq, F f, random_access_traversal_tag)
+ {
+ typedef typename result_of::begin<Sequence>::type begin;
+ typedef typename result_of::end<Sequence>::type end;
+ return detail::unrolled_all<result_of::distance<begin, end>::type::value>::call(
+ fusion::begin(seq), f);
+ }
+}}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/any.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/any.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,130 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_ANY_05052005_1229)
+#define FUSION_ANY_05052005_1229
+
+#include <boost/mpl/bool.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.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/fusion/iterator/distance.hpp>
+
+namespace boost { namespace fusion {
+ struct random_access_traversal_tag;
+namespace detail
+{
+ template <typename First, typename Last, typename F>
+ inline bool
+ linear_any(First const&, Last const&, F const&, mpl::true_)
+ {
+ return false;
+ }
+
+ template <typename First, typename Last, typename F>
+ inline bool
+ linear_any(First const& first, Last const& last, F& f, mpl::false_)
+ {
+ typename result_of::deref<First>::type x = *first;
+ return f(x) ||
+ detail::linear_any(
+ fusion::next(first)
+ , last
+ , f
+ , result_of::equal_to<typename result_of::next<First>::type, Last>());
+ }
+
+ template <typename Sequence, typename F, typename Tag>
+ inline bool
+ any(Sequence const& seq, F f, Tag)
+ {
+ return detail::linear_any(
+ fusion::begin(seq)
+ , fusion::end(seq)
+ , f
+ , result_of::equal_to<
+ typename result_of::begin<Sequence>::type
+ , typename result_of::end<Sequence>::type>());
+ }
+
+ template<int N>
+ struct unrolled_any
+ {
+ template <typename It, typename F>
+ static bool call(It const& it, F f)
+ {
+ return
+ f(*it) ||
+ f(*fusion::advance_c<1>(it))||
+ f(*fusion::advance_c<2>(it)) ||
+ f(*fusion::advance_c<3>(it)) ||
+ detail::unrolled_any<N-4>::call(fusion::advance_c<4>(it), f);
+ }
+ };
+
+ template<>
+ struct unrolled_any<3>
+ {
+ template <typename It, typename F>
+ static bool call(It const& it, F f)
+ {
+ return
+ f(*it) ||
+ f(*fusion::advance_c<1>(it)) ||
+ f(*fusion::advance_c<2>(it));
+ }
+ };
+
+ template<>
+ struct unrolled_any<2>
+ {
+ template <typename It, typename F>
+ static bool call(It const& it, F f)
+ {
+ return
+ f(*it) ||
+ f(*fusion::advance_c<1>(it));
+ }
+ };
+
+ template<>
+ struct unrolled_any<1>
+ {
+ template <typename It, typename F>
+ static bool call(It const& it, F f)
+ {
+ return f(*it);
+ }
+ };
+
+ template<>
+ struct unrolled_any<0>
+ {
+ template <typename It, typename F>
+ static bool call(It const& it, F f)
+ {
+ return false;
+ }
+ };
+
+ template <typename Sequence, typename F>
+ inline bool
+ any(Sequence const& seq, F f, random_access_traversal_tag)
+ {
+ typedef typename result_of::begin<Sequence>::type begin;
+ typedef typename result_of::end<Sequence>::type end;
+ return detail::unrolled_any<result_of::distance<begin, end>::type::value>::call(
+ fusion::begin(seq), f);
+ }
+}}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/assoc_find.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/assoc_find.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_ASSOC_FIND_09242005_1133)
+#define FUSION_ASSOC_FIND_09242005_1133
+
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_const.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename Sequence, typename Key>
+ struct assoc_find
+ {
+ typedef typename
+ mpl::if_<
+ is_const<Sequence>
+ , typename Sequence::template meta_find_impl_const<Key>::type
+ , typename Sequence::template meta_find_impl<Key>::type
+ >::type
+ type;
+
+ static type
+ call(Sequence& s)
+ {
+ return s.find_impl(mpl::identity<Key>());
+ }
+ };
+}}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_COUNT_09162005_0158)
+#define FUSION_COUNT_09162005_0158
+
+#include <boost/mpl/or.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/fusion/support/detail/access.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <bool is_convertible>
+ struct compare_convertible;
+
+ // T1 is convertible to T2 or vice versa
+ template <>
+ struct compare_convertible<true>
+ {
+ template <typename T1, typename T2>
+ static bool
+ call(T1 const& x, T2 const& y)
+ {
+ return x == y;
+ }
+ };
+
+ // T1 is NOT convertible to T2 NOR vice versa
+ template <>
+ struct compare_convertible<false>
+ {
+ template <typename T1, typename T2>
+ static bool
+ call(T1 const&, T2 const&)
+ {
+ return false;
+ }
+ };
+
+ template <typename T1>
+ struct count_compare
+ {
+ typedef typename detail::call_param<T1>::type param;
+ count_compare(param x)
+ : x(x) {}
+
+ template <typename T2>
+ bool
+ operator()(T2 const& y)
+ {
+ return
+ compare_convertible<
+ mpl::or_<
+ is_convertible<T1, T2>
+ , is_convertible<T2, T1>
+ >::value
+ >::call(x, y);
+ }
+
+ param x;
+ };
+}}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count_if.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/detail/count_if.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,170 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_COUNT_IF_09162005_0141)
+#define BOOST_FUSION_COUNT_IF_09162005_0141
+
+#include <boost/mpl/bool.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/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/iterator/distance.hpp>
+#include <boost/fusion/iterator/advance.hpp>
+
+namespace boost { namespace fusion {
+ struct random_access_traversal_tag;
+namespace detail
+{
+ template <typename First, typename Last, typename F>
+ inline int
+ linear_count_if(First const&, Last const&, F const&, mpl::true_)
+ {
+ return 0;
+ }
+
+ template <typename First, typename Last, typename F>
+ inline int
+ linear_count_if(First const& first, Last const& last, F& f, mpl::false_)
+ {
+ int n =
+ detail::linear_count_if(
+ fusion::next(first)
+ , last
+ , f
+ , result_of::equal_to<typename result_of::next<First>::type, Last>());
+ if (f(*first))
+ ++n;
+ return n;
+ }
+
+ template <typename Sequence, typename F, typename Tag>
+ inline int
+ count_if(Sequence const& seq, F f, Tag)
+ {
+ return detail::linear_count_if(
+ fusion::begin(seq)
+ , fusion::end(seq)
+ , f
+ , result_of::equal_to<
+ typename result_of::begin<Sequence>::type
+ , typename result_of::end<Sequence>::type>());
+ }
+
+ template<int n>
+ struct unrolled_count_if
+ {
+ template<typename I0, typename F>
+ static int call(I0 const& i0, F f)
+ {
+ int ct = unrolled_count_if<n-4>::
+ call(fusion::advance_c<4>(i0), f);
+ if(f(*i0))
+ ++ct;
+
+ typedef typename result_of::next<I0>::type I1;
+ I1 i1(fusion::next(i0));
+ if(f(*i1))
+ ++ct;
+
+ typedef typename result_of::next<I1>::type I2;
+ I2 i2(fusion::next(i1));
+ if(f(*i2))
+ ++ct;
+
+ typedef typename result_of::next<I2>::type I3;
+ I3 i3(fusion::next(i2));
+ if(f(*i3))
+ ++ct;
+
+ return ct;
+ }
+ };
+
+ template<>
+ struct unrolled_count_if<3>
+ {
+ template<typename I0, typename F>
+ static int call(I0 const& i0, F f)
+ {
+ int ct = 0;
+ if(f(*i0))
+ ++ct;
+
+ typedef typename result_of::next<I0>::type I1;
+ I1 i1(fusion::next(i0));
+ if(f(*i1))
+ ++ct;
+
+ typedef typename result_of::next<I1>::type I2;
+ I2 i2(fusion::next(i1));
+ if(f(*i2))
+ ++ct;
+
+ return ct;
+ }
+ };
+
+ template<>
+ struct unrolled_count_if<2>
+ {
+ template<typename I0, typename F>
+ static int call(I0 const& i0, F f)
+ {
+ int ct = 0;
+
+ if(f(*i0))
+ ++ct;
+
+ typedef typename result_of::next<I0>::type I1;
+ I1 i1(fusion::next(i0));
+ if(f(*i1))
+ ++ct;
+
+ return ct;
+ }
+ };
+
+ template<>
+ struct unrolled_count_if<1>
+ {
+ template<typename I0, typename F>
+ static int call(I0 const& i0, F f)
+ {
+ int ct = 0;
+ if(f(*i0))
+ ++ct;
+ return ct;
+ }
+ };
+
+
+ template<>
+ struct unrolled_count_if<0>
+ {
+ template<typename I0, typename F>
+ static int call(I0 const&, F)
+ {
+ return 0;
+ }
+ };
+
+ template <typename Sequence, typename F>
+ inline int
+ count_if(Sequence const& seq, F f, random_access_traversal_tag)
+ {
+ typedef typename result_of::begin<Sequence>::type begin;
+ typedef typename result_of::end<Sequence>::type end;
+ return detail::unrolled_count_if<result_of::distance<begin, end>::type::value>::
+ call(fusion::begin(seq), f);
+ }
+}}}
+
+#endif
+

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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,252 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_FIND_IF_05052005_1107)
+#define FUSION_FIND_IF_05052005_1107
+
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/or.hpp>
+#include <boost/mpl/lambda.hpp>
+#include <boost/mpl/apply.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/iterator/advance.hpp>
+#include <boost/fusion/iterator/distance.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost { namespace fusion {
+ struct random_access_traversal_tag;
+namespace detail
+{
+ template <typename Iterator, typename Pred>
+ struct apply_filter
+ {
+ typedef typename mpl::apply1<
+ Pred, typename result_of::value_of<Iterator>::type>::type type;
+ BOOST_STATIC_CONSTANT(int, value = type::value);
+ };
+
+ template <typename First, typename Last, typename Pred>
+ 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 mpl::or_<
+ result_of::equal_to<First, Last>
+ , apply_filter<First, Pred> >
+ filter;
+
+ typedef typename
+ mpl::eval_if<
+ filter
+ , 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 Iter, typename Pred, int n, int unrolling>
+ struct unroll_again;
+
+ template <typename Iter, typename Pred, int offset>
+ struct apply_offset_filter
+ {
+ typedef typename result_of::advance_c<Iter, offset>::type Shifted;
+ typedef typename
+ mpl::apply1<
+ Pred
+ , typename result_of::value_of<Shifted>::type
+ >::type
+ type;
+ BOOST_STATIC_CONSTANT(int, value = type::value);
+ };
+
+ template<typename Iter, typename Pred, int n>
+ struct unrolled_find_if
+ {
+ typedef typename mpl::eval_if<
+ apply_filter<Iter, Pred>,
+ mpl::identity<Iter>,
+ mpl::eval_if<
+ apply_offset_filter<Iter, Pred, 1>,
+ result_of::advance_c<Iter, 1>,
+ mpl::eval_if<
+ apply_offset_filter<Iter, Pred, 2>,
+ result_of::advance_c<Iter, 2>,
+ mpl::eval_if<
+ apply_offset_filter<Iter, Pred, 3>,
+ result_of::advance_c<Iter, 3>,
+ unroll_again<
+ Iter,
+ Pred,
+ n,
+ 4> > > > >::type type;
+ };
+
+ template<typename Iter, typename Pred>
+ struct unrolled_find_if<Iter, Pred, 3>
+ {
+ typedef typename mpl::eval_if<
+ apply_filter<Iter, Pred>,
+ mpl::identity<Iter>,
+ mpl::eval_if<
+ apply_offset_filter<Iter, Pred, 1>,
+ result_of::advance_c<Iter, 1>,
+ mpl::eval_if<
+ apply_offset_filter<Iter, Pred, 2>,
+ result_of::advance_c<Iter, 2>,
+ result_of::advance_c<Iter, 3> > > >::type type;
+ };
+
+ template<typename Iter, typename Pred>
+ struct unrolled_find_if<Iter, Pred, 2>
+ {
+ typedef typename mpl::eval_if<
+ apply_filter<Iter, Pred>,
+ mpl::identity<Iter>,
+ mpl::eval_if<
+ apply_offset_filter<Iter, Pred, 1>,
+ result_of::advance_c<Iter, 1>,
+ result_of::advance_c<Iter, 2> > >::type type;
+ };
+
+ template<typename Iter, typename Pred>
+ struct unrolled_find_if<Iter, Pred, 1>
+ {
+ typedef typename mpl::eval_if<
+ apply_filter<Iter, Pred>,
+ mpl::identity<Iter>,
+ result_of::advance_c<Iter, 1> >::type type;
+ };
+
+ template<typename Iter, typename Pred, int n, int unrolling>
+ struct unroll_again
+ {
+ typedef typename unrolled_find_if<
+ typename result_of::advance_c<Iter, unrolling>::type,
+ Pred,
+ n-unrolling>::type type;
+ };
+
+ template<typename Iter, typename Pred>
+ struct unrolled_find_if<Iter, Pred, 0>
+ {
+ typedef Iter type;
+ };
+
+ template<typename First, typename Last, typename Pred>
+ struct choose_find_if<First, Last, Pred, true>
+ {
+ typedef typename result_of::distance<First, Last>::type N;
+ typedef typename unrolled_find_if<First, Pred, N::value>::type type;
+ };
+
+ template <typename First, typename Last, typename Pred>
+ struct static_find_if
+ {
+ typedef typename
+ choose_find_if<
+ First
+ , Last
+ , typename mpl::lambda<Pred>::type
+ , is_base_of<random_access_traversal_tag, typename traits::category_of<First>::type>::value
+ >::type
+ type;
+
+ template <typename Iterator>
+ static type
+ recursive_call(Iterator const& iter, mpl::true_)
+ {
+ return iter;
+ }
+
+ template <typename Iterator>
+ static type
+ recursive_call(Iterator const& iter, mpl::false_)
+ {
+ return recursive_call(fusion::next(iter));
+ }
+
+ template <typename Iterator>
+ static type
+ recursive_call(Iterator const& iter)
+ {
+ typedef result_of::equal_to<Iterator, type> found;
+ return recursive_call(iter, found());
+ }
+
+ template <typename Iterator, typename Tag>
+ static type
+ choose_call(Iterator const& iter, Tag)
+ {
+ return recursive_call(iter);
+ }
+
+ template <typename Iterator>
+ static type
+ choose_call(Iterator const& iter, random_access_traversal_tag)
+ {
+ typedef typename result_of::distance<Iterator, type>::type N;
+ return fusion::advance<N>(iter);
+ }
+
+ template <typename Iterator>
+ static type
+ call(Iterator const& iter)
+ {
+ return choose_call(iter, typename traits::category_of<Iterator>::type());
+ }
+ };
+
+ template <typename First, typename Last, typename Pred>
+ struct static_seq_find_if : static_find_if<First, Last, Pred>
+ {
+ typedef typename static_find_if<First, Last, Pred>::type type;
+
+ template <typename Sequence>
+ static type
+ call(Sequence const& seq)
+ {
+ return static_find_if<First, Last, Pred>::call(fusion::begin(seq));
+ }
+
+ template <typename Sequence>
+ static type
+ call(Sequence& seq)
+ {
+ return static_find_if<First, Last, Pred>::call(fusion::begin(seq));
+ }
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/ext_/find_if_s.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/query/ext_/find_if_s.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,222 @@
+/*=============================================================================
+ Copyright (c) 2006 Eric Niebler
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FIND_IF_S_05152006_1027)
+#define FIND_IF_S_05152006_1027
+
+#include <boost/mpl/not.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/fusion/algorithm/query/find_if.hpp>
+#include <boost/fusion/container/list/cons.hpp>
+#include <boost/fusion/sequence/intrinsic/ext_/segments.hpp>
+#include <boost/fusion/view/ext_/segmented_iterator.hpp>
+#include <boost/fusion/view/ext_/segmented_iterator_range.hpp>
+#include <boost/fusion/support/ext_/is_segmented.hpp>
+
+// fwd declarations
+namespace boost { namespace fusion
+{
+ namespace detail
+ {
+ template<typename Sequence, typename Pred, bool IsSegmented = traits::is_segmented<Sequence>::value>
+ struct static_find_if_s_recurse;
+ }
+
+ namespace result_of
+ {
+ template <typename Sequence, typename Pred>
+ struct find_if_s;
+ }
+}}
+
+namespace boost { namespace fusion { namespace detail
+{
+
+ template<typename Sequence, typename Where, bool IsSegmented = traits::is_segmented<Sequence>::value>
+ struct is_found
+ : mpl::not_<result_of::equal_to<Where, typename result_of::end<Sequence>::type> >
+ {};
+
+ template<typename Sequence, typename Cons>
+ struct is_found<Sequence, Cons, true>
+ : mpl::not_<is_same<nil, Cons> >
+ {};
+
+ template<
+ typename SegmentedRange
+ , typename Where
+ , typename Sequence = typename remove_reference<
+ typename result_of::deref<
+ typename SegmentedRange::iterator_type
+ >::type
+ >::type
+ , bool IsSegmented = traits::is_segmented<Sequence>::value
+ >
+ struct as_segmented_cons
+ {
+ typedef cons<
+ SegmentedRange
+ , cons<segmented_range<Sequence, Where, false> >
+ > type;
+
+ static type call(SegmentedRange const &range, Where const &where)
+ {
+ return fusion::make_cons(
+ range
+ , fusion::make_cons(
+ segmented_range<Sequence, Where, false>(*fusion::begin(range), where)
+ )
+ );
+ }
+ };
+
+ template<
+ typename SegmentedRange
+ , typename Where
+ , typename Sequence
+ >
+ struct as_segmented_cons<SegmentedRange, Where, Sequence, true>
+ {
+ typedef cons<SegmentedRange, Where> type;
+
+ static type call(SegmentedRange const &range, Where const &where)
+ {
+ return fusion::make_cons(range, where);
+ }
+ };
+
+ template<
+ typename SegmentedRange
+ , typename Pred
+ , bool IsEmpty = is_empty<SegmentedRange>::value
+ >
+ struct static_find_if_s_seg
+ {
+ typedef typename SegmentedRange::iterator_type first;
+ typedef typename result_of::deref<first>::type segment_ref;
+ typedef typename remove_reference<segment_ref>::type segment;
+ typedef static_find_if_s_recurse<segment, Pred> where;
+ typedef range_next<SegmentedRange> next;
+ typedef is_found<segment, typename where::type> is_found;
+ typedef as_segmented_cons<SegmentedRange, typename where::type> found;
+ typedef static_find_if_s_seg<typename next::type, Pred> not_found;
+ typedef typename mpl::eval_if<is_found, found, not_found>::type type;
+
+ static type call(SegmentedRange const &range)
+ {
+ return call_(range, is_found());
+ }
+
+ private:
+ static type call_(SegmentedRange const &range, mpl::true_)
+ {
+ return found::call(range, where::call(*range.where_));
+ }
+
+ static type call_(SegmentedRange const &range, mpl::false_)
+ {
+ return not_found::call(next::call(range));
+ }
+ };
+
+ template<
+ typename SegmentedRange
+ , typename Pred
+ >
+ struct static_find_if_s_seg<SegmentedRange, Pred, true>
+ {
+ typedef nil type;
+
+ static type call(SegmentedRange const &)
+ {
+ return nil();
+ }
+ };
+
+ template<typename Sequence, typename Pred>
+ struct static_find_if_s_recurse<Sequence, Pred, true>
+ {
+ typedef typename as_segmented_range<Sequence>::type range;
+ typedef static_find_if_s_seg<range, Pred> find_if;
+ typedef typename find_if::type type;
+
+ static type call(Sequence &seq)
+ {
+ return find_if::call(range(fusion::segments(seq)));
+ }
+ };
+
+ template<typename Sequence, typename Pred>
+ struct static_find_if_s_recurse<Sequence, Pred, false>
+ {
+ typedef typename result_of::find_if<Sequence, Pred>::type type;
+
+ static type call(Sequence &seq)
+ {
+ return fusion::find_if<Pred>(seq);
+ }
+ };
+
+ template<typename Sequence, typename Pred, bool IsSegmented = traits::is_segmented<Sequence>::value>
+ struct static_find_if_s
+ : static_find_if_s_recurse<Sequence, Pred, IsSegmented>
+ {};
+
+ template<typename Sequence, typename Pred>
+ struct static_find_if_s<Sequence, Pred, true>
+ {
+ typedef typename as_segmented_range<Sequence>::type range;
+ typedef static_find_if_s_recurse<Sequence, Pred> find_if;
+ typedef typename find_if::type found;
+
+ typedef segmented_iterator<typename reverse_cons<found>::type> type;
+
+ static type call(Sequence &seq)
+ {
+ return type(reverse_cons<found>::call(find_if::call(seq)));
+ }
+ };
+}}}
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename Pred>
+ struct find_if_s
+ {
+ typedef typename
+ detail::static_find_if_s<
+ Sequence
+ , Pred
+ >::type
+ type;
+ };
+ }
+
+ template <typename Pred, typename Sequence>
+ typename lazy_disable_if<
+ is_const<Sequence>
+ , result_of::find_if_s<Sequence, Pred>
+ >::type
+ find_if_s(Sequence& seq)
+ {
+ return detail::static_find_if_s<Sequence, Pred>::call(seq);
+ }
+
+ template <typename Pred, typename Sequence>
+ typename result_of::find_if_s<Sequence const, Pred>::type
+ find_if_s(Sequence const& seq)
+ {
+ return detail::static_find_if_s<Sequence const, Pred>::call(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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_FIND_05052005_1107)
+#define FUSION_FIND_05052005_1107
+
+#include <boost/fusion/algorithm/query/detail/find_if.hpp>
+#include <boost/fusion/algorithm/query/detail/assoc_find.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace boost { namespace fusion
+{
+ struct associative_sequence_tag;
+
+ namespace result_of
+ {
+ template <
+ typename Sequence
+ , typename T
+ , bool is_associative_sequence = traits::is_associative<Sequence>::value >
+ struct find;
+
+ template <typename Sequence, typename T>
+ struct find<Sequence, T, false>
+ {
+ typedef
+ detail::static_seq_find_if<
+ typename result_of::begin<Sequence>::type
+ , typename result_of::end<Sequence>::type
+ , is_same<mpl::_, T>
+ >
+ filter;
+
+ typedef typename filter::type type;
+ };
+
+ template <typename Sequence, typename T>
+ struct find<Sequence, T, true>
+ {
+ typedef detail::assoc_find<Sequence, T> filter;
+ typedef typename filter::type type;
+ };
+ }
+
+ template <typename T, typename Sequence>
+ inline typename
+ lazy_disable_if<
+ is_const<Sequence>
+ , result_of::find<Sequence, T>
+ >::type const
+ find(Sequence& seq)
+ {
+ typedef typename result_of::find<Sequence, T>::filter filter;
+ return filter::call(seq);
+ }
+
+ template <typename T, typename Sequence>
+ inline typename result_of::find<Sequence const, T>::type const
+ find(Sequence const& seq)
+ {
+ typedef typename result_of::find<Sequence const, T>::filter filter;
+ return filter::call(seq);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,69 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_FIND_IF_05052005_1108)
+#define FUSION_FIND_IF_05052005_1108
+
+#include <boost/fusion/algorithm/query/detail/find_if.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_const.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename Pred>
+ struct find_if
+ {
+ typedef typename
+ detail::static_find_if<
+ typename result_of::begin<Sequence>::type
+ , typename result_of::end<Sequence>::type
+ , Pred
+ >::type
+ type;
+ };
+ }
+
+ template <typename Pred, typename Sequence>
+ inline typename
+ lazy_disable_if<
+ is_const<Sequence>
+ , result_of::find_if<Sequence, Pred>
+ >::type
+ find_if(Sequence& seq)
+ {
+ typedef
+ detail::static_find_if<
+ typename result_of::begin<Sequence>::type
+ , typename result_of::end<Sequence>::type
+ , Pred
+ >
+ filter;
+
+ return filter::call(fusion::begin(seq));
+ }
+
+ template <typename Pred, typename Sequence>
+ inline typename result_of::find_if<Sequence const, Pred>::type const
+ find_if(Sequence const& seq)
+ {
+ typedef
+ detail::static_find_if<
+ typename result_of::begin<Sequence const>::type
+ , typename result_of::end<Sequence const>::type
+ , Pred
+ >
+ filter;
+
+ return filter::call(fusion::begin(seq));
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,33 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_NONE_07062005_1128)
+#define BOOST_FUSION_NONE_07062005_1128
+
+#include <boost/fusion/algorithm/query/any.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename F>
+ struct none
+ {
+ typedef bool type;
+ };
+ }
+
+ template <typename Sequence, typename F>
+ inline bool
+ none(Sequence const& seq, F f)
+ {
+ return !fusion::any(seq, f);
+ }
+}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_ALGORITHM_TRANSFORMATION_10022005_0551)
+#define FUSION_ALGORITHM_TRANSFORMATION_10022005_0551
+
+#include <boost/fusion/algorithm/transformation/clear.hpp>
+#include <boost/fusion/algorithm/transformation/erase.hpp>
+#include <boost/fusion/algorithm/transformation/erase_key.hpp>
+#include <boost/fusion/algorithm/transformation/filter.hpp>
+#include <boost/fusion/algorithm/transformation/filter_if.hpp>
+#include <boost/fusion/algorithm/transformation/insert.hpp>
+#include <boost/fusion/algorithm/transformation/insert_range.hpp>
+#include <boost/fusion/algorithm/transformation/pop_back.hpp>
+#include <boost/fusion/algorithm/transformation/pop_front.hpp>
+#include <boost/fusion/algorithm/transformation/push_back.hpp>
+#include <boost/fusion/algorithm/transformation/push_front.hpp>
+#include <boost/fusion/algorithm/transformation/remove.hpp>
+#include <boost/fusion/algorithm/transformation/remove_if.hpp>
+#include <boost/fusion/algorithm/transformation/replace.hpp>
+#include <boost/fusion/algorithm/transformation/replace_if.hpp>
+#include <boost/fusion/algorithm/transformation/reverse.hpp>
+#include <boost/fusion/algorithm/transformation/transform.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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_CLEAR_09172005_1127)
+#define FUSION_CLEAR_09172005_1127
+
+#include <boost/fusion/container/vector/vector10.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence>
+ struct clear
+ {
+ typedef vector0 type;
+ };
+ }
+
+ template <typename Sequence>
+ inline typename result_of::clear<Sequence const>::type
+ clear(Sequence const& seq)
+ {
+ return vector0();
+ }
+}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/algorithm/transformation/detail/replace.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,73 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_REPLACE_08182005_0841)
+#define FUSION_REPLACE_08182005_0841
+
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <bool is_convertible>
+ struct replacer_helper;
+
+ template <>
+ struct replacer_helper<false>
+ {
+ template <typename U, typename T>
+ static U&
+ call(U& x, T const&, T const&)
+ {
+ return x;
+ }
+ };
+
+ template <>
+ struct replacer_helper<true>
+ {
+ template <typename U, typename T>
+ static U
+ call(U& x, T const& old_value, T const& new_value)
+ {
+ return (x == old_value) ? new_value : x;
+ }
+ };
+
+ template <typename T>
+ struct replacer
+ {
+ replacer(T const& old_value, T const& new_value)
+ : old_value(old_value), new_value(new_value) {}
+
+ template<typename Sig>
+ struct result;
+
+ template <typename U1, typename U2>
+ struct result<replacer<U1>(U2)>
+ {
+ typedef typename remove_reference<U2>::type value;
+ typedef typename
+ mpl::if_<is_convertible<T, value>, value, value const&>::type
+ type;
+ };
+
+ template <typename U>
+ typename result<replacer(U)>::type
+ operator()(U const& x) const
+ {
+ return replacer_helper<is_convertible<T, U>::value>::
+ call(x, old_value, new_value);
+ }
+
+ T old_value;
+ T new_value;
+ };
+}}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,73 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_REPLACE_IF_08182005_0946)
+#define FUSION_REPLACE_IF_08182005_0946
+
+#include <boost/utility/enable_if.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/remove_reference.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <bool is_convertible>
+ struct replacer_if_helper;
+
+ template <>
+ struct replacer_if_helper<false>
+ {
+ template <typename U, typename F, typename T>
+ static U&
+ call(U& x, F&, T const&)
+ {
+ return x;
+ }
+ };
+
+ template <>
+ struct replacer_if_helper<true>
+ {
+ template <typename U, typename F, typename T>
+ static U
+ call(U& x, F& f, T const& new_value)
+ {
+ return f(x) ? new_value : x;
+ }
+ };
+
+ template <typename F, typename T>
+ struct replacer_if
+ {
+ replacer_if(F f, T const& new_value)
+ : f(f), new_value(new_value) {}
+
+ template<typename Params>
+ struct result;
+
+ template <typename F1, typename T1, typename U>
+ struct result<replacer_if<F1, T1>(U)>
+ {
+ typedef typename remove_reference<U>::type value;
+ typedef typename
+ mpl::if_<is_convertible<T, value>, value, value const&>::type
+ type;
+ };
+
+ template <typename U>
+ typename result<replacer_if(U)>::type
+ operator()(U const& x) const
+ {
+ return replacer_if_helper<is_convertible<T, U>::value>::
+ call(x, f, new_value);
+ }
+
+ F f;
+ T new_value;
+ };
+}}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,108 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_ERASE_07232005_0534)
+#define FUSION_ERASE_07232005_0534
+
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/iterator/mpl/convert_iterator.hpp>
+#include <boost/fusion/container/vector/vector10.hpp>
+#include <boost/fusion/view/joint_view/joint_view.hpp>
+#include <boost/fusion/view/iterator_range/iterator_range.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename First>
+ struct compute_erase_last // put this in detail!!!
+ {
+ typedef typename result_of::end<Sequence>::type seq_last_type;
+ typedef typename convert_iterator<First>::type first_type;
+ typedef typename
+ mpl::if_<
+ result_of::equal_to<first_type, seq_last_type>
+ , first_type
+ , typename result_of::next<first_type>::type
+ >::type
+ type;
+
+ static type
+ call(First const& first, mpl::false_)
+ {
+ return fusion::next(convert_iterator<First>::call(first));
+ }
+
+ static type
+ call(First const& first, mpl::true_)
+ {
+ return convert_iterator<First>::call(first);
+ }
+
+ static type
+ call(First const& first)
+ {
+ return call(first, result_of::equal_to<first_type, seq_last_type>());
+ }
+ };
+
+ template <
+ typename Sequence
+ , typename First
+ , typename Last = typename compute_erase_last<Sequence, First>::type>
+ struct erase
+ {
+ typedef typename result_of::begin<Sequence>::type seq_first_type;
+ typedef typename result_of::end<Sequence>::type seq_last_type;
+ BOOST_STATIC_ASSERT((!result_of::equal_to<seq_first_type, seq_last_type>::value));
+
+ typedef typename convert_iterator<First>::type first_type;
+ typedef typename convert_iterator<Last>::type last_type;
+ typedef iterator_range<seq_first_type, first_type> left_type;
+ typedef iterator_range<last_type, seq_last_type> right_type;
+ typedef joint_view<left_type, right_type> type;
+ };
+ }
+
+ template <typename Sequence, typename First>
+ typename result_of::erase<Sequence const, First>::type
+ erase(Sequence const& seq, First const& first)
+ {
+ typedef result_of::erase<Sequence const, First> result_of;
+ typedef typename result_of::left_type left_type;
+ typedef typename result_of::right_type right_type;
+ typedef typename result_of::type result_type;
+
+ left_type left(
+ fusion::begin(seq)
+ , convert_iterator<First>::call(first));
+ right_type right(
+ fusion::result_of::compute_erase_last<Sequence const, First>::call(first)
+ , fusion::end(seq));
+ return result_type(left, right);
+ }
+
+ template <typename Sequence, typename First, typename Last>
+ typename result_of::erase<Sequence const, First, Last>::type
+ erase(Sequence const& seq, First const& first, Last const& last)
+ {
+ typedef result_of::erase<Sequence const, First, Last> result_of;
+ typedef typename result_of::left_type left_type;
+ typedef typename result_of::right_type right_type;
+ typedef typename result_of::type result_type;
+
+ left_type left(fusion::begin(seq), first);
+ right_type right(last, fusion::end(seq));
+ return result_type(left, right);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,37 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_ERASE_KEY_10022005_1851)
+#define FUSION_ERASE_KEY_10022005_1851
+
+#include <boost/fusion/algorithm/query/detail/assoc_find.hpp>
+#include <boost/fusion/algorithm/transformation/erase.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename Key>
+ struct erase_key
+ {
+ typedef detail::assoc_find<Sequence, Key> filter;
+ typedef typename erase<Sequence, typename filter::type>::type type;
+ };
+ }
+
+ template <typename Key, typename Sequence>
+ inline typename result_of::erase_key<Sequence const, Key>::type
+ erase_key(Sequence const& seq)
+ {
+ typedef typename result_of::erase_key<Sequence const, Key>::filter filter;
+ return erase(seq, filter::call(seq));
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_FILTER_02122005_1839)
+#define FUSION_FILTER_02122005_1839
+
+#include <boost/fusion/view/filter_view/filter_view.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename T>
+ struct filter
+ {
+ typedef filter_view<Sequence, is_same<mpl::_, T> > type;
+ };
+ }
+
+ template <typename T, typename Sequence>
+ inline typename result_of::filter<Sequence const, T>::type
+ filter(Sequence const& seq)
+ {
+ return filter_view<const Sequence, is_same<mpl::_, T> >(seq);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_FILTER_IF_07172005_0818)
+#define FUSION_FILTER_IF_07172005_0818
+
+#include <boost/fusion/view/filter_view/filter_view.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename Pred>
+ struct filter_if
+ {
+ typedef filter_view<Sequence, Pred> type;
+ };
+ }
+
+ template <typename Pred, typename Sequence>
+ inline typename result_of::filter_if<Sequence const, Pred>::type
+ filter_if(Sequence const& seq)
+ {
+ return filter_view<Sequence const, Pred>(seq);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_INSERT_07222005_0730)
+#define FUSION_INSERT_07222005_0730
+
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/iterator/mpl/convert_iterator.hpp>
+#include <boost/fusion/container/vector/vector10.hpp>
+#include <boost/fusion/view/joint_view/joint_view.hpp>
+#include <boost/fusion/view/single_view/single_view.hpp>
+#include <boost/fusion/view/iterator_range/iterator_range.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename Position, typename T>
+ struct insert
+ {
+ typedef typename detail::as_fusion_element<T>::type element_type;
+ typedef typename convert_iterator<Position>::type pos_type;
+ typedef typename result_of::begin<Sequence>::type first_type;
+ typedef typename result_of::end<Sequence>::type last_type;
+
+ typedef iterator_range<first_type, pos_type> left_type;
+ typedef iterator_range<pos_type, last_type> right_type;
+ typedef fusion::single_view<element_type> single_view;
+ typedef joint_view<left_type, single_view const> left_insert_type;
+ typedef joint_view<left_insert_type, right_type> type;
+ };
+ }
+
+ template <typename Sequence, typename Position, typename T>
+ inline typename result_of::insert<
+ Sequence const, Position, T>::type
+ insert(Sequence const& seq, Position const& pos, T const& x)
+ {
+ typedef result_of::insert<
+ Sequence const, Position, T>
+ result_of;
+ typedef typename result_of::left_type left_type;
+ typedef typename result_of::right_type right_type;
+ typedef typename result_of::single_view single_view;
+ typedef typename result_of::left_insert_type left_insert_type;
+ typedef typename result_of::type result;
+
+ left_type left(fusion::begin(seq), convert_iterator<Position>::call(pos));
+ right_type right(convert_iterator<Position>::call(pos), fusion::end(seq));
+ single_view insert(x);
+ left_insert_type left_insert(left, insert);
+ return result(left_insert, right);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_INSERT_RANGE_009172005_1147)
+#define FUSION_INSERT_RANGE_009172005_1147
+
+#include <boost/fusion/iterator/mpl/convert_iterator.hpp>
+#include <boost/fusion/container/vector/vector10.hpp>
+#include <boost/fusion/view/joint_view/joint_view.hpp>
+#include <boost/fusion/view/iterator_range/iterator_range.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename Position, typename Range>
+ struct insert_range
+ {
+ typedef typename convert_iterator<Position>::type pos_type;
+ typedef typename result_of::begin<Sequence>::type first_type;
+ typedef typename result_of::end<Sequence>::type last_type;
+
+ typedef iterator_range<first_type, pos_type> left_type;
+ typedef iterator_range<pos_type, last_type> right_type;
+ typedef joint_view<left_type, Range> left_insert_type;
+ typedef joint_view<left_insert_type, right_type> type;
+ };
+ }
+
+ template <typename Sequence, typename Position, typename Range>
+ inline typename result_of::insert_range<Sequence const, Position, Range const>::type
+ insert_range(Sequence const& seq, Position const& pos, Range const& range)
+ {
+ typedef result_of::insert_range<Sequence const, Position, Range const> result_of;
+ typedef typename result_of::left_type left_type;
+ typedef typename result_of::right_type right_type;
+ typedef typename result_of::left_insert_type left_insert_type;
+ typedef typename result_of::type result;
+
+ left_type left(fusion::begin(seq), convert_iterator<Position>::call(pos));
+ right_type right(convert_iterator<Position>::call(pos), fusion::end(seq));
+ left_insert_type left_insert(left, range);
+ return result(left_insert, right);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,33 @@
+/*=============================================================================
+ 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(FUSION_JOIN_200601222109)
+#define FUSION_JOIN_200601222109
+
+#include <boost/fusion/view/joint_view.hpp>
+
+namespace boost { namespace fusion {
+
+ namespace result_of
+ {
+ template<typename LhSequence, typename RhSequence>
+ struct join
+ {
+ typedef joint_view<LhSequence, RhSequence> type;
+ };
+ }
+
+ template<typename LhSequence, typename RhSequence>
+ inline typename result_of::join<LhSequence const, RhSequence const>::type
+ join(LhSequence const& lhs, RhSequence const& rhs)
+ {
+ return typename result_of::join<LhSequence const, RhSequence const>::type(
+ lhs, rhs);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_POP_BACK_09172005_1038)
+#define FUSION_POP_BACK_09172005_1038
+
+#include <boost/fusion/view/iterator_range/iterator_range.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/iterator/prior.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence>
+ struct pop_back
+ {
+ typedef
+ iterator_range<
+ typename begin<Sequence>::type
+ , typename prior<
+ typename end<Sequence>::type
+ >::type
+ >
+ type;
+ };
+ }
+
+ template <typename Sequence>
+ inline typename result_of::pop_back<Sequence const>::type
+ pop_back(Sequence const& seq)
+ {
+ typedef typename result_of::pop_back<Sequence const>::type result;
+ return result(fusion::begin(seq), fusion::prior(fusion::end(seq)));
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_POP_FRONT_09172005_1115)
+#define FUSION_POP_FRONT_09172005_1115
+
+#include <boost/fusion/view/iterator_range/iterator_range.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/iterator/next.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence>
+ struct pop_front
+ {
+ typedef
+ iterator_range<
+ typename next<
+ typename begin<Sequence>::type
+ >::type
+ , typename end<Sequence>::type
+ >
+ type;
+ };
+ }
+
+ template <typename Sequence>
+ inline typename result_of::pop_front<Sequence const>::type
+ pop_front(Sequence const& seq)
+ {
+ typedef typename result_of::pop_front<Sequence const>::type result;
+ return result(fusion::next(fusion::begin(seq)), fusion::end(seq));
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_PUSH_BACK_07162005_0235)
+#define FUSION_PUSH_BACK_07162005_0235
+
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/view/joint_view/joint_view.hpp>
+#include <boost/fusion/view/single_view/single_view.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename T>
+ struct push_back
+ {
+ typedef fusion::single_view<typename detail::as_fusion_element<T>::type> single_view;
+ typedef joint_view<Sequence, single_view const> type;
+ };
+ }
+
+ template <typename Sequence, typename T>
+ inline typename result_of::push_back<Sequence const, T>::type
+ push_back(Sequence const& seq, T const& x)
+ {
+ typedef typename result_of::push_back<Sequence const, T> push_back;
+ typedef typename push_back::single_view single_view;
+ typedef typename push_back::type result;
+ single_view x_(x);
+ return result(seq, x_);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_PUSH_FRONT_07162005_0749)
+#define FUSION_PUSH_FRONT_07162005_0749
+
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/view/joint_view/joint_view.hpp>
+#include <boost/fusion/view/single_view/single_view.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename T>
+ struct push_front
+ {
+ typedef fusion::single_view<typename detail::as_fusion_element<T>::type> single_view;
+ typedef joint_view<single_view const, Sequence> type;
+ };
+ }
+
+ template <typename Sequence, typename T>
+ inline typename result_of::push_front<Sequence const, T>::type
+ push_front(Sequence const& seq, T const& x)
+ {
+ typedef typename result_of::push_front<Sequence const, T> push_front;
+ typedef typename push_front::single_view single_view;
+ typedef typename push_front::type result;
+ single_view x_(x);
+ return result(x_, seq);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_REMOVE_07162005_0818)
+#define FUSION_REMOVE_07162005_0818
+
+#include <boost/fusion/view/filter_view/filter_view.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename T>
+ struct remove
+ {
+ typedef filter_view<Sequence, mpl::not_<is_same<mpl::_, T> > > type;
+ };
+ }
+
+ template <typename T, typename Sequence>
+ inline typename result_of::remove<Sequence const, T>::type
+ remove(Sequence const& seq)
+ {
+ typedef typename result_of::remove<Sequence const, T>::type result_type;
+ return result_type(seq);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_REMOVE_IF_07162005_0818)
+#define FUSION_REMOVE_IF_07162005_0818
+
+#include <boost/fusion/view/filter_view/filter_view.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename Pred>
+ struct remove_if
+ {
+ typedef filter_view<Sequence, mpl::not_<Pred> > type;
+ };
+ }
+
+ template <typename Pred, typename Sequence>
+ inline typename result_of::remove_if<Sequence const, Pred>::type
+ remove_if(Sequence const& seq)
+ {
+ typedef typename result_of::remove_if<Sequence const, Pred>::type result_type;
+ return result_type(seq);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_REPLACE_08182005_0830)
+#define FUSION_REPLACE_08182005_0830
+
+#include <boost/fusion/view/transform_view/transform_view.hpp>
+#include <boost/fusion/algorithm/transformation/detail/replace.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename T>
+ struct replace
+ {
+ typedef transform_view<Sequence, detail::replacer<T> > type;
+ };
+ }
+
+ template <typename Sequence, typename T>
+ inline typename result_of::replace<Sequence const, T>::type
+ replace(Sequence const& seq, T const& old_value, T const& new_value)
+ {
+ typedef typename result_of::replace<Sequence const, T>::type result;
+ detail::replacer<T> f(old_value, new_value);
+ return result(seq, f);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,37 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_REPLACE_IF_08182005_0939)
+#define FUSION_REPLACE_IF_08182005_0939
+
+#include <boost/fusion/view/transform_view/transform_view.hpp>
+#include <boost/fusion/algorithm/transformation/detail/replace_if.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence, typename F, typename T>
+ struct replace_if
+ {
+ typedef transform_view<Sequence, detail::replacer_if<F, T> > type;
+ };
+ }
+
+ template <typename Sequence, typename F, typename T>
+ inline typename result_of::replace_if<Sequence const, F, T>::type
+ replace_if(Sequence const& seq, F pred, T const& new_value)
+ {
+ typedef typename result_of::replace_if<Sequence const, F, T>::type result;
+ detail::replacer_if<F, T> f(pred, new_value);
+ return result(seq, f);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_REVERSE_07212005_1230)
+#define FUSION_REVERSE_07212005_1230
+
+#include <boost/fusion/view/reverse_view/reverse_view.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence>
+ struct reverse
+ {
+ typedef reverse_view<Sequence> type;
+ };
+ }
+
+ template <typename Sequence>
+ inline reverse_view<Sequence const>
+ reverse(Sequence const& view)
+ {
+ return reverse_view<Sequence const>(view);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_TRANSFORM_07052005_1057)
+#define FUSION_TRANSFORM_07052005_1057
+
+#include <boost/fusion/view/transform_view/transform_view.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <typename Sequence1, typename Sequence2, typename F = void_>
+ struct transform
+ {
+ typedef transform_view<Sequence1, Sequence2, F> type;
+ };
+
+ template <typename Sequence, typename F>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ struct transform<Sequence, F, void_>
+#else
+ struct transform<Sequence, F>
+#endif
+ {
+ typedef transform_view<Sequence, F> type;
+ };
+ }
+
+ template <typename Sequence, typename F>
+ inline typename result_of::transform<Sequence const, F>::type
+ transform(Sequence const& seq, F f)
+ {
+ return transform_view<Sequence const, F>(seq, f);
+ }
+
+ template <typename Sequence1, typename Sequence2, typename F>
+ inline typename result_of::transform<Sequence1 const, Sequence2 const, F>::type
+ transform(Sequence1 const& seq1, Sequence2 const& seq2, F f)
+ {
+ return transform_view<Sequence1 const, Sequence2 const, F>(seq1, seq2, f);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,86 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_ZIP_HPP_20060125_2058)
+#define FUSION_ZIP_HPP_20060125_2058
+
+#include <boost/fusion/view/zip_view.hpp>
+#include <boost/fusion/adapted/mpl.hpp>
+#include <boost/fusion/container/vector.hpp>
+#include <boost/fusion/container/vector/convert.hpp>
+#include <boost/type_traits/add_reference.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_from_to.hpp>
+#include <boost/preprocessor/arithmetic/inc.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/transform.hpp>
+#include <boost/mpl/placeholders.hpp>
+
+#if !defined(FUSION_MAX_ZIP_SEQUENCES)
+#define FUSION_MAX_ZIP_SEQUENCES 10
+#endif
+
+namespace boost { namespace fusion {
+
+ struct void_;
+
+ namespace result_of
+ {
+ template<BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(BOOST_PP_INC(FUSION_MAX_ZIP_SEQUENCES), typename T, fusion::void_)>
+ struct zip;
+ }
+
+#define BOOST_PP_FILENAME_1 \
+ <boost/fusion/algorithm/transformation/zip.hpp>
+#define BOOST_PP_ITERATION_LIMITS (2, FUSION_MAX_ZIP_SEQUENCES)
+#include BOOST_PP_ITERATE()
+
+}}
+
+#endif
+
+#else
+
+#define ZIP_ITERATION BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, typename T) >
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct zip< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(ZIP_ITERATION), FUSION_MAX_ZIP_SEQUENCES, TEXT, void_) >
+ #undef TEXT
+#else
+ struct zip< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) >
+#endif
+ {
+ typedef mpl::vector< BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, T) > sequences;
+ typedef typename mpl::transform<sequences, add_reference<mpl::_> >::type ref_params;
+ typedef zip_view<typename result_of::as_vector<ref_params>::type> type;
+ };
+ }
+
+#define FUSION_REF_PARAM(z, n, data) const T ## n&
+
+ template<BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, typename T)>
+ inline typename result_of::zip<BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, const T)>::type
+ zip(BOOST_PP_ENUM_BINARY_PARAMS(ZIP_ITERATION, T, const& t))
+ {
+ fusion::vector<BOOST_PP_ENUM(ZIP_ITERATION, FUSION_REF_PARAM, _)> seqs(
+ BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, t));
+ return typename result_of::zip<BOOST_PP_ENUM_PARAMS(ZIP_ITERATION, const T)>::type(
+ seqs);
+ }
+
+#undef FUSION_REF_PARAM
+#undef ZIP_ITERATION
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_SEQUENCE_CLASS_10022005_0614)
+#define FUSION_SEQUENCE_CLASS_10022005_0614
+
+#include <boost/fusion/container/vector.hpp>
+#include <boost/fusion/container/list.hpp>
+#include <boost/fusion/container/map.hpp>
+#include <boost/fusion/container/set.hpp>
+#include <boost/fusion/container/deque.hpp>
+#include <boost/fusion/container/generation.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036)
+#define BOOST_FUSION_SEQUENCE_CONTAINER_DEQUE_24112006_2036
+
+#include <boost/fusion/container/deque/deque.hpp>
+#include <boost/fusion/container/deque/convert.hpp>
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque/back_extended_deque.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque/back_extended_deque.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,37 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_BACK_EXTENDED_DEQUE_26112006_2209)
+#define BOOST_FUSION_BACK_EXTENDED_DEQUE_26112006_2209
+
+#include <boost/fusion/container/deque/detail/keyed_element.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/plus.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/add_reference.hpp>
+
+namespace boost { namespace fusion {
+ template<typename Deque, typename T>
+ struct back_extended_deque
+ : detail::keyed_element<typename Deque::next_up, T, Deque>,
+ sequence_base<back_extended_deque<Deque, T> >
+ {
+ typedef detail::keyed_element<typename Deque::next_up, T, Deque> base;
+ typedef typename Deque::next_down next_down;
+ typedef mpl::int_<mpl::plus<typename Deque::next_up, mpl::int_<1> >::value> next_up;
+ typedef mpl::plus<typename result_of::size<Deque>::type, mpl::int_<1> > size;
+
+ back_extended_deque(Deque const& deque, typename add_reference<typename add_const<T>::type>::type t)
+ : base(t, deque)
+ {}
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque/convert.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque/convert.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,48 @@
+/*=============================================================================
+ 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(FUSION_CONVERT_20061213_2207)
+#define FUSION_CONVERT_20061213_2207
+
+#include <boost/fusion/container/deque/detail/as_deque.hpp>
+#include <boost/fusion/container/deque/detail/convert_impl.hpp>
+#include <boost/fusion/container/deque/deque.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence>
+ struct as_deque
+ {
+ typedef typename detail::as_deque<result_of::size<Sequence>::value> gen;
+ typedef typename gen::
+ template apply<typename result_of::begin<Sequence>::type>::type
+ type;
+ };
+ }
+
+ template <typename Sequence>
+ inline typename result_of::as_deque<Sequence>::type
+ as_deque(Sequence& seq)
+ {
+ typedef typename result_of::as_deque<Sequence>::gen gen;
+ return gen::call(fusion::begin(seq));
+ }
+
+ template <typename Sequence>
+ inline typename result_of::as_deque<Sequence const>::type
+ as_deque(Sequence const& seq)
+ {
+ typedef typename result_of::as_deque<Sequence const>::gen gen;
+ return gen::call(fusion::begin(seq));
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque/deque.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque/deque.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,93 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_DEQUE_26112006_1649)
+#define BOOST_FUSION_DEQUE_26112006_1649
+
+#include <boost/fusion/container/deque/limits.hpp>
+#include <boost/fusion/container/deque/front_extended_deque.hpp>
+#include <boost/fusion/container/deque/back_extended_deque.hpp>
+#include <boost/fusion/container/deque/detail/deque_keyed_values.hpp>
+#include <boost/fusion/container/deque/detail/deque_initial_size.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/container/deque/detail/keyed_element.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+
+#include <boost/fusion/container/deque/deque_fwd.hpp>
+#include <boost/fusion/container/deque/detail/value_at_impl.hpp>
+#include <boost/fusion/container/deque/detail/at_impl.hpp>
+#include <boost/fusion/container/deque/detail/begin_impl.hpp>
+#include <boost/fusion/container/deque/detail/end_impl.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/mpl/bool.hpp>
+
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/void.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace boost { namespace fusion {
+
+ struct deque_tag;
+
+ template<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename T)>
+ struct deque
+ :
+ detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>::type,
+ sequence_base<deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, T)> >
+ {
+ typedef deque_tag fusion_tag;
+ typedef typename detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>::type base;
+ typedef typename detail::deque_initial_size<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>::type size;
+ typedef mpl::int_<size::value> next_up;
+ typedef mpl::int_<
+ mpl::if_<mpl::equal_to<size, mpl::int_<0> >, mpl::int_<0>, mpl::int_<-1> >::type::value> next_down;
+ typedef mpl::false_ is_view;
+
+#include <boost/fusion/container/deque/detail/deque_forward_ctor.hpp>
+
+ deque()
+ {}
+
+ explicit deque(typename add_reference<typename add_const<T0>::type>::type t0)
+ : base(t0, detail::nil_keyed_element())
+ {}
+
+ template<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename U)>
+ deque(deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, U)> const& seq)
+ : base(seq)
+ {}
+
+ template<typename Sequence>
+ deque(Sequence const& seq, typename disable_if<is_convertible<Sequence, T0> >::type* dummy = 0)
+ : base(base::from_iterator(fusion::begin(seq)))
+ {}
+
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename U)>
+ deque&
+ operator=(deque<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, U)> const& rhs)
+ {
+ base::operator=(rhs);
+ return *this;
+ }
+
+ template <typename T>
+ deque&
+ operator=(T const& rhs)
+ {
+ base::operator=(rhs);
+ return *this;
+ }
+
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque/deque_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque/deque_fwd.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,24 @@
+/*=============================================================================
+ Copyright (c) 2005-2007 Joel de Guzman
+ Copyright (c) 2005-2007 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_DEQUE_FORWARD_02092007_0749)
+#define FUSION_DEQUE_FORWARD_02092007_0749
+
+#include <boost/fusion/container/deque/limits.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ template<
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_DEQUE_SIZE, typename T, void_)>
+ struct deque;
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque/deque_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque/deque_iterator.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,106 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_DEQUE_ITERATOR_26112006_2154)
+#define BOOST_FUSION_DEQUE_ITERATOR_26112006_2154
+
+#include <boost/fusion/iterator/iterator_facade.hpp>
+#include <boost/fusion/container/deque/detail/keyed_element.hpp>
+#include <boost/mpl/minus.hpp>
+#include <boost/mpl/equal_to.hpp>
+
+namespace boost { namespace fusion {
+
+ struct bidirectional_traversal_tag;
+
+ template<typename Seq, int Pos>
+ struct deque_iterator
+ : iterator_facade<deque_iterator<Seq, Pos>, bidirectional_traversal_tag>
+ {
+ typedef Seq sequence;
+ typedef mpl::int_<Pos> index;
+
+ deque_iterator(Seq& seq)
+ : seq_(seq)
+ {}
+
+ template<typename Iterator>
+ struct value_of
+ : detail::keyed_element_value_at<
+ typename Iterator::sequence, typename Iterator::index>
+ {};
+
+ template<typename Iterator>
+ struct deref
+ {
+ typedef typename detail::keyed_element_value_at<
+ typename Iterator::sequence, typename Iterator::index>::type element_type;
+
+ typedef typename add_reference<
+ typename mpl::eval_if<
+ is_const<typename Iterator::sequence>,
+ add_const<element_type>,
+ mpl::identity<element_type> >::type>::type type;
+
+ static type
+ call(Iterator const& it)
+ {
+ return it.seq_.get(typename Iterator::index());
+ }
+ };
+
+ template <typename Iterator, typename N>
+ struct advance
+ {
+ typedef typename Iterator::index index;
+ typedef typename Iterator::sequence sequence;
+ typedef deque_iterator<sequence, index::value + N::value> type;
+
+ static type
+ call(Iterator const& i)
+ {
+ return type(i.seq_);
+ }
+ };
+
+ template<typename Iterator>
+ struct next
+ : advance<Iterator, mpl::int_<1> >
+ {};
+
+ template<typename Iterator>
+ struct prior
+ : advance<Iterator, mpl::int_<-1> >
+ {};
+
+ template <typename I1, typename I2>
+ struct distance : mpl::minus<typename I2::index, typename I1::index>
+ {
+ typedef typename
+ mpl::minus<
+ typename I2::index, typename I1::index
+ >::type
+ type;
+
+ static type
+ call(I1 const&, I2 const&)
+ {
+ return type();
+ }
+ };
+
+ template<typename I1, typename I2>
+ struct equal_to
+ : mpl::equal_to<typename I1::index, typename I2::index>
+ {};
+
+ Seq& seq_;
+ };
+
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/as_deque.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/as_deque.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,102 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_AS_DEQUE_20061213_2210)
+#define FUSION_AS_DEQUE_20061213_2210
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/inc.hpp>
+#include <boost/preprocessor/dec.hpp>
+#include <boost/fusion/container/deque/deque.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <int size>
+ struct as_deque;
+
+ template <>
+ struct as_deque<0>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef deque<> type;
+ };
+
+ template <typename Iterator>
+ static typename apply<Iterator>::type
+ call(Iterator)
+ {
+ return deque<>();
+ }
+ };
+
+#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
+ typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
+ BOOST_PP_CAT(I, BOOST_PP_INC(n));
+
+#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \
+ typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \
+ BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n));
+
+#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \
+ typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
+ BOOST_PP_CAT(T, n);
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/deque/detail/as_deque.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_NEXT_ITERATOR
+#undef BOOST_FUSION_NEXT_CALL_ITERATOR
+#undef BOOST_FUSION_VALUE_OF_ITERATOR
+
+}}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ template <>
+ struct as_deque<N>
+ {
+ template <typename I0>
+ struct apply
+ {
+ BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
+ BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
+ typedef deque<BOOST_PP_ENUM_PARAMS(N, T)> type;
+ };
+
+ template <typename Iterator>
+ static typename apply<Iterator>::type
+ call(Iterator const& i0)
+ {
+ typedef apply<Iterator> gen;
+ typedef typename gen::type result;
+ BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _)
+ return result(BOOST_PP_ENUM_PARAMS(N, *i));
+ }
+ };
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/at_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,59 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_DEQUE_AT_IMPL_09122006_2017)
+#define BOOST_FUSION_DEQUE_AT_IMPL_09122006_2017
+
+#include <boost/fusion/container/deque/detail/keyed_element.hpp>
+
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/equal_to.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/mpl/identity.hpp>
+
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/add_reference.hpp>
+
+namespace boost { namespace fusion {
+
+ struct deque_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct at_impl;
+
+ template<>
+ struct at_impl<deque_tag>
+ {
+ template<typename Sequence, typename N>
+ struct apply
+ {
+ typedef typename Sequence::next_up next_up;
+ typedef typename Sequence::next_down next_down;
+ BOOST_MPL_ASSERT_RELATION(next_down::value, !=, next_up::value);
+
+ typedef mpl::plus<next_down, mpl::int_<1> > offset;
+ typedef mpl::int_<mpl::plus<N, offset>::value> adjusted_index;
+ typedef typename detail::keyed_element_value_at<Sequence, adjusted_index>::type element_type;
+ typedef typename add_reference<
+ typename mpl::eval_if<
+ is_const<Sequence>,
+ add_const<element_type>,
+ mpl::identity<element_type> >::type>::type type;
+
+ static type call(Sequence& seq)
+ {
+ return seq.get(adjusted_index());
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/begin_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,46 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_DEQUE_BEGIN_IMPL_09122006_2034)
+#define BOOST_FUSION_DEQUE_BEGIN_IMPL_09122006_2034
+
+#include <boost/fusion/container/deque/deque_iterator.hpp>
+
+#include <boost/mpl/equal_to.hpp>
+#include <boost/mpl/if.hpp>
+
+namespace boost { namespace fusion {
+
+ struct deque_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct begin_impl;
+
+ template<>
+ struct begin_impl<deque_tag>
+ {
+ template<typename Sequence>
+ struct apply
+ {
+ typedef typename mpl::if_<
+ mpl::equal_to<typename Sequence::next_down, typename Sequence::next_up>,
+ deque_iterator<Sequence, 0>,
+ deque_iterator<
+ Sequence, mpl::plus<typename Sequence::next_down, mpl::int_<1> >::value> >::type type;
+
+ static type call(Sequence& seq)
+ {
+ return type(seq);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/convert_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/convert_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_CONVERT_IMPL_20061213_2207)
+#define FUSION_CONVERT_IMPL_20061213_2207
+
+#include <boost/fusion/container/deque/detail/as_deque.hpp>
+#include <boost/fusion/container/deque/deque.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+namespace boost { namespace fusion
+{
+ struct deque_tag;
+
+ namespace extension
+ {
+ template <typename T>
+ struct convert_impl;
+
+ template <>
+ struct convert_impl<deque_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename detail::as_deque<result_of::size<Sequence>::value> gen;
+ typedef typename gen::
+ template apply<typename result_of::begin<Sequence>::type>::type
+ type;
+
+ static type call(Sequence& seq)
+ {
+ return gen::call(fusion::begin(seq));
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/deque_forward_ctor.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/deque_forward_ctor.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,31 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_FORWARD_CTOR_04122006_2212)
+#define BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_FORWARD_CTOR_04122006_2212
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+#define BOOST_PP_FILENAME_1 \
+ <boost/fusion/container/deque/detail/deque_forward_ctor.hpp>
+#define BOOST_PP_ITERATION_LIMITS (2, FUSION_MAX_DEQUE_SIZE)
+#include BOOST_PP_ITERATE()
+
+#endif
+#else
+
+#define N BOOST_PP_ITERATION()
+
+deque(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference<typename add_const<T, >::type>::type t))
+ : base(detail::deque_keyed_values<BOOST_PP_ENUM_PARAMS(N, T)>::call(BOOST_PP_ENUM_PARAMS(N, t)))
+{}
+
+#undef N
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/deque_initial_size.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/deque_initial_size.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_DEQUE_DETAIL_DEQUE_INITIAL_SIZE_26112006_2139)
+#define BOOST_FUSION_DEQUE_DETAIL_DEQUE_INITIAL_SIZE_26112006_2139
+
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/mpl/find.hpp>
+#include <boost/mpl/begin.hpp>
+#include <boost/mpl/distance.hpp>
+#include <boost/mpl/equal_to.hpp>
+#include <boost/mpl/vector.hpp>
+
+namespace boost { namespace fusion {
+
+ struct void_;
+
+namespace detail {
+
+ template<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename T)>
+ struct deque_initial_size
+ {
+ typedef mpl::vector<BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, T)> args;
+ typedef typename mpl::find<args, void_>::type first_void;
+ typedef typename mpl::distance<typename mpl::begin<args>::type, first_void>::type type;
+ };
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/deque_keyed_values.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/deque_keyed_values.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,75 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330)
+#define BOOST_FUSION_DEQUE_DETAIL_DEQUE_KEYED_VALUES_26112006_1330
+
+#include <boost/fusion/container/deque/limits.hpp>
+#include <boost/fusion/container/deque/detail/keyed_element.hpp>
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/type_traits/add_reference.hpp>
+
+#include <boost/mpl/plus.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/print.hpp>
+
+#define FUSION_VOID(z, n, _) void_
+
+namespace boost { namespace fusion {
+
+ struct void_;
+
+namespace detail {
+
+ template<typename Key, typename Value, typename Rest>
+ struct keyed_element;
+
+ struct nil_keyed_element;
+
+ template<typename N, BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(FUSION_MAX_DEQUE_SIZE, typename T, void_)>
+ struct deque_keyed_values_impl;
+
+ template<typename N>
+ struct deque_keyed_values_impl<N, BOOST_PP_ENUM(FUSION_MAX_DEQUE_SIZE, FUSION_VOID, _)>
+ {
+ typedef nil_keyed_element type;
+
+ static type call()
+ {
+ return type();
+ }
+ };
+
+ template<typename N, BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, typename T)>
+ struct deque_keyed_values_impl
+ {
+ typedef mpl::int_<mpl::plus<N, mpl::int_<1> >::value> next_index;
+
+ typedef typename deque_keyed_values_impl<
+ next_index,
+ BOOST_PP_ENUM_SHIFTED_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>::type tail;
+ typedef keyed_element<N, T0, tail> type;
+
+#include <boost/fusion/container/deque/detail/deque_keyed_values_call.hpp>
+
+ };
+
+ template<BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(FUSION_MAX_DEQUE_SIZE, typename T, void_)>
+ struct deque_keyed_values
+ : deque_keyed_values_impl<mpl::int_<0>, BOOST_PP_ENUM_PARAMS(FUSION_MAX_DEQUE_SIZE, T)>
+ {};
+
+}}}
+
+#undef FUSION_VOID
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/deque_keyed_values_call.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_PP_IS_ITERATING)
+#if !defined(BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_KEYED_VALUES_CALL_04122006_2211)
+#define BOOST_FUSION_SEQUENCE_DEQUE_DETAIL_DEQUE_KEYED_VALUES_CALL_04122006_2211
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+#define BOOST_PP_FILENAME_1 \
+ <boost/fusion/container/deque/detail/deque_keyed_values_call.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
+#include BOOST_PP_ITERATE()
+
+#endif
+#else
+
+#define N BOOST_PP_ITERATION()
+
+static type call(BOOST_PP_ENUM_BINARY_PARAMS(N, typename add_reference<typename add_const<T, >::type>::type t))
+{
+ return type(t0,
+ deque_keyed_values_impl<
+ next_index
+#if N > 1
+ , BOOST_PP_ENUM_SHIFTED_PARAMS(N, T)
+#endif
+ >::call(BOOST_PP_ENUM_SHIFTED_PARAMS(N, t)));
+}
+
+#undef N
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/end_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,46 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_DEQUE_END_IMPL_09122006_2034)
+#define BOOST_FUSION_DEQUE_END_IMPL_09122006_2034
+
+#include <boost/fusion/container/deque/deque_iterator.hpp>
+
+#include <boost/mpl/equal_to.hpp>
+#include <boost/mpl/if.hpp>
+
+namespace boost { namespace fusion {
+
+ struct deque_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct end_impl;
+
+ template<>
+ struct end_impl<deque_tag>
+ {
+ template<typename Sequence>
+ struct apply
+ {
+ typedef typename mpl::if_<
+ mpl::equal_to<typename Sequence::next_down, typename Sequence::next_up>,
+ deque_iterator<Sequence, 0>,
+ deque_iterator<
+ Sequence, Sequence::next_up::value> >::type type;
+
+ static type call(Sequence& seq)
+ {
+ return type(seq);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/keyed_element.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/keyed_element.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,111 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2005-2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_DEQUE_DETAIL_KEYED_ELEMENT_26112006_1330)
+#define BOOST_FUSION_DEQUE_DETAIL_KEYED_ELEMENT_26112006_1330
+
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/type_traits/add_const.hpp>
+
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+
+namespace boost { namespace fusion {
+
+ struct fusion_sequence_tag;
+
+namespace detail {
+
+ struct nil_keyed_element
+ {
+ typedef fusion_sequence_tag tag;
+ void get();
+
+ template<typename It>
+ static nil_keyed_element
+ from_iterator(It const&)
+ {
+ return nil_keyed_element();
+ }
+ };
+
+ template<typename Key, typename Value, typename Rest>
+ struct keyed_element
+ : Rest
+ {
+ typedef Rest base;
+ typedef fusion_sequence_tag tag;
+ using Rest::get;
+
+ template<typename It>
+ static keyed_element
+ from_iterator(It const& it)
+ {
+ return keyed_element(
+ *it, base::from_iterator(fusion::next(it)));
+ }
+
+ template<typename U, typename Rst>
+ keyed_element(keyed_element<Key, U, Rst> const& rhs)
+ : Rest(rhs.get_base()), value_(rhs.value_)
+ {}
+
+ Rest const get_base() const
+ {
+ return *this;
+ }
+
+ typename add_reference<typename add_const<Value>::type>::type get(Key) const
+ {
+ return value_;
+ }
+
+ typename add_reference<Value>::type get(Key)
+ {
+ return value_;
+ }
+
+ keyed_element(typename add_reference<typename add_const<Value>::type>::type value, Rest const& rest)
+ : Rest(rest), value_(value)
+ {}
+
+ keyed_element()
+ : Rest(), value_()
+ {}
+
+ template<typename U, typename Rst>
+ keyed_element& operator=(keyed_element<Key, U, Rst> const& rhs)
+ {
+ base::operator=(static_cast<Rst const&>(rhs)); // cast for msvc-7.1
+ value_ = rhs.value_;
+ return *this;
+ }
+
+ keyed_element& operator=(keyed_element const& rhs)
+ {
+ base::operator=(rhs);
+ value_ = rhs.value_;
+ return *this;
+ }
+
+ Value value_;
+ };
+
+ template<typename Elem, typename Key>
+ struct keyed_element_value_at
+ : keyed_element_value_at<typename Elem::base, Key>
+ {};
+
+ template<typename Key, typename Value, typename Rest>
+ struct keyed_element_value_at<keyed_element<Key, Value, Rest>, Key>
+ {
+ typedef Value type;
+ };
+
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/value_at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque/detail/value_at_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_DEQUE_VALUE_AT_IMPL_08122006_0756)
+#define BOOST_FUSION_DEQUE_VALUE_AT_IMPL_08122006_0756
+
+#include <boost/fusion/container/deque/detail/keyed_element.hpp>
+
+#include <boost/mpl/equal_to.hpp>
+#include <boost/mpl/assert.hpp>
+
+namespace boost { namespace fusion {
+
+ struct deque_tag;
+
+ namespace extension
+ {
+ template<typename T>
+ struct value_at_impl;
+
+ template<>
+ struct value_at_impl<deque_tag>
+ {
+ template<typename Sequence, typename N>
+ struct apply
+ {
+ typedef typename Sequence::next_up next_up;
+ typedef typename Sequence::next_down next_down;
+ BOOST_MPL_ASSERT_RELATION(next_down::value, !=, next_up::value);
+
+ typedef mpl::plus<next_down, mpl::int_<1> > offset;
+ typedef mpl::int_<mpl::plus<N, offset>::value> adjusted_index;
+ typedef typename detail::keyed_element_value_at<Sequence, adjusted_index>::type type;
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque/front_extended_deque.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque/front_extended_deque.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_FRONT_EXTENDED_DEQUE_26112006_2209)
+#define BOOST_FUSION_FRONT_EXTENDED_DEQUE_26112006_2209
+
+#include <boost/fusion/container/deque/detail/keyed_element.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/minus.hpp>
+#include <boost/mpl/plus.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/add_reference.hpp>
+
+#include <boost/fusion/support/sequence_base.hpp>
+
+namespace boost { namespace fusion {
+ template<typename Deque, typename T>
+ struct front_extended_deque
+ : detail::keyed_element<typename Deque::next_down, T, Deque>,
+ sequence_base<front_extended_deque<Deque, T> >
+ {
+ typedef detail::keyed_element<typename Deque::next_down, T, Deque> base;
+ typedef mpl::int_<mpl::minus<typename Deque::next_down, mpl::int_<1> >::value> next_down;
+ typedef typename Deque::next_up next_up;
+ typedef mpl::plus<typename result_of::size<Deque>::type, mpl::int_<1> > size;
+
+ front_extended_deque(Deque const& deque, typename add_reference<typename add_const<T>::type>::type t)
+ : base(t, deque)
+ {}
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/deque/limits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/deque/limits.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(BOOST_FUSION_DEQUE_LIMITS_26112006_1737)
+#define BOOST_FUSION_DEQUE_LIMITS_26112006_1737
+
+#if !defined(FUSION_MAX_DEQUE_SIZE)
+#define FUSION_MAX_DEQUE_SIZE 10
+#endif
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/ext_/tree.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/ext_/tree.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,130 @@
+/*=============================================================================
+ Copyright (c) 2006 Eric Niebler
+
+ Use, modification and distribution is 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 FUSION_BINARY_TREE_EAN_05032006_1027
+#define FUSION_BINARY_TREE_EAN_05032006_1027
+
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/fusion/sequence/intrinsic/at.hpp>
+#include <boost/fusion/view/single_view.hpp>
+#include <boost/fusion/container/list/cons.hpp> // for nil
+#include <boost/fusion/container/vector/vector10.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/sequence/intrinsic/ext_/segments.hpp>
+#include <boost/fusion/support/ext_/is_segmented.hpp>
+#include <boost/fusion/view/ext_/segmented_iterator.hpp>
+
+namespace boost { namespace fusion
+{
+ struct tree_tag;
+
+ namespace detail
+ {
+ template<typename T, bool IsConst>
+ struct reference : add_reference<T> {};
+
+ template<typename T>
+ struct reference<T, true> : reference<typename add_const<T>::type, false> {};
+
+ template<typename T>
+ struct reference<T &, true> : reference<T, false> {};
+ }
+
+ template<typename Data, typename Left = nil, typename Right = nil>
+ struct tree
+ : sequence_base<tree<Data, Left, Right> >
+ {
+ typedef Data data_type;
+ typedef Left left_type;
+ typedef Right right_type;
+ typedef tree_tag fusion_tag;
+ typedef forward_traversal_tag category;
+ typedef mpl::false_ is_view;
+
+ typedef typename mpl::if_<
+ traits::is_sequence<Data>
+ , Data
+ , single_view<Data>
+ >::type data_view;
+
+ explicit tree(
+ typename fusion::detail::call_param<Data>::type data_
+ , typename fusion::detail::call_param<Left>::type left_ = Left()
+ , typename fusion::detail::call_param<Right>::type right_ = Right()
+ )
+ : segments(left_, data_view(data_), right_)
+ {}
+
+ typedef vector3<Left, data_view, Right> segments_type;
+ segments_type segments;
+ };
+
+ template<typename Data>
+ tree<Data> make_tree(Data const &data)
+ {
+ return tree<Data>(data);
+ }
+
+ template<typename Data, typename Left, typename Right>
+ tree<Data, Left, Right> make_tree(Data const &data, Left const &left, Right const &right)
+ {
+ return tree<Data, Left, Right>(data, left, right);
+ }
+
+ namespace extension
+ {
+ template<>
+ struct is_segmented_impl<tree_tag>
+ {
+ template<typename Sequence>
+ struct apply : mpl::true_ {};
+ };
+
+ template<>
+ struct segments_impl<tree_tag>
+ {
+ template<typename Sequence>
+ struct apply
+ {
+ typedef typename mpl::if_<
+ is_const<Sequence>
+ , typename Sequence::segments_type const &
+ , typename Sequence::segments_type &
+ >::type type;
+
+ static type call(Sequence &seq)
+ {
+ return seq.segments;
+ }
+ };
+ };
+
+ template<>
+ struct begin_impl<tree_tag>
+ {
+ template<typename Sequence>
+ struct apply
+ : segmented_begin<Sequence>
+ {};
+ };
+
+ template<>
+ struct end_impl<tree_tag>
+ {
+ template<typename Sequence>
+ struct apply
+ : segmented_end<Sequence>
+ {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_SEQUENCE_GENERATION_10022005_0615)
+#define FUSION_SEQUENCE_GENERATION_10022005_0615
+
+#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_vector.hpp>
+#include <boost/fusion/container/generation/vector_tie.hpp>
+#include <boost/fusion/container/generation/make_set.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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,43 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_CONS_TIE_07182005_0854)
+#define FUSION_CONS_TIE_07182005_0854
+
+#include <boost/fusion/container/list/cons.hpp>
+
+namespace boost { namespace fusion
+{
+ struct nil;
+
+ namespace result_of
+ {
+ template <typename Car, typename Cdr = nil>
+ struct cons_tie
+ {
+ typedef cons<Car&, Cdr> type;
+ };
+ }
+
+ // $$$ do we really want a cons_tie? $$$
+ template <typename Car>
+ inline cons<Car&>
+ cons_tie(Car& car)
+ {
+ return cons<Car&>(car);
+ }
+
+ // $$$ do we really want a cons_tie? $$$
+ template <typename Car, typename Cdr>
+ inline cons<Car&, Cdr>
+ cons_tie(Car& car, Cdr const& cdr)
+ {
+ return cons<Car&, Cdr>(car, cdr);
+ }
+}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/deque_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/deque_tie.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,79 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_DEQUE_TIE_07192005_1242)
+#define FUSION_DEQUE_TIE_07192005_1242
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/deque/deque.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_DEQUE_SIZE, typename T, void_)
+ , typename Extra = void_
+ >
+ struct deque_tie;
+ }
+
+#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)&
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/deque_tie.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_REF
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct deque_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) >
+ #undef TEXT
+#else
+ struct deque_tie<BOOST_PP_ENUM_PARAMS(N, T)>
+#endif
+ {
+ typedef deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)> type;
+ };
+ }
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ inline deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
+ deque_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _))
+ {
+ return deque<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>(
+ BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/ignore.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/ignore.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,32 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_IGNORE_07192005_0329)
+#define FUSION_IGNORE_07192005_0329
+
+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-05-13 15:06:33 EDT (Wed, 13 May 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_PP_IS_ITERATING
+#if !defined(FUSION_LIST_TIE_07192005_0109)
+#define FUSION_LIST_TIE_07192005_0109
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/list/list.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_LIST_SIZE, typename T, void_)
+ , typename Extra = void_
+ >
+ struct list_tie;
+ }
+
+// $$$ shouldn't we remove_reference first to allow references? $$$
+#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)&
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/list_tie.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_REF
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct list_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_LIST_SIZE, TEXT, void_) >
+ #undef TEXT
+#else
+ struct list_tie<BOOST_PP_ENUM_PARAMS(N, T)>
+#endif
+ {
+ typedef list<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)> type;
+ };
+ }
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ inline list<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
+ list_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _))
+ {
+ return list<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>(
+ BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_cons.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_cons.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_MAKE_CONS_07172005_0918)
+#define FUSION_MAKE_CONS_07172005_0918
+
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/container/list/cons.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, Cdr> type;
+ };
+ }
+
+ template <typename Car>
+ inline cons<typename detail::as_fusion_element<Car>::type>
+ make_cons(Car const& car)
+ {
+ return cons<typename detail::as_fusion_element<Car>::type>(car);
+ }
+
+ template <typename Car, typename Cdr>
+ inline cons<typename detail::as_fusion_element<Car>::type, Cdr>
+ make_cons(Car const& car, Cdr const& cdr)
+ {
+ return cons<typename detail::as_fusion_element<Car>::type, Cdr>(car, cdr);
+ }
+}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_deque.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_deque.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_MAKE_DEQUE_07162005_0243)
+#define FUSION_MAKE_DEQUE_07162005_0243
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/deque/deque.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_DEQUE_SIZE, typename T, void_)
+ , typename Extra = void_
+ >
+ struct make_deque;
+
+ template <>
+ struct make_deque<>
+ {
+ typedef deque<> type;
+ };
+ }
+
+ inline deque<>
+ make_deque()
+ {
+ return deque<>();
+ }
+
+#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
+ typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_deque.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_DEQUE_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_AS_FUSION_ELEMENT
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct make_deque< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_DEQUE_SIZE, TEXT, void_) >
+ #undef TEXT
+#else
+ struct make_deque<BOOST_PP_ENUM_PARAMS(N, T)>
+#endif
+ {
+ typedef deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
+ };
+ }
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ inline deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
+ make_deque(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
+ {
+ return deque<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
+ BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,91 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_MAKE_LIST_07192005_1239)
+#define FUSION_MAKE_LIST_07192005_1239
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/list/list.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_LIST_SIZE, typename T, void_)
+ , typename Extra = void_
+ >
+ struct make_list;
+
+ template <>
+ struct make_list<>
+ {
+ typedef list<> type;
+ };
+ }
+
+ inline list<>
+ make_list()
+ {
+ return list<>();
+ }
+
+#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
+ typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_list.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_AS_FUSION_ELEMENT
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct make_list< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_LIST_SIZE, TEXT, void_) >
+ #undef TEXT
+#else
+ struct make_list<BOOST_PP_ENUM_PARAMS(N, T)>
+#endif
+ {
+ typedef list<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
+ };
+ }
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ inline list<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
+ make_list(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
+ {
+ return list<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
+ BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_map.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_map.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,106 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_MAKE_MAP_07222005_1247)
+#define FUSION_MAKE_MAP_07222005_1247
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/support/pair.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_VECTOR_SIZE, typename K, void_)
+ , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_VECTOR_SIZE, typename D, void_)
+ , typename Extra = void_
+ >
+ struct make_map;
+
+ template <>
+ struct make_map<>
+ {
+ typedef map<> type;
+ };
+ }
+
+ inline map<>
+ make_map()
+ {
+ return map<>();
+ }
+
+#define BOOST_FUSION_PAIR(z, n, data) \
+ fusion::pair< \
+ BOOST_PP_CAT(K, n) \
+ , typename detail::as_fusion_element<BOOST_PP_CAT(D, n)>::type>
+
+#define BOOST_FUSION_MAKE_PAIR(z, n, data) \
+ fusion::make_pair<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_map.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_PAIR
+#undef BOOST_FUSION_MAKE_PAIR
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS(N, typename K)
+ , BOOST_PP_ENUM_PARAMS(N, typename D)
+ >
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_VECTOR_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_)>
+ #undef TEXT
+#else
+ struct make_map<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
+#endif
+ {
+ typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)> type;
+ };
+ }
+
+ template <
+ BOOST_PP_ENUM_PARAMS(N, typename K)
+ , BOOST_PP_ENUM_PARAMS(N, typename D)
+ >
+ inline map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>
+ make_map(BOOST_PP_ENUM_BINARY_PARAMS(N, D, const& _))
+ {
+ return map<BOOST_PP_ENUM(N, BOOST_FUSION_PAIR, _)>(
+ BOOST_PP_ENUM(N, BOOST_FUSION_MAKE_PAIR, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_set.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_set.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,93 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_MAKE_SET_09162005_1125)
+#define FUSION_MAKE_SET_09162005_1125
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/set/set.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+#include <boost/fusion/support/pair.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_VECTOR_SIZE, typename T, void_)
+ , typename Extra = void_
+ >
+ struct make_set;
+
+ template <>
+ struct make_set<>
+ {
+ typedef set<> type;
+ };
+ }
+
+ inline set<>
+ make_set()
+ {
+ return set<>();
+ }
+
+#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
+ typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_set.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_ELEMENT
+#undef BOOST_FUSION_AS_ELEMENT
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct make_set< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_SET_SIZE, TEXT, void_) >
+ #undef TEXT
+#else
+ struct make_set<BOOST_PP_ENUM_PARAMS(N, T)>
+#endif
+ {
+ typedef set<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
+ };
+ }
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ inline set<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
+ make_set(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
+ {
+ return set<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
+ BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/make_vector.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,91 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_MAKE_VECTOR_07162005_0243)
+#define FUSION_MAKE_VECTOR_07162005_0243
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_VECTOR_SIZE, typename T, void_)
+ , typename Extra = void_
+ >
+ struct make_vector;
+
+ template <>
+ struct make_vector<>
+ {
+ typedef vector<> type;
+ };
+ }
+
+ inline vector<>
+ make_vector()
+ {
+ return vector<>();
+ }
+
+#define BOOST_FUSION_AS_FUSION_ELEMENT(z, n, data) \
+ typename detail::as_fusion_element<BOOST_PP_CAT(T, n)>::type
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/make_vector.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_AS_FUSION_ELEMENT
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct make_vector< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) >
+ #undef TEXT
+#else
+ struct make_vector<BOOST_PP_ENUM_PARAMS(N, T)>
+#endif
+ {
+ typedef vector<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)> type;
+ };
+ }
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ inline vector<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>
+ make_vector(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
+ {
+ return vector<BOOST_PP_ENUM(N, BOOST_FUSION_AS_FUSION_ELEMENT, _)>(
+ BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/map_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/map_tie.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,110 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+ Copyright (c) 2006 Dan Marsden
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_MAP_TIE_20060814_1116)
+#define FUSION_MAP_TIE_20060814_1116
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/container/map/limits.hpp>
+#include <boost/fusion/support/pair.hpp>
+#include <boost/fusion/container/generation/pair_tie.hpp>
+#include <boost/type_traits/add_reference.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_MAP_SIZE, typename K, void_)
+ , BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_MAP_SIZE, typename D, void_)
+ , typename Extra = void_
+ >
+ struct map_tie;
+
+ template <>
+ struct map_tie<>
+ {
+ typedef map<> type;
+ };
+ }
+
+ inline map<>
+ map_tie()
+ {
+ return map<>();
+ }
+
+#define BOOST_FUSION_TIED_PAIR(z, n, data) \
+ fusion::pair< \
+ BOOST_PP_CAT(K, n) \
+ , typename add_reference<BOOST_PP_CAT(D, n)>::type>
+
+#define BOOST_FUSION_PAIR_TIE(z, n, data) \
+ fusion::pair_tie<BOOST_PP_CAT(K, n)>(BOOST_PP_CAT(_, n)) \
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/map_tie.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_PAIR
+#undef BOOST_FUSION_MAKE_PAIR
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS(N, typename K)
+ , BOOST_PP_ENUM_PARAMS(N, typename D)
+ >
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+
+ struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D) BOOST_PP_REPEAT_FROM_TO(N, FUSION_MAX_MAP_SIZE, TEXT, void_) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_MAP_SIZE, TEXT, void_)>
+ #undef TEXT
+#else
+ struct map_tie<BOOST_PP_ENUM_PARAMS(N, K), BOOST_PP_ENUM_PARAMS(N, D)>
+#endif
+ {
+ typedef map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)> type;
+ };
+ }
+
+ template <
+ BOOST_PP_ENUM_PARAMS(N, typename K)
+ , BOOST_PP_ENUM_PARAMS(N, typename D)
+ >
+ inline map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>
+ map_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, D, & _))
+ {
+ return map<BOOST_PP_ENUM(N, BOOST_FUSION_TIED_PAIR, _)>(
+ BOOST_PP_ENUM(N, BOOST_FUSION_PAIR_TIE, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/generation/pair_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/generation/pair_tie.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,43 @@
+/*=============================================================================
+ 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/type_traits/is_const.hpp>
+#include <boost/utility/enable_if.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, T&> type;
+ };
+ }
+
+ template<typename Key, typename T>
+ typename disable_if<is_const<T>, typename result_of::pair_tie<Key, T>::type>::type
+ pair_tie(T& t)
+ {
+ return typename result_of::pair_tie<Key, T>::type(t);
+ }
+
+ template<typename Key, typename T>
+ typename result_of::pair_tie<Key, T const>::type
+ pair_tie(T const& t)
+ {
+ return typename result_of::pair_tie<Key, T const>::type(t);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,78 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_VECTOR_TIE_07192005_1242)
+#define FUSION_VECTOR_TIE_07192005_1242
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ namespace result_of
+ {
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_VECTOR_SIZE, typename T, void_)
+ , typename Extra = void_
+ >
+ struct vector_tie;
+ }
+
+#define BOOST_FUSION_REF(z, n, data) BOOST_PP_CAT(T, n)&
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/generation/vector_tie.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_REF
+
+}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ namespace result_of
+ {
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+#if defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+ #define TEXT(z, n, text) , text
+ struct vector_tie< BOOST_PP_ENUM_PARAMS(N, T) BOOST_PP_REPEAT_FROM_TO(BOOST_PP_DEC(N), FUSION_MAX_VECTOR_SIZE, TEXT, void_) >
+ #undef TEXT
+#else
+ struct vector_tie<BOOST_PP_ENUM_PARAMS(N, T)>
+#endif
+ {
+ typedef vector<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)> type;
+ };
+ }
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ inline vector<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>
+ vector_tie(BOOST_PP_ENUM_BINARY_PARAMS(N, T, & _))
+ {
+ return vector<BOOST_PP_ENUM(N, BOOST_FUSION_REF, _)>(
+ BOOST_PP_ENUM_PARAMS(N, _));
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_SEQUENCE_CLASS_LIST_10022005_0605)
+#define FUSION_SEQUENCE_CLASS_LIST_10022005_0605
+
+#include <boost/fusion/container/list/cons.hpp>
+#include <boost/fusion/container/list/cons_iterator.hpp>
+#include <boost/fusion/container/list/limits.hpp>
+#include <boost/fusion/container/list/list.hpp>
+#include <boost/fusion/container/list/list_fwd.hpp>
+#include <boost/fusion/container/list/convert.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/cons.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,143 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_CONS_07172005_0843)
+#define FUSION_CONS_07172005_0843
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/container/list/cons_iterator.hpp>
+#include <boost/fusion/container/list/detail/begin_impl.hpp>
+#include <boost/fusion/container/list/detail/end_impl.hpp>
+#include <boost/fusion/container/list/detail/at_impl.hpp>
+#include <boost/fusion/container/list/detail/value_at_impl.hpp>
+#include <boost/fusion/container/list/detail/empty_impl.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/or.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+ struct cons_tag;
+ struct forward_traversal_tag;
+ struct fusion_sequence_tag;
+
+ struct nil : sequence_base<nil>
+ {
+ typedef mpl::int_<0> size;
+ typedef cons_tag fusion_tag;
+ typedef fusion_sequence_tag tag; // this gets picked up by MPL
+ typedef mpl::false_ is_view;
+ typedef forward_traversal_tag category;
+ typedef void_ car_type;
+ typedef void_ cdr_type;
+
+ nil() {}
+
+ template <typename Iterator>
+ nil(Iterator const& iter, mpl::true_ /*this_is_an_iterator*/)
+ {}
+
+ template <typename Iterator>
+ void assign_from_iter(Iterator const& iter)
+ {
+ }
+ };
+
+ 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; // this gets picked up by MPL
+ typedef mpl::false_ is_view;
+ typedef forward_traversal_tag category;
+ typedef Car car_type;
+ typedef Cdr cdr_type;
+
+ cons()
+ : car(), cdr() {}
+
+ explicit cons(typename detail::call_param<Car>::type car)
+ : car(car), cdr() {}
+
+ cons(
+ typename detail::call_param<Car>::type car
+ , typename detail::call_param<Cdr>::type cdr)
+ : car(car), cdr(cdr) {}
+
+ template <typename Car2, typename Cdr2>
+ cons(cons<Car2, Cdr2> const& rhs)
+ : car(rhs.car), cdr(rhs.cdr) {}
+
+ cons(cons const& rhs)
+ : car(rhs.car), cdr(rhs.cdr) {}
+
+ template <typename Sequence>
+ cons(
+ Sequence const& seq
+ , typename disable_if<
+ mpl::or_<
+ is_convertible<Sequence, cons> // use copy ctor instead
+ , is_convertible<Sequence, Car> // use copy to car instead
+ >
+ >::type* dummy = 0
+ )
+ : car(*fusion::begin(seq))
+ , cdr(fusion::next(fusion::begin(seq)), mpl::true_()) {}
+
+ template <typename Iterator>
+ cons(Iterator const& iter, mpl::true_ /*this_is_an_iterator*/)
+ : car(*iter)
+ , cdr(fusion::next(iter), mpl::true_()) {}
+
+ template <typename Car2, typename Cdr2>
+ cons& operator=(cons<Car2, Cdr2> const& rhs)
+ {
+ car = rhs.car;
+ cdr = rhs.cdr;
+ return *this;
+ }
+
+ cons& operator=(cons const& rhs)
+ {
+ car = rhs.car;
+ cdr = rhs.cdr;
+ return *this;
+ }
+
+ template <typename Sequence>
+ typename disable_if<is_convertible<Sequence, Car>, cons&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type Iterator;
+ Iterator iter = fusion::begin(seq);
+ this->assign_from_iter(iter);
+ return *this;
+ }
+
+ template <typename Iterator>
+ void assign_from_iter(Iterator const& iter)
+ {
+ car = *iter;
+ cdr.assign_from_iter(fusion::next(iter));
+ }
+
+ car_type car;
+ cdr_type cdr;
+ };
+}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/cons_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/cons_iterator.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,85 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_CONS_ITERATOR_07172005_0849)
+#define FUSION_CONS_ITERATOR_07172005_0849
+
+#include <boost/type_traits/add_const.hpp>
+#include <boost/fusion/support/iterator_base.hpp>
+#include <boost/fusion/container/list/detail/deref_impl.hpp>
+#include <boost/fusion/container/list/detail/next_impl.hpp>
+#include <boost/fusion/container/list/detail/value_of_impl.hpp>
+#include <boost/fusion/container/list/detail/equal_to_impl.hpp>
+#include <boost/fusion/container/list/list_fwd.hpp>
+
+namespace boost { namespace fusion
+{
+ struct nil;
+ struct cons_iterator_tag;
+ struct forward_traversal_tag;
+
+ template <typename Cons>
+ struct cons_iterator_identity;
+
+ template <typename Cons = nil>
+ struct cons_iterator : iterator_base<cons_iterator<Cons> >
+ {
+ typedef cons_iterator_tag fusion_tag;
+ typedef forward_traversal_tag category;
+ typedef Cons cons_type;
+ typedef cons_iterator_identity<
+ typename add_const<Cons>::type>
+ identity;
+
+ explicit cons_iterator(cons_type& cons)
+ : cons(cons) {}
+
+ cons_type& cons;
+ };
+
+ struct nil_iterator : iterator_base<nil_iterator>
+ {
+ typedef forward_traversal_tag category;
+ typedef cons_iterator_tag fusion_tag;
+ typedef nil cons_type;
+ typedef cons_iterator_identity<
+ add_const<nil>::type>
+ identity;
+ nil_iterator() {}
+ explicit nil_iterator(nil const&) {}
+ };
+
+ template <>
+ struct cons_iterator<nil> : nil_iterator
+ {
+ cons_iterator() {}
+ explicit cons_iterator(nil const&) {}
+ };
+
+ template <>
+ struct cons_iterator<nil const> : nil_iterator
+ {
+ cons_iterator() {}
+ explicit cons_iterator(nil const&) {}
+ };
+
+ template <>
+ struct cons_iterator<list<> > : nil_iterator
+ {
+ cons_iterator() {}
+ explicit cons_iterator(nil const&) {}
+ };
+
+ template <>
+ struct cons_iterator<list<> const> : nil_iterator
+ {
+ cons_iterator() {}
+ explicit cons_iterator(nil const&) {}
+ };
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,56 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_CONVERT_09232005_1215)
+#define FUSION_CONVERT_09232005_1215
+
+#include <boost/fusion/container/list/cons.hpp>
+#include <boost/fusion/container/list/detail/build_cons.hpp>
+#include <boost/fusion/container/list/detail/convert_impl.hpp>
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence>
+ struct as_list
+ {
+ typedef typename
+ detail::build_cons<
+ typename result_of::begin<Sequence>::type
+ , typename result_of::end<Sequence>::type
+ >
+ build_cons;
+
+ typedef typename build_cons::type type;
+
+ static type
+ call(Sequence& seq)
+ {
+ return build_cons::call(fusion::begin(seq), fusion::end(seq));
+ }
+ };
+ }
+
+ template <typename Sequence>
+ inline typename result_of::as_list<Sequence>::type
+ as_list(Sequence& seq)
+ {
+ return result_of::as_list<Sequence>::call(seq);
+ }
+
+ template <typename Sequence>
+ inline typename result_of::as_list<Sequence const>::type
+ as_list(Sequence const& seq)
+ {
+ return result_of::as_list<Sequence const>::call(seq);
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/at_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,132 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_AT_IMPL_07172005_0726)
+#define FUSION_AT_IMPL_07172005_0726
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace detail
+ {
+ template <typename Cons>
+ struct cons_deref
+ {
+ typedef typename Cons::car_type type;
+ };
+
+ template <typename Cons, int I>
+ struct cons_advance
+ {
+ typedef typename
+ cons_advance<Cons, I-1>::type::cdr_type
+ type;
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 0>
+ {
+ typedef Cons type;
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 1>
+ {
+ typedef typename Cons::cdr_type type;
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 2>
+ {
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1400) // VC8 and above
+ typedef typename Cons::cdr_type::cdr_type type;
+#else
+ typedef typename Cons::cdr_type _a;
+ typedef typename _a::cdr_type type;
+#endif
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 3>
+ {
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1400) // VC8 and above
+ typedef typename Cons::cdr_type::cdr_type::cdr_type type;
+#else
+ typedef typename Cons::cdr_type _a;
+ typedef typename _a::cdr_type _b;
+ typedef typename _b::cdr_type type;
+#endif
+ };
+
+ template <typename Cons>
+ struct cons_advance<Cons, 4>
+ {
+#if BOOST_WORKAROUND(BOOST_MSVC, > 1400) // VC8 and above
+ typedef typename Cons::cdr_type::cdr_type::cdr_type::cdr_type type;
+#else
+ typedef typename Cons::cdr_type _a;
+ typedef typename _a::cdr_type _b;
+ typedef typename _b::cdr_type _c;
+ typedef typename _c::cdr_type type;
+#endif
+ };
+ }
+
+ struct cons_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct at_impl;
+
+ template <>
+ struct at_impl<cons_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ typedef detail::cons_deref<
+ typename detail::cons_advance<Sequence, N::value>::type>
+ element;
+
+ typedef typename
+ mpl::eval_if<
+ is_const<Sequence>
+ , detail::cref_result<element>
+ , detail::ref_result<element>
+ >::type
+ type;
+
+ template <typename Cons, int N2>
+ static type
+ call(Cons& s, mpl::int_<N2>)
+ {
+ return call(s.cdr, mpl::int_<N2-1>());
+ }
+
+ template <typename Cons>
+ static type
+ call(Cons& s, mpl::int_<0>)
+ {
+ return s.car;
+ }
+
+ static type
+ call(Sequence& s)
+ {
+ return call(s, mpl::int_<N::value>());
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/begin_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/begin_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,49 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_BEGIN_IMPL_07172005_0824)
+#define FUSION_BEGIN_IMPL_07172005_0824
+
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_const.hpp>
+
+namespace boost { namespace fusion
+{
+ struct nil;
+
+ struct cons_tag;
+
+ template <typename Car, typename Cdr>
+ struct cons;
+
+ template <typename Cons>
+ struct cons_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<cons_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef cons_iterator<Sequence> type;
+
+ static type
+ call(Sequence& t)
+ {
+ return type(t);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/build_cons.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/build_cons.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,57 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_BUILD_CONS_09232005_1222)
+#define FUSION_BUILD_CONS_09232005_1222
+
+#include <boost/fusion/container/list/cons.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <
+ typename First
+ , typename Last
+ , bool is_empty = result_of::equal_to<First, Last>::value>
+ struct build_cons;
+
+ template <typename First, typename Last>
+ struct build_cons<First, Last, true>
+ {
+ typedef nil type;
+
+ static nil
+ call(First const&, Last const&)
+ {
+ return nil();
+ }
+ };
+
+ template <typename First, typename Last>
+ struct build_cons<First, Last, false>
+ {
+ typedef
+ build_cons<typename result_of::next<First>::type, Last>
+ next_build_cons;
+
+ typedef cons<
+ typename result_of::value_of<First>::type
+ , typename next_build_cons::type>
+ type;
+
+ static type
+ call(First const& f, Last const& l)
+ {
+ return type(*f, next_build_cons::call(fusion::next(f), l));
+ }
+ };
+
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/convert_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/convert_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_CONVERT_IMPL_09232005_1215)
+#define FUSION_CONVERT_IMPL_09232005_1215
+
+#include <boost/fusion/container/list/cons.hpp>
+#include <boost/fusion/container/list/detail/build_cons.hpp>
+#include <boost/fusion/sequence/intrinsic/empty.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+
+namespace boost { namespace fusion
+{
+ struct cons_tag;
+
+ namespace extension
+ {
+ template <typename T>
+ struct convert_impl;
+
+ template <>
+ struct convert_impl<cons_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename
+ detail::build_cons<
+ typename result_of::begin<Sequence>::type
+ , typename result_of::end<Sequence>::type
+ >
+ build_cons;
+
+ typedef typename build_cons::type type;
+
+ static type
+ call(Sequence& seq)
+ {
+ return build_cons::call(fusion::begin(seq), fusion::end(seq));
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/deref_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/deref_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,52 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_DEREF_IMPL_07172005_0831)
+#define FUSION_DEREF_IMPL_07172005_0831
+
+#include <boost/mpl/eval_if.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/add_reference.hpp>
+
+namespace boost { namespace fusion
+{
+ struct cons_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct deref_impl;
+
+ template <>
+ struct deref_impl<cons_iterator_tag>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef typename Iterator::cons_type cons_type;
+ typedef typename cons_type::car_type value_type;
+
+ typedef typename mpl::eval_if<
+ is_const<cons_type>
+ , add_reference<typename add_const<value_type>::type>
+ , add_reference<value_type> >::type
+ type;
+
+ static type
+ call(Iterator const& i)
+ {
+ return i.cons.car;
+ }
+ };
+ };
+ }
+}}
+
+#endif
+
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/empty_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/empty_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,37 @@
+/*=============================================================================
+ Copyright (c) 2007 Tobias Schwinger
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(BOOST_FUSION_SEQUENCE_EMPTY_IMPL_HPP_INCLUDED)
+#define BOOST_FUSION_SEQUENCE_EMPTY_IMPL_HPP_INCLUDED
+
+#include <boost/type_traits/is_convertible.hpp>
+
+namespace boost { namespace fusion
+{
+ struct cons_tag;
+
+ struct nil;
+
+ template <typename Car, typename Cdr>
+ struct cons;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct empty_impl;
+
+ template <>
+ struct empty_impl<cons_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ : boost::is_convertible<Sequence, nil>
+ {};
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/end_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/end_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,51 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_END_IMPL_07172005_0828)
+#define FUSION_END_IMPL_07172005_0828
+
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_const.hpp>
+
+namespace boost { namespace fusion
+{
+ struct nil;
+
+ struct cons_tag;
+
+ template <typename Car, typename Cdr>
+ struct cons;
+
+ template <typename Cons>
+ struct cons_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<cons_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef cons_iterator<
+ typename mpl::if_<is_const<Sequence>, nil const, nil>::type>
+ type;
+
+ static type
+ call(Sequence&)
+ {
+ return type();
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/equal_to_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/equal_to_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_EQUAL_TO_IMPL_09172005_1120)
+#define FUSION_EQUAL_TO_IMPL_09172005_1120
+
+#include <boost/type_traits/is_same.hpp>
+#include <boost/mpl/equal_to.hpp>
+#include <boost/mpl/and.hpp>
+
+namespace boost { namespace fusion
+{
+ struct cons_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct equal_to_impl;
+
+ template <>
+ struct equal_to_impl<cons_iterator_tag>
+ {
+ template <typename I1, typename I2>
+ struct apply
+ : is_same<
+ typename I1::identity
+ , typename I2::identity
+ >
+ {
+ };
+ };
+ }
+}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list_forward_ctor.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list_forward_ctor.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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_PP_IS_ITERATING
+#if !defined(FUSION_LIST_FORWARD_CTOR_07172005_0113)
+#define FUSION_LIST_FORWARD_CTOR_07172005_0113
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/enum_shifted.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+
+#define FUSION_LIST_CTOR_MAKE_CONS(z, n, type) tie_cons(BOOST_PP_CAT(_, n)
+#define FUSION_LIST_CL_PAREN(z, n, type) )
+
+#define BOOST_PP_FILENAME_1 \
+ <boost/fusion/container/list/detail/list_forward_ctor.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef FUSION_LIST_CTOR_MAKE_CONS
+#undef FUSION_LIST_CL_PAREN
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+#define N BOOST_PP_ITERATION()
+
+#if N == 1
+ explicit
+#endif
+ list(BOOST_PP_ENUM_BINARY_PARAMS(
+ N, typename detail::call_param<T, >::type _))
+ : inherited_type(list_to_cons::call(BOOST_PP_ENUM_PARAMS(N, _)))
+ {}
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list_to_cons.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list_to_cons.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,49 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_LIST_TO_CONS_07172005_1041)
+#define FUSION_LIST_TO_CONS_07172005_1041
+
+#include <boost/fusion/container/list/cons.hpp>
+#include <boost/fusion/container/list/limits.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+
+#define FUSION_VOID(z, n, _) void_
+
+namespace boost { namespace fusion
+{
+ struct nil;
+ struct void_;
+}}
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename T)>
+ struct list_to_cons
+ {
+ typedef T0 head_type;
+ typedef list_to_cons<
+ BOOST_PP_ENUM_SHIFTED_PARAMS(FUSION_MAX_LIST_SIZE, T), void_>
+ tail_list_to_cons;
+ typedef typename tail_list_to_cons::type tail_type;
+
+ typedef cons<head_type, tail_type> type;
+
+ #include <boost/fusion/container/list/detail/list_to_cons_call.hpp>
+ };
+
+ template <>
+ struct list_to_cons<BOOST_PP_ENUM(FUSION_MAX_LIST_SIZE, FUSION_VOID, _)>
+ {
+ typedef nil type;
+ };
+}}}
+
+#undef FUSION_VOID
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list_to_cons_call.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/list_to_cons_call.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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_PP_IS_ITERATING
+#if !defined(FUSION_LIST_TO_CONS_CALL_07192005_0138)
+#define FUSION_LIST_TO_CONS_CALL_07192005_0138
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_shifted_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+#define BOOST_PP_FILENAME_1 \
+ <boost/fusion/container/list/detail/list_to_cons_call.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_LIST_SIZE)
+#include BOOST_PP_ITERATE()
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+#define N BOOST_PP_ITERATION()
+
+ static type
+ call(BOOST_PP_ENUM_BINARY_PARAMS(
+ N, typename detail::call_param<T, >::type _))
+ {
+ return type(_0
+#if N > 1
+ , tail_list_to_cons::call(BOOST_PP_ENUM_SHIFTED_PARAMS(N, _)));
+#else
+ );
+#endif
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/next_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/next_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,59 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+ Copyright (c) 2005 Eric Niebler
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_NEXT_IMPL_07172005_0836)
+#define FUSION_NEXT_IMPL_07172005_0836
+
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/type_traits/add_const.hpp>
+
+namespace boost { namespace fusion
+{
+ struct cons_iterator_tag;
+
+ template <typename Cons>
+ struct cons_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct next_impl;
+
+ template <>
+ struct next_impl<cons_iterator_tag>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef typename Iterator::cons_type cons_type;
+ typedef typename cons_type::cdr_type cdr_type;
+
+ typedef cons_iterator<
+ typename mpl::eval_if<
+ is_const<cons_type>
+ , add_const<cdr_type>
+ , mpl::identity<cdr_type>
+ >::type>
+ type;
+
+ static type
+ call(Iterator const& i)
+ {
+ return type(i.cons.cdr);
+ }
+ };
+ };
+ }
+}}
+
+#endif
+
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/value_at_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/value_at_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_VALUE_AT_IMPL_07172005_0952)
+#define FUSION_VALUE_AT_IMPL_07172005_0952
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ struct cons_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<cons_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ typedef typename
+ mpl::eval_if<
+ mpl::bool_<N::value == 0>
+ , mpl::identity<typename Sequence::car_type>
+ , apply<typename Sequence::cdr_type, mpl::int_<N::value-1> >
+ >::type
+ type;
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/value_of_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/detail/value_of_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_VALUE_OF_IMPL_07172005_0838)
+#define FUSION_VALUE_OF_IMPL_07172005_0838
+
+namespace boost { namespace fusion
+{
+ struct cons_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <>
+ struct value_of_impl<cons_iterator_tag>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef typename Iterator::cons_type cons_type;
+ typedef typename cons_type::car_type type;
+ };
+ };
+ }
+
+}}
+
+#endif
+
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/list/limits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/list/limits.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_LIST_LIMITS_07172005_0112)
+#define FUSION_LIST_LIMITS_07172005_0112
+
+#if !defined(FUSION_MAX_LIST_SIZE)
+# define FUSION_MAX_LIST_SIZE 10
+#else
+# if FUSION_MAX_LIST_SIZE < 3
+# undef FUSION_MAX_LIST_SIZE
+# define FUSION_MAX_LIST_SIZE 10
+# endif
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,68 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_LIST_07172005_1153)
+#define FUSION_LIST_07172005_1153
+
+#include <boost/fusion/container/list/list_fwd.hpp>
+#include <boost/fusion/container/list/detail/list_to_cons.hpp>
+
+namespace boost { namespace fusion
+{
+ struct nil;
+ struct void_;
+
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename T)>
+ struct list
+ : detail::list_to_cons<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, T)>::type
+ {
+ private:
+ typedef
+ detail::list_to_cons<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, T)>
+ list_to_cons;
+
+ public:
+ typedef typename list_to_cons::type inherited_type;
+
+ list()
+ : inherited_type() {}
+
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename U)>
+ list(list<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, U)> const& rhs)
+ : inherited_type(rhs) {}
+
+ template <typename Sequence>
+ list(Sequence const& rhs)
+ : inherited_type(rhs) {}
+
+ // Expand a couple of forwarding constructors for arguments
+ // of type (T0), (T0, T1), (T0, T1, T2) etc. Exanple:
+ //
+ // list(
+ // typename detail::call_param<T0>::type _0
+ // , typename detail::call_param<T1>::type _1)
+ // : inherited_type(list_to_cons::call(_0, _1)) {}
+ #include <boost/fusion/container/list/detail/list_forward_ctor.hpp>
+
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, typename U)>
+ list&
+ operator=(list<BOOST_PP_ENUM_PARAMS(FUSION_MAX_LIST_SIZE, U)> const& rhs)
+ {
+ inherited_type::operator=(rhs);
+ return *this;
+ }
+
+ template <typename T>
+ list&
+ operator=(T const& rhs)
+ {
+ inherited_type::operator=(rhs);
+ return *this;
+ }
+ };
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,24 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_LIST_FORWARD_07172005_0224)
+#define FUSION_LIST_FORWARD_07172005_0224
+
+#include <boost/fusion/container/list/limits.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_LIST_SIZE, typename T, void_)
+ >
+ 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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_SEQUENCE_CLASS_MAP_10022005_0606)
+#define FUSION_SEQUENCE_CLASS_MAP_10022005_0606
+
+#include <boost/fusion/container/map/limits.hpp>
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/container/map/map_fwd.hpp>
+#include <boost/fusion/container/map/convert.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/convert.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/convert.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_CONVERT_09232005_1340)
+#define FUSION_CONVERT_09232005_1340
+
+#include <boost/fusion/container/map/detail/as_map.hpp>
+#include <boost/fusion/container/map/detail/convert_impl.hpp>
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence>
+ struct as_map
+ {
+ typedef typename detail::as_map<result_of::size<Sequence>::value> gen;
+ typedef typename gen::
+ template apply<typename result_of::begin<Sequence>::type>::type
+ type;
+ };
+ }
+
+ template <typename Sequence>
+ inline typename result_of::as_map<Sequence>::type
+ as_map(Sequence& seq)
+ {
+ typedef typename result_of::as_map<Sequence>::gen gen;
+ return gen::call(fusion::begin(seq));
+ }
+
+ template <typename Sequence>
+ inline typename result_of::as_map<Sequence const>::type
+ as_map(Sequence const& seq)
+ {
+ typedef typename result_of::as_map<Sequence const>::gen gen;
+ return gen::call(fusion::begin(seq));
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/as_map.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/as_map.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,101 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_AS_MAP_0932005_1339)
+#define FUSION_AS_MAP_0932005_1339
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/inc.hpp>
+#include <boost/preprocessor/dec.hpp>
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <int size>
+ struct as_map;
+
+ template <>
+ struct as_map<0>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef map<> type;
+ };
+
+ template <typename Iterator>
+ static typename apply<Iterator>::type
+ call(Iterator)
+ {
+ return map<>();
+ }
+ };
+
+#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
+ typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
+ BOOST_PP_CAT(I, BOOST_PP_INC(n));
+
+#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \
+ typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \
+ BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n));
+
+#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \
+ typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
+ BOOST_PP_CAT(T, n);
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/map/detail/as_map.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_NEXT_ITERATOR
+#undef BOOST_FUSION_NEXT_CALL_ITERATOR
+#undef BOOST_FUSION_VALUE_OF_ITERATOR
+
+}}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ template <>
+ struct as_map<N>
+ {
+ template <typename I0>
+ struct apply
+ {
+ BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
+ BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
+ typedef map<BOOST_PP_ENUM_PARAMS(N, T)> type;
+ };
+
+ template <typename Iterator>
+ static typename apply<Iterator>::type
+ call(Iterator const& i0)
+ {
+ typedef apply<Iterator> gen;
+ typedef typename gen::type result;
+ BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _)
+ return result(BOOST_PP_ENUM_PARAMS(N, *i));
+ }
+ };
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/at_key_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/at_key_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_AT_KEY_IMPL_05222005_0254)
+#define FUSION_AT_KEY_IMPL_05222005_0254
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost { namespace fusion
+{
+ struct map_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct at_key_impl;
+
+ template <>
+ struct at_key_impl<map_tag>
+ {
+ template <typename Sequence, typename Key>
+ struct apply
+ {
+ typedef typename Sequence::template meta_at_impl<Key> element;
+
+ typedef typename
+ mpl::eval_if<
+ is_const<Sequence>
+ , detail::cref_result<element>
+ , detail::ref_result<element>
+ >::type
+ type;
+
+ static type
+ call(Sequence& m)
+ {
+ return m.at_impl(mpl::identity<Key>());
+ }
+ };
+ };
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,56 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_BEGIN_IMPL_05222005_1108)
+#define FUSION_BEGIN_IMPL_05222005_1108
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost { namespace fusion
+{
+ struct map_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<map_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename
+ result_of::begin<typename Sequence::storage_type>::type
+ iterator_type;
+
+ typedef typename
+ result_of::begin<typename Sequence::storage_type const>::type
+ const_iterator_type;
+
+ typedef typename
+ mpl::eval_if<
+ is_const<Sequence>
+ , mpl::identity<const_iterator_type>
+ , mpl::identity<iterator_type>
+ >::type
+ type;
+
+ static type
+ call(Sequence& m)
+ {
+ return fusion::begin(m.get_data());
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/convert_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/convert_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_CONVERT_IMPL_09232005_1340)
+#define FUSION_CONVERT_IMPL_09232005_1340
+
+#include <boost/fusion/container/map/detail/as_map.hpp>
+#include <boost/fusion/container/map/map.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+namespace boost { namespace fusion
+{
+ struct map_tag;
+
+ namespace extension
+ {
+ template <typename T>
+ struct convert_impl;
+
+ template <>
+ struct convert_impl<map_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename detail::as_map<result_of::size<Sequence>::value> gen;
+ typedef typename gen::
+ template apply<typename result_of::begin<Sequence>::type>::type
+ type;
+
+ static type call(Sequence& seq)
+ {
+ return gen::call(fusion::begin(seq));
+ }
+ };
+ };
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_END_IMPL_05222005_1108)
+#define FUSION_END_IMPL_05222005_1108
+
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+
+namespace boost { namespace fusion
+{
+ struct map_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<map_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename
+ result_of::end<typename Sequence::storage_type>::type
+ iterator_type;
+
+ typedef typename
+ result_of::end<typename Sequence::storage_type const>::type
+ const_iterator_type;
+
+ typedef typename
+ mpl::eval_if<
+ is_const<Sequence>
+ , mpl::identity<const_iterator_type>
+ , mpl::identity<iterator_type>
+ >::type
+ type;
+
+ static type
+ call(Sequence& m)
+ {
+ return fusion::end(m.get_data());
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/lookup_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/lookup_key.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_LOOKUP_KEY_07222005_1248)
+#define FUSION_LOOKUP_KEY_07222005_1248
+
+#include <boost/mpl/int.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/fusion/support/detail/unknown_key.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+}}
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename T>
+ struct map_data_type
+ {
+ typedef typename
+ add_reference<
+ typename T::second_type
+ >::type
+ type;
+ };
+
+ template <>
+ struct map_data_type<void_>
+ {
+ typedef void_& type;
+ };
+
+ template <typename T>
+ struct map_const_data_type
+ {
+ typedef typename
+ add_reference<
+ typename add_const<
+ typename T::second_type
+ >::type
+ >::type
+ type;
+ };
+
+ template <>
+ struct map_const_data_type<void_>
+ {
+ typedef void_ const& type;
+ };
+
+ template <typename T>
+ struct map_value_type
+ {
+ typedef typename T::second_type type;
+ };
+
+ template <>
+ struct map_value_type<void_>
+ {
+ typedef void_ type;
+ };
+
+ template <typename T, int index>
+ struct map_key_type
+ {
+ typedef typename T::first_type type;
+ };
+
+ template <int index>
+ struct map_key_type<void_, index>
+ {
+ typedef unknown_key<index> type;
+ };
+
+ template <int index, typename RT, typename Key, typename Vector>
+ struct map_lookup_key
+ {
+ static RT
+ call(Vector& vec)
+ {
+ return vec.at_impl(mpl::int_<index>()).second;
+ }
+ };
+
+ template <int index, typename Vector>
+ struct map_lookup_key<index, void_&, unknown_key<index>, Vector>
+ {
+ static void_&
+ call(Vector& vec); // intentionally undefined
+ };
+}}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/map_forward_ctor.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/map_forward_ctor.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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_PP_IS_ITERATING
+#if !defined(FUSION_MAP_FORWARD_CTOR_07222005_0106)
+#define FUSION_MAP_FORWARD_CTOR_07222005_0106
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+#define BOOST_PP_FILENAME_1 \
+ <boost/fusion/container/map/detail/map_forward_ctor.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_MAP_SIZE)
+#include BOOST_PP_ITERATE()
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+#if N == 1
+ explicit
+#endif
+ map(BOOST_PP_ENUM_BINARY_PARAMS(N, T, const& _))
+ : data(BOOST_PP_ENUM_PARAMS(N, _)) {}
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/map_lookup.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/map_lookup.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,128 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_MAP_LOOKUP_07212005_1118)
+#define FUSION_MAP_LOOKUP_07212005_1118
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310)
+#pragma warning (push)
+#pragma warning(disable: 4348) // redefinition of default parameter
+#endif
+
+ template <typename Key, typename dummy = int>
+ struct meta_at_impl
+ {
+ typedef void_ type;
+ };
+
+ template <typename Key, typename dummy = int>
+ struct meta_find_impl
+ {
+ typedef vector_iterator<storage_type, storage_type::size::value> type;
+ };
+
+ template <typename Key, typename dummy = int>
+ struct meta_find_impl_const
+ {
+ typedef vector_iterator<storage_type const, storage_type::size::value> type;
+ };
+
+ template <typename Key>
+ vector_iterator<storage_type const, storage_type::size::value>
+ find_impl(mpl::identity<Key>) const
+ {
+ return vector_iterator<storage_type const, storage_type::size::value>(data);
+ }
+
+ template <typename Key>
+ vector_iterator<storage_type, storage_type::size::value>
+ find_impl(mpl::identity<Key>)
+ {
+ return vector_iterator<storage_type, storage_type::size::value>(data);
+ }
+
+#define BOOST_PP_FILENAME_1 \
+ <boost/fusion/container/map/detail/map_lookup.hpp>
+#define BOOST_PP_ITERATION_LIMITS (0, BOOST_PP_DEC(FUSION_MAX_MAP_SIZE))
+#include BOOST_PP_ITERATE()
+
+#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310)
+#pragma warning (pop)
+#endif
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ template <typename dummy>
+ struct meta_at_impl<
+ typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type, dummy>
+ {
+ typedef typename detail::map_value_type<BOOST_PP_CAT(T, N)>::type type;
+ };
+
+ typename detail::map_data_type<BOOST_PP_CAT(T, N)>::type
+ at_impl(mpl::identity<typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type>)
+ {
+ return detail::map_lookup_key<
+ N
+ , typename detail::map_data_type<BOOST_PP_CAT(T, N)>::type
+ , typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type
+ , storage_type>::call(data);
+ }
+
+ typename detail::map_const_data_type<BOOST_PP_CAT(T, N)>::type
+ at_impl(mpl::identity<typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type>) const
+ {
+ return detail::map_lookup_key<
+ N
+ , typename detail::map_const_data_type<BOOST_PP_CAT(T, N)>::type
+ , typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type
+ , storage_type const>::call(data);
+ }
+
+ template <typename dummy>
+ struct meta_find_impl<
+ typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type, dummy>
+ {
+ typedef vector_iterator<storage_type, N> type;
+ };
+
+ template <typename dummy>
+ struct meta_find_impl_const<
+ typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type, dummy>
+ {
+ typedef vector_iterator<storage_type const, N> type;
+ };
+
+ vector_iterator<storage_type, N>
+ find_impl(mpl::identity<typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type>)
+ {
+ return vector_iterator<storage_type, N>(data);
+ }
+
+ vector_iterator<storage_type const, N>
+ find_impl(mpl::identity<typename detail::map_key_type<BOOST_PP_CAT(T, N), N>::type>) const
+ {
+ return vector_iterator<storage_type const, N>(data);
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/value_at_key_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/map/detail/value_at_key_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,33 @@
+/*=============================================================================
+ 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(FUSION_VALUE_AT_KEY_IMPL_05222005_0325)
+#define FUSION_VALUE_AT_KEY_IMPL_05222005_0325
+
+namespace boost { namespace fusion
+{
+ struct map_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_at_key_impl;
+
+ template <>
+ struct value_at_key_impl<map_tag>
+ {
+ template <typename Sequence, typename Key>
+ struct apply
+ {
+ typedef typename Sequence::
+ template meta_at_impl<Key>::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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_MAP_LIMITS_07212005_1104)
+#define FUSION_MAP_LIMITS_07212005_1104
+
+#include <boost/fusion/container/vector/limits.hpp>
+
+#if !defined(FUSION_MAX_MAP_SIZE)
+# define FUSION_MAX_MAP_SIZE FUSION_MAX_VECTOR_SIZE
+#else
+# if FUSION_MAX_MAP_SIZE < 3
+# undef FUSION_MAX_MAP_SIZE
+# if (FUSION_MAX_VECTOR_SIZE > 10)
+# define FUSION_MAX_MAP_SIZE 10
+# else
+# define FUSION_MAX_MAP_SIZE FUSION_MAX_VECTOR_SIZE
+# 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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,71 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_MAP_07212005_1106)
+#define FUSION_MAP_07212005_1106
+
+#include <boost/fusion/support/pair.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/fusion/container/map/map_fwd.hpp>
+#include <boost/fusion/container/map/detail/lookup_key.hpp>
+#include <boost/fusion/container/map/detail/begin_impl.hpp>
+#include <boost/fusion/container/map/detail/end_impl.hpp>
+#include <boost/fusion/container/map/detail/at_key_impl.hpp>
+#include <boost/fusion/container/map/detail/value_at_key_impl.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+ struct map_tag;
+ struct fusion_sequence_tag;
+
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, typename T)>
+ struct map : sequence_base<map<BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, T)> >
+ {
+ struct category : forward_traversal_tag, associative_sequence_tag {};
+
+ typedef map_tag fusion_tag;
+ typedef fusion_sequence_tag tag; // this gets picked up by MPL
+ typedef mpl::false_ is_view;
+
+ typedef vector<
+ BOOST_PP_ENUM_PARAMS(FUSION_MAX_MAP_SIZE, T)>
+ storage_type;
+
+ typedef typename storage_type::size size;
+
+ map()
+ : data() {}
+
+ template <typename Sequence>
+ map(Sequence const& rhs)
+ : data(rhs) {}
+
+ #include <boost/fusion/container/map/detail/map_forward_ctor.hpp>
+ #include <boost/fusion/container/map/detail/map_lookup.hpp>
+
+ template <typename T>
+ map&
+ operator=(T const& rhs)
+ {
+ data = rhs;
+ 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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,24 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_MAP_FORWARD_07212005_1105)
+#define FUSION_MAP_FORWARD_07212005_1105
+
+#include <boost/fusion/container/map/limits.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_MAP_SIZE, typename T, void_)
+ >
+ 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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_SEQUENCE_CLASS_SET_10022005_0607)
+#define FUSION_SEQUENCE_CLASS_SET_10022005_0607
+
+#include <boost/fusion/container/set/limits.hpp>
+#include <boost/fusion/container/set/set.hpp>
+#include <boost/fusion/container/set/set_fwd.hpp>
+#include <boost/fusion/container/set/convert.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/convert.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/convert.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_CONVERT_09232005_1341)
+#define FUSION_CONVERT_09232005_1341
+
+#include <boost/fusion/container/set/detail/as_set.hpp>
+#include <boost/fusion/container/set/detail/convert_impl.hpp>
+#include <boost/fusion/container/set/set.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence>
+ struct as_set
+ {
+ typedef typename detail::as_set<result_of::size<Sequence>::value> gen;
+ typedef typename gen::
+ template apply<typename result_of::begin<Sequence>::type>::type
+ type;
+ };
+ }
+
+ template <typename Sequence>
+ inline typename result_of::as_set<Sequence>::type
+ as_set(Sequence& seq)
+ {
+ typedef typename result_of::as_set<Sequence>::gen gen;
+ return gen::call(fusion::begin(seq));
+ }
+
+ template <typename Sequence>
+ inline typename result_of::as_set<Sequence const>::type
+ as_set(Sequence const& seq)
+ {
+ typedef typename result_of::as_set<Sequence const>::gen gen;
+ return gen::call(fusion::begin(seq));
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/as_set.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/as_set.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,101 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_AS_SET_0932005_1341)
+#define FUSION_AS_SET_0932005_1341
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/inc.hpp>
+#include <boost/preprocessor/dec.hpp>
+#include <boost/fusion/container/set/set.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <int size>
+ struct as_set;
+
+ template <>
+ struct as_set<0>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef set<> type;
+ };
+
+ template <typename Iterator>
+ static typename apply<Iterator>::type
+ call(Iterator)
+ {
+ return set<>();
+ }
+ };
+
+#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
+ typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
+ BOOST_PP_CAT(I, BOOST_PP_INC(n));
+
+#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \
+ typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \
+ BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n));
+
+#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \
+ typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
+ BOOST_PP_CAT(T, n);
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/set/detail/as_set.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_NEXT_ITERATOR
+#undef BOOST_FUSION_NEXT_CALL_ITERATOR
+#undef BOOST_FUSION_VALUE_OF_ITERATOR
+
+}}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ template <>
+ struct as_set<N>
+ {
+ template <typename I0>
+ struct apply
+ {
+ BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
+ BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
+ typedef set<BOOST_PP_ENUM_PARAMS(N, T)> type;
+ };
+
+ template <typename Iterator>
+ static typename apply<Iterator>::type
+ call(Iterator const& i0)
+ {
+ typedef apply<Iterator> gen;
+ typedef typename gen::type result;
+ BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _)
+ return result(BOOST_PP_ENUM_PARAMS(N, *i));
+ }
+ };
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/at_key_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/at_key_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_AT_KEY_IMPL_09162005_1118)
+#define FUSION_AT_KEY_IMPL_09162005_1118
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost { namespace fusion
+{
+ struct set_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct at_key_impl;
+
+ template <>
+ struct at_key_impl<set_tag>
+ {
+ template <typename Sequence, typename Key>
+ struct apply
+ {
+ typedef typename Sequence::template meta_at_impl<Key> element;
+
+ typedef typename
+ mpl::eval_if<
+ is_const<Sequence>
+ , detail::cref_result<element>
+ , detail::ref_result<element>
+ >::type
+ type;
+
+ static type
+ call(Sequence& s)
+ {
+ return s.at_impl(mpl::identity<Key>());
+ }
+ };
+ };
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,56 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_BEGIN_IMPL_09162005_1120)
+#define FUSION_BEGIN_IMPL_09162005_1120
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+
+namespace boost { namespace fusion
+{
+ struct set_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<set_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename
+ result_of::begin<typename Sequence::storage_type>::type
+ iterator_type;
+
+ typedef typename
+ result_of::begin<typename Sequence::storage_type const>::type
+ const_iterator_type;
+
+ typedef typename
+ mpl::eval_if<
+ is_const<Sequence>
+ , mpl::identity<const_iterator_type>
+ , mpl::identity<iterator_type>
+ >::type
+ type;
+
+ static type
+ call(Sequence& s)
+ {
+ return fusion::begin(s.get_data());
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/convert_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/convert_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_CONVERT_IMPL_09232005_1341)
+#define FUSION_CONVERT_IMPL_09232005_1341
+
+#include <boost/fusion/container/set/detail/as_set.hpp>
+#include <boost/fusion/container/set/set.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+namespace boost { namespace fusion
+{
+ struct set_tag;
+
+ namespace extension
+ {
+ template <typename T>
+ struct convert_impl;
+
+ template <>
+ struct convert_impl<set_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename detail::as_set<result_of::size<Sequence>::value> gen;
+ typedef typename gen::
+ template apply<typename result_of::begin<Sequence>::type>::type
+ type;
+
+ static type call(Sequence& seq)
+ {
+ return gen::call(fusion::begin(seq));
+ }
+ };
+ };
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_END_IMPL_09162005_1121)
+#define FUSION_END_IMPL_09162005_1121
+
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+
+namespace boost { namespace fusion
+{
+ struct set_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<set_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename
+ result_of::end<typename Sequence::storage_type>::type
+ iterator_type;
+
+ typedef typename
+ result_of::end<typename Sequence::storage_type const>::type
+ const_iterator_type;
+
+ typedef typename
+ mpl::eval_if<
+ is_const<Sequence>
+ , mpl::identity<const_iterator_type>
+ , mpl::identity<iterator_type>
+ >::type
+ type;
+
+ static type
+ call(Sequence& s)
+ {
+ return fusion::end(s.get_data());
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/lookup_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/lookup_key.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,93 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_LOOKUP_KEY_09162005_1111)
+#define FUSION_LOOKUP_KEY_09162005_1111
+
+#include <boost/mpl/int.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/fusion/support/detail/unknown_key.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+}}
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename T>
+ struct set_data_type
+ {
+ typedef typename add_reference<T>::type type;
+ };
+
+ template <>
+ struct set_data_type<void_>
+ {
+ typedef void_& type;
+ };
+
+ template <typename T>
+ struct set_const_data_type
+ {
+ typedef typename
+ add_reference<
+ typename add_const<T>::type
+ >::type
+ type;
+ };
+
+ template <>
+ struct set_const_data_type<void_>
+ {
+ typedef void_ const& type;
+ };
+
+ template <typename T>
+ struct set_value_type
+ {
+ typedef T type;
+ };
+
+ template <>
+ struct set_value_type<void_>
+ {
+ typedef void_ type;
+ };
+
+ template <typename T, int index>
+ struct set_key_type
+ {
+ typedef T type;
+ };
+
+ template <int index>
+ struct set_key_type<void_, index>
+ {
+ typedef unknown_key<index> type;
+ };
+
+ template <int index, typename RT, typename Key, typename Vector>
+ struct set_lookup_key
+ {
+ static RT
+ call(Vector& vec)
+ {
+ return vec.at_impl(mpl::int_<index>());
+ }
+ };
+
+ template <int index, typename Vector>
+ struct set_lookup_key<index, void_&, unknown_key<index>, Vector>
+ {
+ static void_&
+ call(Vector& vec); // intentionally undefined
+ };
+}}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/set_forward_ctor.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/set_forward_ctor.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_SET_FORWARD_CTOR_09162005_1115)
+#define FUSION_SET_FORWARD_CTOR_09162005_1115
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+#define BOOST_PP_FILENAME_1 \
+ <boost/fusion/container/set/detail/set_forward_ctor.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_SET_SIZE)
+#include BOOST_PP_ITERATE()
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+#if N == 1
+ explicit
+#endif
+ set(BOOST_PP_ENUM_BINARY_PARAMS(
+ N, typename detail::call_param<T, >::type _))
+ : data(BOOST_PP_ENUM_PARAMS(N, _)) {}
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/set_lookup.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/set_lookup.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,128 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_SET_LOOKUP_09162005_1116)
+#define FUSION_SET_LOOKUP_09162005_1116
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310)
+#pragma warning (push)
+#pragma warning(disable: 4348) // redefinition of default parameter
+#endif
+
+ template <typename Key, typename dummy = int>
+ struct meta_at_impl
+ {
+ typedef void_ type;
+ };
+
+ template <typename Key, typename dummy = int>
+ struct meta_find_impl
+ {
+ typedef vector_iterator<storage_type, storage_type::size::value> type;
+ };
+
+ template <typename Key, typename dummy = int>
+ struct meta_find_impl_const
+ {
+ typedef vector_iterator<storage_type const, storage_type::size::value> type;
+ };
+
+ template <typename Key>
+ vector_iterator<storage_type const, storage_type::size::value>
+ find_impl(mpl::identity<Key>) const
+ {
+ return vector_iterator<storage_type const, storage_type::size::value>(data);
+ }
+
+ template <typename Key>
+ vector_iterator<storage_type, storage_type::size::value>
+ find_impl(mpl::identity<Key>)
+ {
+ return vector_iterator<storage_type, storage_type::size::value>(data);
+ }
+
+#define BOOST_PP_FILENAME_1 \
+ <boost/fusion/container/set/detail/set_lookup.hpp>
+#define BOOST_PP_ITERATION_LIMITS (0, BOOST_PP_DEC(FUSION_MAX_SET_SIZE))
+#include BOOST_PP_ITERATE()
+
+#if defined(BOOST_MSVC) && (BOOST_MSVC == 1310)
+#pragma warning (pop)
+#endif
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ template <typename dummy>
+ struct meta_at_impl<
+ typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type, dummy>
+ {
+ typedef typename detail::set_value_type<BOOST_PP_CAT(T, N)>::type type;
+ };
+
+ typename detail::set_data_type<BOOST_PP_CAT(T, N)>::type
+ at_impl(mpl::identity<typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type>)
+ {
+ return detail::set_lookup_key<
+ N
+ , typename detail::set_data_type<BOOST_PP_CAT(T, N)>::type
+ , typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type
+ , storage_type>::call(data);
+ }
+
+ typename detail::set_const_data_type<BOOST_PP_CAT(T, N)>::type
+ at_impl(mpl::identity<typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type>) const
+ {
+ return detail::set_lookup_key<
+ N
+ , typename detail::set_const_data_type<BOOST_PP_CAT(T, N)>::type
+ , typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type
+ , storage_type const>::call(data);
+ }
+
+ template <typename dummy>
+ struct meta_find_impl<
+ typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type, dummy>
+ {
+ typedef vector_iterator<storage_type, N> type;
+ };
+
+ template <typename dummy>
+ struct meta_find_impl_const<
+ typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type, dummy>
+ {
+ typedef vector_iterator<storage_type const, N> type;
+ };
+
+ vector_iterator<storage_type, N>
+ find_impl(mpl::identity<typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type>)
+ {
+ return vector_iterator<storage_type, N>(data);
+ }
+
+ vector_iterator<storage_type const, N>
+ find_impl(mpl::identity<typename detail::set_key_type<BOOST_PP_CAT(T, N), N>::type>) const
+ {
+ return vector_iterator<storage_type const, N>(data);
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/value_at_key_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/set/detail/value_at_key_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,35 @@
+/*=============================================================================
+ 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(FUSION_VALUE_AT_KEY_IMPL_09162005_1123)
+#define FUSION_VALUE_AT_KEY_IMPL_09162005_1123
+
+#include <boost/mpl/at.hpp>
+
+namespace boost { namespace fusion
+{
+ struct set_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_at_key_impl;
+
+ template <>
+ struct value_at_key_impl<set_tag>
+ {
+ template <typename Sequence, typename Key>
+ struct apply
+ {
+ typedef typename Sequence::
+ template meta_at_impl<Key>::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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_SET_LIMITS_09162005_1103)
+#define FUSION_SET_LIMITS_09162005_1103
+
+#include <boost/fusion/container/vector/limits.hpp>
+
+#if !defined(FUSION_MAX_SET_SIZE)
+# define FUSION_MAX_SET_SIZE FUSION_MAX_VECTOR_SIZE
+#else
+# if FUSION_MAX_SET_SIZE < 3
+# undef FUSION_MAX_SET_SIZE
+# if (FUSION_MAX_VECTOR_SIZE > 10)
+# define FUSION_MAX_SET_SIZE 10
+# else
+# define FUSION_MAX_SET_SIZE FUSION_MAX_VECTOR_SIZE
+# 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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,71 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_SET_09162005_1104)
+#define FUSION_SET_09162005_1104
+
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/fusion/container/set/set_fwd.hpp>
+#include <boost/fusion/container/set/detail/lookup_key.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/at_key_impl.hpp>
+#include <boost/fusion/container/set/detail/value_at_key_impl.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+ struct set_tag;
+ struct fusion_sequence_tag;
+
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_SET_SIZE, typename T)>
+ struct set : sequence_base<set<BOOST_PP_ENUM_PARAMS(FUSION_MAX_SET_SIZE, T)> >
+ {
+ struct category : forward_traversal_tag, associative_sequence_tag {};
+
+ typedef set_tag fusion_tag;
+ typedef fusion_sequence_tag tag; // this gets picked up by MPL
+ typedef mpl::false_ is_view;
+
+ typedef vector<
+ BOOST_PP_ENUM_PARAMS(FUSION_MAX_SET_SIZE, T)>
+ storage_type;
+
+ typedef typename storage_type::size size;
+
+ set()
+ : data() {}
+
+ template <typename Sequence>
+ set(Sequence const& rhs)
+ : data(rhs) {}
+
+ #include <boost/fusion/container/set/detail/set_forward_ctor.hpp>
+ #include <boost/fusion/container/set/detail/set_lookup.hpp>
+
+ template <typename T>
+ set&
+ operator=(T const& rhs)
+ {
+ data = rhs;
+ 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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,24 @@
+/*=============================================================================
+ Copyright (c) 2005 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_SET_FORWARD_09162005_1102)
+#define FUSION_SET_FORWARD_09162005_1102
+
+#include <boost/fusion/container/set/limits.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_SET_SIZE, typename T, void_)
+ >
+ 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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,21 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_SEQUENCE_CLASS_VECTOR_10022005_0602)
+#define FUSION_SEQUENCE_CLASS_VECTOR_10022005_0602
+
+#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/vector_fwd.hpp>
+#include <boost/fusion/container/vector/vector_iterator.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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_CONVERT_09222005_1104)
+#define FUSION_CONVERT_09222005_1104
+
+#include <boost/fusion/container/vector/detail/as_vector.hpp>
+#include <boost/fusion/container/vector/detail/convert_impl.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+namespace boost { namespace fusion
+{
+ namespace result_of
+ {
+ template <typename Sequence>
+ struct as_vector
+ {
+ typedef typename detail::as_vector<result_of::size<Sequence>::value> gen;
+ typedef typename gen::
+ template apply<typename result_of::begin<Sequence>::type>::type
+ type;
+ };
+ }
+
+ template <typename Sequence>
+ inline typename result_of::as_vector<Sequence>::type
+ as_vector(Sequence& seq)
+ {
+ typedef typename result_of::as_vector<Sequence>::gen gen;
+ return gen::call(fusion::begin(seq));
+ }
+
+ template <typename Sequence>
+ inline typename result_of::as_vector<Sequence const>::type
+ as_vector(Sequence const& seq)
+ {
+ typedef typename result_of::as_vector<Sequence const>::gen gen;
+ return gen::call(fusion::begin(seq));
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/advance_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/advance_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_ADVANCE_IMPL_09172005_1156)
+#define FUSION_ADVANCE_IMPL_09172005_1156
+
+namespace boost { namespace fusion
+{
+ struct vector_iterator_tag;
+
+ template <typename Vector, int N>
+ struct vector_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct advance_impl;
+
+ template <>
+ struct advance_impl<vector_iterator_tag>
+ {
+ template <typename Iterator, typename N>
+ struct apply
+ {
+ typedef typename Iterator::index index;
+ typedef typename Iterator::vector vector;
+ typedef vector_iterator<vector, index::value+N::value> type;
+
+ static type
+ call(Iterator const& i)
+ {
+ return type(i.vec);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/as_vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/as_vector.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,101 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_AS_VECTOR_09222005_0950)
+#define FUSION_AS_VECTOR_09222005_0950
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/inc.hpp>
+#include <boost/preprocessor/dec.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/next.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <int size>
+ struct as_vector;
+
+ template <>
+ struct as_vector<0>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef vector<> type;
+ };
+
+ template <typename Iterator>
+ static typename apply<Iterator>::type
+ call(Iterator)
+ {
+ return vector<>();
+ }
+ };
+
+#define BOOST_FUSION_NEXT_ITERATOR(z, n, data) \
+ typedef typename fusion::result_of::next<BOOST_PP_CAT(I, n)>::type \
+ BOOST_PP_CAT(I, BOOST_PP_INC(n));
+
+#define BOOST_FUSION_NEXT_CALL_ITERATOR(z, n, data) \
+ typename gen::BOOST_PP_CAT(I, BOOST_PP_INC(n)) \
+ BOOST_PP_CAT(i, BOOST_PP_INC(n)) = fusion::next(BOOST_PP_CAT(i, n));
+
+#define BOOST_FUSION_VALUE_OF_ITERATOR(z, n, data) \
+ typedef typename fusion::result_of::value_of<BOOST_PP_CAT(I, n)>::type \
+ BOOST_PP_CAT(T, n);
+
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/as_vector.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
+#include BOOST_PP_ITERATE()
+
+#undef BOOST_FUSION_NEXT_ITERATOR
+#undef BOOST_FUSION_NEXT_CALL_ITERATOR
+#undef BOOST_FUSION_VALUE_OF_ITERATOR
+
+}}}
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+ template <>
+ struct as_vector<N>
+ {
+ template <typename I0>
+ struct apply
+ {
+ BOOST_PP_REPEAT(N, BOOST_FUSION_NEXT_ITERATOR, _)
+ BOOST_PP_REPEAT(N, BOOST_FUSION_VALUE_OF_ITERATOR, _)
+ typedef vector<BOOST_PP_ENUM_PARAMS(N, T)> type;
+ };
+
+ template <typename Iterator>
+ static typename apply<Iterator>::type
+ call(Iterator const& i0)
+ {
+ typedef apply<Iterator> gen;
+ typedef typename gen::type result;
+ BOOST_PP_REPEAT(BOOST_PP_DEC(N), BOOST_FUSION_NEXT_CALL_ITERATOR, _)
+ return result(BOOST_PP_ENUM_PARAMS(N, *i));
+ }
+ };
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_AT_IMPL_05042005_0741)
+#define FUSION_AT_IMPL_05042005_0741
+
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/type_traits/is_const.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion
+{
+ struct vector_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct at_impl;
+
+ template <>
+ struct at_impl<vector_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ typedef mpl::at<typename Sequence::types, N> element;
+ typedef typename
+ mpl::eval_if<
+ is_const<Sequence>
+ , detail::cref_result<element>
+ , detail::ref_result<element>
+ >::type
+ type;
+
+ static type
+ call(Sequence& v)
+ {
+ return v.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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_BEGIN_IMPL_05042005_1136)
+#define FUSION_BEGIN_IMPL_05042005_1136
+
+#include <boost/fusion/container/vector/vector_iterator.hpp>
+
+namespace boost { namespace fusion
+{
+ struct vector_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<vector_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef vector_iterator<Sequence, 0> type;
+
+ static type
+ call(Sequence& v)
+ {
+ return type(v);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/convert_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/convert_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_CONVERT_IMPL_09222005_1104)
+#define FUSION_CONVERT_IMPL_09222005_1104
+
+#include <boost/fusion/container/vector/detail/as_vector.hpp>
+#include <boost/fusion/container/vector/vector.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+
+namespace boost { namespace fusion
+{
+ struct vector_tag;
+
+ namespace extension
+ {
+ template <typename T>
+ struct convert_impl;
+
+ template <>
+ struct convert_impl<vector_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename detail::as_vector<result_of::size<Sequence>::value> gen;
+ typedef typename gen::
+ template apply<typename result_of::begin<Sequence>::type>::type
+ type;
+
+ static type call(Sequence& seq)
+ {
+ return gen::call(fusion::begin(seq));
+ }
+ };
+ };
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_DEREF_IMPL_05042005_1037)
+#define FUSION_DEREF_IMPL_05042005_1037
+
+#include <boost/mpl/at.hpp>
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/type_traits/is_const.hpp>
+
+namespace boost { namespace fusion
+{
+ struct vector_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct deref_impl;
+
+ template <>
+ struct deref_impl<vector_iterator_tag>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef typename Iterator::vector vector;
+ typedef typename Iterator::index index;
+ typedef typename mpl::at<
+ typename vector::types, index>
+ element;
+
+ typedef typename
+ mpl::eval_if<
+ is_const<vector>
+ , fusion::detail::cref_result<element>
+ , fusion::detail::ref_result<element>
+ >::type
+ type;
+
+ static type
+ call(Iterator const& i)
+ {
+ return i.vec.at_impl(index());
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/distance_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/distance_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,41 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_DISTANCE_IMPL_09172005_0751)
+#define FUSION_DISTANCE_IMPL_09172005_0751
+
+#include <boost/mpl/minus.hpp>
+
+namespace boost { namespace fusion
+{
+ struct vector_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct distance_impl;
+
+ template <>
+ struct distance_impl<vector_iterator_tag>
+ {
+ template <typename First, typename Last>
+ struct apply : mpl::minus<typename Last::index, typename First::index>
+ {
+ static typename mpl::minus<
+ typename Last::index, typename First::index>::type
+ call(First const&, Last const&)
+ {
+ typedef typename mpl::minus<
+ typename Last::index, typename First::index>::type
+ result;
+ return result();
+ }
+ };
+ };
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_END_IMPL_05042005_1142)
+#define FUSION_END_IMPL_05042005_1142
+
+#include <boost/fusion/container/vector/vector_iterator.hpp>
+
+namespace boost { namespace fusion
+{
+ struct vector_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<vector_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename Sequence::size size;
+ typedef vector_iterator<Sequence, size::value> type;
+
+ static type
+ call(Sequence& v)
+ {
+ return type(v);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/equal_to_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/equal_to_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_EQUAL_TO_IMPL_05052005_1215)
+#define FUSION_EQUAL_TO_IMPL_05052005_1215
+
+#include <boost/type_traits/is_same.hpp>
+#include <boost/mpl/equal_to.hpp>
+#include <boost/mpl/and.hpp>
+
+namespace boost { namespace fusion
+{
+ struct vector_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct equal_to_impl;
+
+ template <>
+ struct equal_to_impl<vector_iterator_tag>
+ {
+ template <typename I1, typename I2>
+ struct apply
+ : is_same<
+ typename I1::identity
+ , typename I2::identity
+ >
+ {
+ };
+ };
+ }
+}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/next_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/next_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_NEXT_IMPL_05042005_1058)
+#define FUSION_NEXT_IMPL_05042005_1058
+
+#include <boost/fusion/container/vector/vector_iterator.hpp>
+
+namespace boost { namespace fusion
+{
+ struct vector_iterator_tag;
+ template <typename Vector, int N>
+ struct vector_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct next_impl;
+
+ template <>
+ struct next_impl<vector_iterator_tag>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef typename Iterator::vector vector;
+ typedef typename Iterator::index index;
+ typedef vector_iterator<vector, index::value+1> type;
+
+ static type
+ call(Iterator const& i)
+ {
+ return type(i.vec);
+ }
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/prior_impl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/prior_impl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_PRIOR_IMPL_05042005_1145)
+#define FUSION_PRIOR_IMPL_05042005_1145
+
+#include <boost/fusion/container/vector/vector_iterator.hpp>
+
+namespace boost { namespace fusion
+{
+ struct vector_iterator_tag;
+ template <typename Vector, int N>
+ struct vector_iterator;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct prior_impl;
+
+ template <>
+ struct prior_impl<vector_iterator_tag>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef typename Iterator::vector vector;
+ typedef typename Iterator::index index;
+ typedef vector_iterator<vector, index::value-1> type;
+
+ static type
+ call(Iterator const& i)
+ {
+ return type(i.vec);
+ }
+ };
+ };
+ }
+}}
+
+#endif

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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,33 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_VALUE_AT_IMPL_05052005_0232)
+#define FUSION_VALUE_AT_IMPL_05052005_0232
+
+#include <boost/mpl/at.hpp>
+
+namespace boost { namespace fusion
+{
+ struct vector_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_at_impl;
+
+ template <>
+ struct value_at_impl<vector_tag>
+ {
+ template <typename Sequence, typename N>
+ struct apply
+ {
+ typedef typename mpl::at<typename Sequence::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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,37 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_VALUE_OF_IMPL_05052005_1128)
+#define FUSION_VALUE_OF_IMPL_05052005_1128
+
+#include <boost/mpl/at.hpp>
+
+namespace boost { namespace fusion
+{
+ struct vector_iterator_tag;
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_of_impl;
+
+ template <>
+ struct value_of_impl<vector_iterator_tag>
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef typename Iterator::vector vector;
+ typedef typename Iterator::index index;
+ typedef typename mpl::at<
+ typename vector::types, index>::type
+ type;
+ };
+ };
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/vector_forward_ctor.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/vector_forward_ctor.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#ifndef BOOST_PP_IS_ITERATING
+#if !defined(FUSION_VECTOR_FORWARD_CTOR_07122005_1123)
+#define FUSION_VECTOR_FORWARD_CTOR_07122005_1123
+
+#include <boost/preprocessor/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+
+#define BOOST_PP_FILENAME_1 \
+ <boost/fusion/container/vector/detail/vector_forward_ctor.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, FUSION_MAX_VECTOR_SIZE)
+#include BOOST_PP_ITERATE()
+
+#endif
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#define N BOOST_PP_ITERATION()
+
+#if N == 1
+ explicit
+#endif
+ vector(BOOST_PP_ENUM_BINARY_PARAMS(
+ N, typename detail::call_param<T, >::type _))
+ : vec(BOOST_PP_ENUM_PARAMS(N, _)) {}
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/vector_n.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/detail/vector_n.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,150 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+// No include guard. This file is meant to be included many times
+
+#if !defined(FUSION_MACRO_05042005)
+#define FUSION_MACRO_05042005
+
+#define FUSION_MEMBER_DEFAULT_INIT(z, n, _) m##n(T##n())
+#define FUSION_MEMBER_INIT(z, n, _) m##n(_##n)
+#define FUSION_COPY_INIT(z, n, _) m##n(other.m##n)
+#define FUSION_MEMBER_DECL(z, n, _) T##n m##n;
+
+#define FUSION_MEMBER_ASSIGN(z, n, _) \
+ this->BOOST_PP_CAT(m, n) = vec.BOOST_PP_CAT(m, n);
+
+#define FUSION_DEREF_MEMBER_ASSIGN(z, n, _) \
+ this->BOOST_PP_CAT(m, n) = *BOOST_PP_CAT(i, n);
+
+#define FUSION_AT_IMPL(z, n, _) \
+ typename add_reference<T##n>::type \
+ at_impl(mpl::int_<n>) { return this->m##n; } \
+ typename add_reference<typename add_const<T##n>::type>::type \
+ at_impl(mpl::int_<n>) const { return this->m##n; }
+
+#define FUSION_ITER_DECL_VAR(z, n, _) \
+ typedef typename result_of::next< \
+ BOOST_PP_CAT(I, BOOST_PP_DEC(n))>::type BOOST_PP_CAT(I, n); \
+ BOOST_PP_CAT(I, n) BOOST_PP_CAT(i, n) \
+ = fusion::next(BOOST_PP_CAT(i, BOOST_PP_DEC(n)));
+
+#endif
+
+#define N BOOST_PP_ITERATION()
+
+ template <typename Derived, BOOST_PP_ENUM_PARAMS(N, typename T)>
+ struct BOOST_PP_CAT(vector_data, N) : sequence_base<Derived>
+ {
+ BOOST_PP_CAT(vector_data, N)()
+ : BOOST_PP_ENUM(N, FUSION_MEMBER_DEFAULT_INIT, _) {}
+
+ BOOST_PP_CAT(vector_data, N)(
+ BOOST_PP_ENUM_BINARY_PARAMS(
+ N, typename detail::call_param<T, >::type _))
+ : BOOST_PP_ENUM(N, FUSION_MEMBER_INIT, _) {}
+
+ BOOST_PP_CAT(vector_data, N)(
+ BOOST_PP_CAT(vector_data, N) const& other)
+ : BOOST_PP_ENUM(N, FUSION_COPY_INIT, _) {}
+
+ BOOST_PP_CAT(vector_data, N)&
+ operator=(BOOST_PP_CAT(vector_data, N) const& vec)
+ {
+ BOOST_PP_REPEAT(N, FUSION_MEMBER_ASSIGN, _)
+ return *this;
+ }
+
+ template <typename Sequence>
+ static BOOST_PP_CAT(vector_data, N)
+ init_from_sequence(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_ITER_DECL_VAR, _)
+ return BOOST_PP_CAT(vector_data, N)(BOOST_PP_ENUM_PARAMS(N, *i));
+ }
+
+ BOOST_PP_REPEAT(N, FUSION_MEMBER_DECL, _)
+ };
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename T)>
+ struct BOOST_PP_CAT(vector, N)
+ : BOOST_PP_CAT(vector_data, N)<
+ BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)>
+ , BOOST_PP_ENUM_PARAMS(N, T)>
+ {
+ typedef BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> this_type;
+ typedef BOOST_PP_CAT(vector_data, N)<this_type, BOOST_PP_ENUM_PARAMS(N, T)> base_type;
+ typedef mpl::BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, T)> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag; // this gets picked up by MPL
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<N> size;
+
+ BOOST_PP_CAT(vector, N)() {}
+
+#if (N == 1)
+ explicit
+#endif
+ BOOST_PP_CAT(vector, N)(
+ BOOST_PP_ENUM_BINARY_PARAMS(
+ N, typename detail::call_param<T, >::type _))
+ : base_type(BOOST_PP_ENUM_PARAMS(N, _)) {}
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename U)>
+ BOOST_PP_CAT(vector, N)(
+ BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, U)> const& vec)
+ : base_type(BOOST_PP_ENUM_PARAMS(N, vec.m)) {}
+
+ template <typename Sequence>
+ BOOST_PP_CAT(vector, N)(
+ Sequence const& seq
+#if (N == 1)
+ , typename disable_if<is_convertible<Sequence, T0> >::type* dummy = 0
+#endif
+ )
+ : base_type(base_type::init_from_sequence(seq)) {}
+
+ template <BOOST_PP_ENUM_PARAMS(N, typename U)>
+ BOOST_PP_CAT(vector, N)&
+ operator=(BOOST_PP_CAT(vector, N)<BOOST_PP_ENUM_PARAMS(N, U)> const& vec)
+ {
+ BOOST_PP_REPEAT(N, FUSION_MEMBER_ASSIGN, _)
+ return *this;
+ }
+
+ template <typename Sequence>
+ typename disable_if<is_convertible<Sequence, T0>, this_type&>::type
+ operator=(Sequence const& seq)
+ {
+ typedef typename result_of::begin<Sequence const>::type I0;
+ I0 i0 = fusion::begin(seq);
+ BOOST_PP_REPEAT_FROM_TO(1, N, FUSION_ITER_DECL_VAR, _)
+ BOOST_PP_REPEAT(N, FUSION_DEREF_MEMBER_ASSIGN, _)
+ return *this;
+ }
+
+ BOOST_PP_REPEAT(N, FUSION_AT_IMPL, _)
+
+ template<typename I>
+ typename add_reference<typename mpl::at<types, I>::type>::type
+ at_impl(I i)
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+
+ template<typename I>
+ typename add_reference<typename add_const<typename mpl::at<types, I>::type>::type>::type
+ at_impl(I i) const
+ {
+ return this->at_impl(mpl::int_<I::value>());
+ }
+ };
+
+#undef N
+

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

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/limits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/limits.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_VECTOR_LIMITS_07072005_1246)
+#define FUSION_VECTOR_LIMITS_07072005_1246
+
+#if !defined(FUSION_MAX_VECTOR_SIZE)
+# define FUSION_MAX_VECTOR_SIZE 10
+#else
+# if FUSION_MAX_VECTOR_SIZE < 3
+# undef FUSION_MAX_VECTOR_SIZE
+# define FUSION_MAX_VECTOR_SIZE 10
+# 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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,151 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_VECTOR_07072005_1244)
+#define FUSION_VECTOR_07072005_1244
+
+#include <boost/fusion/container/vector/vector_fwd.hpp>
+#include <boost/fusion/container/vector/detail/vector_n_chooser.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/type_traits/add_reference.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/type_traits/is_base_of.hpp>
+#include <boost/detail/workaround.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+ struct fusion_sequence_tag;
+
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename T)>
+ struct vector
+ : sequence_base<vector<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)> >
+ {
+ private:
+
+ typedef typename detail::vector_n_chooser<
+ BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, T)>::type
+ vector_n;
+
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename U)>
+ friend struct vector;
+
+ public:
+
+ typedef typename vector_n::types types;
+ 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;
+
+ vector()
+ : vec() {}
+
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename U)>
+ vector(vector<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, U)> const& rhs)
+ : vec(rhs.vec) {}
+
+ vector(vector const& rhs)
+ : vec(rhs.vec) {}
+
+ template <typename Sequence>
+ vector(Sequence const& rhs)
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
+ : vec(ctor_helper(rhs, is_base_of<vector, Sequence>())) {}
+#else
+ : vec(rhs) {}
+#endif
+
+ // Expand a couple of forwarding constructors for arguments
+ // of type (T0), (T0, T1), (T0, T1, T2) etc. Example:
+ //
+ // vector(
+ // typename detail::call_param<T0>::type _0
+ // , typename detail::call_param<T1>::type _1)
+ // : vec(_0, _1) {}
+ #include <boost/fusion/container/vector/detail/vector_forward_ctor.hpp>
+
+ template <BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, typename U)>
+ vector&
+ operator=(vector<BOOST_PP_ENUM_PARAMS(FUSION_MAX_VECTOR_SIZE, U)> const& rhs)
+ {
+ vec = rhs.vec;
+ return *this;
+ }
+
+ template <typename T>
+ vector&
+ operator=(T const& rhs)
+ {
+ vec = rhs;
+ return *this;
+ }
+
+ template <int N>
+ typename add_reference<
+ typename mpl::at_c<types, N>::type
+ >::type
+ at_impl(mpl::int_<N> index)
+ {
+ return vec.at_impl(index);
+ }
+
+ template <int N>
+ typename add_reference<
+ typename add_const<
+ typename mpl::at_c<types, N>::type
+ >::type
+ >::type
+ at_impl(mpl::int_<N> index) const
+ {
+ return vec.at_impl(index);
+ }
+
+ template <typename I>
+ typename add_reference<
+ typename mpl::at<types, I>::type
+ >::type
+ at_impl(I index)
+ {
+ return vec.at_impl(mpl::int_<I::value>());
+ }
+
+ template<typename I>
+ typename add_reference<
+ typename add_const<
+ typename mpl::at<types, I>::type
+ >::type
+ >::type
+ at_impl(I index) const
+ {
+ return vec.at_impl(mpl::int_<I::value>());
+ }
+
+ private:
+
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1400)
+ static vector_n const&
+ ctor_helper(vector const& rhs, mpl::true_)
+ {
+ return rhs.vec;
+ }
+
+ template <typename T>
+ static T const&
+ ctor_helper(T const& rhs, mpl::false_)
+ {
+ return rhs;
+ }
+#endif
+
+ vector_n vec;
+ };
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_VECTOR10_05042005_0257)
+#define FUSION_VECTOR10_05042005_0257
+
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/container/vector/detail/at_impl.hpp>
+#include <boost/fusion/container/vector/detail/value_at_impl.hpp>
+#include <boost/fusion/container/vector/detail/begin_impl.hpp>
+#include <boost/fusion/container/vector/detail/end_impl.hpp>
+
+#include <boost/mpl/void.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/vector/vector10.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/utility/enable_if.hpp>
+
+#include <boost/preprocessor/dec.hpp>
+#include <boost/preprocessor/iteration/iterate.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_binary_params.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+
+namespace boost { namespace fusion
+{
+ struct vector_tag;
+ struct fusion_sequence_tag;
+ struct random_access_traversal_tag;
+
+ struct vector0 : sequence_base<vector0>
+ {
+ typedef mpl::vector0<> types;
+ typedef vector_tag fusion_tag;
+ typedef fusion_sequence_tag tag; // this gets picked up by MPL
+ typedef mpl::false_ is_view;
+ typedef random_access_traversal_tag category;
+ typedef mpl::int_<0> size;
+
+ vector0() {}
+
+ template<typename Sequence>
+ vector0(Sequence const& seq)
+ {}
+ };
+
+// expand vector1 to vector10
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/vector_n.hpp>
+#define BOOST_PP_ITERATION_LIMITS (1, 10)
+#include BOOST_PP_ITERATE()
+
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,50 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_VECTOR20_05052005_0205)
+#define FUSION_VECTOR20_05052005_0205
+
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/container/vector/detail/at_impl.hpp>
+#include <boost/fusion/container/vector/detail/value_at_impl.hpp>
+#include <boost/fusion/container/vector/detail/begin_impl.hpp>
+#include <boost/fusion/container/vector/detail/end_impl.hpp>
+
+#include <boost/mpl/void.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/vector/vector20.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/utility/enable_if.hpp>
+
+#include <boost/preprocessor/dec.hpp>
+#include <boost/preprocessor/iteration/iterate.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_binary_params.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+
+namespace boost { namespace fusion
+{
+ struct vector_tag;
+ struct fusion_sequence_tag;
+ struct random_access_traversal_tag;
+
+// expand vector11 to vector20
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/vector_n.hpp>
+#define BOOST_PP_ITERATION_LIMITS (11, 20)
+#include BOOST_PP_ITERATE()
+
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,50 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_VECTOR30_05052005_0206)
+#define FUSION_VECTOR30_05052005_0206
+
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/container/vector/detail/at_impl.hpp>
+#include <boost/fusion/container/vector/detail/value_at_impl.hpp>
+#include <boost/fusion/container/vector/detail/begin_impl.hpp>
+#include <boost/fusion/container/vector/detail/end_impl.hpp>
+
+#include <boost/mpl/void.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/vector/vector30.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/utility/enable_if.hpp>
+
+#include <boost/preprocessor/dec.hpp>
+#include <boost/preprocessor/iteration/iterate.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_binary_params.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+
+namespace boost { namespace fusion
+{
+ struct vector_tag;
+ struct fusion_sequence_tag;
+ struct random_access_traversal_tag;
+
+// expand vector21 to vector30
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/vector_n.hpp>
+#define BOOST_PP_ITERATION_LIMITS (21, 30)
+#include BOOST_PP_ITERATE()
+
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,50 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_VECTOR40_05052005_0208)
+#define FUSION_VECTOR40_05052005_0208
+
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/container/vector/detail/at_impl.hpp>
+#include <boost/fusion/container/vector/detail/value_at_impl.hpp>
+#include <boost/fusion/container/vector/detail/begin_impl.hpp>
+#include <boost/fusion/container/vector/detail/end_impl.hpp>
+
+#include <boost/mpl/void.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/vector/vector40.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/utility/enable_if.hpp>
+
+#include <boost/preprocessor/dec.hpp>
+#include <boost/preprocessor/iteration/iterate.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_binary_params.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+
+namespace boost { namespace fusion
+{
+ struct vector_tag;
+ struct fusion_sequence_tag;
+ struct random_access_traversal_tag;
+
+// expand vector31 to vector40
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/vector_n.hpp>
+#define BOOST_PP_ITERATION_LIMITS (31, 40)
+#include BOOST_PP_ITERATE()
+
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,50 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_VECTOR50_05052005_0207)
+#define FUSION_VECTOR50_05052005_0207
+
+#include <boost/fusion/support/sequence_base.hpp>
+#include <boost/fusion/support/detail/access.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/container/vector/detail/at_impl.hpp>
+#include <boost/fusion/container/vector/detail/value_at_impl.hpp>
+#include <boost/fusion/container/vector/detail/begin_impl.hpp>
+#include <boost/fusion/container/vector/detail/end_impl.hpp>
+
+#include <boost/mpl/void.hpp>
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/at.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/vector/vector50.hpp>
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/utility/enable_if.hpp>
+
+#include <boost/preprocessor/dec.hpp>
+#include <boost/preprocessor/iteration/iterate.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_binary_params.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+
+namespace boost { namespace fusion
+{
+ struct vector_tag;
+ struct fusion_sequence_tag;
+ struct random_access_traversal_tag;
+
+// expand vector41 to vector50
+#define BOOST_PP_FILENAME_1 <boost/fusion/container/vector/detail/vector_n.hpp>
+#define BOOST_PP_ITERATION_LIMITS (41, 50)
+#include BOOST_PP_ITERATE()
+
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_VECTOR_FORWARD_07072005_0125)
+#define FUSION_VECTOR_FORWARD_07072005_0125
+
+#include <boost/fusion/container/vector/limits.hpp>
+#include <boost/preprocessor/repetition/enum_params_with_a_default.hpp>
+
+namespace boost { namespace fusion
+{
+ struct void_;
+
+ template <
+ BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(
+ FUSION_MAX_VECTOR_SIZE, typename T, void_)
+ >
+ struct vector;
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/container/vector/vector_iterator.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_VECTOR_ITERATOR_05042005_0635)
+#define FUSION_VECTOR_ITERATOR_05042005_0635
+
+#include <boost/fusion/support/iterator_base.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/next_impl.hpp>
+#include <boost/fusion/container/vector/detail/prior_impl.hpp>
+#include <boost/fusion/container/vector/detail/equal_to_impl.hpp>
+#include <boost/fusion/container/vector/detail/distance_impl.hpp>
+#include <boost/fusion/container/vector/detail/advance_impl.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/mpl/int.hpp>
+
+namespace boost { namespace fusion
+{
+ struct vector_iterator_tag;
+ struct random_access_traversal_tag;
+
+ template <typename Vector, int N>
+ struct vector_iterator_identity;
+
+ template <typename Vector, int N>
+ struct vector_iterator : iterator_base<vector_iterator<Vector, N> >
+ {
+ typedef mpl::int_<N> index;
+ typedef Vector vector;
+ typedef vector_iterator_tag fusion_tag;
+ typedef random_access_traversal_tag category;
+ typedef vector_iterator_identity<
+ typename add_const<Vector>::type, N> identity;
+
+ vector_iterator(Vector& vec)
+ : vec(vec) {}
+ Vector& vec;
+ };
+}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_HPP_INCLUDED)
+#define BOOST_FUSION_FUNCTIONAL_HPP_INCLUDED
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,18 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_HPP_INCLUDED)
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_HPP_INCLUDED
+#include <boost/fusion/functional/adapter/fused.hpp>
+#include <boost/fusion/functional/adapter/fused_procedure.hpp>
+#include <boost/fusion/functional/adapter/fused_function_object.hpp>
+#include <boost/fusion/functional/adapter/unfused_generic.hpp>
+#include <boost/fusion/functional/adapter/unfused_lvalue_args.hpp>
+#include <boost/fusion/functional/adapter/unfused_rvalue_args.hpp>
+#include <boost/fusion/functional/adapter/unfused_typed.hpp>
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/access.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/access.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,41 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_ACCESS_HPP_INCLUDED)
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_ACCESS_HPP_INCLUDED
+
+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/pow2_explode.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/pow2_explode.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,118 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_PP_IS_ITERATING)
+# error "This file has to be included by a preprocessor loop construct!"
+#elif BOOST_PP_ITERATION_DEPTH() == 1
+
+# if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_POW2_EXPLODE_HPP_INCLUDED)
+# include <boost/preprocessor/config/limits.hpp>
+# include <boost/preprocessor/slot/slot.hpp>
+# include <boost/preprocessor/arithmetic/dec.hpp>
+# define BOOST_FUSION_FUNCTIONAL_ADAPTER_DETAIL_POW2_EXPLODE_HPP_INCLUDED
+# endif
+
+# define BOOST_PP_VALUE 0
+# include BOOST_PP_ASSIGN_SLOT(1)
+
+# define BOOST_PP_FILENAME_2 \
+ <boost/fusion/functional/adapter/detail/pow2_explode.hpp>
+# define BOOST_PP_VALUE (1 << N) >> 4
+# if BOOST_PP_VALUE > BOOST_PP_LIMIT_ITERATION
+# error "Preprocessor limit exceeded."
+# endif
+
+# include BOOST_PP_ASSIGN_SLOT(2)
+# define BOOST_PP_ITERATION_LIMITS (0,BOOST_PP_DEC(BOOST_PP_SLOT_2()))
+# include BOOST_PP_ITERATE()
+
+#elif BOOST_PP_ITERATION_DEPTH() == 2
+
+# if BOOST_PP_SLOT_1() < 1 << N
+# include BOOST_PP_INDIRECT_SELF
+# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
+# include BOOST_PP_ASSIGN_SLOT(1)
+# if BOOST_PP_SLOT_1() < 1 << N
+# include BOOST_PP_INDIRECT_SELF
+# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
+# include BOOST_PP_ASSIGN_SLOT(1)
+# if BOOST_PP_SLOT_1() < 1 << N
+# include BOOST_PP_INDIRECT_SELF
+# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
+# include BOOST_PP_ASSIGN_SLOT(1)
+# if BOOST_PP_SLOT_1() < 1 << N
+# include BOOST_PP_INDIRECT_SELF
+# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
+# include BOOST_PP_ASSIGN_SLOT(1)
+# if BOOST_PP_SLOT_1() < 1 << N
+# include BOOST_PP_INDIRECT_SELF
+# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
+# include BOOST_PP_ASSIGN_SLOT(1)
+# if BOOST_PP_SLOT_1() < 1 << N
+# include BOOST_PP_INDIRECT_SELF
+# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
+# include BOOST_PP_ASSIGN_SLOT(1)
+# if BOOST_PP_SLOT_1() < 1 << N
+# include BOOST_PP_INDIRECT_SELF
+# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
+# include BOOST_PP_ASSIGN_SLOT(1)
+# if BOOST_PP_SLOT_1() < 1 << N
+# include BOOST_PP_INDIRECT_SELF
+# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
+# include BOOST_PP_ASSIGN_SLOT(1)
+# if BOOST_PP_SLOT_1() < 1 << N
+# include BOOST_PP_INDIRECT_SELF
+# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
+# include BOOST_PP_ASSIGN_SLOT(1)
+# if BOOST_PP_SLOT_1() < 1 << N
+# include BOOST_PP_INDIRECT_SELF
+# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
+# include BOOST_PP_ASSIGN_SLOT(1)
+# if BOOST_PP_SLOT_1() < 1 << N
+# include BOOST_PP_INDIRECT_SELF
+# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
+# include BOOST_PP_ASSIGN_SLOT(1)
+# if BOOST_PP_SLOT_1() < 1 << N
+# include BOOST_PP_INDIRECT_SELF
+# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
+# include BOOST_PP_ASSIGN_SLOT(1)
+# if BOOST_PP_SLOT_1() < 1 << N
+# include BOOST_PP_INDIRECT_SELF
+# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
+# include BOOST_PP_ASSIGN_SLOT(1)
+# if BOOST_PP_SLOT_1() < 1 << N
+# include BOOST_PP_INDIRECT_SELF
+# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
+# include BOOST_PP_ASSIGN_SLOT(1)
+# if BOOST_PP_SLOT_1() < 1 << N
+# include BOOST_PP_INDIRECT_SELF
+# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
+# include BOOST_PP_ASSIGN_SLOT(1)
+# if BOOST_PP_SLOT_1() < 1 << N
+# include BOOST_PP_INDIRECT_SELF
+# define BOOST_PP_VALUE BOOST_PP_SLOT_1() + 1
+# include BOOST_PP_ASSIGN_SLOT(1)
+# endif
+# endif
+# endif
+# endif
+# endif
+# endif
+# endif
+# endif
+# endif
+# endif
+# endif
+# endif
+# endif
+# endif
+# endif
+# endif
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/pt_def.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/pt_def.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,71 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+// No include guard - this file is included multiple times intentionally.
+
+#if BOOST_PP_SLOT_1() & 0x001
+# define PT0 T0 &
+#else
+# define PT0 T0 const &
+#endif
+#if BOOST_PP_SLOT_1() & 0x002
+# define PT1 T1 &
+#else
+# define PT1 T1 const &
+#endif
+#if BOOST_PP_SLOT_1() & 0x004
+# define PT2 T2 &
+#else
+# define PT2 T2 const &
+#endif
+#if BOOST_PP_SLOT_1() & 0x008
+# define PT3 T3 &
+#else
+# define PT3 T3 const &
+#endif
+#if BOOST_PP_SLOT_1() & 0x010
+# define PT4 T4 &
+#else
+# define PT4 T4 const &
+#endif
+#if BOOST_PP_SLOT_1() & 0x020
+# define PT5 T5 &
+#else
+# define PT5 T5 const &
+#endif
+#if BOOST_PP_SLOT_1() & 0x040
+# define PT6 T6 &
+#else
+# define PT6 T6 const &
+#endif
+#if BOOST_PP_SLOT_1() & 0x080
+# define PT7 T7 &
+#else
+# define PT7 T7 const &
+#endif
+#if BOOST_PP_SLOT_1() & 0x100
+# define PT8 T8 &
+#else
+# define PT8 T8 const &
+#endif
+#if BOOST_PP_SLOT_1() & 0x200
+# define PT9 T9 &
+#else
+# define PT9 T9 const &
+#endif
+#if BOOST_PP_SLOT_1() & 0x400
+# define PT10 T10 &
+#else
+# define PT10 T10 const &
+#endif
+#if BOOST_PP_SLOT_1() & 0x800
+# define PT11 T11 &
+#else
+# define PT11 T11 const &
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/pt_undef.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/detail/pt_undef.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,23 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+// No include guard - this file is included multiple times intentionally.
+
+#undef PT0
+#undef PT1
+#undef PT2
+#undef PT3
+#undef PT4
+#undef PT5
+#undef PT6
+#undef PT7
+#undef PT8
+#undef PT9
+#undef PT10
+#undef PT11
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,85 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_HPP_INCLUDED)
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_HPP_INCLUDED
+
+#include <boost/type_traits/add_reference.hpp>
+
+#include <boost/fusion/functional/adapter/detail/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/fused_function_object.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused_function_object.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,90 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_FUNCTION_OBJECT_HPP_INCLUDED)
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_FUNCTION_OBJECT_HPP_INCLUDED
+
+#include <boost/type_traits/add_reference.hpp>
+
+#include <boost/fusion/functional/adapter/detail/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/fused_procedure.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/fused_procedure.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,70 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_PROCEDURE_HPP_INCLUDED)
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_FUSED_PROCEDURE_HPP_INCLUDED
+
+#include <boost/type_traits/add_reference.hpp>
+
+#include <boost/fusion/functional/adapter/detail/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/limits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/limits.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_LIMITS_HPP_INCLUDED)
+# define BOOST_FUSION_FUNCTIONAL_ADAPTER_LIMITS_HPP_INCLUDED
+
+# include <boost/fusion/container/vector/limits.hpp>
+
+# if !defined(BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY)
+# define BOOST_FUSION_UNFUSED_GENERIC_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
+# if !defined(BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY)
+# define BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY 6
+# elif BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY > FUSION_MAX_VECTOR_SIZE
+# error "BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY > FUSION_MAX_VECTOR_SIZE"
+# endif
+# if !defined(BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY)
+# define BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY 6
+# elif BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY > FUSION_MAX_VECTOR_SIZE
+# error "BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY > FUSION_MAX_VECTOR_SIZE"
+# endif
+# if !defined(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
+# if !defined(BOOST_FUSION_CONSTRUCTOR_MAX_ARITY)
+# define BOOST_FUSION_CONSTRUCTOR_MAX_ARITY 6
+# endif
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_generic.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_generic.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,175 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_GENERIC_HPP_INCLUDED)
+#if !defined(BOOST_PP_IS_ITERATING)
+
+#include <boost/config.hpp>
+#include <boost/detail/workaround.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/fusion/container/vector/vector.hpp>
+
+#include <boost/fusion/functional/adapter/limits.hpp>
+#include <boost/fusion/functional/adapter/detail/access.hpp>
+
+#include <boost/utility/result_of.hpp>
+
+namespace boost { namespace fusion
+{
+ template <class Function> class unfused_generic;
+
+ //----- ---- --- -- - - - -
+
+ template <class Function>
+ class unfused_generic
+ {
+ Function fnc_transformed;
+
+ typedef typename detail::qf_c<Function>::type function_c;
+ typedef typename detail::qf<Function>::type function;
+
+ typedef typename detail::call_param<Function>::type func_const_fwd_t;
+
+ public:
+
+ inline explicit unfused_generic(func_const_fwd_t f = Function())
+ : fnc_transformed(f)
+ { }
+
+ template <typename Sig>
+ struct result;
+
+ 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);
+ }
+
+ #define BOOST_FUSION_CODE(tpl_params,arg_types,params,args) \
+ template <tpl_params> \
+ inline typename boost::result_of<function_c( \
+ BOOST_PP_CAT(fusion::vector,N)<arg_types> & )>::type \
+ operator()(params) const \
+ { \
+ BOOST_PP_CAT(fusion::vector,N)<arg_types> arg(args); \
+ return this->fnc_transformed(arg); \
+ } \
+ template <tpl_params> \
+ inline typename boost::result_of<function( \
+ BOOST_PP_CAT(fusion::vector,N)<arg_types> & )>::type \
+ operator()(params) \
+ { \
+ BOOST_PP_CAT(fusion::vector,N)<arg_types> arg(args); \
+ return this->fnc_transformed(arg); \
+ }
+
+ #define BOOST_PP_INDIRECT_SELF \
+ <boost/fusion/functional/adapter/unfused_generic.hpp>
+ #define BOOST_PP_FILENAME_1 \
+ <boost/fusion/functional/adapter/detail/pow2_explode.hpp>
+ #define BOOST_PP_ITERATION_LIMITS \
+ (1,BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY)
+ #define N BOOST_PP_ITERATION_1
+ #include BOOST_PP_ITERATE()
+ #undef N
+
+ #undef BOOST_FUSION_CODE
+ };
+}}
+
+namespace boost
+{
+ template<class F>
+ struct result_of<boost::fusion::unfused_generic<F> const ()>
+ {
+ typedef typename boost::fusion::unfused_generic<F>::call_const_0_result type;
+ };
+ template<class F>
+ struct result_of<boost::fusion::unfused_generic<F>()>
+ {
+ typedef typename boost::fusion::unfused_generic<F>::call_0_result type;
+ };
+}
+
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_GENERIC_HPP_INCLUDED
+#else // defined(BOOST_PP_IS_ITERATING)
+///////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+///////////////////////////////////////////////////////////////////////////////
+
+#include <boost/fusion/functional/adapter/detail/pt_def.hpp>
+
+#if BOOST_PP_SLOT_1() == 0
+ 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::gref<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::gref<T,>::type BOOST_PP_INTERCEPT) > & )>
+ { };
+#endif
+
+#if BOOST_WORKAROUND(BOOST_MSVC,BOOST_TESTED_AT(1400))
+ template <BOOST_PP_ENUM_PARAMS(N,typename T)>
+ inline typename boost::result_of<function_c(
+ BOOST_PP_CAT(fusion::vector,N)<BOOST_PP_ENUM_PARAMS(N,PT)> & )>::type
+ operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,PT,a)) const
+ {
+ BOOST_PP_CAT(fusion::vector,N)<BOOST_PP_ENUM_PARAMS(N,PT)>
+ 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_PARAMS(N,PT)> & )>::type
+ operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,PT,a))
+ {
+ BOOST_PP_CAT(fusion::vector,N)<BOOST_PP_ENUM_PARAMS(N,PT)>
+ arg(BOOST_PP_ENUM_PARAMS(N,a));
+ return this->fnc_transformed(arg);
+ }
+#else
+ BOOST_FUSION_CODE(BOOST_PP_ENUM_PARAMS(N,typename T),
+ BOOST_PP_ENUM_PARAMS(N,PT), BOOST_PP_ENUM_BINARY_PARAMS(N,PT,a),
+ BOOST_PP_ENUM_PARAMS(N,a) )
+ // ...generates uglier code but is faster - it caches ENUM_*
+#endif
+
+#include <boost/fusion/functional/adapter/detail/pt_undef.hpp>
+
+#endif // defined(BOOST_PP_IS_ITERATING)
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_lvalue_args.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_lvalue_args.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,136 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_LVALUE_ARGS_HPP_INCLUDED)
+#if !defined(BOOST_PP_IS_ITERATING)
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/facilities/intercept.hpp>
+
+#include <boost/utility/result_of.hpp>
+
+#include <boost/fusion/container/vector/vector.hpp>
+
+#include <boost/fusion/functional/adapter/limits.hpp>
+#include <boost/fusion/functional/adapter/detail/access.hpp>
+
+namespace boost { namespace fusion
+{
+ template <class Function> class unfused_lvalue_args;
+
+ //----- ---- --- -- - - - -
+
+ template <class Function> class unfused_lvalue_args
+ {
+ Function fnc_transformed;
+
+ typedef typename detail::qf_c<Function>::type function_c;
+ typedef typename detail::qf<Function>::type function;
+
+ typedef typename detail::call_param<Function>::type func_const_fwd_t;
+
+ public:
+
+ inline explicit unfused_lvalue_args(func_const_fwd_t f = function())
+ : fnc_transformed(f)
+ { }
+
+ template <typename Sig>
+ struct result;
+
+ 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);
+ }
+
+ #define BOOST_PP_FILENAME_1 \
+ <boost/fusion/functional/adapter/unfused_lvalue_args.hpp>
+ #define BOOST_PP_ITERATION_LIMITS \
+ (1,BOOST_FUSION_UNFUSED_LVALUE_ARGS_MAX_ARITY)
+ #include BOOST_PP_ITERATE()
+ };
+}}
+
+namespace boost
+{
+ template<class F>
+ struct result_of< boost::fusion::unfused_lvalue_args<F> const () >
+ {
+ typedef typename boost::fusion::unfused_lvalue_args<F>::call_const_0_result type;
+ };
+ template<class F>
+ struct result_of< boost::fusion::unfused_lvalue_args<F>() >
+ {
+ typedef typename boost::fusion::unfused_lvalue_args<F>::call_0_result type;
+ };
+}
+
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_LVALUE_ARGS_HPP_INCLUDED
+#else // defined(BOOST_PP_IS_ITERATING)
+////////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+////////////////////////////////////////////////////////////////////////////////
+#define N BOOST_PP_ITERATION()
+
+ template <class Self, BOOST_PP_ENUM_PARAMS(N,typename T)>
+ struct result< Self const (BOOST_PP_ENUM_PARAMS(N,T)) >
+ : boost::result_of< function_c(
+ BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N,
+ typename detail::mref<T,>::type BOOST_PP_INTERCEPT) > & )>
+ { };
+
+ template <class Self, BOOST_PP_ENUM_PARAMS(N,typename T)>
+ struct result< Self(BOOST_PP_ENUM_PARAMS(N,T)) >
+ : boost::result_of< function(
+ BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N,
+ typename detail::mref<T,>::type BOOST_PP_INTERCEPT) > & )>
+ { };
+
+ template <BOOST_PP_ENUM_PARAMS(N,typename T)>
+ inline typename boost::result_of<function_c(BOOST_PP_CAT(fusion::vector,N)
+ <BOOST_PP_ENUM_BINARY_PARAMS(N,T,& BOOST_PP_INTERCEPT)> & )>::type
+ operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,& a)) const
+ {
+ BOOST_PP_CAT(fusion::vector,N)<
+ BOOST_PP_ENUM_BINARY_PARAMS(N,T,& BOOST_PP_INTERCEPT) >
+ arg(BOOST_PP_ENUM_PARAMS(N,a));
+ return this->fnc_transformed(arg);
+ }
+
+ template <BOOST_PP_ENUM_PARAMS(N,typename T)>
+ inline typename boost::result_of<function(BOOST_PP_CAT(fusion::vector,N)
+ <BOOST_PP_ENUM_BINARY_PARAMS(N,T,& BOOST_PP_INTERCEPT)> & )>::type
+ operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,& a))
+ {
+ BOOST_PP_CAT(fusion::vector,N)<
+ BOOST_PP_ENUM_BINARY_PARAMS(N,T,& BOOST_PP_INTERCEPT) >
+ arg(BOOST_PP_ENUM_PARAMS(N,a));
+ return this->fnc_transformed(arg);
+ }
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_rvalue_args.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/adapter/unfused_rvalue_args.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,137 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_RVALUE_ARGS_HPP_INCLUDED)
+#if !defined(BOOST_PP_IS_ITERATING)
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/iteration/iterate.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_binary_params.hpp>
+#include <boost/preprocessor/facilities/intercept.hpp>
+
+#include <boost/utility/result_of.hpp>
+
+#include <boost/fusion/container/vector/vector.hpp>
+
+#include <boost/fusion/functional/adapter/limits.hpp>
+#include <boost/fusion/functional/adapter/detail/access.hpp>
+
+namespace boost { namespace fusion
+{
+ template <class Function> class unfused_rvalue_args;
+
+ //----- ---- --- -- - - - -
+
+ template <class Function> class unfused_rvalue_args
+ {
+ Function fnc_transformed;
+
+ typedef typename detail::qf_c<Function>::type function_c;
+ typedef typename detail::qf<Function>::type function;
+
+ typedef typename detail::call_param<Function>::type func_const_fwd_t;
+
+ public:
+
+ inline explicit unfused_rvalue_args(func_const_fwd_t f = function())
+ : fnc_transformed(f)
+ { }
+
+ template <typename Sig>
+ struct result;
+
+ 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);
+ }
+
+ #define BOOST_PP_FILENAME_1 \
+ <boost/fusion/functional/adapter/unfused_rvalue_args.hpp>
+ #define BOOST_PP_ITERATION_LIMITS \
+ (1,BOOST_FUSION_UNFUSED_RVALUE_ARGS_MAX_ARITY)
+ #include BOOST_PP_ITERATE()
+ };
+}}
+
+namespace boost
+{
+ template<class F>
+ struct result_of<boost::fusion::unfused_rvalue_args<F> const ()>
+ {
+ typedef typename boost::fusion::unfused_rvalue_args<F>::call_const_0_result type;
+ };
+ template<class F>
+ struct result_of<boost::fusion::unfused_rvalue_args<F>()>
+ {
+ typedef typename boost::fusion::unfused_rvalue_args<F>::call_0_result type;
+ };
+}
+
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_RVALUE_ARGS_HPP_INCLUDED
+#else // defined(BOOST_PP_IS_ITERATING)
+////////////////////////////////////////////////////////////////////////////////
+//
+// Preprocessor vertical repetition code
+//
+////////////////////////////////////////////////////////////////////////////////
+#define N BOOST_PP_ITERATION()
+
+ template <class Self, BOOST_PP_ENUM_PARAMS(N,typename T)>
+ struct result< Self const (BOOST_PP_ENUM_PARAMS(N,T)) >
+ : boost::result_of< function_c(
+ BOOST_PP_CAT(fusion::vector,N)< BOOST_PP_ENUM_BINARY_PARAMS(N,
+ typename detail::cref<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::cref<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,const& BOOST_PP_INTERCEPT)> & )>::type
+ operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& a)) const
+ {
+ BOOST_PP_CAT(fusion::vector,N)<
+ BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& 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,const& BOOST_PP_INTERCEPT)> & )>::type
+ operator()(BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& a))
+ {
+ BOOST_PP_CAT(fusion::vector,N)<
+ BOOST_PP_ENUM_BINARY_PARAMS(N,T,const& BOOST_PP_INTERCEPT) >
+ arg(BOOST_PP_ENUM_PARAMS(N,a));
+ return this->fnc_transformed(arg);
+ }
+
+#undef N
+#endif // defined(BOOST_PP_IS_ITERATING)
+#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-05-13 15:06:33 EDT (Wed, 13 May 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_TYPED_HPP_INCLUDED)
+#if !defined(BOOST_PP_IS_ITERATING)
+
+#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/support/detail/access.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/access.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 detail::call_param<Function>::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/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> () >
+ { };
+}
+
+
+#define BOOST_FUSION_FUNCTIONAL_ADAPTER_UNFUSED_TYPED_HPP_INCLUDED
+#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_param<typename result_of::value_at_c<s,i>::type>::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)
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/generation.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/generation.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,19 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_HPP_INCLUDED)
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_HPP_INCLUDED
+
+#include <boost/fusion/functional/generation/make_fused.hpp>
+#include <boost/fusion/functional/generation/make_fused_procedure.hpp>
+#include <boost/fusion/functional/generation/make_fused_function_object.hpp>
+#include <boost/fusion/functional/generation/make_unfused_generic.hpp>
+#include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
+#include <boost/fusion/functional/generation/make_unfused_rvalue_args.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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,44 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+// No include guard - this file is included multiple times intentionally.
+
+#include <boost/preprocessor/cat.hpp>
+#include <boost/fusion/support/detail/as_fusion_element.hpp>
+
+#if !defined(BOOST_FUSION_CLASS_TPL_NAME)
+# error "BOOST_FUSION_CLASS_TPL_NAME undefined"
+#endif
+
+#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 fusion::BOOST_FUSION_CLASS_TPL_NAME<
+ typename fusion::detail::as_fusion_element<F>::type > type;
+ };
+ }
+
+ template <typename F>
+ inline typename result_of::BOOST_FUSION_FUNC_NAME<F>::type
+ BOOST_FUSION_FUNC_NAME(F const & f)
+ {
+ return typename result_of::BOOST_FUSION_FUNC_NAME<F>::type(f);
+ }
+
+}}
+
+#undef BOOST_FUSION_CLASS_TPL_NAME
+#undef BOOST_FUSION_FUNC_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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,18 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_HPP_INCLUDED)
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_HPP_INCLUDED
+
+#include <boost/fusion/functional/adapter/fused.hpp>
+
+#define BOOST_FUSION_CLASS_TPL_NAME fused
+#include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,18 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_FUNCTION_OBJECT_HPP_INCLUDED)
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_FUNCTION_OBJECT_HPP_INCLUDED
+
+#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>
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,18 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_PROCEDURE_HPP_INCLUDED)
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_FUSED_PROCEDURE_HPP_INCLUDED
+
+#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>
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_generic.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_generic.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,18 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_GENERIC_HPP_INCLUDED)
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_GENERIC_HPP_INCLUDED
+
+#include <boost/fusion/functional/adapter/unfused_generic.hpp>
+
+#define BOOST_FUSION_CLASS_TPL_NAME unfused_generic
+#include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_lvalue_args.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_lvalue_args.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,18 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_LVALUE_ARGS_HPP_INCLUDED)
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_LVALUE_ARGS_HPP_INCLUDED
+
+#include <boost/fusion/functional/adapter/unfused_lvalue_args.hpp>
+
+#define BOOST_FUSION_CLASS_TPL_NAME unfused_lvalue_args
+#include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_rvalue_args.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/generation/make_unfused_rvalue_args.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,18 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_RVALUE_ARGS_HPP_INCLUDED)
+#define BOOST_FUSION_FUNCTIONAL_GENERATION_MAKE_UNFUSED_RVALUE_ARGS_HPP_INCLUDED
+
+#include <boost/fusion/functional/adapter/unfused_rvalue_args.hpp>
+
+#define BOOST_FUSION_CLASS_TPL_NAME unfused_rvalue_args
+#include <boost/fusion/functional/generation/detail/gen_make_adapter.hpp>
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_HPP_INCLUDED)
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_HPP_INCLUDED
+
+#include <boost/fusion/functional/invocation/invoke.hpp>
+#include <boost/fusion/functional/invocation/invoke_procedure.hpp>
+#include <boost/fusion/functional/invocation/invoke_function_object.hpp>
+
+#endif

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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,87 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_DETAIL_THAT_PTR_HPP_INCLUDED)
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_DETAIL_THAT_PTR_HPP_INCLUDED
+
+#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 Wanted>
+ struct that_ptr
+ {
+ private:
+
+ typedef typename remove_reference<Wanted>::type pointee;
+
+ template <typename T>
+ static inline pointee * do_get_pointer(T &, pointee * x)
+ {
+ return x;
+ }
+ template <typename T>
+ static inline pointee * do_get_pointer(T & x, void const *)
+ {
+ return get_pointer(x);
+ }
+
+ public:
+
+ static inline pointee * get(pointee * x)
+ {
+ return x;
+ }
+
+ static inline pointee * get(pointee & x)
+ {
+ return boost::addressof(x);
+ }
+
+ template <typename T> static inline pointee * get(T & x)
+ {
+ return do_get_pointer(x, boost::addressof(x));
+ }
+ };
+
+ 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
+

Added: sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/functional/invocation/invoke.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,306 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_HPP_INCLUDED)
+#if !defined(BOOST_PP_IS_ITERATING)
+
+#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/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);
+ }
+
+}}
+
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_HPP_INCLUDED
+#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)
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,177 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_FUNCTION_OBJECT_HPP_INCLUDED)
+#if !defined(BOOST_PP_IS_ITERATING)
+
+#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/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);
+ }
+
+}}
+
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_FUNCTION_OBJECT_HPP_INCLUDED
+#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)
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,171 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_PROCEDURE_HPP_INCLUDED)
+#if !defined(BOOST_PP_IS_ITERATING)
+
+#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/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);
+ }
+
+}}
+
+#define BOOST_FUSION_FUNCTIONAL_INVOCATION_INVOKE_PROCEDURE_HPP_INCLUDED
+#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)
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,23 @@
+/*=============================================================================
+ 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).
+==============================================================================*/
+
+#if !defined(BOOST_FUSION_FUNCTIONAL_INVOCATION_LIMITS_HPP_INCLUDED)
+# define BOOST_FUSION_FUNCTIONAL_INVOCATION_LIMITS_HPP_INCLUDED
+
+# if !defined(BOOST_FUSION_INVOKE_MAX_ARITY)
+# define BOOST_FUSION_INVOKE_MAX_ARITY 6
+# endif
+# if !defined(BOOST_FUSION_INVOKE_PROCEDURE_MAX_ARITY)
+# define BOOST_FUSION_INVOKE_PROCEDURE_MAX_ARITY 6
+# endif
+# if !defined(BOOST_FUSION_INVOKE_FUNCTION_OBJECT_MAX_ARITY)
+# define BOOST_FUSION_INVOKE_FUNCTION_OBJECT_MAX_ARITY 6
+# endif
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/include/accumulate.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/accumulate.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_ACCUMULATE)
+#define FUSION_INCLUDE_ACCUMULATE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_ADAPT_STRUCT)
+#define FUSION_INCLUDE_ADAPT_STRUCT
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_ADAPTED)
+#define FUSION_INCLUDE_ADAPTED
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_ADAPTER)
+#define FUSION_INCLUDE_ADAPTER
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_ADVANCE)
+#define FUSION_INCLUDE_ADVANCE
+
+#include <boost/fusion/iterator/advance.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/algorithm.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/algorithm.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_ALGORITHM)
+#define FUSION_INCLUDE_ALGORITHM
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_ALL)
+#define FUSION_INCLUDE_ALL
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_ANY)
+#define FUSION_INCLUDE_ANY
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_ARRAY)
+#define FUSION_INCLUDE_ARRAY
+
+#include <boost/fusion/adapted/array.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/as_deque.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/as_deque.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_AS_DEQUE)
+#define FUSION_INCLUDE_AS_DEQUE
+
+#include <boost/fusion/container/deque/convert.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/as_list.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/as_list.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_AS_LIST)
+#define FUSION_INCLUDE_AS_LIST
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_AS_MAP)
+#define FUSION_INCLUDE_AS_MAP
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_AS_SET)
+#define FUSION_INCLUDE_AS_SET
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_AS_VECTOR)
+#define FUSION_INCLUDE_AS_VECTOR
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_AT)
+#define FUSION_INCLUDE_AT
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_AT_C)
+#define FUSION_INCLUDE_AT_C
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_AT_KEY)
+#define FUSION_INCLUDE_AT_KEY
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_BACK)
+#define FUSION_INCLUDE_BACK
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_BEGIN)
+#define FUSION_INCLUDE_BEGIN
+
+#include <boost/fusion/sequence/intrinsic/begin.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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_BOOST_TUPLE)
+#define FUSION_INCLUDE_BOOST_TUPLE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_CATEGORY_OF)
+#define FUSION_INCLUDE_CATEGORY_OF
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_CLEAR)
+#define FUSION_INCLUDE_CLEAR
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_COMPARISON)
+#define FUSION_INCLUDE_COMPARISON
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_CONS)
+#define FUSION_INCLUDE_CONS
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_CONS_TIE)
+#define FUSION_INCLUDE_CONS_TIE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_CONTAINER)
+#define FUSION_INCLUDE_CONTAINER
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_CONVERT)
+#define FUSION_INCLUDE_CONVERT
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_COUNT)
+#define FUSION_INCLUDE_COUNT
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_COUNT_IF)
+#define FUSION_INCLUDE_COUNT_IF
+
+#include <boost/fusion/algorithm/query/count_if.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/deduce.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/deduce.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_DEDUCE)
+#define FUSION_INCLUDE_DEDUCE
+
+#include <boost/fusion/support/deduce.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/deduce_sequence.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/deduce_sequence.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_DEDUCE_SEQUENCE)
+#define FUSION_INCLUDE_DEDUCE_SEQUENCE
+
+#include <boost/fusion/support/deduce_sequence.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/deque.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/deque.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_DEQUE)
+#define FUSION_INCLUDE_DEQUE
+
+#include <boost/fusion/container/deque.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/deque_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/deque_fwd.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_DEQUE)
+#define FUSION_INCLUDE_DEQUE
+
+#include <boost/fusion/container/deque/deque_fwd.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/deque_tie.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/deque_tie.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_GENERATION)
+#define FUSION_INCLUDE_GENERATION
+
+#include <boost/fusion/container/generation.hpp>
+#include <boost/fusion/functional/generation.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/deref.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/deref.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_DEREF)
+#define FUSION_INCLUDE_DEREF
+
+#include <boost/fusion/iterator/deref.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/distance.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/distance.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_DISTANCE)
+#define FUSION_INCLUDE_DISTANCE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_EMPTY)
+#define FUSION_INCLUDE_EMPTY
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_END)
+#define FUSION_INCLUDE_END
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_EQUAL_TO)
+#define FUSION_INCLUDE_EQUAL_TO
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_ERASE)
+#define FUSION_INCLUDE_ERASE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_ERASE_KEY)
+#define FUSION_INCLUDE_ERASE_KEY
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_FILTER)
+#define FUSION_INCLUDE_FILTER
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_FILTER_IF)
+#define FUSION_INCLUDE_FILTER_IF
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_FILTER_VIEW)
+#define FUSION_INCLUDE_FILTER_VIEW
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_FIND)
+#define FUSION_INCLUDE_FIND
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_FIND_IF)
+#define FUSION_INCLUDE_FIND_IF
+
+#include <boost/fusion/algorithm/query/find_if.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/fold.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/fold.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_FOLD)
+#define FUSION_INCLUDE_FOLD
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_FOR_EACH)
+#define FUSION_INCLUDE_FOR_EACH
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_FRONT)
+#define FUSION_INCLUDE_FRONT
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_FUNCTIONAL)
+#define FUSION_INCLUDE_FUNCTIONAL
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_FUSED)
+#define FUSION_INCLUDE_FUSED
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_FUSED_FUNCTION_OBJECT)
+#define FUSION_INCLUDE_FUSED_FUNCTION_OBJECT
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_FUSED_PROCEDURE)
+#define FUSION_INCLUDE_FUSED_PROCEDURE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_GENERATION)
+#define FUSION_INCLUDE_GENERATION
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_NOT_GREATER)
+#define FUSION_INCLUDE_NOT_GREATER
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_GREATER_EQUAL)
+#define FUSION_INCLUDE_GREATER_EQUAL
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_HAS_KEY)
+#define FUSION_INCLUDE_EMPTY
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_GENERATION)
+#define FUSION_INCLUDE_GENERATION
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_IN)
+#define FUSION_INCLUDE_IN
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_INSERT)
+#define FUSION_INCLUDE_INSERT
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_INSERT_RANGE)
+#define FUSION_INCLUDE_INSERT_RANGE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_INTRINSIC)
+#define FUSION_INCLUDE_INTRINSIC
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_INVOCATION)
+#define FUSION_INCLUDE_INVOCATION
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_INVOKE)
+#define FUSION_INCLUDE_INVOKE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_INVOKE_FUNCTION_OBJECT)
+#define FUSION_INCLUDE_INVOKE_FUNCTION_OBJECT
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_INVOKE_PROCEDURE)
+#define FUSION_INCLUDE_INVOKE_PROCEDURE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_IO)
+#define FUSION_INCLUDE_IO
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_IS_ITERATOR)
+#define FUSION_INCLUDE_IS_ITERATOR
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_IS_SEQUENCE)
+#define FUSION_INCLUDE_IS_SEQUENCE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_IS_VIEW)
+#define FUSION_INCLUDE_IS_VIEW
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_ITERATION)
+#define FUSION_INCLUDE_ITERATION
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_ITERATOR)
+#define FUSION_INCLUDE_ITERATOR
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_ITERATOR_BASE)
+#define FUSION_INCLUDE_ITERATOR_BASE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_ITERATOR_FACADE)
+#define FUSION_INCLUDE_ITERATOR_FACADE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_ITERATOR_RANGE)
+#define FUSION_INCLUDE_ITERATOR_RANGE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_JOIN)
+#define FUSION_INCLUDE_JOIN
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_JOINT_VIEW)
+#define FUSION_INCLUDE_JOINT_VIEW
+
+#include <boost/fusion/view/joint_view.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/less.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/less.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_LESS)
+#define FUSION_INCLUDE_LESS
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_LESS_EQUAL)
+#define FUSION_INCLUDE_LESS_EQUAL
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_LIST)
+#define FUSION_INCLUDE_LIST
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_LIST_FWD)
+#define FUSION_INCLUDE_LIST_FWD
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_GENERATION)
+#define FUSION_INCLUDE_GENERATION
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_MAKE_CONS)
+#define FUSION_INCLUDE_MAKE_CONS
+
+#include <boost/fusion/container/generation/make_cons.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/make_deque.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/make_deque.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_MAKE_DEQUE)
+#define FUSION_INCLUDE_MAKE_DEQUE
+
+#include <boost/fusion/container/generation/make_deque.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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_MAKE_FUSED)
+#define FUSION_INCLUDE_MAKE_FUSED
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_MAKE_FUSED_FUNCTION_OBJECT)
+#define FUSION_INCLUDE_MAKE_FUSED_FUNCTION_OBJECT
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_MAKE_FUSED_PROCEDURE)
+#define FUSION_INCLUDE_MAKE_FUSED_PROCEDURE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_MAKE_LIST)
+#define FUSION_INCLUDE_MAKE_LIST
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_MAKE_MAP)
+#define FUSION_INCLUDE_MAKE_MAP
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_MAKE_SET)
+#define FUSION_INCLUDE_MAKE_SET
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_MAKE_TUPLE)
+#define FUSION_INCLUDE_MAKE_TUPLE
+
+#include <boost/fusion/tuple/make_tuple.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/make_unfused_generic.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/make_unfused_generic.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_MAKE_UNFUSED_GENERIC)
+#define FUSION_INCLUDE_MAKE_UNFUSED_GENERIC
+
+#include <boost/fusion/functional/generation/make_unfused_generic.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/make_unfused_lvalue_args.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/make_unfused_lvalue_args.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_MAKE_UNFUSED_LVALUE_ARGS)
+#define FUSION_INCLUDE_MAKE_UNFUSED_LVALUE_ARGS
+
+#include <boost/fusion/functional/generation/make_unfused_lvalue_args.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/make_unfused_rvalue_args.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/make_unfused_rvalue_args.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_MAKE_UNFUSED_RVALUE_ARGS)
+#define FUSION_INCLUDE_MAKE_UNFUSED_RVALUE_ARGS
+
+#include <boost/fusion/functional/generation/make_unfused_rvalue_args.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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_MAKE_VECTOR)
+#define FUSION_INCLUDE_MAKE_VECTOR
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_MAP)
+#define FUSION_INCLUDE_MAP
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_MAP_FWD)
+#define FUSION_INCLUDE_MAP_FWD
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_MAP_TIE)
+#define FUSION_INCLUDE_MAP_TIE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_MPL)
+#define FUSION_INCLUDE_MPL
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_NEXT)
+#define FUSION_INCLUDE_NEXT
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_NONE)
+#define FUSION_INCLUDE_NONE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_NOT_EQUAL_TO)
+#define FUSION_INCLUDE_NOT_EQUAL_TO
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_OUT)
+#define FUSION_INCLUDE_OUT
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_PAIR)
+#define FUSION_INCLUDE_PAIR
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_PAIR_TIE)
+#define FUSION_INCLUDE_PAIR_TIE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_POP_BACK)
+#define FUSION_INCLUDE_POP_BACK
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_POP_FRONT)
+#define FUSION_INCLUDE_POP_FRONT
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_PRIOR)
+#define FUSION_INCLUDE_PRIOR
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_PUSH_BACK)
+#define FUSION_INCLUDE_PUSH_BACK
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_PUSH_FRONT)
+#define FUSION_INCLUDE_PUSH_FRONT
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_QUERY)
+#define FUSION_INCLUDE_QUERY
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_REMOVE_IF)
+#define FUSION_INCLUDE_REMOVE_IF
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_REMOVE_IF)
+#define FUSION_INCLUDE_REMOVE_IF
+
+#include <boost/fusion/algorithm/transformation/remove_if.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/repetetive_view.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/repetetive_view.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_REPETETIVE_VIEW)
+#define FUSION_INCLUDE_REPETETIVE_VIEW
+
+#include <boost/fusion/view/repetitive_view.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/replace.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/replace.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_REPLACE)
+#define FUSION_INCLUDE_REPLACE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_REPLACE_IF)
+#define FUSION_INCLUDE_REPLACE_IF
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_REVERSE)
+#define FUSION_INCLUDE_REVERSE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_REVERSE_VIEW)
+#define FUSION_INCLUDE_REVERSE_VIEW
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_SEQUENCE)
+#define FUSION_INCLUDE_SEQUENCE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_SEQUENCE_BASE)
+#define FUSION_INCLUDE_SEQUENCE_BASE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_SEQUENCE_FACADE)
+#define FUSION_INCLUDE_SEQUENCE_FACADE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_SET)
+#define FUSION_INCLUDE_SET
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_SET_FWD)
+#define FUSION_INCLUDE_SET_FWD
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_SINGLE_VIEW)
+#define FUSION_INCLUDE_SINGLE_VIEW
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_SIZE)
+#define FUSION_INCLUDE_SIZE
+
+#include <boost/fusion/sequence/intrinsic/size.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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_STD_PAIR)
+#define FUSION_INCLUDE_STD_PAIR
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_STRUCT)
+#define FUSION_INCLUDE_STRUCT
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_SUPPORT)
+#define FUSION_INCLUDE_SUPPORT
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_SWAP)
+#define FUSION_INCLUDE_SWAP
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_TAG_OF)
+#define FUSION_INCLUDE_TAG_OF
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_TAG_OF_FWD)
+#define FUSION_INCLUDE_TAG_OF_FWD
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_TRANSFORM)
+#define FUSION_INCLUDE_TRANSFORM
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_TRANSFORM_VIEW)
+#define FUSION_INCLUDE_TRANSFORM_VIEW
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_TRANSFORMATION)
+#define FUSION_INCLUDE_TRANSFORMATION
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_TUPLE)
+#define FUSION_INCLUDE_TUPLE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_TUPLE_FWD)
+#define FUSION_INCLUDE_TUPLE_FWD
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_TUPLE_TIE)
+#define FUSION_INCLUDE_TUPLE_TIE
+
+#include <boost/fusion/tuple/tuple_tie.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/unfused_generic.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/unfused_generic.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_UNFUSED_GENERIC)
+#define FUSION_INCLUDE_UNFUSED_GENERIC
+
+#include <boost/fusion/functional/adapter/unfused_generic.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/unfused_lvalue_args.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/unfused_lvalue_args.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_UNFUSED_LVALUE_ARGS)
+#define FUSION_INCLUDE_UNFUSED_LVALUE_ARGS
+
+#include <boost/fusion/functional/adapter/unfused_lvalue_args.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/unfused_rvalue_args.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/unfused_rvalue_args.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_UNFUSED_RVALUE_ARGS)
+#define FUSION_INCLUDE_UNFUSED_RVALUE_ARGS
+
+#include <boost/fusion/functional/adapter/unfused_rvalue_args.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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_UNFUSED_TYPED)
+#define FUSION_INCLUDE_UNFUSED_TYPED
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_UNUSED)
+#define FUSION_INCLUDE_UNUSED
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_VALUE_AT)
+#define FUSION_INCLUDE_VALUE_AT
+
+#include <boost/fusion/sequence/intrinsic/value_at.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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_VALUE_AT_KEY)
+#define FUSION_INCLUDE_VALUE_AT_KEY
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_VALUE_OF)
+#define FUSION_INCLUDE_VALUE_OF
+
+#include <boost/fusion/iterator/value_of.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/vector.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/vector.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_VECTOR)
+#define FUSION_INCLUDE_VECTOR
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_VECTOR10)
+#define FUSION_INCLUDE_VECTOR10
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_VECTOR20)
+#define FUSION_INCLUDE_VECTOR20
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_VECTOR30)
+#define FUSION_INCLUDE_VECTOR30
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_VECTOR40)
+#define FUSION_INCLUDE_VECTOR40
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_VECTOR50)
+#define FUSION_INCLUDE_VECTOR50
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_VECTOR_FWD)
+#define FUSION_INCLUDE_VECTOR_FWD
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_VECTOR_TIE)
+#define FUSION_INCLUDE_VECTOR_TIE
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_VIEW)
+#define FUSION_INCLUDE_VIEW
+
+#include <boost/fusion/view.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/void.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/void.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_VOID)
+#define FUSION_INCLUDE_VOID
+
+#include <boost/fusion/support/void.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/include/zip.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/include/zip.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_ZIP)
+#define FUSION_INCLUDE_ZIP
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,12 @@
+/*=============================================================================
+ Copyright (c) 2001-2007 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INCLUDE_ZIP_VIEW)
+#define FUSION_INCLUDE_ZIP_VIEW
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_ITERATOR_10022005_0559)
+#define FUSION_ITERATOR_10022005_0559
+
+#include <boost/fusion/iterator/iterator_facade.hpp>
+#include <boost/fusion/iterator/advance.hpp>
+#include <boost/fusion/iterator/deref.hpp>
+#include <boost/fusion/iterator/distance.hpp>
+#include <boost/fusion/iterator/equal_to.hpp>
+#include <boost/fusion/iterator/mpl.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/prior.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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_ADVANCE_09172005_1146)
+#define FUSION_ADVANCE_09172005_1146
+
+#include <boost/fusion/iterator/detail/advance.hpp>
+#include <boost/fusion/support/category_of.hpp>
+
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace fusion
+{
+ struct random_access_traversal_tag;
+
+ // Special tags:
+ struct iterator_facade_tag; // iterator facade tag
+ struct array_iterator_tag; // boost::array iterator tag
+ struct mpl_iterator_tag; // mpl sequence iterator tag
+ struct std_pair_iterator_tag; // std::pair iterator tag
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct advance_impl
+ {
+ // default implementation
+ template <typename Iterator, typename N>
+ struct apply :
+ mpl::if_c<
+ (N::value > 0)
+ , advance_detail::forward<Iterator, N::value>
+ , advance_detail::backward<Iterator, N::value>
+ >::type
+ {
+ BOOST_MPL_ASSERT_NOT((traits::is_random_access<Iterator>));
+ };
+ };
+
+ template <>
+ struct advance_impl<iterator_facade_tag>
+ {
+ template <typename Iterator, typename N>
+ struct apply : Iterator::template advance<Iterator, N> {};
+ };
+
+ template <>
+ struct advance_impl<array_iterator_tag>;
+
+ template <>
+ struct advance_impl<mpl_iterator_tag>;
+
+ template <>
+ struct advance_impl<std_pair_iterator_tag>;
+ }
+
+ namespace result_of
+ {
+ template <typename Iterator, int N>
+ struct advance_c
+ : extension::advance_impl<typename detail::tag_of<Iterator>::type>::template apply<Iterator, mpl::int_<N> >
+ {};
+
+ template <typename Iterator, typename N>
+ struct advance
+ : extension::advance_impl<typename detail::tag_of<Iterator>::type>::template apply<Iterator, N>
+ {};
+ }
+
+ template <int N, typename Iterator>
+ inline typename result_of::advance_c<Iterator, N>::type const
+ advance_c(Iterator const& i)
+ {
+ return result_of::advance_c<Iterator, N>::call(i);
+ }
+
+ template<typename N, typename Iterator>
+ inline typename result_of::advance<Iterator, N>::type const
+ advance(Iterator const& i)
+ {
+ return result_of::advance<Iterator, N>::call(i);
+ }
+
+}} // namespace boost::fusion
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/deref.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/deref.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_DEREF_05042005_1019)
+#define FUSION_DEREF_05042005_1019
+
+#include <boost/fusion/support/iterator_base.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace fusion
+{
+ // Special tags:
+ struct iterator_facade_tag; // iterator facade tag
+ struct array_iterator_tag; // boost::array iterator tag
+ struct mpl_iterator_tag; // mpl sequence iterator tag
+ struct std_pair_iterator_tag; // std::pair iterator tag
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct deref_impl
+ {
+ template <typename Iterator>
+ struct apply {};
+ };
+
+ template <>
+ struct deref_impl<iterator_facade_tag>
+ {
+ template <typename Iterator>
+ struct apply : Iterator::template deref<Iterator> {};
+ };
+
+ template <>
+ struct deref_impl<array_iterator_tag>;
+
+ template <>
+ struct deref_impl<mpl_iterator_tag>;
+
+ template <>
+ struct deref_impl<std_pair_iterator_tag>;
+ }
+
+ namespace result_of
+ {
+ template <typename Iterator>
+ struct deref
+ : extension::deref_impl<typename detail::tag_of<Iterator>::type>::
+ template apply<Iterator>
+ {};
+ }
+
+ template <typename Iterator>
+ typename result_of::deref<Iterator>::type
+ deref(Iterator const& i)
+ {
+ typedef result_of::deref<Iterator> deref_meta;
+ return deref_meta::call(i);
+ }
+
+ template <typename Iterator>
+ typename result_of::deref<Iterator>::type
+ operator*(iterator_base<Iterator> const& i)
+ {
+ return fusion::deref(i.cast());
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/adapt_deref_traits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/adapt_deref_traits.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_ADAPT_DEREF_TRAITS_05062005_0900)
+#define FUSION_ADAPT_DEREF_TRAITS_05062005_0900
+
+#include <boost/fusion/iterator/deref.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ struct adapt_deref_traits
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef typename
+ result_of::deref<typename Iterator::first_type>::type
+ type;
+
+ static type
+ call(Iterator const& i)
+ {
+ return *i.first;
+ }
+ };
+ };
+}}}
+
+#endif
+
+

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/adapt_value_traits.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/detail/adapt_value_traits.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_ADAPT_VALUE_TRAITS_05062005_0859)
+#define FUSION_ADAPT_VALUE_TRAITS_05062005_0859
+
+#include <boost/fusion/iterator/value_of.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ struct adapt_value_traits
+ {
+ template <typename Iterator>
+ struct apply
+ {
+ typedef typename
+ result_of::value_of<typename Iterator::first_type>::type
+ type;
+ };
+ };
+}}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,102 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_ADVANCE_09172005_1149)
+#define FUSION_ADVANCE_09172005_1149
+
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/prior.hpp>
+
+namespace boost { namespace fusion { namespace advance_detail
+{
+ // Default advance implementation, perform next(i)
+ // or prior(i) N times.
+
+ template <typename Iterator, int N>
+ struct forward;
+
+ template <typename Iterator, int N>
+ struct next_forward
+ {
+ typedef typename
+ forward<
+ typename result_of::next<Iterator>::type
+ , N-1
+ >::type
+ type;
+ };
+
+ template <typename Iterator, int N>
+ struct forward
+ {
+ typedef typename
+ mpl::eval_if_c<
+ (N == 0)
+ , mpl::identity<Iterator>
+ , next_forward<Iterator, N>
+ >::type
+ type;
+
+ static type const&
+ call(type const& i)
+ {
+ return i;
+ }
+
+ template <typename I>
+ static type
+ call(I const& i)
+ {
+ return call(fusion::next(i));
+ }
+ };
+
+ template <typename Iterator, int N>
+ struct backward;
+
+ template <typename Iterator, int N>
+ struct next_backward
+ {
+ typedef typename
+ backward<
+ typename result_of::prior<Iterator>::type
+ , N+1
+ >::type
+ type;
+ };
+
+ template <typename Iterator, int N>
+ struct backward
+ {
+ typedef typename
+ mpl::eval_if_c<
+ (N == 0)
+ , mpl::identity<Iterator>
+ , next_backward<Iterator, N>
+ >::type
+ type;
+
+ static type const&
+ call(type const& i)
+ {
+ return i;
+ }
+
+ template <typename I>
+ static type
+ call(I const& i)
+ {
+ return call(fusion::prior(i));
+ }
+ };
+
+}}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_DISTANCE_09172005_0730)
+#define FUSION_DISTANCE_09172005_0730
+
+#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>
+#include <boost/fusion/iterator/next.hpp>
+#include <boost/fusion/iterator/equal_to.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
+ {
+ typedef typename
+ mpl::eval_if<
+ result_of::equal_to<First, Last>
+ , mpl::identity<mpl::int_<0> >
+ , next_distance<First, Last>
+ >::type
+ type;
+
+ static type
+ call(First const&, Last const&)
+ {
+ return type();
+ }
+ };
+
+}}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/distance.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/distance.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,81 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_DISTANCE_09172005_0721)
+#define FUSION_DISTANCE_09172005_0721
+
+#include <boost/fusion/iterator/detail/distance.hpp>
+#include <boost/fusion/support/category_of.hpp>
+
+#include <boost/mpl/int.hpp>
+#include <boost/mpl/assert.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace fusion
+{
+ struct random_access_traversal_tag;
+
+ // Special tags:
+ struct iterator_facade_tag; // iterator facade tag
+ struct array_iterator_tag; // boost::array iterator tag
+ struct mpl_iterator_tag; // mpl sequence iterator tag
+ struct std_pair_iterator_tag; // std::pair iterator tag
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct distance_impl
+ {
+ // default implementation
+ template <typename First, typename Last>
+ struct apply : distance_detail::linear_distance<First, Last>
+ {
+ BOOST_MPL_ASSERT_NOT((traits::is_random_access<First>));
+ BOOST_MPL_ASSERT_NOT((traits::is_random_access<Last>));
+ };
+ };
+
+ template <>
+ struct distance_impl<iterator_facade_tag>
+ {
+ template <typename First, typename Last>
+ struct apply : First::template distance<First, Last> {};
+ };
+
+ template <>
+ struct distance_impl<array_iterator_tag>;
+
+ template <>
+ struct distance_impl<mpl_iterator_tag>;
+
+ template <>
+ struct distance_impl<std_pair_iterator_tag>;
+ }
+
+ namespace result_of
+ {
+ template <typename First, typename Last>
+ struct distance
+ : extension::distance_impl<typename detail::tag_of<First>::type>::
+ template apply<First, Last>
+ {
+ typedef typename extension::distance_impl<typename detail::tag_of<First>::type>::
+ template apply<First, Last>::type distance_application;
+ BOOST_STATIC_CONSTANT(int, value = distance_application::value);
+ };
+ }
+
+ template <typename First, typename Last>
+ inline typename result_of::distance<First, Last>::type
+ distance(First const& a, Last const& b)
+ {
+ return result_of::distance<First, Last>::call(a,b);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,93 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_EQUAL_TO_05052005_1208)
+#define FUSION_EQUAL_TO_05052005_1208
+
+#include <boost/type_traits/is_same.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/type_traits/add_const.hpp>
+#include <boost/fusion/support/is_iterator.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/utility/enable_if.hpp>
+
+namespace boost { namespace fusion
+{
+ // Special tags:
+ struct iterator_facade_tag; // iterator facade tag
+ struct array_iterator_tag; // boost::array iterator tag
+ struct mpl_iterator_tag; // mpl sequence iterator tag
+ struct std_pair_iterator_tag; // std::pair iterator tag
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct equal_to_impl
+ {
+ // default implementation
+ template <typename I1, typename I2>
+ struct apply
+ : is_same<typename add_const<I1>::type, typename add_const<I2>::type>
+ {};
+ };
+
+ template <>
+ struct equal_to_impl<iterator_facade_tag>
+ {
+ template <typename I1, typename I2>
+ struct apply : I1::template equal_to<I1, I2> {};
+ };
+
+ template <>
+ struct equal_to_impl<array_iterator_tag>;
+
+ template <>
+ struct equal_to_impl<mpl_iterator_tag>;
+
+ template <>
+ struct equal_to_impl<std_pair_iterator_tag>;
+ }
+
+ namespace result_of
+ {
+ template <typename I1, typename I2>
+ struct equal_to
+ : extension::equal_to_impl<typename detail::tag_of<I1>::type>::
+ template apply<I1, I2>
+ {};
+ }
+
+ namespace iterator_operators
+ {
+ template <typename Iter1, typename Iter2>
+ inline typename
+ enable_if<
+ mpl::and_<is_fusion_iterator<Iter1>, is_fusion_iterator<Iter2> >
+ , bool
+ >::type
+ operator==(Iter1 const&, Iter2 const&)
+ {
+ return result_of::equal_to<Iter1, Iter2>::value;
+ }
+
+ template <typename Iter1, typename Iter2>
+ inline typename
+ enable_if<
+ mpl::and_<is_fusion_iterator<Iter1>, is_fusion_iterator<Iter2> >
+ , bool
+ >::type
+ operator!=(Iter1 const&, Iter2 const&)
+ {
+ return !result_of::equal_to<Iter1, Iter2>::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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,50 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_ITERATOR_FACADE_09252006_1011)
+#define FUSION_ITERATOR_FACADE_09252006_1011
+
+#include <boost/fusion/support/iterator_base.hpp>
+#include <boost/fusion/iterator/detail/advance.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/mpl/assert.hpp>
+
+namespace boost { namespace fusion
+{
+ struct iterator_facade_tag;
+
+ template <typename Derived, typename Category>
+ struct iterator_facade : iterator_base<Derived>
+ {
+ typedef iterator_facade_tag fusion_tag;
+ typedef Derived derived_type;
+ typedef Category category;
+
+ // default implementation
+ template <typename I1, typename I2>
+ struct equal_to // default implementation
+ : is_same<
+ typename I1::derived_type
+ , typename I2::derived_type
+ >
+ {};
+
+ // default implementation
+ template <typename Iterator, typename N>
+ struct advance :
+ mpl::if_c<
+ (N::value > 0)
+ , advance_detail::forward<Iterator, N::value>
+ , advance_detail::backward<Iterator, N::value>
+ >::type
+ {
+ BOOST_MPL_ASSERT_NOT((traits::is_random_access<Iterator>));
+ };
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/mpl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/mpl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_ITERATOR_MPL_10022005_0557)
+#define FUSION_ITERATOR_MPL_10022005_0557
+
+#include <boost/fusion/iterator/mpl/convert_iterator.hpp>
+#include <boost/fusion/iterator/mpl/fusion_iterator.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/mpl/convert_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/mpl/convert_iterator.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,58 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_CONVERT_ITERATOR_05062005_1218)
+#define FUSION_CONVERT_ITERATOR_05062005_1218
+
+#include <boost/fusion/support/is_iterator.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/bool.hpp>
+
+namespace boost { namespace fusion
+{
+ template <typename Iterator>
+ struct mpl_iterator; // forward declaration
+
+ // Test T. If it is a fusion iterator, return a reference to it.
+ // else, assume it is an mpl iterator.
+
+ template <typename T>
+ struct convert_iterator
+ {
+ typedef typename
+ mpl::if_<
+ is_fusion_iterator<T>
+ , T
+ , mpl_iterator<T>
+ >::type
+ type;
+
+ static T const&
+ call(T const& x, mpl::true_)
+ {
+ return x;
+ }
+
+ static mpl_iterator<T>
+ call(T const& x, mpl::false_)
+ {
+ return mpl_iterator<T>();
+ }
+
+ static typename
+ mpl::if_<
+ is_fusion_iterator<T>
+ , T const&
+ , mpl_iterator<T>
+ >::type
+ call(T const& x)
+ {
+ return call(x, is_fusion_iterator<T>());
+ }
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/mpl/fusion_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/mpl/fusion_iterator.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,57 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_FUSION_ITERATOR_10012005_1551)
+#define FUSION_FUSION_ITERATOR_10012005_1551
+
+#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 Iterator>
+ struct fusion_iterator
+ {
+ typedef typename fusion::result_of::value_of<Iterator>::type type;
+ typedef typename fusion::traits::category_of<Iterator>::type category;
+ typedef Iterator iterator;
+ };
+
+ template <typename Iterator>
+ struct next<fusion_iterator<Iterator> >
+ {
+ typedef fusion_iterator<typename fusion::result_of::next<Iterator>::type> type;
+ };
+
+ template <typename Iterator>
+ struct prior<fusion_iterator<Iterator> >
+ {
+ typedef fusion_iterator<typename fusion::result_of::prior<Iterator>::type> type;
+ };
+
+ template <typename Iterator, typename N>
+ struct advance<fusion_iterator<Iterator>, N>
+ {
+ typedef fusion_iterator<typename fusion::result_of::advance<Iterator, 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/iterator/next.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/next.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_NEXT_05042005_1101)
+#define FUSION_NEXT_05042005_1101
+
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace fusion
+{
+ // Special tags:
+ struct iterator_facade_tag; // iterator facade tag
+ struct array_iterator_tag; // boost::array iterator tag
+ struct mpl_iterator_tag; // mpl sequence iterator tag
+ struct std_pair_iterator_tag; // std::pair iterator tag
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct next_impl
+ {
+ template <typename Iterator>
+ struct apply {};
+ };
+
+ template <>
+ struct next_impl<iterator_facade_tag>
+ {
+ template <typename Iterator>
+ struct apply : Iterator::template next<Iterator> {};
+ };
+
+ template <>
+ struct next_impl<array_iterator_tag>;
+
+ template <>
+ struct next_impl<mpl_iterator_tag>;
+
+ template <>
+ struct next_impl<std_pair_iterator_tag>;
+ }
+
+ namespace result_of
+ {
+ template <typename Iterator>
+ struct next
+ : extension::next_impl<typename detail::tag_of<Iterator>::type>::
+ template apply<Iterator>
+ {};
+ }
+
+ template <typename Iterator>
+ typename result_of::next<Iterator>::type const
+ next(Iterator const& i)
+ {
+ return result_of::next<Iterator>::call(i);
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/iterator/prior.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/iterator/prior.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_PRIOR_05042005_1144)
+#define FUSION_PRIOR_05042005_1144
+
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace fusion
+{
+ // Special tags:
+ struct iterator_facade_tag; // iterator facade tag
+ struct array_iterator_tag; // boost::array iterator tag
+ struct mpl_iterator_tag; // mpl sequence iterator tag
+ struct std_pair_iterator_tag; // std::pair iterator tag
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct prior_impl
+ {
+ template <typename Iterator>
+ struct apply {};
+ };
+
+ template <>
+ struct prior_impl<iterator_facade_tag>
+ {
+ template <typename Iterator>
+ struct apply : Iterator::template prior<Iterator> {};
+ };
+
+ template <>
+ struct prior_impl<array_iterator_tag>;
+
+ template <>
+ struct prior_impl<mpl_iterator_tag>;
+
+ template <>
+ struct prior_impl<std_pair_iterator_tag>;
+ }
+
+ namespace result_of
+ {
+ template <typename Iterator>
+ struct prior
+ : extension::prior_impl<typename detail::tag_of<Iterator>::type>::
+ template apply<Iterator>
+ {};
+ }
+
+ template <typename Iterator>
+ typename result_of::prior<Iterator>::type const
+ prior(Iterator const& i)
+ {
+ return result_of::prior<Iterator>::call(i);
+ }
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,57 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_VALUE_OF_05052005_1126)
+#define FUSION_VALUE_OF_05052005_1126
+
+#include <boost/fusion/support/iterator_base.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+
+namespace boost { namespace fusion
+{
+ // Special tags:
+ struct iterator_facade_tag; // iterator facade tag
+ struct array_iterator_tag; // boost::array iterator tag
+ struct mpl_iterator_tag; // mpl sequence iterator tag
+ struct std_pair_iterator_tag; // std::pair iterator tag
+
+ namespace extension
+ {
+ template <typename Tag>
+ struct value_of_impl
+ {
+ template <typename Iterator>
+ struct apply {};
+ };
+
+ template <>
+ struct value_of_impl<iterator_facade_tag>
+ {
+ template <typename Iterator>
+ struct apply : Iterator::template value_of<Iterator> {};
+ };
+
+ template <>
+ struct value_of_impl<array_iterator_tag>;
+
+ template <>
+ struct value_of_impl<mpl_iterator_tag>;
+
+ template <>
+ struct value_of_impl<std_pair_iterator_tag>;
+ }
+
+ namespace result_of
+ {
+ template <typename Iterator>
+ struct value_of
+ : extension::value_of_impl<typename detail::tag_of<Iterator>::type>::
+ template apply<Iterator>
+ {};
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_MPL_09172006_2049)
+#define FUSION_MPL_09172006_2049
+
+// The fusion <--> MPL link headers
+#include <boost/fusion/iterator/mpl.hpp>
+#include <boost/fusion/adapted/mpl.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.hpp>
+#include <boost/fusion/mpl/erase_key.hpp>
+#include <boost/fusion/mpl/front.hpp>
+#include <boost/fusion/mpl/has_key.hpp>
+#include <boost/fusion/mpl/insert.hpp>
+#include <boost/fusion/mpl/insert_range.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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,33 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_AT_10022005_1616)
+#define FUSION_AT_10022005_1616
+
+#include <boost/mpl/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 Sequence, typename N>
+ struct apply : fusion::result_of::value_at<Sequence, N> {};
+ };
+}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/back.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/back.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_BACK_10022005_1620)
+#define FUSION_BACK_10022005_1620
+
+#include <boost/mpl/back.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/iterator/prior.hpp>
+#include <boost/fusion/iterator/value_of.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct back_impl;
+
+ template <>
+ struct back_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Sequence>
+ struct apply :
+ fusion::result_of::value_of<
+ typename fusion::result_of::prior<
+ typename fusion::result_of::end<Sequence>::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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_BEGIN_10022005_1620)
+#define FUSION_BEGIN_10022005_1620
+
+#include <boost/mpl/begin_end.hpp>
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/adapted/mpl/detail/begin_impl.hpp>
+#include <boost/fusion/iterator/mpl/fusion_iterator.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct begin_impl;
+
+ template <>
+ struct begin_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef fusion_iterator<typename fusion::result_of::begin<Sequence>::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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,33 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_CLEAR_10022005_1817)
+#define FUSION_CLEAR_10022005_1817
+
+#include <boost/mpl/clear.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/mpl/detail/clear.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct clear_impl;
+
+ template <>
+ struct clear_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename
+ fusion::detail::clear<typename fusion::detail::tag_of<Sequence>::type>::type
+ type;
+ };
+ };
+}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/detail/clear.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/detail/clear.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_CLEAR_10022005_1442)
+#define FUSION_CLEAR_10022005_1442
+
+#include <boost/fusion/container/vector/vector_fwd.hpp>
+#include <boost/fusion/container/list/list_fwd.hpp>
+#include <boost/fusion/container/map/map_fwd.hpp>
+#include <boost/fusion/container/set/set_fwd.hpp>
+#include <boost/fusion/container/deque/deque_fwd.hpp>
+
+namespace boost { namespace fusion
+{
+ struct cons_tag;
+ struct map_tag;
+ struct set_tag;
+ struct vector_tag;
+ struct deque_tag;
+
+ namespace detail
+ {
+ template <typename Tag>
+ struct clear;
+
+ template <>
+ struct clear<cons_tag> : mpl::identity<list<> > {};
+
+ template <>
+ struct clear<map_tag> : mpl::identity<map<> > {};
+
+ template <>
+ struct clear<set_tag> : mpl::identity<set<> > {};
+
+ template <>
+ struct clear<vector_tag> : mpl::identity<vector<> > {};
+
+ template <>
+ struct clear<deque_tag> : mpl::identity<deque<> > {};
+ }
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/empty.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/empty.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_EMPTY_10022005_1619)
+#define FUSION_EMPTY_10022005_1619
+
+#include <boost/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 Sequence>
+ struct apply : fusion::result_of::empty<Sequence> {};
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/end.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/end.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_END_10022005_1619)
+#define FUSION_END_10022005_1619
+
+#include <boost/mpl/begin_end.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/adapted/mpl/detail/end_impl.hpp>
+#include <boost/fusion/iterator/mpl/fusion_iterator.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct end_impl;
+
+ template <>
+ struct end_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef fusion_iterator<typename fusion::result_of::end<Sequence>::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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_ERASE_10022005_1835)
+#define FUSION_ERASE_10022005_1835
+
+#include <boost/mpl/erase.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/algorithm/transformation/erase.hpp>
+#include <boost/fusion/sequence/convert.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct erase_impl;
+
+ template <>
+ struct erase_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Sequence, typename First, typename Last>
+ struct apply
+ {
+ typedef typename
+ fusion::result_of::erase<Sequence, First, Last>::type
+ result;
+
+ typedef typename
+ fusion::result_of::convert<
+ typename fusion::detail::tag_of<Sequence>::type, result>::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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_ERASE_KEY_10022005_1907)
+#define FUSION_ERASE_KEY_10022005_1907
+
+#include <boost/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 Sequence, typename Key>
+ struct apply
+ {
+ typedef typename
+ fusion::result_of::erase_key<Sequence, Key>::type
+ result;
+
+ typedef typename
+ fusion::result_of::convert<
+ typename fusion::detail::tag_of<Sequence>::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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_FRONT_10022005_1618)
+#define FUSION_FRONT_10022005_1618
+
+#include <boost/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 Sequence>
+ struct apply :
+ fusion::result_of::value_of<typename fusion::result_of::begin<Sequence>::type> {};
+ };
+}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,27 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_HAS_KEY_10022005_1617)
+#define FUSION_HAS_KEY_10022005_1617
+
+#include <boost/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 Sequence, typename Key>
+ struct apply : fusion::result_of::has_key<Sequence, Key> {};
+ };
+}}
+
+#endif
+

Added: sandbox/SOC/2009/fusion/boost/fusion/mpl/insert.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/mpl/insert.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INSERT_10022005_1837)
+#define FUSION_INSERT_10022005_1837
+
+#include <boost/mpl/insert.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/algorithm/transformation/insert.hpp>
+#include <boost/fusion/sequence/convert.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct insert_impl;
+
+ template <>
+ struct insert_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Sequence, typename Pos, typename T>
+ struct apply
+ {
+ typedef typename
+ fusion::result_of::insert<Sequence, Pos, T>::type
+ result;
+
+ typedef typename
+ fusion::result_of::convert<
+ typename fusion::detail::tag_of<Sequence>::type, result>::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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_INSERT_RANGE_10022005_1838)
+#define FUSION_INSERT_RANGE_10022005_1838
+
+#include <boost/mpl/insert_range.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/algorithm/transformation/insert_range.hpp>
+#include <boost/fusion/sequence/convert.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct insert_range_impl;
+
+ template <>
+ struct insert_range_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Sequence, typename Pos, typename Range>
+ struct apply
+ {
+ typedef typename
+ fusion::result_of::insert_range<Sequence, Pos, Range>::type
+ result;
+
+ typedef typename
+ fusion::result_of::convert<
+ typename fusion::detail::tag_of<Sequence>::type, result>::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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_POP_BACK_10022005_1801)
+#define FUSION_POP_BACK_10022005_1801
+
+#include <boost/mpl/pop_back.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/algorithm/transformation/pop_back.hpp>
+#include <boost/fusion/sequence/convert.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct pop_back_impl;
+
+ template <>
+ struct pop_back_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename
+ fusion::result_of::pop_back<Sequence>::type
+ result;
+
+ typedef typename
+ fusion::result_of::convert<
+ typename fusion::detail::tag_of<Sequence>::type, result>::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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_POP_FRONT_10022005_1800)
+#define FUSION_POP_FRONT_10022005_1800
+
+#include <boost/mpl/pop_front.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/algorithm/transformation/pop_front.hpp>
+#include <boost/fusion/sequence/convert.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct pop_front_impl;
+
+ template <>
+ struct pop_front_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Sequence>
+ struct apply
+ {
+ typedef typename
+ fusion::result_of::pop_front<Sequence>::type
+ result;
+
+ typedef typename
+ fusion::result_of::convert<
+ typename fusion::detail::tag_of<Sequence>::type, result>::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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_PUSH_BACK_10022005_1647)
+#define FUSION_PUSH_BACK_10022005_1647
+
+#include <boost/mpl/push_back.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/algorithm/transformation/push_back.hpp>
+#include <boost/fusion/sequence/convert.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct push_back_impl;
+
+ template <>
+ struct push_back_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Sequence, typename T>
+ struct apply
+ {
+ typedef typename
+ fusion::result_of::push_back<Sequence, T>::type
+ result;
+
+ typedef typename
+ fusion::result_of::convert<
+ typename fusion::detail::tag_of<Sequence>::type, result>::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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,39 @@
+/*=============================================================================
+ Copyright (c) 2001-2006 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+==============================================================================*/
+#if !defined(FUSION_PUSH_FRONT_10022005_1720)
+#define FUSION_PUSH_FRONT_10022005_1720
+
+#include <boost/mpl/push_front.hpp>
+#include <boost/fusion/support/tag_of.hpp>
+#include <boost/fusion/algorithm/transformation/push_front.hpp>
+#include <boost/fusion/sequence/convert.hpp>
+
+namespace boost { namespace mpl
+{
+ template <typename Tag>
+ struct push_front_impl;
+
+ template <>
+ struct push_front_impl<fusion::fusion_sequence_tag>
+ {
+ template <typename Sequence, typename T>
+ struct apply
+ {
+ typedef typename
+ fusion::result_of::push_front<Sequence, T>::type
+ result;
+
+ typedef typename
+ fusion::result_of::convert<
+ typename fusion::detail::tag_of<Sequence>::type, result>::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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_SIZE_10022005_1617)
+#define FUSION_SIZE_10022005_1617
+
+#include <boost/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 Sequence>
+ struct apply : fusion::result_of::size<Sequence> {};
+ };
+}}
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_SEQUENCE_10022005_0559)
+#define FUSION_ITERATOR_10022005_0559
+
+#include <boost/fusion/sequence/sequence_facade.hpp>
+#include <boost/fusion/sequence/comparison.hpp>
+#include <boost/fusion/sequence/intrinsic.hpp>
+#include <boost/fusion/sequence/io.hpp>
+#include <boost/fusion/sequence/convert.hpp>
+
+#endif

Added: sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2009/fusion/boost/fusion/sequence/comparison.hpp 2009-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_SEQUENCE_COMPARISON_10022005_0615)
+#define FUSION_SEQUENCE_COMPARISON_10022005_0615
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 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)
+==============================================================================*/
+#if !defined(FUSION_ENABLE_COMPARISON_09232005_1958)
+#define FUSION_ENABLE_COMPARISON_09232005_1958
+
+#include <boost/mpl/or.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/mpl/equal_to.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/support/detail/is_mpl_sequence.hpp>
+
+namespace boost { namespace fusion { namespace detail
+{
+ template <typename Sequence>
+ struct is_native_fusion_sequence : is_base_of<sequence_root, Sequence> {};
+
+ template <typename Seq1, typename Seq2>
+ struct enable_equality
+ : mpl::or_<is_native_fusion_sequence<Seq1>, is_native_fusion_sequence<Seq2> >
+ {};
+
+ template <typename Seq1, typename Seq2>
+ struct enable_comparison
+ : mpl::and_<
+ mpl::or_<is_native_fusion_sequence<Seq1>, is_native_fusion_sequence<Seq2> >
+ , mpl::equal_to<result_of::size<Seq1>, result_of::size<Seq2> >
+ >
+ {};
+
+}}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,60 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_EQUAL_TO_05052005_1142)
+#define FUSION_EQUAL_TO_05052005_1142
+
+#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, bool same_size>
+ struct sequence_equal_to
+ {
+ typedef typename result_of::end<Seq1>::type end1_type;
+ typedef typename result_of::end<Seq2>::type end2_type;
+
+ template <typename I1, typename I2>
+ static bool
+ call(I1 const&, I2 const&, mpl::true_)
+ {
+ return true;
+ }
+
+ template <typename I1, typename I2>
+ static bool
+ call(I1 const& a, I2 const& b, mpl::false_)
+ {
+ return *a == *b
+ && call(fusion::next(a), fusion::next(b));
+ }
+
+ template <typename I1, typename I2>
+ static bool
+ call(I1 const& a, I2 const& b)
+ {
+ typename result_of::equal_to<I1, end1_type>::type eq;
+ return call(a, b, eq);
+ }
+ };
+
+ template <typename Seq1, typename Seq2>
+ struct sequence_equal_to<Seq1, Seq2, false>
+ {
+ template <typename I1, typename I2>
+ static bool
+ call(I1 const& a, I2 const& b)
+ {
+ 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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,50 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_GREATER_05052005_1142)
+#define FUSION_GREATER_05052005_1142
+
+#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 I1, typename I2>
+ static bool
+ call(I1 const&, I2 const&, mpl::true_)
+ {
+ return false;
+ }
+
+ template <typename I1, typename I2>
+ static bool
+ call(I1 const& a, I2 const& b, mpl::false_)
+ {
+ return *a > *b
+ || !(*b > *a)
+ && call(fusion::next(a), fusion::next(b));
+ }
+
+ template <typename I1, typename I2>
+ static bool
+ call(I1 const& a, I2 const& b)
+ {
+ typename result_of::equal_to<I1, end1_type>::type eq;
+ return call(a, b, eq);
+ }
+ };
+}}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,49 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_GREATER_EQUAL_05052005_1142)
+#define FUSION_GREATER_EQUAL_05052005_1142
+
+#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_equal
+ {
+ typedef typename result_of::end<Seq1>::type end1_type;
+ typedef typename result_of::end<Seq2>::type end2_type;
+
+ template <typename I1, typename I2>
+ static bool
+ call(I1 const&, I2 const&, mpl::true_)
+ {
+ return true;
+ }
+
+ template <typename I1, typename I2>
+ static bool
+ call(I1 const& a, I2 const& b, mpl::false_)
+ {
+ return *a >= *b
+ && (!(*b >= *a) || call(fusion::next(a), fusion::next(b)));
+ }
+
+ template <typename I1, typename I2>
+ static bool
+ call(I1 const& a, I2 const& b)
+ {
+ typename result_of::equal_to<I1, end1_type>::type eq;
+ return call(a, b, eq);
+ }
+ };
+}}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,50 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_LESS_05052005_1141)
+#define FUSION_LESS_05052005_1141
+
+#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 I1, typename I2>
+ static bool
+ call(I1 const&, I2 const&, mpl::true_)
+ {
+ return false;
+ }
+
+ template <typename I1, typename I2>
+ static bool
+ call(I1 const& a, I2 const& b, mpl::false_)
+ {
+ return *a < *b
+ || !(*b < *a)
+ && call(fusion::next(a), fusion::next(b));
+ }
+
+ template <typename I1, typename I2>
+ static bool
+ call(I1 const& a, I2 const& b)
+ {
+ typename result_of::equal_to<I1, end1_type>::type eq;
+ return call(a, b, eq);
+ }
+ };
+}}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,49 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_LESS_EQUAL_05052005_1141)
+#define FUSION_LESS_EQUAL_05052005_1141
+
+#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 I1, typename I2>
+ static bool
+ call(I1 const&, I2 const&, mpl::true_)
+ {
+ return true;
+ }
+
+ template <typename I1, typename I2>
+ static bool
+ call(I1 const& a, I2 const& b, mpl::false_)
+ {
+ return *a <= *b
+ && (!(*b <= *a) || call(fusion::next(a), fusion::next(b)));
+ }
+
+ template <typename I1, typename I2>
+ static bool
+ call(I1 const& a, I2 const& b)
+ {
+ typename result_of::equal_to<I1, end1_type>::type eq;
+ return call(a, b, eq);
+ }
+ };
+}}}
+
+#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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,60 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_NOT_EQUAL_TO_05052005_1141)
+#define FUSION_NOT_EQUAL_TO_05052005_1141
+
+#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, bool same_size>
+ struct sequence_not_equal_to
+ {
+ typedef typename result_of::end<Seq1>::type end1_type;
+ typedef typename result_of::end<Seq2>::type end2_type;
+
+ template <typename I1, typename I2>
+ static bool
+ call(I1 const&, I2 const&, mpl::true_)
+ {
+ return false;
+ }
+
+ template <typename I1, typename I2>
+ static bool
+ call(I1 const& a, I2 const& b, mpl::false_)
+ {
+ return *a != *b
+ || call(fusion::next(a), fusion::next(b));
+ }
+
+ template <typename I1, typename I2>
+ static bool
+ call(I1 const& a, I2 const& b)
+ {
+ typename result_of::equal_to<I1, end1_type>::type eq;
+ return call(a, b, eq);
+ }
+ };
+
+ template <typename Seq1, typename Seq2>
+ struct sequence_not_equal_to<Seq1, Seq2, false>
+ {
+ template <typename I1, typename I2>
+ static bool
+ call(I1 const& a, I2 const& b)
+ {
+ 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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,46 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_EQUAL_TO_05052005_0431)
+#define FUSION_EQUAL_TO_05052005_0431
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/sequence/intrinsic/size.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& a, Seq2 const& b)
+ {
+ return result_of::size<Seq1>::value == result_of::size<Seq2>::value
+ && detail::sequence_equal_to<
+ Seq1 const, Seq2 const
+ , result_of::size<Seq1>::value == result_of::size<Seq2>::value>::
+ call(fusion::begin(a), fusion::begin(b));
+ }
+
+ namespace operators
+ {
+ template <typename Seq1, typename Seq2>
+ inline typename
+ enable_if<
+ detail::enable_equality<Seq1, Seq2>
+ , bool
+ >::type
+ operator==(Seq1 const& a, Seq2 const& b)
+ {
+ return fusion::equal_to(a, b);
+ }
+ }
+ 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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,52 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_GREATER_05052005_0432)
+#define FUSION_GREATER_05052005_0432
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/sequence/comparison/detail/enable_comparison.hpp>
+
+#if defined(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& a, Seq2 const& b)
+ {
+#if defined(FUSION_DIRECT_OPERATOR_USAGE)
+ return detail::sequence_greater<Seq1 const, Seq2 const>::
+ call(fusion::begin(a), fusion::begin(b));
+#else
+ return (b < a);
+#endif
+ }
+
+ namespace operators
+ {
+ template <typename Seq1, typename Seq2>
+ inline typename
+ enable_if<
+ detail::enable_comparison<Seq1, Seq2>
+ , bool
+ >::type
+ operator>(Seq1 const& a, Seq2 const& b)
+ {
+ return fusion::greater(a, b);
+ }
+ }
+ 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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,52 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_GREATER_EQUAL_05052005_0432)
+#define FUSION_GREATER_EQUAL_05052005_0432
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/sequence/intrinsic/size.hpp>
+#include <boost/fusion/sequence/comparison/detail/enable_comparison.hpp>
+
+#if defined(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& a, Seq2 const& b)
+ {
+#if defined(FUSION_DIRECT_OPERATOR_USAGE)
+ return detail::sequence_greater_equal<Seq1 const, Seq2 const>::
+ call(fusion::begin(a), fusion::begin(b));
+#else
+ return !(a < b);
+#endif
+ }
+
+ namespace operators
+ {
+ template <typename Seq1, typename Seq2>
+ inline typename
+ enable_if<
+ detail::enable_comparison<Seq1, Seq2>
+ , bool
+ >::type
+ operator>=(Seq1 const& a, Seq2 const& b)
+ {
+ return fusion::greater_equal(a, b);
+ }
+ }
+ 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-05-13 15:06:33 EDT (Wed, 13 May 2009)
@@ -0,0 +1,43 @@
+/*=============================================================================
+ 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)
+==============================================================================*/
+#if !defined(FUSION_LESS_05052005_0432)
+#define FUSION_LESS_05052005_0432
+
+#include <boost/fusion/sequence/intrinsic/begin.hpp>
+#include <boost/fusion/sequence/intrinsic/end.hpp>
+#include <boost/fusion/sequence/intrinsic/size.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& a, Seq2 const& b)
+ {
+ return detail::sequence_less<Seq1 const, Seq2 const>::
+