19 template<
size_t N,
typename Char =
char>
27 template<
size_t N,
typename Char =
char>
34 constexpr
static size_t Size = N;
45 constexpr
auto operator<=> (
const CtString&)
const =
default;
50 std::copy (s, s +
Size, result.Data_);
60 std::copy (s2.Data_, s2.Data_ + s2.Size, result.
Data_ +
Size);
67 return *
this +
CtString<N2 - 1, Char> { s2 };
86 template<
size_t Count>
88 [[nodiscard]] constexpr
auto Chop () const
noexcept 103 constexpr
operator QStringView () const
noexcept 109 constexpr
auto Data () const
noexcept 114 template<
typename NewChar>
115 constexpr CtString<N, NewChar> CastChars () const
noexcept 117 CtString<N, NewChar> result;
122 template<Char Needle>
129 template<CtString Source, auto Needle,
size_t N2,
typename Char>
132 constexpr
auto repCount = Source.template Count<static_cast<Char> (Needle)> ();
133 constexpr
auto newSize = Source.Size + repCount * (N2 - 1);
136 auto out = result.
Data_;
137 for (
auto in = Source.Data_; in < Source.Data_ + Source.Size; ++in)
139 out = std::copy (replacement.Data_, replacement.Data_ + N2, out);
145 template<CtString Str>
148 constexpr
static auto terminated = Str +
'\0';
150 return QByteArray { QByteArrayData {
nullptr,
const_cast<char*
> (terminated.Data_), terminated.Size - 1 } };
153 template<CtString Str>
156 if constexpr (std::is_same_v<
typename decltype (Str)::Char_t, char16_t>)
158 constexpr
static auto terminated = Str +
'\0';
160 return QString { QStringPrivate {
nullptr,
const_cast<char16_t*
> (terminated.Data_), terminated.Size - 1 } };
163 return ToString<Str.template CastChars<char16_t> ()> ();
166 template<
size_t N1,
size_t N2,
typename Char>
169 return CtString<N1 - 1, Char> { s1 } + s2;
172 template<
typename Char>
176 while (str [result++])
181 template<
size_t N,
typename Char>
187 template<Util::CtString S>
constexpr detail::AggregateType< detail::AggregateFunction::Count, Ptr > count
static constexpr size_t Size
QByteArray ToByteArray() noexcept
requires(Count<=Size) const expr auto Chop() const noexcept
constexpr Char & operator[](size_t pos) noexcept
Q_DECL_IMPORT const QString Count
The new total event count (int).
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 >
QString ToString() noexcept
static constexpr auto FromUnsized(const Char *s) noexcept
constexpr bool IsEmpty() const noexcept
constexpr auto ReplaceAll(CtString< N2, Char > replacement) 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