lists-inlines.h File
C++ header file with the inline implementations for the µOS++ lists methods. More...
Namespaces Index
| namespace | micro_os_plus |
|
The primary namespace for the µOS++ framework. More... | |
| namespace | utils |
|
The µOS++ utilities definitions. More... | |
Description
C++ header file with the inline implementations for the µOS++ lists methods.
The inlines.h header provides the C++ inline implementations for the µOS++ Intrusive Lists classes.
Class definitions are located in lists.h. Inline methods are separated into this file to improve project structure and maintainability.
File Listing
The file content with the documentation metadata removed is:
44namespace micro_os_plus::utils
75 constexpr double_list_links_base::double_list_links_base ()
93 constexpr double_list_links_base::~double_list_links_base ()
115 previous_ = this;
116 next_ = this;
136 constexpr double_list_links_base*
137 double_list_links_base::next (void) const
139 return next_;
153 constexpr double_list_links_base*
154 double_list_links_base::previous (void) const
156 return previous_;
189 constexpr static_double_list_links::static_double_list_links ()
220 constexpr static_double_list_links::~static_double_list_links ()
254 constexpr double_list_links::double_list_links ()
258 initialize ();
266 constexpr double_list_links::~double_list_links ()
285 constexpr double_list_iterator<T, N, U>::double_list_iterator () : node_{}
299 iterator_pointer const node)
300 : node_{ node }
306 constexpr double_list_iterator<T, N, U>::double_list_iterator (
324 constexpr typename double_list_iterator<T, N, U>::pointer
327 return get_pointer ();
342 constexpr typename double_list_iterator<T, N, U>::reference
345 return *get_pointer ();
357 constexpr double_list_iterator<T, N, U>&
373 constexpr double_list_iterator<T, N, U>
377 node_ = static_cast<iterator_pointer> (node_->next);
390 constexpr double_list_iterator<T, N, U>&
393 node_ = static_cast<iterator_pointer> (node_->previous);
406 constexpr double_list_iterator<T, N, U>
410 node_ = static_cast<iterator_pointer> (node_->previous);
425 const double_list_iterator& other) const
441 const double_list_iterator& other) const
454 constexpr typename double_list_iterator<T, N, U>::iterator_pointer
457 return node_;
499 clear ();
516 constexpr double_list<T, L>::~double_list ()
525 if (!empty ())
542 double_list<T, L>::uninitialized (void) const
546 return links_.uninitialized ();
572 links_.initialize_once ();
585 double_list<T, L>::empty (void) const
588 return !links_.linked ();
601 double_list<T, L>::clear (void)
606 links_.initialize ();
618 constexpr typename double_list<T, L>::pointer
619 double_list<T, L>::head (void) const
633 constexpr typename double_list<T, L>::pointer
634 double_list<T, L>::tail (void) const
653 assert (!links_.uninitialized ());
657 tail ()->link_next (&node);
674 assert (!links_.uninitialized ());
678 head ()->link_previous (&node);
690 typename double_list<T, L>::iterator
691 double_list<T, L>::begin () const
695 assert (!links_.uninitialized ());
698 return iterator{ static_cast<iterator_pointer> (links_.next ()) };
710 typename double_list<T, L>::iterator
711 double_list<T, L>::end () const
716 return iterator{ reinterpret_cast<iterator_pointer> (
717 const_cast<links_type*> (&links_)) };
736 : node_{}
751 : node_{ node }
765 reference element)
766 : node_{ &(element.*MP) }
781 inline typename intrusive_list_iterator<T, N, MP, U>::pointer
784 return get_pointer ();
799 inline typename intrusive_list_iterator<T, N, MP, U>::reference
802 return *get_pointer ();
814 inline intrusive_list_iterator<T, N, MP, U>&
817 node_ = static_cast<iterator_pointer> (node_->next ());
830 inline intrusive_list_iterator<T, N, MP, U>
834 node_ = static_cast<iterator_pointer> (node_->next ());
847 inline intrusive_list_iterator<T, N, MP, U>&
850 node_ = static_cast<iterator_pointer> (node_->previous ());
851 return *this;
867 node_ = static_cast<iterator_pointer> (node_->previous ());
879 template <class T, class N, N T::* MP, class U>
882 const intrusive_list_iterator& other) const
898 const intrusive_list_iterator& other) const
913 inline typename intrusive_list_iterator<T, N, MP, U>::pointer
914 intrusive_list_iterator<T, N, MP, U>::get_pointer (void) const
921 const auto offset = reinterpret_cast<difference_type> (
926 return reinterpret_cast<pointer> (reinterpret_cast<difference_type> (node_)
937 inline typename intrusive_list_iterator<T, N, MP, U>::iterator_pointer
940 return node_;
961 constexpr intrusive_list<T, N, MP, L, U>::intrusive_list ()
973 constexpr intrusive_list<T, N, MP, L, U>::~intrusive_list ()
992 return double_list<N, L>::initialize_once ();
1004 intrusive_list<T, N, MP, L, U>::empty (void) const
1006 return double_list<N, L>::empty ();
1026 const auto offset = reinterpret_cast<difference_type> (
1030 (const_cast<N*> (double_list<N, L>::tail ()))
1032 reinterpret_cast<difference_type> (&node) + offset));
1052 const auto offset = reinterpret_cast<difference_type> (
1056 (const_cast<N*> (double_list<N, L>::head ()))
1058 reinterpret_cast<difference_type> (&node) + offset));
1075 inline typename intrusive_list<T, N, MP, L, U>::iterator
1080 return iterator{ static_cast<iterator_pointer> (
1081 double_list<N, L>::links_.next ()) };
1093 inline typename intrusive_list<T, N, MP, L, U>::iterator
1094 intrusive_list<T, N, MP, L, U>::end () const
1099 using head_type_ = typename double_list<N, L>::links_type;
1100 return iterator{ reinterpret_cast<iterator_pointer> (
1101 const_cast<head_type_*> (double_list<N, L>::links_pointer ())) };
1118 inline typename intrusive_list<T, N, MP, L, U>::pointer
1126 const auto offset = reinterpret_cast<difference_type> (
1131 return reinterpret_cast<pointer> (reinterpret_cast<difference_type> (node)
1144 typename intrusive_list<T, N, MP, L, U>::pointer
1150 iterator_pointer it
1151 = static_cast<iterator_pointer> (double_list<N, L>::links_.next ());
1154 return get_pointer (it);
1166 typename intrusive_list<T, N, MP, L, U>::pointer
1172 iterator_pointer it = static_cast<iterator_pointer> (
1173 double_list<N, L>::links_.previous ());
1176 return get_pointer (it);
Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.14.0.