foobar2000 SDK  2015-01-14
Public Types | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes
pfc::chain_list_v2_t< _t_item >

#include <chain_list_v2.h>

Public Types

typedef ::pfc::const_iterator< t_itemconst_iterator
 
typedef ::pfc::iterator< t_itemiterator
 
typedef __chain_list_elem< t_itemt_elem
 
typedef _t_item t_item
 
typedef chain_list_v2_t< t_itemt_self
 

Public Member Functions

 chain_list_v2_t ()
 
 chain_list_v2_t (const t_self &p_source)
 
 ~chain_list_v2_t ()
 
template<typename t_in >
void _add (const t_in &in)
 
void _link_first (const_iterator const &iter)
 
void _link_last (const_iterator const &iter)
 
template<typename t_in >
void _set (const t_in &in)
 
template<typename t_source >
void add_item (const t_source &p_source)
 
const_iterator by_index (t_size p_index) const
 
iterator by_index (t_size p_index)
 
template<typename t_callback >
void enumerate (t_callback &p_callback) const
 
template<typename t_callback >
void enumerate (t_callback &p_callback)
 
template<typename t_source >
const_iterator find_item (const t_source &p_item) const
 
template<typename t_source >
iterator find_item (const t_source &p_item)
 
iterator first ()
 
const_iterator first () const
 
t_size get_count () const
 
template<typename t_source >
bool have_item (const t_source &p_item) const
 
iterator insert_after (const_iterator const &p_iter)
 
template<typename t_source >
iterator insert_after (const_iterator const &p_iter, const t_source &p_source)
 
iterator insert_before (const_iterator const &p_iter)
 
template<typename t_source >
iterator insert_before (const_iterator const &p_iter, const t_source &p_source)
 
iterator insert_first ()
 
template<typename t_source >
iterator insert_first (const t_source &p_source)
 
iterator insert_last ()
 
template<typename t_source >
iterator insert_last (const t_source &p_source)
 
iterator last ()
 
const_iterator last () const
 
template<typename t_source >
t_selfoperator+= (const t_source &p_source)
 
t_selfoperator<< (t_self &p_other)
 
template<typename t_in >
t_selfoperator= (const t_in &in)
 
t_selfoperator= (const t_self &p_other)
 
t_selfoperator>> (t_self &p_other)
 
void remove (const_iterator const &p_iter)
 
void remove_all () throw ()
 
template<typename t_source >
bool remove_item (const t_source &p_item)
 
void remove_range (const_iterator const &p_from, const_iterator const &p_to)
 
void remove_single (const_iterator const &p_iter)
 
template<typename t_source >
void set_single (const t_source &p_item)
 

Private Member Functions

t_elem__by_index (t_size p_index) const
 
template<typename t_source >
bool __find (t_elem *&p_elem, const t_source &p_item) const
 
t_elem__link_first (t_elem *p_elem) throw ()
 
t_elem__link_last (t_elem *p_elem) throw ()
 
t_elem__link_next (t_elem *p_prev, t_elem *p_elem) throw ()
 
t_elem__link_prev (t_elem *p_next, t_elem *p_elem) throw ()
 
void __on_link (t_elem *p_elem) throw ()
 
t_elem__unlink (t_elem *p_elem) throw ()
 
void __unlink_helper (t_elem *p_elem) throw ()
 
t_elem__unlink_temporary (t_elem *p_elem) throw ()
 

Static Private Member Functions

template<typename t_elemwalk , typename t_callback >
static void __enumerate_chain (t_elemwalk *p_elem, t_callback &p_callback)
 
static t_elem_elem (const_iterator const &iter)
 

Private Attributes

t_size m_count
 
t_elemm_first
 
t_elemm_last
 

Detailed Description

template<typename _t_item>
class pfc::chain_list_v2_t< _t_item >

Differences between chain_list_v2_t<> and old chain_list_t<>:
Iterators pointing to removed items as well as to items belonging to no longer existing list objects remain valid but they're no longer walkable - as if the referenced item was the only item in the list. The old class invalidated iterators on deletion instead.

Definition at line 26 of file chain_list_v2.h.

Member Typedef Documentation

template<typename _t_item>
typedef ::pfc::const_iterator<t_item> pfc::chain_list_v2_t< _t_item >::const_iterator

Definition at line 31 of file chain_list_v2.h.

template<typename _t_item>
typedef ::pfc::iterator<t_item> pfc::chain_list_v2_t< _t_item >::iterator

