11#ifndef PERMUTAHEDRAL_REPRESENTATION_SIZE_RANGE_H_
12#define PERMUTAHEDRAL_REPRESENTATION_SIZE_RANGE_H_
16#include <boost/range/iterator_range.hpp>
20namespace coxeter_triangulation {
26 :
public boost::iterator_facade<Size_iterator<T_it>, std::size_t const, boost::forward_traversal_tag> {
27 friend class boost::iterator_core_access;
30 bool equal(
Size_iterator const& other)
const {
return (is_end_ && other.is_end_); }
32 std::size_t
const& dereference()
const {
return value_; }
35 if (++t_it_ == t_end_) {
39 value_ = t_it_->size() - 1;
43 Size_iterator(
const T_it& t_begin,
const T_it& t_end) : t_it_(t_begin), t_end_(t_end), is_end_(t_begin == t_end) {
44 if (!is_end_) value_ = t_it_->size() - 1;
60 Size_range(
const T& t) : t_(t) {}
62 std::size_t operator[](std::size_t i)
const {
return t_[i].size() - 1; }
64 iterator begin()
const {
return iterator(t_.begin(), t_.end()); }
66 iterator end()
const {
return iterator(t_.end(), t_.end()); }
Auxiliary iterator class for sizes of parts in an ordered set partition.
Definition: Size_range.h:26