acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
Loading...
Searching...
No Matches
_impl_string_range.h
1
// From _string_base_impl.h by camilo on 2012-12-18 17:04 <3ThomasBorregaardSorensen!!
2
#pragma once
3
4
5
6
//template < typename ITERATOR_TYPE >
7
//constexpr ::std::strong_ordering const_string_range < ITERATOR_TYPE > ::order(const SCOPED_STRING & range) const noexcept
8
//{
9
//
10
// return this->order(range, ::comparison::comparison < CHARACTER >());
11
//
12
//}
13
//
14
15
//template < typename ITERATOR_TYPE >
16
//inline ::std::strong_ordering const_string_range < ITERATOR_TYPE > ::case_insensitive_order(const SCOPED_STRING & range) const noexcept
17
//{
18
//
19
// return this->order(range, ::comparison::case_insensitive < CHARACTER >());
20
//
21
//}
22
//
23
24
template
<
typename
ITERATOR_TYPE >
25
inline ::std::strong_ordering const_string_range < ITERATOR_TYPE > ::collate(
const
SCOPED_STRING &
range
)
const
noexcept
26
{
27
28
return
range_collate<const CHARACTER *>(*
this
,
range
);
29
30
}
31
32
33
template
<
typename
ITERATOR_TYPE >
34
inline ::std::strong_ordering const_string_range < ITERATOR_TYPE > ::case_insensitive_collate(
const
SCOPED_STRING &
range
)
const
noexcept
35
{
36
37
return
case_insensitive_range_collate<const CHARACTER *>(*
this
,
range
);
38
39
}
40
41
42
//template < typename ITERATOR_TYPE >
43
//inline ::std::strong_ordering string_range < ITERATOR_TYPE > ::order(const SCOPED_STRING & range, character_count countRange) const noexcept
44
//{
45
//
46
// return this->order(range.start_count(0, countRange));
47
//
48
//}
49
//
50
//
51
//template < typename ITERATOR_TYPE >
52
//inline ::std::strong_ordering string_range < ITERATOR_TYPE > ::case_insensitive_order(const SCOPED_STRING & range, character_count countRange) const noexcept
53
//{
54
//
55
// return this->case_insensitive_order(range.start_count(0, countRange));
56
//
57
//}
58
//
59
//
60
//template < typename ITERATOR_TYPE >
61
//inline ::std::strong_ordering string_range < ITERATOR_TYPE > ::collate(const SCOPED_STRING & range, character_count countRange) const noexcept
62
//{
63
//
64
// return this->collate(range.start_count(0, countRange));
65
//
66
//}
67
//
68
//
69
//template < typename ITERATOR_TYPE >
70
//inline ::std::strong_ordering string_range < ITERATOR_TYPE > ::case_insensitive_collate(const SCOPED_STRING & range, character_count countRange) const noexcept
71
//{
72
//
73
// return this->case_insensitive_collate(range.start_count(0, countRange));
74
//
75
//}
76
//
77
//
78
//template < typename ITERATOR_TYPE >
79
//inline ::std::strong_ordering string_range < ITERATOR_TYPE > ::order(character_count start, character_count count, const SCOPED_STRING & range) const noexcept
80
//{
81
//
82
// return this->start_count(start, count).order(range);
83
//
84
//}
85
//
86
//
87
//template < typename ITERATOR_TYPE >
88
//inline ::std::strong_ordering string_range < ITERATOR_TYPE > ::case_insensitive_order(character_count start, character_count count, const SCOPED_STRING & range) const noexcept
89
//{
90
//
91
// return this->start_count(start, count).case_insensitive_order(range);
92
//
93
//}
94
//
95
//
96
//template < typename ITERATOR_TYPE >
97
//inline ::std::strong_ordering string_range < ITERATOR_TYPE > ::collate(character_count start, character_count count, const SCOPED_STRING & range) const noexcept
98
//{
99
//
100
// return this->start_count(start, count).collate(range);
101
//
102
//}
103
//
104
//
105
//template < typename ITERATOR_TYPE >
106
//inline ::std::strong_ordering string_range < ITERATOR_TYPE > ::case_insensitive_collate(character_count start, character_count count, const SCOPED_STRING & range) const noexcept
107
//{
108
//
109
// return this->start_count(start, count).case_insensitive_collate(range);
110
//
111
//}
112
//
113
//
114
//template < typename ITERATOR_TYPE >
115
//inline ::std::strong_ordering string_range < ITERATOR_TYPE > ::order(character_count start, character_count count, const SCOPED_STRING & range, character_count startRange, character_count countRange) const noexcept
116
//{
117
//
118
// return this->start_count(start, count).order(range.start_count(startRange, countRange));
119
//
120
//}
121
//
122
//
123
//template < typename ITERATOR_TYPE >
124
//inline ::std::strong_ordering string_range < ITERATOR_TYPE > ::case_insensitive_order(character_count start, character_count count, const SCOPED_STRING & range, character_count startRange, character_count countRange) const noexcept
125
//{
126
//
127
// return this->start_count(start, count).case_insensitive_order(range.start_count(startRange, countRange));
128
//
129
//}
130
//
131
//
132
//template < typename ITERATOR_TYPE >
133
//inline ::std::strong_ordering string_range < ITERATOR_TYPE > ::collate(character_count start, character_count count, const SCOPED_STRING & range, character_count startRange, character_count countRange) const noexcept
134
//{
135
//
136
// return this->start_count(start, count).collate(range.start_count(startRange, countRange));
137
//
138
//}
139
//
140
//
141
//template < typename ITERATOR_TYPE >
142
//inline ::std::strong_ordering string_range < ITERATOR_TYPE > ::case_insensitive_collate(character_count start, character_count count, const SCOPED_STRING & range, character_count startRange, character_count countRange) const noexcept
143
//{
144
//
145
// return this->start_count(start, count).case_insensitive_collate(range.start_count(startRange, countRange));
146
//
147
//}
148
149
150
151
152
153
154
template
<
typename
ITERATOR_TYPE >
155
bool
const_string_range < ITERATOR_TYPE > ::is_trimmed_empty()
const
156
{
157
158
auto
p = this->m_begin;
159
160
if
(::is_null(p))
161
{
162
163
return
true
;
164
165
}
166
167
auto
end = this->m_end;
168
169
while
(p < end)
170
{
171
172
if
(!unicode_is_whitespace(p))
173
{
174
175
return
false
;
176
177
}
178
179
p = unicode_next(p);
180
181
}
182
183
return
true
;
184
185
}
186
187
188
189
template
<
typename
ITERATOR_TYPE >
190
string_range < ITERATOR_TYPE > string_range < ITERATOR_TYPE > ::consume_token_until_any_character_in(
const
SCOPED_STRING& scopedstrCharacters,
bool
bReturnSeparator,
bool
bSkipAnyCharactersIn)
191
{
192
193
auto
p1 = this->find_first_character_in(scopedstrCharacters);
194
195
if
(!p1)
196
{
197
198
auto
range
= (*this)();
199
200
if
(this->m_begin != this->m_end)
201
{
202
203
this->m_begin = this->m_end;
204
205
//this->m_erange = e_range_none;
206
207
//this->m_erange = (enum_range)(this->m_erange & ~e_range_string);
208
209
}
210
211
return
range
;
212
213
}
214
215
if
(bSkipAnyCharactersIn)
216
{
217
218
auto
p2 = (*this)(p1).skip_any_character_in(scopedstrCharacters);
219
220
if
(bReturnSeparator)
221
{
222
223
auto
range
= string_range < ITERATOR_TYPE >(this->m_begin, p2);
224
225
this->set_begin(p2);
226
227
return
range
;
228
229
}
230
231
auto
range
= string_range < ITERATOR_TYPE >(this->m_begin, p1);
232
233
this->set_begin(p2);
234
235
return
range
;
236
237
}
238
239
if
(bReturnSeparator)
240
{
241
242
auto
range
= string_range < ITERATOR_TYPE >(this->m_begin, p1 + 1);
243
244
this->set_begin(p1 + 1);
245
246
return
range
;
247
248
}
249
250
auto
range
= string_range < ITERATOR_TYPE >(this->m_begin, p1);
251
252
this->set_begin(p1 + 1);
253
254
return
range
;
255
256
}
range
Definition
range.h:223
prototype
string
_impl_string_range.h
Generated by
1.17.0