Definition at line 30 of file chain_list_v2.h.

template<typename _t_item>
typedef __chain_list_elem<t_item> pfc::chain_list_v2_t< _t_item >::t_elem

Definition at line 32 of file chain_list_v2.h.

template<typename _t_item>
typedef _t_item pfc::chain_list_v2_t< _t_item >::t_item

Definition at line 28 of file chain_list_v2.h.

template<typename _t_item>
typedef chain_list_v2_t<t_item> pfc::chain_list_v2_t< _t_item >::t_self

Definition at line 29 of file chain_list_v2.h.

Constructor & Destructor Documentation

template<typename _t_item>
pfc::chain_list_v2_t< _t_item >::chain_list_v2_t ( )
inline

Definition at line 34 of file chain_list_v2.h.

template<typename _t_item>
pfc::chain_list_v2_t< _t_item >::chain_list_v2_t ( const t_self p_source)
inline

Definition at line 35 of file chain_list_v2.h.

35  : m_first(), m_last(), m_count() {
36  try {
37  *this = p_source;
38  } catch(...) {
39  remove_all();
40  throw;
41  }
42  }
template<typename _t_item>
pfc::chain_list_v2_t< _t_item >::~chain_list_v2_t ( )
inline

Definition at line 105 of file chain_list_v2.h.

105 {remove_all();}

Member Function Documentation

template<typename _t_item>
t_elem* pfc::chain_list_v2_t< _t_item >::__by_index ( t_size  p_index) const
inlineprivate

Definition at line 177 of file chain_list_v2.h.

177  {
178  t_elem * walk = m_first;
179  while(p_index > 0 && walk != NULL) {
180  p_index--;
181  walk = walk->m_next;
182  }
183  return walk;
184  }
__chain_list_elem< t_item > t_elem
Definition: chain_list_v2.h:32
template<typename _t_item>
template<typename t_elemwalk , typename t_callback >
static void pfc::chain_list_v2_t< _t_item >::__enumerate_chain ( t_elemwalk *  p_elem,
t_callback &  p_callback 
)
inlinestaticprivate

Definition at line 186 of file chain_list_v2.h.

186  {
187  t_elemwalk * walk = p_elem;
188  while(walk != NULL) {
189  p_callback(walk->m_content);
190  walk = walk->m_next;
191  }
192  }
template<typename _t_item>
template<typename t_source >
bool pfc::chain_list_v2_t< _t_item >::__find ( t_elem *&  p_elem,
const t_source &  p_item 
) const
inlineprivate

Definition at line 194 of file chain_list_v2.h.

194  {
195  for(t_elem * walk = m_first; walk != NULL; walk = walk->m_next) {
196  if (walk->m_content == p_item) {
197  p_elem = walk; return true;
198  }
199  }
200  return false;
201  }
__chain_list_elem< t_item > t_elem
Definition: chain_list_v2.h:32
template<typename _t_item>
t_elem* pfc::chain_list_v2_t< _t_item >::__link_first ( t_elem p_elem)
throw (
)
inlineprivate

Definition at line 224 of file chain_list_v2.h.

224  {
225  __on_link(p_elem);
226  p_elem->m_next = m_first;
227  p_elem->m_prev = NULL;
228  (m_first == NULL ? m_last : m_first->m_prev) = p_elem;
229  m_first = p_elem;
230  return p_elem;
231  }
void __on_link(t_elem *p_elem)
template<typename _t_item>
t_elem* pfc::chain_list_v2_t< _t_item >::__link_last ( t_elem p_elem)
throw (
)
inlineprivate

Definition at line 232 of file chain_list_v2.h.

232  {
233  __on_link(p_elem);
234  p_elem->m_prev = m_last;
235  p_elem->m_next = NULL;
236  (m_last == NULL ? m_first : m_last->m_next) = p_elem;
237  m_last = p_elem;
238  return p_elem;
239  }
void __on_link(t_elem *p_elem)
template<typename _t_item>
t_elem* pfc::chain_list_v2_t< _t_item >::__link_next ( t_elem p_prev,
t_elem p_elem 
)
throw (
)
inlineprivate

Definition at line 240 of file chain_list_v2.h.

