| Home | Libraries | People | FAQ | More

## Function Reference

Section Function Synopsis above gave an overview of the polymorphic functions of the icl. This is what you will need to find the desired possibilities to combine icl functions and objects most of the time. The functions and overloads that you intuitively expect should be provided, so you won't need to refer to the documentation very often.

If you are interested

- in the specific design of the function overloads,
- in complexity characteristics for certain overloads
- or if the compiler refuses to resolve specific function application you want to use,

refer to this section that describes the polymorphic function families of the icl in detail.

###### Placeholders

For a concise representation the same placeholders will be used that have been introduced in section Function Synopsis.

###### More specific function documentation

This section covers the most important polymorphic and namespace global functions of the icl. More specific functions can be looked up in the doxygen generated reference documentation.

### Overload tables

Many of the icl's functions are overloaded for elements, segments, element and interval containers. But not all type combinations are provided. Also the admissible type combinations are different for different functions and operations. To concisely represent the overloads that can be used we use synoptical tables that contain possible type combinations for an operation. These are called overload tables. As an example the overload tables for the inplace intersection `operator &=` are given:

    // overload tables for
    T& operator &= (T&, const P&)

    element containers:     interval containers:
    &= | e b s m            &= | e i b p S M
    ---+--------            ---+------------
    s  | s   s              S  | S S     S
    m  | m m m m            M  | M M M M M M

For the binary `T& operator &= (T&, const P&)` there are two different tables for the overloads of element and interval containers. The first argument type `T` is displayed as row headers of the tables. The second argument type `P` is displayed as column headers of the tables. If a combination of `T` and `P` is admissible the related cell of the table is non empty. It displays the result type of the operation. In this example the result type is always equal to the first argument.

The possible types that can be instantiated for `T` and `P` are element, interval and container types abbreviated by placeholders that are defined here and can be summarized as

s : element set, S : interval sets, e : elements, i : intervals
m:element map, M:interval maps, b:element-value pairs, p:interval-value pairs