61 template<
typename T,
typename W>
75 template<
typename T,
typename W>
99 typename N = DefaultNextElement<T>,
100 typename C = DefaultWrapperCast<T, W>,
101 typename R = DefaultResetPtr<T, W>,
102 typename D = NullDeleter<T>,
103 typename I = std::forward_iterator_tag>
115 template<
bool constIterator = false>
120 std::iterator_traits<base_iterator>
d;
123 using value_type =
typename std::conditional<constIterator, const element_wrapper_type, element_wrapper_type>::type;
129 using ElementType =
typename std::conditional<constIterator, const element_type, element_type>::type;
130 using WrapperType =
typename std::conditional<constIterator, const element_wrapper_type, element_wrapper_type>::type;
141 resetPtr(wrapper, ptr);
149 ptr = getNextPtr(ptr);
150 resetPtr(wrapper, ptr);
243 return std::distance(
begin(),
end());
253 size_t size =
count();
258 std::advance(it, idx);
Definition: linkedlistutils.h:117
typename std::conditional< constIterator, const element_wrapper_type, element_wrapper_type >::type value_type
Definition: linkedlistutils.h:123
~base_iterator()
Definition: linkedlistutils.h:144
base_iterator operator++(int)
Definition: linkedlistutils.h:155
ptrdiff_t difference_type
Definition: linkedlistutils.h:124
bool operator!=(const base_iterator &rhs) const
Definition: linkedlistutils.h:163
base_iterator(element_type *ptr)
Definition: linkedlistutils.h:138
WrapperType & operator*() noexcept
Definition: linkedlistutils.h:165
bool operator==(const base_iterator &rhs) const
Definition: linkedlistutils.h:162
value_type * pointer
Definition: linkedlistutils.h:125
std::iterator_traits< base_iterator > d
Definition: linkedlistutils.h:120
iterator_category iterator_category
Definition: linkedlistutils.h:122
base_iterator & operator++()
Definition: linkedlistutils.h:147
value_type & reference
Definition: linkedlistutils.h:126
WrapperType * operator->() noexcept
Definition: linkedlistutils.h:170
Universal wrapper for one directional linked list elements.
Definition: linkedlistutils.h:105
W element_wrapper_type
Definition: linkedlistutils.h:108
element_type * raw()
Definition: linkedlistutils.h:205
const element_type * raw() const
Definition: linkedlistutils.h:210
base_iterator< false > iterator
Definition: linkedlistutils.h:177
iterator begin()
Definition: linkedlistutils.h:215
element_type * m_begin
Definition: linkedlistutils.h:265
LinkedListWrapper(element_type *begin)
Definition: linkedlistutils.h:186
D deleter_type
Definition: linkedlistutils.h:112
iterator end()
Definition: linkedlistutils.h:221
wrapper_cast_type m_wrapperCast
Definition: linkedlistutils.h:264
element_type * m_end
Definition: linkedlistutils.h:266
N next_element_type
Definition: linkedlistutils.h:109
const_iterator end() const
Definition: linkedlistutils.h:233
size_t count() const
Log(N) complexity!
Definition: linkedlistutils.h:241
C wrapper_cast_type
Definition: linkedlistutils.h:110
R wrapper_reset_type
Definition: linkedlistutils.h:111
bool isValid()
Definition: linkedlistutils.h:200
~LinkedListWrapper()
Definition: linkedlistutils.h:193
I iterator_category
Definition: linkedlistutils.h:113
element_wrapper_type at(size_t idx) const
Log(N) complexity.
Definition: linkedlistutils.h:251
const_iterator begin() const
Definition: linkedlistutils.h:227
LinkedListWrapper()
Definition: linkedlistutils.h:180
T element_type
Definition: linkedlistutils.h:107
base_iterator< true > const_iterator
Definition: linkedlistutils.h:178
Definition: audioresampler.cpp:8
This functor uses simple notation to take next element from linked list.
Definition: linkedlistutils.h:37
T * operator()(T *x) const
Definition: linkedlistutils.h:38
This functor used by default to set new pointer that will be wrapped by W wrapper.
Definition: linkedlistutils.h:77
void operator()(W &wrapper, T *ptr) const
Definition: linkedlistutils.h:78
This functor used by default to take access to raw pointer that wrapped by W wrapper.
Definition: linkedlistutils.h:63
T * operator()(const W &wrapper) const
Definition: linkedlistutils.h:64
This functor uses increment operation to take next element in list/array.
Definition: linkedlistutils.h:50
T * operator()(T *x) const
Definition: linkedlistutils.h:51
This deleter does nothing.
Definition: linkedlistutils.h:12
void operator()(T *) const
Definition: linkedlistutils.h:13
This deleter simple call 'delete' operator.
Definition: linkedlistutils.h:23
void operator()(T *x) const
Definition: linkedlistutils.h:24