240  {
241  __on_link(p_elem);
242  p_elem->m_prev = p_prev;
243  p_elem->m_next = p_prev->m_next;
244  (p_prev->m_next != NULL ? p_prev->m_next->m_prev : m_last) = p_elem;
245  p_prev->m_next = p_elem;
246  return p_elem;
247  }
void __on_link(t_elem *p_elem)
template<typename _t_item>
t_elem* pfc::chain_list_v2_t< _t_item >::__link_prev ( t_elem p_next,
t_elem p_elem 
)
throw (
)
inlineprivate

Definition at line 248 of file chain_list_v2.h.

248  {
249  __on_link(p_elem);
250  p_elem->m_next = p_next;
251  p_elem->m_prev = p_next->m_prev;
252  (p_next->m_prev != NULL ? p_next->m_prev->m_next : m_first) = p_elem;
253  p_next->m_prev = p_elem;
254  return p_elem;
255  }
void __on_link(t_elem *p_elem)
template<typename _t_item>
void pfc::chain_list_v2_t< _t_item >::__on_link ( t_elem p_elem)
throw (
)
inlineprivate

Definition at line 221 of file chain_list_v2.h.

221  {
222  p_elem->add_ref(); ++m_count;
223  }
template<typename _t_item>
t_elem* pfc::chain_list_v2_t< _t_item >::__unlink ( t_elem p_elem)
throw (
)
inlineprivate

Definition at line 216 of file chain_list_v2.h.

216  {
217  __unlink_helper(p_elem);
218  --m_count; p_elem->release();
219  return p_elem;
220  }
void __unlink_helper(t_elem *p_elem)
template<typename _t_item>
void pfc::chain_list_v2_t< _t_item >::__unlink_helper ( t_elem p_elem)
throw (
)
inlineprivate

Definition at line 203 of file chain_list_v2.h.

203  {
204  (p_elem->m_prev == NULL ? m_first : p_elem->m_prev->m_next) = p_elem->m_next;
205  (p_elem->m_next == NULL ? m_last : p_elem->m_next->m_prev) = p_elem->m_prev;
206  p_elem->m_next = p_elem->m_prev = NULL;
207  }
template<typename _t_item>
t_elem* pfc::chain_list_v2_t< _t_item >::__unlink_temporary ( t_elem p_elem)
throw (
)
inlineprivate

Definition at line 210 of file chain_list_v2.h.

210  {
211  __unlink_helper(p_elem);
212  --m_count; p_elem->__release_temporary();
213  return p_elem;
214  }
void __unlink_helper(t_elem *p_elem)
template<typename _t_item>
template<typename t_in >
void pfc::chain_list_v2_t< _t_item >::_add ( const t_in &  in)
inline

Definition at line 46 of file chain_list_v2.h.

46  {
47  for(typename t_in::const_iterator iter = in.first(); iter.is_valid(); ++in) add_item(*iter);
48  }
void add_item(const t_source &p_source)
template<typename _t_item>
static t_elem* pfc::chain_list_v2_t< _t_item >::_elem ( const_iterator const &  iter)
inlinestaticprivate

Definition at line 174 of file chain_list_v2.h.

174  {
175  return static_cast<t_elem*>(iter._node());
176  }
__chain_list_elem< t_item > t_elem
Definition: chain_list_v2.h:32
template<typename _t_item>
void pfc::chain_list_v2_t< _t_item >::_link_first ( const_iterator const &  iter)
inline

Links an object that has been unlinked from another list. Unsafe.

Definition at line 168 of file chain_list_v2.h.

168  {
169  PFC_ASSERT(iter.is_valid());
170  PFC_ASSERT( _elem(iter)->m_prev == NULL && _elem(iter)->m_next == NULL );
171  __link_first(_elem(iter));
172  }
static t_elem * _elem(const_iterator const &iter)
t_elem * __link_first(t_elem *p_elem)
template<typename _t_item>
void pfc::chain_list_v2_t< _t_item >::_link_last ( const_iterator const &  iter)
inline

Links an object that has been unlinked from another list. Unsafe.

Definition at line 162 of file chain_list_v2.h.

162  {
163  PFC_ASSERT(iter.is_valid());
164  PFC_ASSERT( _elem(iter)->m_prev == NULL && _elem(iter)->m_next == NULL );
165  __link_last(_elem(iter));
166  }
t_elem * __link_last(t_elem *p_elem)
static t_elem * _elem(const_iterator const &iter)
template<typename _t_item>
template<typename t_in >
void pfc::chain_list_v2_t< _t_item >::_set ( const t_in &  in)
inline

Definition at line 43 of file chain_list_v2.h.

