Associated Types

| Home | Libraries | People | FAQ | More

### Associated Types

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,

    interval     <D,       cp,             >
    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 >

where these placeholders were used:

    D  := class DomainT,
    C  := class CodomainT,
    T  := class Traits,
    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<D,cp>::type
    a  := template<class>class Alloc = std::allocator

With some additions,

    sz := template<class D>class size
    df := template<class D>class difference
    Xl := class ExclusiveLess = exclusive_less<Interval<DomainT,Compare> >
    inv:= template<class Combiner>class inverse
    (T,U) := std::pair<T,U> for typnames T,U

we can summarize the associated types as follows. Again two additional columns for easy comparison with stl sets and maps are provided.

Table 1.12. Icl Associated types

Purpose | Aspect | Type | intervals | interval sets | interval maps | element sets | element maps
--- | --- | --- | --- | --- | --- | --- | ---
Data | fundamental | `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>`
|  |  | intervals | interval sets | interval maps | element sets | element maps
Data | segmental | `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)>`
|  |  | intervals | interval sets | interval maps | element sets | element maps
Ordering | fundamental | `domain_compare` | `cp<D>` | `cp<D>` | `cp<D>` | `cp<D>` | `cp<D>`
| segmental | `key_compare` | `cp<D>` | `Xl` | `Xl` | `cp<D>` | `cp<D>`
|  | `interval_compare` |  | `Xl` | `Xl` |  |
Aggregation | fundamental | `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>>`