Skip to content

Commit bc21570

Browse files
authored
Replace deprecated std::iterator (#5147)
Also fix two lambdas with deprecated capture syntax
1 parent c1ead9e commit bc21570

File tree

4 files changed

+118
-79
lines changed

4 files changed

+118
-79
lines changed

src/states_screens/online/online_profile_achievements.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ void BaseOnlineProfileAchievements::displayResults()
198198
all_achievements_list.push_back(it->second);
199199
}
200200

201-
auto compAchievement = [=](Achievement *a, Achievement *b)
201+
auto compAchievement = [this](Achievement *a, Achievement *b)
202202
{
203203
// Sort by name
204204
if (m_sort_column == 0)

src/tracks/track_object_presentation.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1209,7 +1209,7 @@ void TrackObjectPresentationActionTrigger::onTriggerItemApproached(int kart_id)
12091209
{
12101210
Scripting::ScriptEngine::getInstance()->runFunction(true, "void "
12111211
+ m_library_name + "::" + m_action +
1212-
"(int, const string, const string)", [=](asIScriptContext* ctx)
1212+
"(int, const string, const string)", [this, kart_id](asIScriptContext* ctx)
12131213
{
12141214
ctx->SetArgDWord(0, kart_id);
12151215
ctx->SetArgObject(1, &m_library_id);

src/utils/utf8/checked.h

Lines changed: 54 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ DEALINGS IN THE SOFTWARE.
2929
#define UTF8_FOR_CPP_CHECKED_H_2675DCD0_9480_4c0c_B92A_CC14C027B731
3030

3131
#include "core.h"
32+
#include <cstdint>
33+
#include <iterator>
3234
#include <stdexcept>
3335

3436
namespace utf8
@@ -326,59 +328,76 @@ namespace utf8
326328

327329
// The iterator class
328330
template <typename octet_iterator>
329-
class iterator : public std::iterator <std::bidirectional_iterator_tag, uint32_t> {
331+
class iterator {
332+
public:
333+
using iterator_category = std::bidirectional_iterator_tag;
334+
using value_type = uint32_t;
335+
using difference_type = std::ptrdiff_t;
336+
using pointer = const uint32_t*;
337+
using reference = const uint32_t&;
338+
339+
private:
330340
octet_iterator it;
331341
octet_iterator range_start;
332342
octet_iterator range_end;
333-
public:
334-
iterator () {};
335-
explicit iterator (const octet_iterator& octet_it,
343+
344+
public:
345+
iterator() = default;
346+
347+
explicit iterator(const octet_iterator& octet_it,
336348
const octet_iterator& range_start,
337-
const octet_iterator& range_end) :
338-
it(octet_it), range_start(range_start), range_end(range_end)
339-
{
349+
const octet_iterator& range_end)
350+
: it(octet_it), range_start(range_start), range_end(range_end)
351+
{
340352
if (it < range_start || it > range_end)
341-
throw std::out_of_range("Invalid utf-8 iterator position");
342-
}
343-
// the default "big three" are OK
344-
octet_iterator base () const { return it; }
345-
uint32_t operator * () const
346-
{
353+
throw std::out_of_range("Invalid utf-8 iterator position");
354+
}
355+
356+
octet_iterator base() const { return it; }
357+
358+
uint32_t operator * () const
359+
{
347360
octet_iterator temp = it;
348361
return next(temp, range_end);
349-
}
350-
bool operator == (const iterator& rhs) const
351-
{
362+
}
363+
364+
bool operator == (const iterator& rhs) const
365+
{
352366
if (range_start != rhs.range_start || range_end != rhs.range_end)
353-
throw std::logic_error("Comparing utf-8 iterators defined with different ranges");
354-
return (it == rhs.it);
355-
}
356-
bool operator != (const iterator& rhs) const
357-
{
358-
return !(operator == (rhs));
359-
}
360-
iterator& operator ++ ()
361-
{
367+
throw std::logic_error("Comparing utf-8 iterators defined with different ranges");
368+
return it == rhs.it;
369+
}
370+
371+
bool operator != (const iterator& rhs) const
372+
{
373+
return !(*this == rhs);
374+
}
375+
376+
iterator& operator ++ ()
377+
{
362378
next(it, range_end);
363379
return *this;
364-
}
365-
iterator operator ++ (int)
366-
{
380+
}
381+
382+
iterator operator ++ (int)
383+
{
367384
iterator temp = *this;
368385
next(it, range_end);
369386
return temp;
370-
}
371-
iterator& operator -- ()
372-
{
387+
}
388+
389+
iterator& operator--()
390+
{
373391
prior(it, range_start);
374392
return *this;
375-
}
376-
iterator operator -- (int)
377-
{
393+
}
394+
395+
iterator operator--(int)
396+
{
378397
iterator temp = *this;
379398
prior(it, range_start);
380399
return temp;
381-
}
400+
}
382401
}; // class iterator
383402

384403
} // namespace utf8

src/utils/utf8/unchecked.h

Lines changed: 62 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ DEALINGS IN THE SOFTWARE.
2828
#ifndef UTF8_FOR_CPP_UNCHECKED_H_2675DCD0_9480_4c0c_B92A_CC14C027B731
2929
#define UTF8_FOR_CPP_UNCHECKED_H_2675DCD0_9480_4c0c_B92A_CC14C027B731
3030

31+
#include <iterator>
32+
#include <cstdint>
3133
#include "core.h"
3234

3335
namespace utf8
@@ -222,49 +224,67 @@ namespace utf8
222224

223225
// The iterator class
224226
template <typename octet_iterator>
225-
class iterator : public std::iterator <std::bidirectional_iterator_tag, uint32_t> {
226-
octet_iterator it;
227+
class iterator {
227228
public:
228-
iterator () {};
229-
explicit iterator (const octet_iterator& octet_it): it(octet_it) {}
230-
// the default "big three" are OK
231-
octet_iterator base () const { return it; }
232-
uint32_t operator * () const
233-
{
234-
octet_iterator temp = it;
235-
return next(temp);
236-
}
237-
bool operator == (const iterator& rhs) const
238-
{
239-
return (it == rhs.it);
240-
}
241-
bool operator != (const iterator& rhs) const
242-
{
243-
return !(operator == (rhs));
244-
}
245-
iterator& operator ++ ()
246-
{
247-
std::advance(it, internal::sequence_length(it));
248-
return *this;
249-
}
250-
iterator operator ++ (int)
251-
{
252-
iterator temp = *this;
253-
std::advance(it, internal::sequence_length(it));
254-
return temp;
255-
}
256-
iterator& operator -- ()
257-
{
258-
prior(it);
259-
return *this;
260-
}
261-
iterator operator -- (int)
262-
{
263-
iterator temp = *this;
264-
prior(it);
265-
return temp;
266-
}
267-
}; // class iterator
229+
using iterator_category = std::bidirectional_iterator_tag;
230+
using value_type = uint32_t;
231+
using difference_type = std::ptrdiff_t;
232+
using pointer = const uint32_t*;
233+
using reference = const uint32_t&;
234+
235+
private:
236+
octet_iterator it;
237+
238+
public:
239+
iterator() = default;
240+
241+
explicit iterator(const octet_iterator& octet_it)
242+
: it(octet_it) {}
243+
244+
octet_iterator base() const { return it; }
245+
246+
uint32_t operator * () const
247+
{
248+
octet_iterator temp = it;
249+
return next(temp);
250+
}
251+
252+
bool operator == (const iterator& rhs) const
253+
{
254+
return it == rhs.it;
255+
}
256+
257+
bool operator != (const iterator& rhs) const
258+
{
259+
return !(*this == rhs);
260+
}
261+
262+
iterator& operator ++ ()
263+
{
264+
std::advance(it, internal::sequence_length(it));
265+
return *this;
266+
}
267+
268+
iterator operator ++ (int)
269+
{
270+
iterator temp = *this;
271+
std::advance(it, internal::sequence_length(it));
272+
return temp;
273+
}
274+
275+
iterator& operator -- ()
276+
{
277+
prior(it);
278+
return *this;
279+
}
280+
281+
iterator operator -- (int)
282+
{
283+
iterator temp = *this;
284+
prior(it);
285+
return temp;
286+
}
287+
}; // class iterator
268288

269289
} // namespace utf8::unchecked
270290
} // namespace utf8

0 commit comments

Comments
 (0)