43  {
44  remove_all(); _add(in);
45  }
void _add(const t_in &in)
Definition: chain_list_v2.h:46
template<typename _t_item>
template<typename t_source >
void pfc::chain_list_v2_t< _t_item >::add_item ( const t_source &  p_source)
inline

Definition at line 108 of file chain_list_v2.h.

108  {
109  __link_last(new t_elem(p_source));
110  }
t_elem * __link_last(t_elem *p_elem)
__chain_list_elem< t_item > t_elem
Definition: chain_list_v2.h:32
template<typename _t_item>
const_iterator pfc::chain_list_v2_t< _t_item >::by_index ( t_size  p_index) const
inline

Slow!

Definition at line 145 of file chain_list_v2.h.

145 {return __by_index(p_index);}
t_elem * __by_index(t_size p_index) const
template<typename _t_item>
iterator pfc::chain_list_v2_t< _t_item >::by_index ( t_size  p_index)
inline

Slow!

Definition at line 147 of file chain_list_v2.h.

147 {return __by_index(p_index);}
t_elem * __by_index(t_size p_index) const
template<typename _t_item>
template<typename t_callback >
void pfc::chain_list_v2_t< _t_item >::enumerate ( t_callback &  p_callback) const
inline

Definition at line 92 of file chain_list_v2.h.

92 {__enumerate_chain<const t_elem>(m_first,p_callback);}
template<typename _t_item>
template<typename t_callback >
void pfc::chain_list_v2_t< _t_item >::enumerate ( t_callback &  p_callback)
inline

Definition at line 93 of file chain_list_v2.h.

93 {__enumerate_chain<t_elem>(m_first,p_callback);}
template<typename _t_item>
template<typename t_source >
const_iterator pfc::chain_list_v2_t< _t_item >::find_item ( const t_source &  p_item) const
inline

Definition at line 124 of file chain_list_v2.h.

124  {
125  t_elem * elem;
126  if (!__find(elem,p_item)) return const_iterator();
127  return const_iterator(elem);
128  }
::pfc::const_iterator< t_item > const_iterator
Definition: chain_list_v2.h:31
__chain_list_elem< t_item > t_elem
Definition: chain_list_v2.h:32
bool __find(t_elem *&p_elem, const t_source &p_item) const
template<typename _t_item>
template<typename t_source >
iterator pfc::chain_list_v2_t< _t_item >::find_item ( const t_source &  p_item)
inline

Definition at line 130 of file chain_list_v2.h.

130  {
131  t_elem * elem;
132  if (!__find(elem,p_item)) return iterator();
133  return iterator(elem);
134  }
::pfc::iterator< t_item > iterator
Definition: chain_list_v2.h:30
__chain_list_elem< t_item > t_elem
Definition: chain_list_v2.h:32
bool __find(t_elem *&p_elem, const t_source &p_item) const
template<typename _t_item>
iterator pfc::chain_list_v2_t< _t_item >::first ( )
inline

Definition at line 63 of file chain_list_v2.h.

63 {return iterator(m_first);}
::pfc::iterator< t_item > iterator
Definition: chain_list_v2.h:30
template<typename _t_item>
const_iterator pfc::chain_list_v2_t< _t_item >::first ( ) const
inline

Definition at line 65 of file chain_list_v2.h.

65 {return const_iterator(m_first);}
::pfc::const_iterator< t_item > const_iterator
Definition: chain_list_v2.h:31
template<typename _t_item>
t_size pfc::chain_list_v2_t< _t_item >::get_count ( ) const
inline

Definition at line 61 of file chain_list_v2.h.

61 {return m_count;}
template<typename _t_item>
template<typename t_source >
bool pfc::chain_list_v2_t< _t_item >::have_item ( const t_source &  p_item) const
inline

Definition at line 136 of file chain_list_v2.h.

136  {
137  t_elem * dummy;
138  return __find(dummy,p_item);
139  }
__chain_list_elem< t_item > t_elem
Definition: chain_list_v2.h:32
bool __find(t_elem *&p_elem, const t_source &p_item) const
template<typename _t_item>
iterator pfc::chain_list_v2_t< _t_item >::insert_after ( const_iterator const &  p_iter)
inline

Definition at line 117 of file chain_list_v2.h.

117 {return __link_next(_elem(p_iter),new t_elem);}
t_elem * __link_next(t_elem *p_prev, t_elem *p_elem)
__chain_list_elem< t_item > t_elem
Definition: chain_list_v2.h:32
static t_elem * _elem(const_iterator const &iter)
template<typename _t_item>
template<typename t_source >
iterator pfc::chain_list_v2_t< _t_item >::insert_after ( const_iterator const &  p_iter,
const t_source &  p_source 
)
inline

