|
Boost : |
From: Joaquín Mª López Muñoz (joaquin_at_[hidden])
Date: 2003-12-18 15:11:04
Hello
I've just uploaded release 8 of my indexed_set library at
http://groups.yahoo.com/group/boost/files/indexed_set.zip
and also to the sandbox, for those who use this rather than
the files section.
I hereby request to be admitted into the formal review queue.
The package complies, to the best of my knowledge, with
overall requirements about structure, documentation and
testing suite. Several examples are provided as well.
Much of the shaping of the library has gone on in private,
with the invaluable help of Pavel Vozenilek, who has spent
the last three and a half months testing and proofreading the
material. I'd like to publicly thank him for the effort.
For those who don't know about this library:
The Boost.IndexedSet library provides a class template named
indexed_set which enables the construction of set-like containers
maintaining one or more indices according to given comparison
criteria. Briefly put, one can picture an indexed_set as
a composite bundle of (multi)sets over the same collection of
elements, which is reminiscent to the way indexes of a relational
database behave.
Standard uses of indexed_set are aimed to solving the frequent
problem of having a bunch of elements which must be looked-up
in different orders. The usual and ugly way to implement this is to
maintain several std::sets in sync pointing to the same colection
of objects.
Additional features of the indexed_set class template:
* Indices can be tagged (i.e. accessed through mnemonic types).
* Sorting is accomplished through the combination of a key
extractor and a comparison predicate. This design stems from
early suggestions here at the mailing list and largely avoids the
need to write hand-made comparison predicates.
* Extensive familiy of class template utilities for key extraction
based on a data member or a memfun of the element.
* Lookup (find, lower_bound, etc.) is overloaded to perform
subobject searching, i.e. searching where the key does not have
to be an entire object (classical problem with std::sets where you
have to construct a whole dummy object to search for just one
its data members.)
* Range searching simplifying the query of intervals of the type
"x is <=100 and > 200".
* Facilities to perform in-place updating of elements (not found in
STL containers.) (Fernando Cacciola helped design the modify()
memfun, thx.)
* safe mode (a la STLport safe mode): runtime detection of invalid
iterators and so on.
The library is stable and compiles with:
* gcc 3.2 (Cygwin)
* MSVC++ 6.5/7.1
* Intel C++ 7.0/7.1
* MSVC++ 6.5 + STLport 4.5.3
Change pace has been very frequent so far. From now on I plan
to space new revisions so as to give boosters a chance to take
a look at more or less stable material.
Thank you for your attention
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk