acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
Loading...
Searching...
No Matches
set_node.h
1
#pragma once
2
3
4
#include "pair.h"
5
#include "list_iterator.h"
6
7
8
template
<
typename
ITEM >
9
class
set_node
:
10
public
ITEM
11
{
12
public
:
13
14
15
using
BASE_NODE = ::set_node < ITEM >;
16
17
18
using
BASE_ITEM = ITEM;
19
20
21
using
KEY =
typename
BASE_ITEM::KEY;
22
using
ARG_KEY =
typename
BASE_ITEM::ARG_KEY;
23
using
PAYLOAD =
typename
BASE_ITEM::PAYLOAD;
24
using
ARG_PAYLOAD =
typename
BASE_ITEM::ARG_PAYLOAD;
25
26
27
BASE_NODE * m_back =
nullptr
;
28
BASE_NODE * m_next =
nullptr
;
29
BASE_NODE * m_nextHash =
nullptr
;
30
BASE_NODE ** m_pbackHash =
nullptr
;
31
32
33
using
BASE_ITEM::BASE_ITEM;
34
35
36
void
defer_set_payload(ARG_PAYLOAD
payload
)
37
{
38
39
BASE_ITEM::defer_set_payload(
payload
);
40
41
}
42
43
44
auto
& back() {
return
m_back; }
45
auto
& back()
const
{
return
m_back; }
46
47
auto
& next() {
return
m_next; }
48
auto
& next()
const
{
return
m_next; }
49
50
auto
& item() {
return
*(BASE_ITEM *)
this
; }
51
auto
& item()
const
{
return
*(BASE_ITEM *)
this
; }
52
53
auto
& node() {
return
*
this
; }
54
auto
& node()
const
{
return
*
this
; }
55
56
::collection::index index()
const
57
{
58
59
::collection::index i = 0;
60
61
auto
p = m_back;
62
63
while
(*p)
64
{
65
66
i++;
67
68
p++;
69
70
}
71
72
return
i;
73
74
}
75
76
77
};
78
79
80
template
<
typename
PAIR >
81
inline
typename
PAIR::TYPE2& payload_of(
const
set_node<PAIR>
&
pair
)
82
{
83
84
return
(
typename
PAIR::TYPE2 &)
pair
.element2();
85
86
}
87
88
89
90
template
<
typename
TYPE >
91
inline ::pointer<TYPE>& payload_of(const ::pointer<TYPE> & p)
92
{
93
94
return
(::pointer<TYPE>&) p;
95
96
}
97
98
99
100
101
template
<
typename
TYPE >
102
::collection::index an_index_of(
const
set_node < TYPE > * p)
103
{
104
105
return
p->index();
106
107
}
108
109
110
111
template
<
typename
TYPE >
112
TYPE * next_as_of_iterator(
const
set_node < TYPE > * p)
113
{
114
115
return
p->m_pnext;
116
117
}
118
119
120
121
122
pair
Definition
_template_forward_declaration.h:327
payload
Definition
payload.h:54
set_node
Definition
set_node.h:11
prototype
collection
set_node.h
Generated by
1.17.0