File indexing completed on 2024-11-24 03:56:28

0001 /*
0002  * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 #pragma once
0008 
0009 #include <QtGlobal>
0010 #include <QString>
0011 
0012 #if QT_VERSION > QT_VERSION_CHECK(5, 15, 2)
0013 
0014 #include <QStringView>
0015 
0016 namespace utils {
0017 
0018 inline QStringView left_ref(const QString& s, int n)
0019 {
0020     return QStringView{s}.left(n);
0021 }
0022 
0023 inline QStringView right_ref(const QString& s, int n)
0024 {
0025     return QStringView{s}.right(n);
0026 }
0027 
0028 inline QStringView mid_ref(const QString& s, int a, int b)
0029 {
0030     return QStringView{s}.mid(a, b);
0031 }
0032 
0033 template<class... Args>
0034 inline auto split_ref(const QString& s, Args&&... args)
0035 {
0036     return QStringView{s}.split(std::forward<Args>(args)...);
0037 }
0038 
0039 using StringView = QStringView;
0040 
0041 } // namespace utils
0042 
0043 #else
0044 
0045 #include <QStringRef>
0046 
0047 
0048 namespace utils {
0049 
0050 inline QStringRef left_ref(const QString& s, int n)
0051 {
0052     return s.leftRef(n);
0053 }
0054 
0055 inline QStringRef right_ref(const QString& s, int n)
0056 {
0057     return s.rightRef(n);
0058 }
0059 
0060 inline QStringRef mid_ref(const QString& s, int a, int b)
0061 {
0062     return s.midRef(a, b);
0063 }
0064 
0065 template<class... Args>
0066 inline auto split_ref(const QString& s, Args&&... args)
0067 {
0068     return s.splitRef(std::forward<Args>(args)...);
0069 }
0070 
0071 using StringView = QStringRef;
0072 
0073 } // namespace utils
0074 
0075 
0076 #endif