18 template<
size_t N,
typename Char =
char>
26 template<
size_t N,
typename Char =
char>
33 constexpr
static size_t Size = N;
44 constexpr
auto operator<=> (
const CtString&)
const =
default;
49 std::copy (s, s +
Size, result.Data_);
59 std::copy (s2.Data_, s2.Data_ + s2.Size, result.
Data_ +
Size);
66 return *
this +
CtString<N2 - 1, Char> { s2 };
85 template<
size_t Count>
87 [[nodiscard]] constexpr
auto Chop () const
noexcept 102 constexpr
operator QStringView () const
noexcept 108 constexpr
auto Data () const
noexcept 114 template<CtString Str>
117 static constexpr
auto literal = []<
size_t... Idxes> (std::index_sequence<Idxes...>)
119 return QStaticByteArrayData<Str.Size>
121 Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER (Str.Size),
122 { Str.Data_ [Idxes]..., 0 }
124 } (std::make_index_sequence<Str.Size> {});
125 QByteArrayDataPtr holder { literal.data_ptr () };
126 return QByteArray { holder };
129 template<CtString Str>
132 static constexpr
auto literal = []<
size_t... Idxes> (std::index_sequence<Idxes...>)
134 return QStaticStringData<Str.Size>
136 Q_STATIC_STRING_DATA_HEADER_INITIALIZER (Str.Size),
137 { Str.Data_ [Idxes]..., 0 }
139 } (std::make_index_sequence<Str.Size> {});
140 QStringDataPtr holder { literal.data_ptr () };
141 return QString { holder };
144 template<
size_t N1,
size_t N2,
typename Char>
147 return CtString<N1 - 1, Char> { s1 } + s2;
150 template<
typename Char>
154 while (str [result++])
159 template<
size_t N,
typename Char>
165 template<Util::CtString S>
static constexpr size_t Size
requires(Count<=Size) const expr auto Chop() const noexcept
constexpr Char & operator[](size_t pos) noexcept
constexpr bool EndsWith(Char ch) const noexcept requires(Size > 0)
constexpr size_t StringBufSize(const Char *str) noexcept
CtString(RawStr< N, Char >) -> CtString< N - 1, Char >
static constexpr auto FromUnsized(const Char *s) noexcept
constexpr bool IsEmpty() const noexcept
auto Tup2 &&tup2 noexcept
constexpr auto operator+(RawStr< N1, Char > s1, CtString< N2, Char > s2) noexcept
constexpr auto operator+(const CtString< N2, Char > &s2) const noexcept
constexpr CtString() noexcept=default