Guitar
helper.h
Go to the documentation of this file.
1 #ifndef QHELPER_H
2 #define QHELPER_H
3 
4 #include <QString>
5 #include <string_view>
6 #include <vector>
7 
8 
9 class QS : public QString {
10 public:
11  explicit QS(const QChar *unicode, int size = -1) : QString(unicode, size) {}
12  QS() = default;
13  QS(QString &&s) : QString(s) {}
14  QS(QString const &s) : QString(s) {}
15  QS(QChar c) : QString(c) {}
16  QS(char const *p, int n = -1) : QString(QLatin1String(p, n)) {}
17  QS(std::string_view const &s) : QS(s.data(), (int)s.size()) {}
18  QS(std::string const &s) : QString(QString::fromStdString(s)) {}
19  QS(std::vector<char> const &s) : QS(s.data(), (int)s.size()) {}
20  operator std::string () const { return toStdString(); }
21  std::string ss() const { return toStdString(); }
22  QS &operator += (std::string const &s) { append(fromStdString(s)); return *this; }
23 };
24 
25 class QBA : public QByteArray {
26 public:
27  QBA() = default;
28  QBA(QByteArray const &ba) : QByteArray(ba) {}
29  QBA(char const *p, int n = -1) : QByteArray(p, n) {}
30  QBA(int n, char c) : QByteArray(n, c) {}
31  QBA(std::string const &s) : QBA(s.data(), (int)s.size()) {}
32  QBA(std::string_view const &s) : QBA(s.data(), (int)s.size()) {}
33  QBA(std::vector<char> const &s) : QBA(s.data(), (int)s.size()) {}
34  std::vector<char> vc() const { return std::vector<char>(begin(), end()); }
35  std::string_view sv() const { return std::string_view(data(), size()); }
36  operator std::string_view () const { return sv(); }
37 };
38 
39 class QSL : public QStringList {
40 public:
41  QSL() = default;
42  QSL(QStringList const &sl) : QStringList(sl) {}
43  QSL(std::vector<std::string> const &v)
44  {
45  for (std::string const &s : v) {
46  push_back(QString::fromStdString(s));
47  }
48  }
49  std::vector<std::string> vs() const
50  {
51  std::vector<std::string> v;
52  for (const QString &s : *this) {
53  v.push_back(s.toStdString());
54  }
55  return v;
56  }
57  operator std::vector<std::string> () const
58  {
59  return vs();
60  }
61 };
62 
63 namespace misc {
64 static inline QString escape_double_quote_for_file_open(QString const &in)
65 {
66  // 二重引用符を補う
67  QString out;
68  for (QChar c : in) {
69  if (c == '\"') {
70  out += '\\';
71  }
72  out += c;
73  }
74  return out;
75 }
76 
77 }
78 
79 #endif // QHELPER_H
Definition: helper.h:25
std::string_view sv() const
Definition: helper.h:35
std::vector< char > vc() const
Definition: helper.h:34
QBA(char const *p, int n=-1)
Definition: helper.h:29
QBA(int n, char c)
Definition: helper.h:30
QBA(std::string const &s)
Definition: helper.h:31
QBA(QByteArray const &ba)
Definition: helper.h:28
QBA(std::vector< char > const &s)
Definition: helper.h:33
QBA(std::string_view const &s)
Definition: helper.h:32
QBA()=default
Definition: helper.h:39
QSL()=default
std::vector< std::string > vs() const
Definition: helper.h:49
QSL(std::vector< std::string > const &v)
Definition: helper.h:43
QSL(QStringList const &sl)
Definition: helper.h:42
Definition: helper.h:9
QS(QChar c)
Definition: helper.h:15
std::string ss() const
Definition: helper.h:21
QS(std::string const &s)
Definition: helper.h:18
QS(char const *p, int n=-1)
Definition: helper.h:16
QS(QString &&s)
Definition: helper.h:13
QS()=default
QS(std::vector< char > const &s)
Definition: helper.h:19
QS(std::string_view const &s)
Definition: helper.h:17
QS(QString const &s)
Definition: helper.h:14
QS & operator+=(std::string const &s)
Definition: helper.h:22
QS(const QChar *unicode, int size=-1)
Definition: helper.h:11
Definition: misc.h:20
static QString escape_double_quote_for_file_open(QString const &in)
Definition: helper.h:64
static void append(std::vector< char > *out, char const *ptr, size_t len)
Definition: misc.h:174