|
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'
segments.
- 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 www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk