Boost logo

Boost :

From: Eric Niebler (eric_at_[hidden])
Date: 2006-10-05 23:47:47

The idea of segmented fusion sequences and algorithms has been discussed
here several times, and Joel has made some reference to some earlier
work I did in this area. I had done some tests at the time that
suggested that a segmented sequences and algorithms could significantly
outperform nonsegmented variants Fusion currently uses. Per Joel's
suggestion, I went ahead and checked my code into CVS HEAD. All
segmented-specific code is quarantined in separate ext_ directories.

What I've just checked in:

- fusion/algorithm/iteration/ext_/for_each_s.hpp
     for_each_s algorithm that works with segmented sequences

- fusion/algorithm/query/ext_/find_if_s.hpp
     find_if_s algorithm that works with segmented sequences, and
     returns segmented iterators

- fusion/sequence/container/ext_/tree.hpp
     Experimental segmented fusion tree

- fusion/sequence/intrinsic/ext_/segments.hpp
     The segments() intrinsic for getting a segmented sequences'

- fusion/sequence/view/ext_/multiple_view.hpp
     Makes a value v appear as a tuple<V,V,V...>(v,v,v...)

- fusion/sequence/view/ext_/segmented_iterator.hpp
     A generic segmented iterator that remembers its place in the
     traversal of any segmented sequence.

- fusion/sequence/view/ext_/segmented_iterator_range.hpp
     Makes iterator_range of segmented_iterators a segmented range.

- fusion/support/ext_/is_segmented.hpp
     The is_segmented trait.

I've also checked in some basic tests for this stuff, and marked them
"explicit" in the test Jamfile so they won't interfere with regular
regression testing.

I have not changed *any* standard Fusion files. If we decide to rip this
out, it's as simple as nuking all the ext_ directories.

Caveat: this stuff is half-baked. Use at your own risk. The hope is that
by checking this in, others will take an interest and help flesh the
implementation out, so dig in!

Eric Niebler
Boost Consulting

Boost list run by bdawes at, gregod at, cpdaniel at, john at