Iros
 
Loading...
Searching...
No Matches
fixed_string.h
Go to the documentation of this file.
1#pragma once
2
3#include "di/types/size_t.h"
4
5namespace di::container {
6template<types::size_t count>
8public:
9 char m_data[count + 1];
10
11 constexpr FixedString(char const (&data)[count + 1]) {
12 for (types::size_t i = 0; i < count; i++) {
13 m_data[i] = data[i];
14 }
15 m_data[count] = '\0';
16 }
17
18 constexpr auto data() const -> char const* { return m_data; }
19 constexpr static auto size() { return count; }
20
21 constexpr auto begin() const -> char const* { return m_data; }
22 constexpr auto end() const -> char const* { return m_data + count; }
23
24 template<types::size_t other_size>
25 requires(count != other_size)
26 constexpr friend auto operator==(FixedString const&, FixedString<other_size> const&) -> bool {
27 return false;
28 }
29
30 auto operator==(FixedString const&) const -> bool = default;
31 auto operator<=>(FixedString const&) const = default;
32};
33
34template<types::size_t size>
35FixedString(char const (&)[size]) -> FixedString<size - 1>;
36}
37
38namespace di {
40}
Definition fixed_string.h:7
constexpr auto data() const -> char const *
Definition fixed_string.h:18
constexpr FixedString(char const (&data)[count+1])
Definition fixed_string.h:11
auto operator<=>(FixedString const &) const =default
auto operator==(FixedString const &) const -> bool=default
constexpr auto end() const -> char const *
Definition fixed_string.h:22
static constexpr auto size()
Definition fixed_string.h:19
char m_data[count+1]
Definition fixed_string.h:9
constexpr auto begin() const -> char const *
Definition fixed_string.h:21
Definition sequence.h:12
FixedString(char const (&)[size]) -> FixedString< size - 1 >
constexpr auto size
Definition size.h:54
constexpr auto count
Definition count.h:37
std::size_t size_t
Definition size_t.h:12
Definition zstring_parser.h:9