Home | Libraries | People | FAQ | More |
boost::itl::split_interval_map — implements a map as a map of intervals - on insertion overlapping intervals are split and associated values are combined.
template<typename DomainT , typename CodomainT ,
class Traits = itl::partial_absorber,
ITL_COMPARE Compare = ITL_COMPARE_INSTANCE(std::less, DomainT),
ITL_COMBINE Combine = ITL_COMBINE_INSTANCE(itl::inplace_plus, CodomainT),
ITL_SECTION Section = ITL_SECTION_INSTANCE(itl::inplace_et, CodomainT),
template< class, ITL_COMPARE >class Interval = itl::interval,
ITL_ALLOC Alloc = std::allocator>
class split_interval_map : public boost::itl::interval_base_map< boost::itl::split_interval_map< DomainT, CodomainT, Traits, Compare, Combine, Section, Interval, Alloc >, DomainT, CodomainT, Traits, Compare, Combine, Section, Interval, Alloc >
{
public:
// types
typedef Traits traits; // Traits of an itl map.
typedef split_interval_map< DomainT, CodomainT, Traits, Compare, Combine, Section, Interval, Alloc > type;
typedef interval_map< DomainT, CodomainT, Traits, Compare, Combine, Section, Interval, Alloc > joint_type;
typedef type overloadable_type; // Auxilliary type for overloadresolution.
typedef interval_base_map< split_interval_map< DomainT, CodomainT, Traits, Compare, Combine, Section, Interval, Alloc >, DomainT, CodomainT, Traits, Compare, Combine, Section, Interval, Alloc > base_type;
typedef DomainT domain_type; // Domain type (type of the keys) of the map.
typedef CodomainT codomain_type; // Domain type (type of the keys) of the map.
typedef Interval< DomainT, Compare > interval_type; // The interval type of the map.
typedef base_type::iterator iterator; // iterator for iteration over intervals
typedef base_type::value_type value_type; // value type of the implementing container
typedef base_type::element_type element_type; // Conceptual is a map a set of elements of type element_type
.
typedef base_type::segment_type segment_type; // Type of an interval containers segment, that is spanned by an interval.
typedef base_type::domain_mapping_type domain_mapping_type; // Auxiliary type to help the compiler resolve ambiguities when using std::make_pair.
typedef base_type::interval_mapping_type interval_mapping_type; // Auxiliary type for overload resolution.
typedef base_type::ImplMapT ImplMapT; // Container type for the implementation.
typedef base_type::codomain_combine codomain_combine;
typedef interval_set< DomainT, Compare, Interval, Alloc > interval_set_type;
typedef interval_set_type set_type;
// construct/copy/destruct
split_interval_map();
split_interval_map(const split_interval_map &);
split_interval_map(domain_mapping_type &);
split_interval_map(const value_type &);
template<class SubType >
split_interval_map&
operator=(const interval_base_map< SubType, DomainT, CodomainT, Traits, Compare, Combine, Section, Interval, Alloc > &);
// public member functions
template<class SubType >
void assign(const interval_base_map< SubType, DomainT, CodomainT, Traits, Compare, Combine, Section, Interval, Alloc > &) ;
// private member functions
bool contains_(const value_type &) const;
template<class Combiner > void add_(const value_type &) ;
template<class Combiner > iterator add_(iterator, const value_type &) ;
template<class Combiner > void subtract_(const value_type &) ;
void insert_(const value_type &) ;
iterator insert_(iterator, const value_type &) ;
void erase_(const value_type &) ;
void handle_neighbours(const iterator &) ;
template<class Combiner >
void add_main(interval_type &, const CodomainT &, iterator &,
const iterator &) ;
template<class Combiner >
void add_segment(const interval_type &, const CodomainT &, iterator &) ;
void add_front(const interval_type &, iterator &) ;
template<class Combiner >
void add_rear(const interval_type &, const CodomainT &, iterator &) ;
template<class Combiner >
void subtract_main(const CodomainT &, iterator &, iterator &) ;
void subtract_front(const interval_type &, iterator &) ;
template<class Combiner >
void subtract_rear(const interval_type &, const CodomainT &, iterator &) ;
void insert_range(const interval_type &, const CodomainT &, iterator &,
iterator &) ;
void erase_rest(const interval_type &, const CodomainT &, iterator &,
iterator &) ;
};
split_interval_map
public
construct/copy/destructsplit_interval_map();
split_interval_map(const split_interval_map & src);
split_interval_map(domain_mapping_type & base_pair);
split_interval_map(const value_type & value_pair);
template<class SubType > split_interval_map& operator=(const interval_base_map< SubType, DomainT, CodomainT, Traits, Compare, Combine, Section, Interval, Alloc > & src);
split_interval_map
public member functionstemplate<class SubType > void assign(const interval_base_map< SubType, DomainT, CodomainT, Traits, Compare, Combine, Section, Interval, Alloc > & src) ;
split_interval_map
private member functionsbool contains_(const value_type & value) const;
template<class Combiner > void add_(const value_type &) ;
template<class Combiner > iterator add_(iterator, const value_type &) ;
template<class Combiner > void subtract_(const value_type &) ;
void insert_(const value_type & value) ;
iterator insert_(iterator, const value_type & value) ;
void erase_(const value_type & value) ;
void handle_neighbours(const iterator & it_) ;
template<class Combiner > void add_main(interval_type & inter_val, const CodomainT & co_val, iterator & it_, const iterator & end_) ;
template<class Combiner > void add_segment(const interval_type & inter_val, const CodomainT & co_val, iterator & it_) ;
void add_front(const interval_type & inter_val, iterator & it_) ;
template<class Combiner > void add_rear(const interval_type & inter_val, const CodomainT & co_val, iterator & it_) ;
template<class Combiner > void subtract_main(const CodomainT & co_val, iterator & it_, iterator & end_) ;
void subtract_front(const interval_type & inter_val, iterator & it_) ;
template<class Combiner > void subtract_rear(const interval_type & inter_val, const CodomainT & co_val, iterator & it_) ;
void insert_range(const interval_type & inter_val, const CodomainT & co_val, iterator & it_, iterator & end_) ;
void erase_rest(const interval_type & inter_val, const CodomainT & co_val, iterator & it_, iterator & last_) ;