Iros
 
Loading...
Searching...
No Matches
transparent_encoding.h
Go to the documentation of this file.
1#pragma once
2
6#include "di/types/integers.h"
7
8namespace di::container::string {
9struct TransparentIterator : IteratorBase<TransparentIterator, ContiguousIteratorTag, char, isize> {
11
12 constexpr explicit TransparentIterator(char const* data) : m_data(data) {}
13
14 constexpr auto operator*() const -> char const& { return *m_data; }
15 constexpr auto operator->() const -> char const* { return m_data; }
16
17 constexpr explicit operator char const*() const { return m_data; }
18
19 constexpr void advance_one() { ++m_data; }
20 constexpr void back_one() { --m_data; }
21 constexpr void advance_n(isize n) { m_data += n; }
22
23private:
24 constexpr friend auto operator==(TransparentIterator a, TransparentIterator b) -> bool {
25 return a.m_data == b.m_data;
26 }
27 constexpr friend auto operator<=>(TransparentIterator a, TransparentIterator b) { return a.m_data <=> b.m_data; }
28
29 constexpr friend auto operator-(TransparentIterator a, TransparentIterator b) { return a.m_data - b.m_data; }
30
31 char const* m_data { nullptr };
32};
33
35public:
36 using CodeUnit = char;
37 using CodePoint = char;
39
40private:
42 return true;
43 }
45 return true;
46 }
48 return true;
49 }
50};
51}
Definition transparent_encoding.h:34
char CodePoint
Definition transparent_encoding.h:37
constexpr friend auto tag_invoke(types::Tag< encoding::contiguous >, InPlaceType< TransparentEncoding >) -> bool
Definition transparent_encoding.h:44
TransparentIterator Iterator
Definition transparent_encoding.h:38
constexpr friend auto tag_invoke(types::Tag< encoding::universal >, InPlaceType< TransparentEncoding >) -> bool
Definition transparent_encoding.h:41
constexpr friend auto tag_invoke(types::Tag< encoding::null_terminated >, InPlaceType< TransparentEncoding >) -> bool
Definition transparent_encoding.h:47
char CodeUnit
Definition transparent_encoding.h:36
Definition constant_string_interface.h:31
constexpr auto data(concepts::detail::ConstantString auto const &string)
Definition string_data.h:6
ssize_t isize
Definition integers.h:34
di::meta::Decay< decltype(T)> Tag
Definition tag_invoke.h:28
Definition transparent_encoding.h:9
constexpr friend auto operator==(TransparentIterator a, TransparentIterator b) -> bool
Definition transparent_encoding.h:24
constexpr friend auto operator-(TransparentIterator a, TransparentIterator b)
Definition transparent_encoding.h:29
constexpr auto operator->() const -> char const *
Definition transparent_encoding.h:15
constexpr void back_one()
Definition transparent_encoding.h:20
constexpr TransparentIterator(char const *data)
Definition transparent_encoding.h:12
constexpr auto operator*() const -> char const &
Definition transparent_encoding.h:14
constexpr void advance_one()
Definition transparent_encoding.h:19
constexpr void advance_n(isize n)
Definition transparent_encoding.h:21
constexpr friend auto operator<=>(TransparentIterator a, TransparentIterator b)
Definition transparent_encoding.h:27
Definition in_place_type.h:5