Definition at line 121 of file chain_list_v2.h.

121 {return __link_next(_elem(p_iter),new t_elem(p_source));}
t_elem * __link_next(t_elem *p_prev, t_elem *p_elem)
__chain_list_elem< t_item > t_elem
Definition: chain_list_v2.h:32
static t_elem * _elem(const_iterator const &iter)
template<typename _t_item>
iterator pfc::chain_list_v2_t< _t_item >::insert_before ( const_iterator const &  p_iter)
inline

Definition at line 118 of file chain_list_v2.h.

118 {return __link_prev(_elem(p_iter),new t_elem);}
t_elem * __link_prev(t_elem *p_next, t_elem *p_elem)
__chain_list_elem< t_item > t_elem
Definition: chain_list_v2.h:32
static t_elem * _elem(const_iterator const &iter)
template<typename _t_item>
template<typename t_source >
iterator pfc::chain_list_v2_t< _t_item >::insert_before ( const_iterator const &  p_iter,
const t_source &  p_source 
)
inline

Definition at line 122 of file chain_list_v2.h.

122 {return __link_prev(_elem(p_iter),new t_elem(p_source));}
t_elem * __link_prev(t_elem *p_next, t_elem *p_elem)
__chain_list_elem< t_item > t_elem
Definition: chain_list_v2.h:32
static t_elem * _elem(const_iterator const &iter)
template<typename _t_item>
iterator pfc::chain_list_v2_t< _t_item >::insert_first ( )
inline

Definition at line 116 of file chain_list_v2.h.

116 {return __link_first(new t_elem);}
__chain_list_elem< t_item > t_elem
Definition: chain_list_v2.h:32
t_elem * __link_first(t_elem *p_elem)
template<typename _t_item>
template<typename t_source >
iterator pfc::chain_list_v2_t< _t_item >::insert_first ( const t_source &  p_source)
inline

Definition at line 120 of file chain_list_v2.h.

120 {return __link_first(new t_elem(p_source));}
__chain_list_elem< t_item > t_elem
Definition: chain_list_v2.h:32
t_elem * __link_first(t_elem *p_elem)
template<typename _t_item>
iterator pfc::chain_list_v2_t< _t_item >::insert_last ( )
inline

Definition at line 115 of file chain_list_v2.h.

115 {return __link_last(new t_elem);}
t_elem * __link_last(t_elem *p_elem)
__chain_list_elem< t_item > t_elem
Definition: chain_list_v2.h:32
template<typename _t_item>
template<typename t_source >
iterator pfc::chain_list_v2_t< _t_item >::insert_last ( const t_source &  p_source)
inline

Definition at line 119 of file chain_list_v2.h.

119 {return __link_last(new t_elem(p_source));}
t_elem * __link_last(t_elem *p_elem)
__chain_list_elem< t_item > t_elem
Definition: chain_list_v2.h:32
template<typename _t_item>
iterator pfc::chain_list_v2_t< _t_item >::last ( )
inline

Definition at line 64 of file chain_list_v2.h.

64 {return iterator(m_last);}
::pfc::iterator< t_item > iterator
Definition: chain_list_v2.h:30
template<typename _t_item>
const_iterator pfc::chain_list_v2_t< _t_item >::last ( ) const
inline

Definition at line 66 of file chain_list_v2.h.

66 {return const_iterator(m_last);}
::pfc::const_iterator< t_item > const_iterator
Definition: chain_list_v2.h:31
template<typename _t_item>
template<typename t_source >
t_self& pfc::chain_list_v2_t< _t_item >::operator+= ( const t_source &  p_source)
inline

Definition at line 112 of file chain_list_v2.h.

112  {
113  add_item(p_source); return *this;
114  }
void add_item(const t_source &p_source)
template<typename _t_item>
t_self& pfc::chain_list_v2_t< _t_item >::operator<< ( t_self p_other)
inline

Definition at line 149 of file chain_list_v2.h.

149  {
150  while(p_other.m_first != NULL) {
151  __link_last( p_other.__unlink_temporary(p_other.m_first) );
152  }
153  return *this;
154  }
t_elem * __link_last(t_elem *p_elem)
template<typename _t_item>
template<typename t_in >
t_self& pfc::chain_list_v2_t< _t_item >::operator= ( const t_in &  in)
inline

