acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
list_node.h
1// From list_base by camilo on 2022-09-12 20:10 <3ThomasBorregaardSorensen!!
2#pragma once
3
4
5//
6//#include "list_iterator.h"
7
8
9template < class TYPE >
10class list_node
11{
12public:
13
14
15 using ITEM = TYPE;
16 using ARG_ITEM = argument_of < TYPE >;
17
18 using this_iterator = ::list_iterator < list_node < TYPE > * >;
19
20
21 this_iterator m_next;
22 this_iterator m_back;
23 TYPE m_element;
24
25
26 list_node(ARG_ITEM t) :
27 m_element(t)
28 {
29
30 }
31
32 list_node(ITEM && t) :
33 m_element(::transfer(t))
34 {
35
36 }
37
38 operator TYPE & () { return m_element; }
39 operator const TYPE & () const { return (const TYPE & ) m_element; }
40
41
42 auto & back() { return m_back; }
43 auto & back()const { return m_back; }
44
45 auto & next() { return m_next; }
46 auto & next()const { return m_next; }
47
48
49 auto & item() { return m_element; }
50 auto & item() const { return m_element; }
51
52
53 auto & topic() { return m_element; }
54 auto & topic() const { return m_element; }
55
56
57 auto transfer_topic() { return ::transfer(m_element); }
58
59
60 auto transfer() { return ::transfer(*this); }
61
62
63};
64
65
66