14 #include <QLatin1String> 49 template<
typename Assoc>
56 auto begin ()
const {
return Assoc_.keyValueBegin (); }
57 auto end ()
const {
return Assoc_.keyValueEnd (); }
60 return Range { std::forward<Assoc> (assoc) };
63 template<
typename Assoc>
70 auto begin ()
const {
return Assoc_.keyBegin (); }
71 auto end ()
const {
return Assoc_.keyEnd (); }
74 return Range { std::forward<Assoc> (assoc) };
91 return QByteArray::fromRawData (view.data (),
static_cast<int> (view.size ()));
106 return { view.data (),
static_cast<int> (view.size ()) };
116 return { arr.constData (),
static_cast<size_t> (arr.size ()) };
119 template<
typename T,
typename S>
122 const auto pos = str.indexOf (c);
126 return { str.left (pos), str.mid (pos + 1) };
132 ptr.release ()->setParent (&parent);
137 return QString::fromRawData (sv.data (), sv.size ());
145 using Ret_t = std::conditional_t<
146 std::is_same_v<R, DetectRetType>,
147 std::common_type<RetType_t<Fs>...>,
148 std::type_identity<R>
150 return [&]<
typename Head,
typename... Rest> (
this auto self,
Head&& head, Rest&&... rest) -> Ret_t
152 if constexpr (!
sizeof... (Rest))
153 return std::forward<Head> (head) ();
156 using HeadArg = std::decay_t<ArgType_t<Head, 0>>;
157 if (
const auto val = get_if<HeadArg> (&variant))
158 return std::forward<Head> (head) (*val);
159 return self (std::forward<Rest> (rest)...);
161 } (std::forward<Fs> (handlers)...);
168 constexpr QLatin1String
operator""_ql (
const char *str, std::size_t size)
noexcept 170 return QLatin1String { str,
static_cast<int> (size) };
173 constexpr QStringView
operator""_qsv (
const char16_t *str, std::size_t size)
noexcept 175 return QStringView { str,
static_cast<qsizetype
> (size) };
178 inline QByteArray
operator""_qba (
const char *str, std::size_t size)
noexcept 180 return QByteArray { QByteArrayData {
nullptr,
const_cast<char*
> (str), static_cast<qsizetype> (size) } };
183 template<Util::CtString S>
186 return Util::ToString<S> ();
auto HandleQVariant(const QVariant &variant, Fs &&... handlers)
QByteArray ToByteArray() noexcept
std::string_view AsStringView(const QByteArray &arr) noexcept
Create a std::string_view referring the data within a QByteArray.
auto Stlize(Assoc &&assoc) noexcept
Converts an Qt's associative sequence assoc to an STL-like iteratable range.
auto StlizeKeys(Assoc &&assoc) noexcept
std::pair< T, T > BreakAt(const T &str, S c) noexcept
void ReleaseInto(std::unique_ptr< T > &&ptr, QObject &parent)
QByteArray AsByteArray(std::string_view view) noexcept
Convert the view into a QByteArray without copying.
auto Tup2 &&tup2 noexcept
QString UnsafeFromView(QStringView sv)