Definition at line 49 of file chain_list_v2.h.

49 {_set(in); return *this;}
void _set(const t_in &in)
Definition: chain_list_v2.h:43
template<typename _t_item>
t_self& pfc::chain_list_v2_t< _t_item >::operator= ( const t_self p_other)
inline

Definition at line 51 of file chain_list_v2.h.

51  {
52  remove_all();
53  for(t_elem * walk = p_other.m_first; walk != NULL; walk = walk->m_next) {
54  add_item(walk->m_content);
55  }
56  return *this;
57  }
void add_item(const t_source &p_source)
__chain_list_elem< t_item > t_elem
Definition: chain_list_v2.h:32
template<typename _t_item>
t_self& pfc::chain_list_v2_t< _t_item >::operator>> ( t_self p_other)
inline

Definition at line 155 of file chain_list_v2.h.

155  {
156  while(m_last != NULL) {
157  p_other.__link_first(__unlink_temporary(m_last));
158  }
159  return p_other;
160  }
t_elem * __unlink_temporary(t_elem *p_elem)
template<typename _t_item>
void pfc::chain_list_v2_t< _t_item >::remove ( const_iterator const &  p_iter)
inline

Definition at line 73 of file chain_list_v2.h.

73  {
74  PFC_ASSERT(p_iter.is_valid());
75  __unlink(_elem(p_iter));
76  }
t_elem * __unlink(t_elem *p_elem)
static t_elem * _elem(const_iterator const &iter)
template<typename _t_item>
void pfc::chain_list_v2_t< _t_item >::remove_all ( )
throw (
)
inline

Definition at line 78 of file chain_list_v2.h.

78  {
79  while(m_first != NULL) __unlink(m_first);
80  PFC_ASSERT(m_count == 0);
81  }
t_elem * __unlink(t_elem *p_elem)
template<typename _t_item>
template<typename t_source >
bool pfc::chain_list_v2_t< _t_item >::remove_item ( const t_source &  p_item)
inline

Definition at line 95 of file chain_list_v2.h.

95  {
96  t_elem * elem;
97  if (__find(elem,p_item)) {
98  __unlink(elem);
99  return true;
100  } else {
101  return false;
102  }
103  }
t_elem * __unlink(t_elem *p_elem)
__chain_list_elem< t_item > t_elem
Definition: chain_list_v2.h:32
bool __find(t_elem *&p_elem, const t_source &p_item) const
template<typename _t_item>
void pfc::chain_list_v2_t< _t_item >::remove_range ( const_iterator const &  p_from,
const_iterator const &  p_to 
)
inline

Definition at line 82 of file chain_list_v2.h.

82  {
83  for(t_elem * walk = _elem(p_from);;) {
84  if (walk == NULL) {PFC_ASSERT(!"Should not get here"); break;}//should not happen unless there is a bug in calling code
85  t_elem * next = walk->m_next;
86  __unlink(walk);
87  if (walk == _elem(p_to)) break;
88  walk = next;
89  }
90  }
t_elem * __unlink(t_elem *p_elem)
__chain_list_elem< t_item > t_elem
Definition: chain_list_v2.h:32
static t_elem * _elem(const_iterator const &iter)
template<typename _t_item>
void pfc::chain_list_v2_t< _t_item >::remove_single ( const_iterator const &  p_iter)
inline

Definition at line 68 of file chain_list_v2.h.

68  {
69  PFC_ASSERT(p_iter.is_valid());
70  __unlink(_elem(p_iter));
71  }
t_elem * __unlink(t_elem *p_elem)
static t_elem * _elem(const_iterator const &iter)
template<typename _t_item>
template<typename t_source >
void pfc::chain_list_v2_t< _t_item >::set_single ( const t_source &  p_item)
inline

Definition at line 140 of file chain_list_v2.h.

140  {
141  remove_all(); add_item(p_item);
142  }
void add_item(const t_source &p_source)

Field Documentation

template<typename _t_item>
t_size pfc::chain_list_v2_t< _t_item >::m_count
private

Definition at line 257 of file chain_list_v2.h.

template<typename _t_item>
t_elem* pfc::chain_list_v2_t< _t_item >::m_first
private

Definition at line 256 of file chain_list_v2.h.

template<typename _t_item>
t_elem * pfc::chain_list_v2_t< _t_item >::m_last
private

Definition at line 256 of file chain_list_v2.h.


The documentation for this class was generated from the following file: