|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r66092 - in sandbox/itl/libs/itl: doc test/test_casual_
From: afojgo_at_[hidden]
Date: 2010-10-19 11:02:34
Author: jofaber
Date: 2010-10-19 11:02:33 EDT (Tue, 19 Oct 2010)
New Revision: 66092
URL: http://svn.boost.org/trac/boost/changeset/66092
Log:
Updated documentation: Modified Interface. Addition of docs for intervals. Added section for customization.
Added:
sandbox/itl/libs/itl/doc/customization.qbk (contents, props changed)
Text files modified:
sandbox/itl/libs/itl/doc/acknowledgments.qbk | 2
sandbox/itl/libs/itl/doc/icl.qbk | 1
sandbox/itl/libs/itl/doc/interface.qbk | 282 +++++++++++++++++++++++----------------
sandbox/itl/libs/itl/test/test_casual_/test_casual.cpp | 20 +-
4 files changed, 180 insertions(+), 125 deletions(-)
Modified: sandbox/itl/libs/itl/doc/acknowledgments.qbk
==============================================================================
--- sandbox/itl/libs/itl/doc/acknowledgments.qbk (original)
+++ sandbox/itl/libs/itl/doc/acknowledgments.qbk 2010-10-19 11:02:33 EDT (Tue, 19 Oct 2010)
@@ -1,5 +1,5 @@
[/
- Copyright (c) 2008-2008 Joachim Faulhaber
+ Copyright (c) 2008-2010 Joachim Faulhaber
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
Added: sandbox/itl/libs/itl/doc/customization.qbk
==============================================================================
--- (empty file)
+++ sandbox/itl/libs/itl/doc/customization.qbk 2010-10-19 11:02:33 EDT (Tue, 19 Oct 2010)
@@ -0,0 +1,40 @@
+[/
+ Copyright (c) 2010-2010 Joachim Faulhaber
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+]
+
+[section Customization]
+
+[section Intervals]
+
+The *icl* provides the possibility of customizing user defined interval class templates
+and class types with static interval borders to be used with interval containers.
+
+There is a template __itv_tr__, that has to be instatiated for the user defined
+interval type, in order to provide associated types and basic functions.
+Bound types of the interval are assigned by specializing the template
+`interval_bound_type`.
+
+[table
+[[Customize] [Name] [Description]]
+[[associated types] [`interval_type`] [interval type of the partial specialisation for the user defined type] ]
+[[] [`domain_type`] [the domain or element type of the interval] ]
+[[] [`domain_compare`] [the ordering on the elements] ]
+[[basic functions] [`construct(const domain_type&, const domain_type&)`] [construct an interval] ]
+[[] [`lower(const interval_type&)`] [select the interval's lower bound] ]
+[[] [`upper(const interval_type&)`] [select the interval's upper bound] ]
+[[interval bounds] [`interval_bound_type<interval_type>{...}`] [specialize meta function `interval_bound_type`
+ to assign one of the 4 bound types to the user defined interval. ] ]
+]
+
+How to do the customization in detail is shown in example
+[link boost_icl.examples.custom_interval custom interval].
+
+[endsect][/ Intervals]
+
+[endsect][/ Customization]
+
+
Modified: sandbox/itl/libs/itl/doc/icl.qbk
==============================================================================
--- sandbox/itl/libs/itl/doc/icl.qbk (original)
+++ sandbox/itl/libs/itl/doc/icl.qbk 2010-10-19 11:02:33 EDT (Tue, 19 Oct 2010)
@@ -226,6 +226,7 @@
[include concepts.qbk]
[include semantics.qbk]
[include interface.qbk]
+[include customization.qbk]
[include implementation.qbk]
[include functions.qbk]
[include acknowledgments.qbk]
Modified: sandbox/itl/libs/itl/doc/interface.qbk
==============================================================================
--- sandbox/itl/libs/itl/doc/interface.qbk (original)
+++ sandbox/itl/libs/itl/doc/interface.qbk 2010-10-19 11:02:33 EDT (Tue, 19 Oct 2010)
@@ -30,37 +30,39 @@
[table Interval class templates
-[[group] [form] [template] [instance parameters]]
-[[`static_bounded`] [asymmetric][__ro_itv__] [`<class DomainT, template<class>class Compare>`]]
-[[ ] [] [__lo_itv__] [`<...same for all interval class templates...>`]]
-[[ ] [symmetric] [__cl_itv__] []]
-[[ ] [] [__op_itv__] []]
-[[`dynamic_bounded`][] [__dc_itv__] []]
-[[ ] [] [__ct_itv__] []]
+[[group] [form] [template] [instance parameters]]
+[[statically bounded] [asymmetric][__ro_itv__] [`<class DomainT, template<class>class Compare>`]]
+[[ ] [] [__lo_itv__] [`<...same for all interval class templates...>`]]
+[[ ] [symmetric] [__cl_itv__] []]
+[[ ] [] [__op_itv__] []]
+[[dynamically bounded][] [__dc_itv__] []]
+[[ ] [] [__ct_itv__] []]
]
Not every class template works with all domain types. Use interval class templates
according the next table.
[table Usability of interval class templates for discrete or continuous domain types
-[[group] [form] [template] [discrete] [continuous] ]
-[[`static_bounded`] [asymmetric][__ro_itv__] [yes] [yes] ]
-[[ ] [] [__lo_itv__] [yes] [yes] ]
-[[ ] [symmetric] [__cl_itv__] [yes] [ ] ]
-[[ ] [] [__op_itv__] [yes] [ ] ]
-[[`dynamic_bounded`][] [__dc_itv__] [yes] [ ] ]
-[[ ] [] [__ct_itv__] [] [yes] ]
+[[group] [form] [template] [discrete] [continuous] ]
+[[statically bounded] [asymmetric][__ro_itv__] [yes] [yes] ]
+[[ ] [] [__lo_itv__] [yes] [yes] ]
+[[ ] [symmetric] [__cl_itv__] [yes] [ ] ]
+[[ ] [] [__op_itv__] [yes] [ ] ]
+[[dynamically bounded][] [__dc_itv__] [yes] [ ] ]
+[[ ] [] [__ct_itv__] [] [yes] ]
]
From a pragmatical point of view, the most important interval class template
of the /statically bounded/ group is __ro_itv__. For discrete domain types
-also closed intervals might be convenient.
+also closed intervals might be convenient. Asymmetric intervals can be used
+with continuous domain types but __ct_itv__ is the only class template that
+allows to represent a singleton interval that contains only one element.
Use __ct_itv__, if you work with interval containers of countinuous domain types
-and you want to be able to handle single values as well:
+and you want to be able to handle single values:
``
-typedef interval_set<std::string, less, continuous_interval<std::string> > IdentifiersT;
+typedef interval_set<std::string, std::less, continuous_interval<std::string> > IdentifiersT;
IdentifiersT identifiers, excluded;
identifiers += continuous_interval<std::string>::right_open("a", "c");
@@ -76,6 +78,68 @@
excluded : {[boost,boost]}
``
+[h4 Library defaults and class template `interval`]
+
+As shown in the example above, you can choose an interval type
+by instantiating the interval container template with the desired type.
+
+``
+typedef interval_set<std::string, std::less, continuous_interval<std::string> > IdentifiersT;
+``
+
+But you can work with the library default for interval template parameters as well,
+which is `interval<DomainT,Compare>::type`.
+
+[table
+[[] [interval bounds][domain_type][interval_default]]
+[[`#ifdef` BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS][static] [ ] [__ro_itv__] ]
+[[`#else`] [dynamic] [discrete] [__dc_itv__] ]
+[[ ] [ ] [continuous] [__ct_itv__] ]
+]
+
+So, if you are always happy with the library default for the interval type, just use
+``
+icl::interval<MyDomainT>::type myInterval;
+``
+as you standard way of declaring intervals and default parameters for interval containers:
+``
+typedef interval_set<std::string> IdentifiersT;
+IdentifiersT identifiers, excluded;
+identifiers += interval<std::string>::right_open("a", "c");
+. . .
+``
+
+So class template __itv__ provides a standard way to work with the library default
+for intervals. Via `interval<D,C>::type` you can declare a default interval.
+In addition four static functions
+``
+T interval<D,C>::right_open(const D&, const D&);
+T interval<D,C>::left_open(const D&, const D&);
+T interval<D,C>::closed(const D&, const D&);
+T interval<D,C>::open(const D&, const D&);
+``
+allow to construct intervals of the library default `T = interval<D,C>::type`.
+
+If you
+``
+#define BOOST_ICL_USE_STATIC_BOUNDED_INTERVALS
+``
+the library uses only statically bounded __ro_itv__ as default interval type.
+In this case, the four static functions above are also available,
+but they only move interval borders consistently, if
+their domain type is discrete, and create an appropriate __ro_itv__ finally:
+``
+interval<D,C>::right_open(a,b) == [a, b) -> [a , b )
+interval<D,C>:: left_open(a,b) == (a, b] -> [a++, b++)
+interval<D,C>:: closed(a,b) == [a, b] -> [a , b++)
+interval<D,C>:: open(a,b) == (a, b) -> [a++, b )
+``
+
+For continuous domain types only the first of the four functions is applicable
+that matches the library default for statically bounded intervals: __ro_itv__.
+The other three functions can not perform an appropriate tranformation and
+will not compile.
+
[endsect][/ Intervals]
[section Sets]
@@ -86,15 +150,15 @@
[/ interval_set]
[/ separate_interval_set]
[/ split_interval_set]
-[/ itl::set]
+[/ icl::set]
[table Set class templates
[[group] [template] [instance parameters]]
[/ CL [__itv__] [__itv__] [`<DomainT,Compare>`]]
-[[__itv_bsets__][__itv_set__] [`<DomainT,Compare,Interval,Alloc>`]]
-[[] [__sep_itv_set__][`<DomainT,Compare,Interval,Alloc>`]]
-[[] [__spl_itv_set__][`<DomainT,Compare,Interval,Alloc>`]]
-[[__std_set__] [`std::set`] [`<_Key, _Compare, _Alloc>`]]
+[[__itv_bsets__][__itv_set__] [`<DomainT,Compare,IntervalT,Alloc>`]]
+[[] [__sep_itv_set__][`<DomainT,Compare,IntervalT,Alloc>`]]
+[[] [__spl_itv_set__][`<DomainT,Compare,IntervalT,Alloc>`]]
+[/ [__std_set__] [`std::set`] [`<_Key, _Compare, _Alloc>`]]
]
Templates and template parameters, given in the preceding table are
@@ -107,18 +171,18 @@
[[] [type of elements][order of elements] [type of intervals] [memory allocation]]
[[template parameter] [`class`] [`template <class>class`] [`class`] [`template <class>class`]]
[[__itv__] [`DomainT`][`Compare = std::less`] [] []]
-[[__itv_bsets__] [`DomainT`][`Compare = std::less`] [`Interval = itl::interval`] [`Alloc = std::alloc`]]
-[[__icl_set__] [`DomainT`][`Compare = std::less`] [] [`Alloc = std::alloc`]]
-[[template parameter] [`class`] [`class`] [`class`] [class]]
-[[__std_set__] [`_Key`] [`_Compare = std::less<_Key>`][] [`Alloc = std::alloc<_Key>`]]
+[[__itv_bsets__] [`DomainT`][`Compare = std::less`] [`IntervalT = interval<DomainT,Compare>::type`] [`Alloc = std::alloc`]]
+
+[/ [__icl_set__] [`DomainT`][`Compare = std::less`] [] [`Alloc = std::alloc`]]
+[/ [template parameter] [`class`] [`class`] [`class`] [class]]
+[/ [__std_set__] [`_Key`] [`_Compare = std::less<_Key>`][] [`Alloc = std::alloc<_Key>`]]
]
[endsect][/ Sets]
[section Maps]
-The next two tables give an overview over ['*map class templates*] of
-the itl and compares them to =std::map=.
+The next two tables give an overview over ['*map class templates*] of the icl.
[/ interval_map]
[/ split_interval_map]
@@ -126,10 +190,10 @@
[table map class templates
[[group] [template] [instance parameters]]
-[[__itv_bmaps__][__itv_map__] [`<DomainT,CodomainT,Traits,Compare,Combine,Section,Interval,Alloc>`]]
-[[] [__spl_itv_map__][`<DomainT,CodomainT,Traits,Compare,Combine,Section,Interval,Alloc>`]]
+[[__itv_bmaps__][__itv_map__] [`<DomainT,CodomainT,Traits,Compare,Combine,Section,IntervalT,Alloc>`]]
+[[] [__spl_itv_map__][`<DomainT,CodomainT,Traits,Compare,Combine,Section,IntervalT,Alloc>`]]
[[__icl_map__] [__icl_map__] [`<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>`]]
-[[__std_map__] [__std_map__] [`<_Key, _Data, _Compare, _Alloc>`]]
+[/ [__std_map__] [__std_map__] [`<_Key, _Data, _Compare, _Alloc>`]]
]
@@ -141,11 +205,11 @@
[table Parameters of map class templates
[[] [elements][mapped values][traits] [order of elements] [aggregation propagation] [intersection propagation] [type of intervals] [memory allocation]]
-[[template parameter] [`class`] [`class`] [`class`] [`template <class>class`] [`template <class>class`] [`template <class>class`] [`template <class, template<class>class> class`][`template <class>class`]]
-[[__itv_bmaps__] [`DomainT`][`CodomainT`] [`Traits = identity_absorber`] [`Compare = std::less`] [`Combine = inplace_plus`] [`Section = icl::inplace_et`] [`Interval = icl::interval`] [`Alloc = std::alloc`]]
+[[template parameter] [`class`] [`class`] [`class`] [`template <class>class`] [`template <class>class`] [`template <class>class`] [`class`] [`template <class>class`]]
+[[__itv_bmaps__] [`DomainT`][`CodomainT`] [`Traits = identity_absorber`] [`Compare = std::less`] [`Combine = inplace_plus`] [`Section = icl::inplace_et`] [`IntervalT = interval<DomainT,Compare>::type`][`Alloc = std::alloc`]]
[[__icl_map__] [`DomainT`][`CodomainT`] [`Traits = identity_absorber`] [`Compare = std::less`] [`Combine = inplace_plus`] [`Section = icl::inplace_et`] [`Alloc = std::alloc`]]
-[[template parameter] [`class`] [`class`] [] [`class`] [] [] [] [`class`]]
-[[__std_map__] [`_Key`] [`_Data`] [] [`_Compare = std::less<_Key>`][] [] [] [`Alloc = std::alloc<_Key>`]]
+[/ [template parameter] [`class`] [`class`] [] [`class`] [] [] [] [`class`]]
+[/ [__std_map__] [`_Key`] [`_Data`] [] [`_Compare = std::less<_Key>`][] [] [] [`Alloc = std::alloc<_Key>`]]
]
Using the following placeholders,
@@ -154,13 +218,10 @@
D := class DomainT,
C := class CodomainT,
T := class Traits,
-Cp := class Compare = std::less<DomainT>,
cp := template<class D>class Compare = std::less,
cb := template<class C>class Combine = icl::inplace_plus,
s := template<class C>class Section = icl::inplace_et,
-I := class Interval = icl::interval_type_default<D,C>
-Ad := class Alloc = std::allocator<DomainT>
-Av := class Alloc = std::allocator<std::pair<DomainT,CodomainT> >
+I := class IntervalT = icl::interval<D,cp>::type
a := template<class>class Alloc = std::allocator
``
@@ -169,10 +230,8 @@
[pre
interval <D, cp, >
interval_sets<D, cp, I, a >
-std::set <D, Cp, Ad>
interval_maps<D, C, T, cp, cb, s, I, a >
icl::map <D, C, T, cp, cb, s, a >
-std::map <D, C Cp, Av>
]
The choice of parameters and their positions follow the std::containers
@@ -193,25 +252,25 @@
[section Required Concepts]
There are uniform requirements for the template parameters
-across *itl's* class templates. The template parameters can
+across *icl's* class templates. The template parameters can
be grouped with respect to those requirements.
[table
-[[] [used in] [Kind] [Parameter] [Instance] [Description] ]
-[[Domain order] [`interval, Sets, Maps`][`typename`][`DomainT`] [] [For the type `DomainT` of key elements `...`]]
-[[] [] [`template`] [`Compare`] [`Compare<DomainT>`] [`...` there is an order `Compare`] ]
-[[Interval type] [`interval_sets/maps`][`template`] [`Interval`] [`Interval<DomainT,Compare>`] [`...` the `Interval` parameter has to use the same element type and order. ] ]
-[[Codomain aggregation][`Maps`] [`typename`] [`CodomainT`][] [For the type `CodomainT` of associated values `...`]]
-[[] [] [`template`] [`Combine`] [`Combine<CodomainT>`] [`...` there is a binary functor `Combine<CodomainT>()` to combine them ] ]
-[[] [] [] [] [`Inverse<Combine<CodomainT>>`][`...` and implicitly an `Inverse` functor to inversely combine them. ] ]
-[[] [] [`template`] [`Section`] [`Section<CodomainT>`] [Intersection is propagated to CodomainT values via functor `Section<CodomainT>()`] ]
-[[Memory allocation] [`Sets, Maps`] [`template`] [`Alloc`] [`Alloc<`/various/`>`] [An allocator can be chosen for memory allocation.]]
+[[] [used in] [Kind] [Parameter] [Instance] [Description] ]
+[[Domain order] [`Intervals, Sets, Maps`][`typename`][`DomainT`] [] [For the type `DomainT` of key elements `...`]]
+[[] [] [`template`] [`Compare`] [`Compare<DomainT>`] [`...` there is an order `Compare`] ]
+[[Interval type] [`interval_sets/maps`][`typename`] [`IntervalT`] [] [`...` the `IntervalT` parameter has to use the same element type and order. ] ]
+[[Codomain aggregation][`Maps`] [`typename`] [`CodomainT`] [] [For the type `CodomainT` of associated values `...`]]
+[[] [] [`template`] [`Combine`] [`Combine<CodomainT>`] [`...` there is a binary functor `Combine<CodomainT>()` to combine them ] ]
+[[] [] [] [] [`Inverse<Combine<CodomainT>>`][`...` and implicitly an `Inverse` functor to inversely combine them. ] ]
+[[] [] [`template`] [`Section`] [`Section<CodomainT>`] [Intersection is propagated to CodomainT values via functor `Section<CodomainT>()`] ]
+[[Memory allocation] [`Sets, Maps`] [`template`] [`Alloc`] [`Alloc<`/various/`>`] [An allocator can be chosen for memory allocation.]]
]
[/ table
[[Kind] [Parameter] [Condition] [Requirement] ]
[[`typename`][`DomainT`] [] [`Regular<DomainT> && LessThanComparable<DomainT,Compare>`
- `&& (IsIncrementable<DomainT>||HasUnon<DomainT>)`] ]
+ `&& (IsIncrementable<DomainT>||HasUnitElement<DomainT>)`] ]
[[][] [`IsIntegral<DomainT>`] [`IsIncrementable<DomainT> && IsDecrementable<DomainT>`] ]
[[`typename`][`CodomainT`][`Combine` and `Inverse<Combine>` unused] []]
[[][] [only `Combine` used ] [`EqualityComparable<CodomainT> && Addable<CodomainT,Combine>`] ]
@@ -233,7 +292,7 @@
[table
[[Parameter] [Condition] [Operators] [Requirement] ]
[[`DomainT`] [] [`DomainT(), <`] [`Regular<DomainT> && StrictWeakOrdering<DomainT,Compare>`]]
-[[] [] [`++, unon<CodomainT>::value()`][`&& (IsIncrementable<DomainT>||HasUnon<DomainT>)`] ]
+[[] [] [`++, unit_element<CodomainT>::value()`][`&& (IsIncrementable<DomainT>||HasUnitElement<DomainT>)`] ]
[[] [`IsIntegral<DomainT>`][`++, --`] [`IsIncrementable<DomainT> && IsDecrementable<DomainT>`] ]
]
@@ -243,33 +302,33 @@
which
implies among other properties the existence of a copy and
a default constructor. In addition `IsIncrementable`
-*or* `HasUnon` is required for `DomainT`.
-In the *itl* we represent an empty interval by a closed
+*or* `HasUnitElement` is required for `DomainT`.
+In the *icl* we represent an empty closed interval as
interval `[b,a]` where `a < b` (here `<` represents `Compare<DomainT>()`).
To construct one of these empty intervals as default constructor
-for any type `DomainT` we choose `[1,0]`, where `0` is a null-value or `neutron`
-and `1` is a one-value or `unon`:
+for any type `DomainT` we choose `[1,0]`, where `0` is a null-value or `identity_element`
+and `1` is a one-value or `unit_element`:
``
-interval() := [unon<DomainT>::value(), neutron<DomainT>::value()] //pseudocode
+interval() := [unit_element<DomainT>::value(), identity_element<DomainT>::value()] //pseudocode
``
-`Neutrons` are implemented via call of the default constructor of
-`DomainT`. An `unon<T>::value()` is implemented
-[classref boost::itl::unon by default] as a `neutron`,
+`Identity_elements` are implemented via call of the default constructor of
+`DomainT`. A `unit_element<T>::value()` is implemented
+[classref boost::icl::unit_element by default] as a `identity_element`,
that is incremented once.
``
template <class Type>
-inline Type unon<Type>::value(){ return succ(neutron<Type>::value()); };
+inline Type unit_element<Type>::value(){ return succ(identity_element<Type>::value()); };
``
So a type `DomainT` that is `incrementable` will
-also have an `unon`. If it does not, an `unon` can be provided.
-An `unon` can be any value, that is greater as the `neutron` value
+also have an `unit_element`. If it does not, a `unit_element` can be provided.
+An `unit_element` can be any value, that is greater as the `neutron` value
in the `Compare` order given.
An example of a type, that has a `neutron` but no increment is
-`string`. So for `std::string` an unon is implemented like this:
+`string`. So for `std::string` a unit_element is implemented like this:
``
// Smallest 'visible' string that is greater than the empty string.
template <>
-inline std::string unon<std::string>::value(){ return std::string(" "); };
+inline std::string unit_element<std::string>::value(){ return std::string(" "); };
``
Just as for the key type of std::sets and maps
@@ -287,21 +346,22 @@
`[2,43) == [2,42]`. Such computations always need only
one in- or decrementation, if `DomainT` is an integral type.
-[h5 Requirements on Interval]
+[h5 Requirements on IntervalT]
-Requirements on the `Interval` parameter are closely related to the
-`DomainT` parameter. `template Interval` has two template parameters
-itself for an element type and a compare order and it is of course
-internally always instantiated as `Interval<DomainT,Compare>`.
-`Interval<DomainT,Compare>` then has to implement an order called
+Requirements on the `IntervalT` parameter are closely related to the
+`DomainT` parameter. `IntervalT` has two associated types
+itself for an element type and a compare order that have
+to be consistent with the element and order parameters of
+their interval containers.
+`IntervalT` then has to implement an order called
`exclusive_less`. Two intervals `x, y` are exclusive_less
-``x.exclusive_less(y)``
+``icl::exclusive_less(x, y)``
if all `DomainT` elements of `x` are less than elements of `y` in the
`Compare` order.
[table
-[[Parameter] [Operators] [Requirement] ]
-[[`Interval`] [`exclusive_less`] [`IsExclusiveLessComparable<Interval<DomainT,Compare> >`] ]
+[[Parameter] [Operators] [Requirement] ]
+[[`IntervalT`] [`exclusive_less`] [`IsExclusiveLessComparable<Interval<DomainT,Compare> >`] ]
]
[h4 Requirements on CodomainT]
@@ -364,7 +424,7 @@
will infer [classref boost::icl::inplace_minus inplace_minus]
as inverse functor, that requires `operator -=` on type `CodomainT`.
-In the itl's design we make the assumption,
+In the icl's design we make the assumption,
in particular for the default setting of parameters
`Combine = `[classref boost::icl::inplace_minus inplace_plus],
that type `CodomainT` has a neutral element or `neutron`
@@ -376,18 +436,15 @@
[section Associated Types]
-In order to give an overview over ['*associated types*] the *itl* works
+In order to give an overview over ['*associated types*] the *icl* works
with, we will apply abbreviations again that were introduced in the
presentaiton of icl class templates,
[pre
interval <D, cp, >
-interval_sets<D, cp, i, a >
-itl::set <D, cp, a >
-std::set <D, Cp, Ad>
-interval_maps<D, C, T, cp, cb, s, i, a >
+interval_sets<D, cp, I, a >
+interval_maps<D, C, T, cp, cb, s, I, a >
icl::map <D, C, T, cp, cb, s, a >
-std::map <D, C Cp, Av>
]
where these placeholders were used:
@@ -396,13 +453,10 @@
D := class DomainT,
C := class CodomainT,
T := class Traits,
-Cp := class Compare = std::less<DomainT>,
cp := template<class D>class Compare = std::less,
cb := template<class C>class Combine = icl::inplace_plus,
s := template<class C>class Section = icl::inplace_et,
-i := template<class D,template<class>class cp>class Interval = itl::interval
-Ad := class Alloc = std::allocator<DomainT>
-Av := class Alloc = std::allocator<std::pair<DomainT,CodomainT> >
+I := class Interval = icl::interval<D,cp>::type
a := template<class>class Alloc = std::allocator
``
With some additions,
@@ -419,29 +473,29 @@
sets and maps are provided.
[table Icl Associated types
-[[Purpose][Aspect][Type][__ch_itvs__][__ch_itv_sets__][__ch_itv_maps__][__ch_ele_sets__][__ch_ele_maps__]]
-[/[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] ]
-[/ interval itvset itvmap itl:set itl:map ]
-[[['*Data*]] [__conceptual__][`domain_type`] [`D`] [`D`] [`D`] [`D`] [`D`] ]
-[[ ] [ ][`codomain_type`] [`D`] [`D`] [`C`] [`D`] [`C`] ]
-[[ ] [ ][`element_type`] [`D`] [`D`] [`(D,C)`] [`D`] [`(D,C)`] ]
-[[ ] [ ][`segment_type`][`i<D,cp>`][`i<D,cp>`][`(i<D,cp>,C)`][ ] [ ] ]
-[[ ] [['size] ][`size_type`] [`sz<D>`][`sz<D>`][`sz<D>`] [size_t] [size_t] ]
-[[ ] [ ][`difference_type`] [`df<D>`][`df<D>`][`df<D>`] [size_t] [size_t] ]
-[[ ] [ ][][__ch_itvs__][__ch_itv_sets__][__ch_itv_maps__][__ch_ele_sets__][__ch_ele_maps__]]
-[[['*Data*]] [__iterative__ ][`key_type`] [`D`][`i<D,cp>`][`i<D,cp>`] [`D`] [`D`] ]
-[[ ] [ ][`data_type`] [`D`][`i<D,cp>`] [`C`] [`D`] [`C`] ]
-[[ ] [ ][`value_type`] [`D`][`i<D,cp>`][`(i<D,cp>,C)`][`D`][`(D,C)`]]
-[[ ] [ ][`interval_type`] [`i<D,cp>`][`i<D,cp>`][`i<D,cp>`] [ ] [ ] ]
-[[ ] [['allocation]][`allocator_type`] [ ][`a<i<D,cp>>`][`a<(i<D,cp>, C)>`][`a<D>`][`a<(D,C)>`]]
-[[ ] [ ][][__ch_itvs__][__ch_itv_sets__][__ch_itv_maps__][__ch_ele_sets__][__ch_ele_maps__]]
-[[['*Ordering*]] [__conceptual__][`domain_compare`] [`cp<D>`][`cp<D>`][`cp<D>`][`cp<D>`][`cp<D>`] ]
-[[ ] [__iterative__ ][`key_compare`] [`cp<D>`] [`Xl`] [`Xl`] [`cp<D>`] [`cp<D>`] ]
-[[ ] [ ][`interval_compare`] [ ] [`Xl`] [`Xl`] [ ] [ ] ]
-[[['*Aggregation*]][__conceptual__][`codomain_combine`] [ ] [ ] [`cb<C>`] [ ] [`cb<C>`] ]
-[[ ] [ ][`inverse_codomain_combine`] [ ] [ ][`inv<cb<C>>`] [ ][`inv<cb<C>>`] ]
-[[ ] [ ] [`codomain_intersect`] [ ] [ ] [`s<C>`] [ ] [`s<C>`] ]
-[[ ] [ ][`inverse_codomain_intersect`] [ ] [ ] [`inv<s<C>>`] [ ][`inv<s<C>>`] ]
+[[Purpose] [Aspect] [Type][__ch_itvs__][__ch_itv_sets__][__ch_itv_maps__][__ch_ele_sets__][__ch_ele_maps__]]
+[/[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] ]
+[/ interval itvset itvmap icl:set icl:map ]
+[[['*Data*]] [__conceptual__] [`domain_type`] [`D`] [`D`] [`D`] [`D`] [`D`] ]
+[[ ] [ ] [`codomain_type`] [`D`] [`D`] [`C`] [`D`] [`C`] ]
+[[ ] [ ] [`element_type`] [`D`] [`D`] [`(D,C)`] [`D`] [`(D,C)`] ]
+[[ ] [ ] [`segment_type`][`i<D,cp>`][`i<D,cp>`][`(i<D,cp>,C)`][ ] [ ] ]
+[[ ] [['size] ] [`size_type`] [`sz<D>`][`sz<D>`][`sz<D>`] [`sz<D>`] [`sz<D>`] ]
+[[ ] [ ] [`difference_type`] [`df<D>`][`df<D>`][`df<D>`] [`sz<D>`] [`sz<D>`] ]
+[[ ] [ ] [][__ch_itvs__][__ch_itv_sets__][__ch_itv_maps__][__ch_ele_sets__][__ch_ele_maps__]]
+[[['*Data*]] [__iterative__ ] [`key_type`] [`D`][`i<D,cp>`][`i<D,cp>`] [`D`] [`D`] ]
+[[ ] [ ] [`data_type`] [`D`][`i<D,cp>`] [`C`] [`D`] [`C`] ]
+[[ ] [ ] [`value_type`] [`D`][`i<D,cp>`][`(i<D,cp>,C)`][`D`][`(D,C)`]]
+[[ ] [ ] [`interval_type`] [`i<D,cp>`][`i<D,cp>`][`i<D,cp>`] [ ] [ ] ]
+[[ ] [['allocation]] [`allocator_type`] [ ][`a<i<D,cp>>`][`a<(i<D,cp>, C)>`][`a<D>`][`a<(D,C)>`]]
+[[ ] [ ] [][__ch_itvs__][__ch_itv_sets__][__ch_itv_maps__][__ch_ele_sets__][__ch_ele_maps__]]
+[[['*Ordering*]] [__conceptual__] [`domain_compare`] [`cp<D>`][`cp<D>`][`cp<D>`][`cp<D>`][`cp<D>`] ]
+[[ ] [__iterative__ ] [`key_compare`] [`cp<D>`] [`Xl`] [`Xl`] [`cp<D>`] [`cp<D>`] ]
+[[ ] [ ] [`interval_compare`] [ ] [`Xl`] [`Xl`] [ ] [ ] ]
+[[['*Aggregation*]] [__conceptual__] [`codomain_combine`] [ ] [ ] [`cb<C>`] [ ] [`cb<C>`] ]
+[[ ] [ ] [`inverse_codomain_combine`] [ ] [ ][`inv<cb<C>>`] [ ][`inv<cb<C>>`] ]
+[[ ] [ ] [`codomain_intersect`] [ ] [ ] [`s<C>`] [ ] [`s<C>`] ]
+[[ ] [ ] [`inverse_codomain_intersect`] [ ] [ ] [`inv<s<C>>`] [ ][`inv<s<C>>`] ]
]
@@ -451,7 +505,7 @@
In this section a single ['*matrix*] is given, that shows all ['*functions*]
with shared names and identical or analogous semantics and their
-polymorphical overloads across the class templates of the *itl*.
+polymorphical overloads across the class templates of the *icl*.
Associated are the corresponding functions of the *stl* for easy
comparison. In order to achieve a concise representation, a series
of ['*placeholders*] are used throughout the function matrix.
@@ -482,19 +536,19 @@
[[A ] [] [implementation generated by compilers]]
[[[#element_type] [*e]] [T::element_type] [the element type of __itv_sets__ or __icl_sets__]]
[[[#interval_type] [*i]] [T::segment_type] [the segment type of of __itv_sets__]]
-[[[#itl_set_type] [*s]] [__icl_set__] [itl's set type]]
+[[[#itl_set_type] [*s]] [__icl_set__] [icl's set type]]
[[[#interval_set_types] [*S]] [interval_sets] [one of the interval set types]]
[[[#element_mapping_type] [*b]] [T::element_type] [type of __itv_map_s__ or __icl_map_s__ element value pairs]]
[[[#interval_mapping_type][*p]] [T::segment_type] [type of __itv_map_s__ interval value pairs]]
-[[[#itl_map_type] [*m]] [__icl_map__] [itl's map type]]
+[[[#itl_map_type] [*m]] [__icl_map__] [icl's map type]]
[[[#interval_map_types] [*M]] [interval_maps] [one of the interval map types]]
]
-[/ memberref boost::itl::set::iterative_size `iterative_size`]
+[/ memberref boost::icl::set::iterative_size `iterative_size`]
[table Synopsis Functions and Overloads
[[T] [__ch_itvs__][__ch_itv_sets__][__ch_itv_maps__][__ch_ele_sets__][__ch_ele_maps__]]
-[/ interval itvset itvmap itl:set itl:map ]
+[/ interval itvset itvmap icl:set icl:map ]
[[__biLConsCopyDest__ [#function_synopsis_table]] [ ] [ ] [ ] [ ] [ ] ]
[[`T::T()`] [1] [1] [1] [1] [1] ]
[[`T::T(const P&)`] [A] [__eiS] [__bpM] [1] [1] ]
Modified: sandbox/itl/libs/itl/test/test_casual_/test_casual.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_casual_/test_casual.cpp (original)
+++ sandbox/itl/libs/itl/test/test_casual_/test_casual.cpp 2010-10-19 11:02:33 EDT (Tue, 19 Oct 2010)
@@ -78,19 +78,19 @@
BOOST_AUTO_TEST_CASE(interface_sample_identifiers)
{
- typedef interval_set<std::string, less, continuous_interval<std::string> > IdentifiersT;
- IdentifiersT identifiers, excluded;
+ typedef interval_set<std::string, less, continuous_interval<std::string> > IdentifiersT;
+ IdentifiersT identifiers, excluded;
- // special identifiers shall be excluded
- identifiers += continuous_interval<std::string>::right_open("a", "c");
- identifiers -= std::string("boost");
- cout << "identifiers: " << identifiers << endl;
+ // special identifiers shall be excluded
+ identifiers += continuous_interval<std::string>::right_open("a", "c");
+ identifiers -= std::string("boost");
+ cout << "identifiers: " << identifiers << endl;
- excluded = IdentifiersT(icl::hull(identifiers)) - identifiers;
- cout << "excluded : " << excluded << endl;
+ excluded = IdentifiersT(icl::hull(identifiers)) - identifiers;
+ cout << "excluded : " << excluded << endl;
- if(icl::contains(identifiers, std::string("boost")))
- cout << "error, identifiers.contains('boost')\n";
+ if(icl::contains(identifiers, std::string("boost")))
+ cout << "error, identifiers.contains('boost')\n";
}
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk