| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- //
- // intrusive_node.hpp
- // intrusive_list
- //
- // Created by Sam Jaffe on 1/7/17.
- //
- #pragma once
- template <typename T> class intrusive_list;
- template <typename T>
- class intrusive_node {
- public:
- typedef T value_type;
- typedef T& reference;
- typedef const T& const_reference;
- typedef T* pointer;
- typedef const T* const_pointer;
- private:
- typedef intrusive_node<T>* self;
- public:
- intrusive_node() = delete;
- intrusive_node(const intrusive_node&) = delete;
- intrusive_node(intrusive_node&&) = delete;
- intrusive_node& operator=(const intrusive_node&) = delete;
- intrusive_node& operator=(intrusive_node&&) = delete;
-
- intrusive_node(pointer ptr);
- ~intrusive_node();
-
- private:
- friend intrusive_list<T>;
- friend intrusive_iterator<intrusive_node<T> >;
- friend const_intrusive_iterator<intrusive_node<T> >;
-
- void unlink( );
-
- pointer ptr_ = nullptr;
- intrusive_list<T>* list_ = nullptr;
- self next_ = nullptr;
- self prev_ = nullptr;
- };
|