acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
Loading...
Searching...
No Matches
array_iterator.h
1
// From iterator.h as base by camilo on 2022-09-12 20:09 <3ThomasBorregaardSorensen!!
2
#pragma once
3
4
5
template
<
typename
BASE_ITERATOR >
6
class
make_array_iterator
:
7
public
BASE_ITERATOR
8
{
9
public
:
10
11
12
using
ITERATOR_TYPE = BASE_ITERATOR;
13
14
15
using
ITEM = ITERATOR_TYPE::ITEM;
16
17
18
using
ITERATOR = ::make_iterator < typename BASE_ITERATOR::ITERATOR >;
19
using
CONST_ITERATOR = ::make_iterator < typename BASE_ITERATOR::CONST_ITERATOR >;
20
using
THIS_ITERATOR = ::make_iterator < BASE_ITERATOR >;
21
22
23
using
ITERATOR_TYPE::ITERATOR_TYPE;
24
25
26
constexpr ::collection::count operator - (
const
CONST_ITERATOR &
iterator
)
const
27
{
28
29
return ::count_as_of_iterator(
iterator
.get(), ITERATOR_TYPE::get());
30
31
}
32
33
34
//constexpr bool operator == (const CONST_ITERATOR & iterator) const
35
//{
36
37
// return ITERATOR::get() == iterator.get();
38
39
//}
40
41
42
//constexpr std::strong_ordering operator <=> (const CONST_ITERATOR & iterator) const
43
//{
44
45
// return ITERATOR::get() <=> iterator.get();
46
47
//}
48
49
50
THIS_ITERATOR & operator ++()
51
{
52
53
ITERATOR_TYPE::m_p = ::next_as_of_iterator(ITERATOR_TYPE::get());
54
55
return
*
this
;
56
57
}
58
59
60
THIS_ITERATOR operator ++(::i32)
61
{
62
63
ITERATOR_TYPE
item
(*
this
);
64
65
++(*this);
66
67
return
item
;
68
69
}
70
71
72
73
74
75
};
76
77
78
79
template
<
typename
TYPE >
80
struct
get_array_iterator
81
{
82
83
using
type = ::make_array_iterator < ::iterator_base < TYPE > >;
84
85
};
86
87
88
template
<
typename
TYPE >
89
struct
get_array_iterator
< TYPE * >
90
{
91
92
using
type = TYPE *;
93
94
};
95
96
97
template
<
typename
TYPE >
98
struct
get_array_const_iterator
99
{
100
101
using
type = ::make_array_iterator < ::const_iterator_base < TYPE > >;
102
103
};
104
105
106
template
<
typename
TYPE >
107
struct
get_array_const_iterator
< TYPE * >
108
{
109
110
using
type =
const
TYPE *;
111
112
};
113
114
115
116
117
118
//template < typename TYPE >
119
//constexpr bool range_is_ok(const TYPE * begin, const TYPE * end)
120
//{
121
//
122
// return !::range_is_end(begin_end);
123
//
124
//}
125
126
127
item
Definition
item.h:93
make_array_iterator
Definition
array_iterator.h:8
get_array_const_iterator
Definition
array_iterator.h:99
get_array_iterator
Definition
array_iterator.h:81
iterator
Definition
std_iterator.h:49
prototype
collection
array_iterator.h
Generated by
1.17.0