- class dll_t;
- class dll_node_t
- {
- friend class dll_t;
- public:
- explicit dll_node_t ();
- void data (void *_p_data) {p_data_ = _p_data;}
- void *data () {return p_data_;}
- private:
- dll_node_t *prev_;
- dll_node_t *next_;
- void *p_data_;
- };
- class channel_t
- {
- public:
- channel_t () : node ()
- {
- node_.data (reinterpret_cast <void *> (this));
- }
- private:
- dll_node_t node_;
- };
- template <typename T_NODE> class dll_t;
- template <typename T_DATA> class dll_node_t
- {
- friend class dll_t <dll_node_t <T_DATA> >;
- public:
- explicit dll_node_t ();
- void data (T_DATA *_p_data) {p_data_ = _p_data;}
- T_DATA *data () {return p_data_;}
- private:
- dll_node_t *prev_;
- dll_node_t *next_;
- T_DATA *p_data_;
- };
- class channel_t
- {
- public:
- channel_t (): node_ ()
- {
- node_.data (this);
- }
- private:
- dll_node_t <channel_t> node_;
- };