acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
Loading...
Searching...
No Matches
_impl_generic_map.h
1
// Created by camilo on 2023-01-06 19:20 <3ThomasBorregaardSorensen!!
2
#pragma once
3
4
5
namespace
generic
6
{
7
8
9
namespace
map_base
10
{
11
12
13
template
<
typename
CONTAINER,
typename
PAYLOAD >
14
inline
bool
contains_payload(
const
CONTAINER & container,
const
PAYLOAD & payload)
15
{
16
17
auto
payloads = container.payloads();
18
19
for
(
auto
& item : payloads)
20
{
21
22
if
(item == payload)
23
{
24
25
return
true
;
26
27
}
28
29
}
30
31
return
false
;
32
33
}
34
35
36
template
<
typename
CONTAINER,
typename
PAYLOAD,
typename
START >
37
inline
auto
find_payload(
const
CONTAINER & container,
const
PAYLOAD & payload,
const
START & start)
38
{
39
40
auto
p = start;
41
42
for
(; p; p++)
43
{
44
45
if
(payload_of(*p) == payload)
46
{
47
48
return
p;
49
50
}
51
52
}
53
54
return
p;
55
56
}
57
58
59
template
<
typename
CONTAINER,
typename
PAYLOAD >
60
inline
auto
find_payload(
const
CONTAINER & container,
const
PAYLOAD & payload)
61
{
62
63
return
find_payload(container, payload, ((CONTAINER &)container).begin());
64
65
}
66
67
68
template
<
typename
CONTAINER,
typename
PAYLOAD >
69
inline
bool
erase_payload(CONTAINER & container,
const
PAYLOAD & payload)
70
{
71
72
auto
p = find_payload(container, payload);
73
74
if
(!p)
75
{
76
77
return
false
;
78
79
}
80
81
auto
pnonconst = (non_const <
decltype
(p)>) p;
82
83
container.erase(pnonconst);
84
85
return
true
;
86
87
}
88
89
90
//template < typename ITERATOR >
91
//void delete_erase(ITERATOR & iterator)
92
//{
93
//
94
// auto p = iterator.operator->();
95
//
96
// ::acme::del(p);
97
//
98
// ::erase(iterator);
99
//
100
//}
101
//
102
//
103
//template < typename ITERATOR >
104
//void erase(ITERATOR & iterator)
105
//{
106
//
107
// iterator.m_pcontainer->erase_item(iterator.item());
108
//
109
//}
110
111
112
}
// namespace map_base
113
114
115
116
}
// namespace generic
117
118
119
120
prototype
collection
_impl_generic_map.h
Generated by
1.17.0