acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
string_iterator.h
1//
2// string_iterator.h
3// acme
4//
5// Created by Camilo Sasuke Thomas Borregaard Soerensen on 08/06/22.
6// Copyright (c) 2022 Camilo Sasuke Thomas Borregaard Soerensen. All rights reserved.
7//
8#pragma once
9
10
11template < prototype_character CHARACTER >
12class unicode_iterator
13{
14public:
15
16
17
18 const CHARACTER * m_p;
19
20 const CHARACTER * m_psz;
21
22
23 unicode_iterator(const CHARACTER * psz) : m_psz(psz) { }
24 unicode_iterator(const CHARACTER * psz, character_count size) : m_psz(psz + size) { }
25
26 ::wd32_character operator *();
27 unicode_iterator & operator ++();
28 unicode_iterator operator ++(::i32);
29
30 template < prototype_integral INTEGRAL >
31 unicode_iterator operator +(INTEGRAL i) const
32 {
33
34 auto iterator = *this;
35
36 while (i > 0)
37 {
38
39 iterator++;
40
41 i--;
42
43 }
44
45 return iterator;
46
47 }
48
49 bool operator == (const unicode_iterator & it) const { return m_psz == it.m_psz;}
50
51 bool operator != (const unicode_iterator & it) const { return !operator==(it);}
52
53
54 const CHARACTER * c_str() const { return m_psz; }
55
56
57};
Definition std_iterator.h:49