25#ifndef __BITPIT_PIERCED_STORAGE_RANGE_TPP__
26#define __BITPIT_PIERCED_STORAGE_RANGE_TPP__
33template<
typename value_t,
typename id_t,
typename value_no_cv_t>
45template<
typename value_t,
typename id_t,
typename value_no_cv_t>
58template<
typename value_t,
typename id_t,
typename value_no_cv_t>
61 initialize(storage, first, last);
70template<
typename value_t,
typename id_t,
typename value_no_cv_t>
73 initialize(begin, end);
81template<
typename value_t,
typename id_t,
typename value_no_cv_t>
86 m_begin = storage->begin();
87 m_end = storage->end();
97template<
typename value_t,
typename id_t,
typename value_no_cv_t>
102 m_begin = storage->find(first);
103 m_end = ++(storage->find(last));
112template<
typename value_t,
typename id_t,
typename value_no_cv_t>
115 if (&(begin.getStorage()) != &(end.getStorage())) {
116 throw std::runtime_error(
"The two iterators belong to different storages");
131template<
typename value_t,
typename id_t,
typename value_no_cv_t>
136 std::swap(m_begin, other.m_begin);
137 std::swap(m_end, other.m_end);
145template<
typename value_t,
typename id_t,
typename value_no_cv_t>
156template<
typename value_t,
typename id_t,
typename value_no_cv_t>
157template<
typename U,
typename U_no_cv,
158 typename std::enable_if<std::is_same<U, U_no_cv>::value,
int>::type>
171template<
typename value_t,
typename id_t,
typename value_no_cv_t>
172template<
typename U,
typename U_no_cv,
173 typename std::enable_if<std::is_same<U, U_no_cv>::value,
int>::type>
184template<
typename value_t,
typename id_t,
typename value_no_cv_t>
197template<
typename value_t,
typename id_t,
typename value_no_cv_t>
208template<
typename value_t,
typename id_t,
typename value_no_cv_t>
221template<
typename value_t,
typename id_t,
typename value_no_cv_t>
The PiercedKernelRange allow to iterate using range-based loops over a PiercedStorage.
void initialize(const kernel_t *kernel)
void swap(PiercedKernelRange &other) noexcept
The PiercedStorageRange allow to iterate using range-based loops over a PiercedStorage.
void swap(PiercedStorageRange &other) noexcept
const_iterator cbegin() const noexcept
const PiercedKernelRange< id_t > & getKernelRange() const
iterator begin() noexcept
const_iterator cend() const noexcept
void initialize(const storage_t *storage)
const_iterator_t const_iterator