|
Boost : |
From: Joaquín Mª López Muñoz (joaquin_at_[hidden])
Date: 2003-07-17 14:40:50
Hi again,
Discussing a library in Boost is a most exhausting task, but a most
rewarding one too. After suggestions from Fernando, Beman,
Jeremy and others, I've made many significant improvements to
multiindex_set, now renamed to indexed_set. You can download
it, along with a test suite and preliminary documentation, at
http://groups.yahoo.com/group/boost/files/indexed_set.zip
The following changes have been made:
* Changed name to indexed_set, as multiindex_set sounded a little
odd. I prefer this over indexed_table to prevent users from believing
that the library is a full-blown relational framework.
* Utility classes live into boost::indexed_sets. I've followed the
convention of adding an 's' to the namespace after som other libraries
here in Boost, like Boost.Tuple and Boost.Signal. As of now,
indexed_set belongs in boost::indexed_sets, but I guess it'll be
lifted (by means of using) to namespace boost in the future.
* The specification of an indexed_set changed, so that now a type
list of index traits is provided. This eliminates the need for the additional
unique_indices parameter (now each index is explicitly named as
"unique" or "non_unique") and provides a beter roadmap to future
integration of alternative index policies (hashing, for instance.)
* Apart from update(), a modify() method is provided following the
schema proposed by Fernando.
* Adopted a key-extraction approach in the specification of the indices
composing an indexed_set. Accordingly, less_by<> has been dropped in
favor of a new utility class named member<>. After making the change, I
have to admit it is conceptually simpler to understand and has some
second-order advantages (for instance, now each index have different
key_type and value_type typedefs, resembling a std::map in this respect).
* Documentation updated. Still far from being a complete reference, but
I guess I'll only make that effort if the library goes into reviewing stage. I
hope it is clear enough to introduce the reader into the basic design issues.
Compiled under MSVC 6.5 and gcc3.2 (cygwin).
I hope these changes meet most demands posed by Boosters wrt the
library. There are some minor issues pending, like tagged indices, which I
plan to collect feedback from before implementing them. Suggestions are
most welcome. If this gain momentum I could propose it for preformal
review by the end this week or the next.
Regards,
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