|
Boost : |
Subject: [boost] [itl] Preview 4 of the Interval Template Library
From: Joachim Faulhaber (afojgo_at_[hidden])
Date: 2009-03-04 17:11:10
Dear list,
I am happy to announce that the Interval Template
Library (Boost.Itl) converges to a state, that conforms
the standards of the boost libraries. It now contains
substantial test suites and almost complete quickbook
documentation. I hope it will soon be mature for a formal
review after a last round of feedback and subsequent
improvements.
Since the last progress report in November last year
the following work has been done.
+ Interoperability of interval_containers: Addition,
subtraction, intersection and symmetric difference
are now interoperable for all combinations of interval
containers that make sense: You may for instance intersect
a split_interval_map with an interval_map, an interval_set
an interval or an element.
+ Added symmetric difference and renamed operators
in accordance to other set class templates like
e.g. boost::dynamic_bitset.
+ Introduced infix operators as itl::namespace global
functions that are interoperable between interval_maps,
sets, intervals and elements, so far as the combinations
make sense.
+ Operators are now
+=, +, |=, | : Set union / Map union with aggregation
-=, - : Set difference / Map union with aggregation
&=, & : Set intersection / Map intersection with aggregation
^=, ^ : Set symmetric difference / Map symmetric difference
with aggregation.
+ Extended the test suite, specifically for the new operators
and their overloadings.
+ Wrote quickbook documentation for the library.
Please note that the original ITL as presented in May 2008
has been split into 3 parts and only the *first* part is prepared
for boost now:
itl : Core library, interval containers, PREPARED FOR BOOST
itl_xt : Extensions like histories and generalized crosstables
validate: The law based test automaton (LaBatea). A validation
tool using laws aka axioms.
So please focus on the core part (itl). Download the current
version 'preview 4' from the boost vault's containers section:
itl.zip
http://www.boostpro.com/vault/index.php?action=downloadfile&filename=itl.zip&directory=Containers
If you are interested in extended parts or LaBatea you may
download all parts as itl_plus.zip
http://www.boostpro.com/vault/index.php?action=downloadfile&filename=itl_plus.zip&directory=Containers
The quickbook generated documentation is included in the zip
files and is also availabe online at
http://herold-faulhaber.de/boost_itl/doc/libs/itl/doc/html/index.html
Sources are also available form the sandbox:
https://svn.boost.org/svn/boost/sandbox/itl/
The documentation has a focus on tree aspects
(1) A short introduction, that wants to be easy to understand
and to provide good and use case related examples:
http://herold-faulhaber.de/boost_itl/doc/libs/itl/doc/html/index.html#boost_itl.introduction
http://herold-faulhaber.de/boost_itl/doc/libs/itl/doc/html/boost_itl/examples.html
(2) Synoptical representations that allows to see the complete
'picture' of the library. For instance the function matrix
http://herold-faulhaber.de/boost_itl/doc/libs/itl/doc/html/boost_itl/interface.html#boost_itl.interface.function_matrix
is supposed to give a complete overview over the most important
functions across all itl containers.
(3) A description of the semantics which is characterized by
sets of laws that apply for the different interval containers.
The semantical analysis, based on sets of laws, was a quite
interesting work, where software development sometimes
transformed into software discovery guided by the validation
tool LaBatea ;)
My main finding out of that process was, that the semantics
of the aggregating itl::Maps is determined by the semantics
of their data or codomain parameter U, so that
if U is model of concept C then itl::Map<T,U> is model of C
which is stated in section concept induction:
http://herold-faulhaber.de/boost_itl/doc/libs/itl/doc/html/boost_itl/semantics.html#boost_itl.semantics.concept_induction
All your feedback is welcome.
Cheers
Joachim
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk