36 BASE_EXPORT QString
toQString(
const float & v,
int width=0,
char format=
'g',
int precision=-1,
char fill=
' ');
37 BASE_EXPORT QString
toQString(
const double &v,
int width=0,
char format=
'g',
int precision=-1,
char fill=
' ');
38 BASE_EXPORT QString
toQString(
const SymTensor &v,
int width=0,
char format=
'g',
int precision=-1,
char fill=
' ');
39 BASE_EXPORT QString
toQString(
const QVariant &v,
int width=0,
char fill=
' ',
char format=
'g',
int precision=-1);
49 QString toQStringT(
const T &t,
int width=0,
char fill=
' ',[[maybe_unused]]
char format=
'g',
50 [[maybe_unused]]
int precision=-1) {
54 inline QString toQStringT(
const float &t,
int width,
char fill,
char format,
int precision) {
55 return toQString(t,width,format,precision,fill);
58 inline QString toQStringT(
const double &t,
int width,
char fill,
char format,
int precision) {
59 return toQString(t,width,format,precision,fill);
62 inline QString toQStringT(
const QVariant &t,
int width,
char fill,
char format,
int precision) {
63 return toQString(t,width,fill,format,precision);
66 inline QString toQStringT(
const bool &b,
int width,
char fill,[[maybe_unused]]
char format,
67 [[maybe_unused]]
int precision) {
74 template <
class T>
inline QString
toQString(
const Vector2<T> &v,
int width=0,
char fmt=
'g',
int prec=-1,
char fill=
' ') {
76 int w = (std::abs(width) - 3) / 2;
78 s = s.arg(toQStringT(v.x(),w,fill,fmt,prec));
79 s = s.arg(toQStringT(v.y(),w,fill,fmt,prec));
85 template <
class T>
inline QString
toQString(
const Vector3<T> &v,
int width=0,
char fmt=
'g',
int prec=-1,
char fill=
' ') {
86 QString s(
"(%1,%2,%3)");
87 int w = (std::abs(width) - 4) / 3;
89 s = s.arg(toQStringT(v.x(),w,fill,fmt,prec));
90 s = s.arg(toQStringT(v.y(),w,fill,fmt,prec));
91 s = s.arg(toQStringT(v.z(),w,fill,fmt,prec));
98 template <
class T>
inline QString
toQString(
const AVector2<T> &v,
int width=0,
char fmt=
'g',
int prec=-1,
char fill=
' ') {
100 int w = (std::abs(width) - 3) / 2;
102 s = s.arg(toQStringT(v.
z(),w,fill,fmt,prec));
108 template <
class T>
inline QString
toQString(
const AVector3<T> &v,
int width=0,
char fmt=
'g',
int prec=-1,
char fill=
' ') {
109 QString s(
"(%1,%2,%3)");
110 int w = (std::abs(width) - 4) / 3;
112 s = s.arg(toQStringT(v.x(),w,fill,fmt,prec));
113 s = s.arg(toQStringT(v.y(),w,fill,fmt,prec));
114 s = s.arg(toQStringT(v.z(),w,fill,fmt,prec));
124 inline string tostring(
const QString &s) {
return s.toStdString(); }
125 inline StringList toStringList(
const QStringList &sl);
126 inline QStringList toQStringList(
const StringList &sl);
127 inline StringList fromQStringList(
const QStringList &sl);
128 inline Buffer toBuffer(
const QByteArray &ba);
133 BASE_EXPORT QString
readWord(QDataStream &ds,qint64 maxlen=0,
const QString &separators=
" \t\r\n");
135 BASE_EXPORT QString enquoteString(
const QString &s,QChar quote=
'"');
153 BASE_EXPORT bool isBool(
const QString &in,
bool *b=0,
const QString &out=
"on,off,true,false,yes,no");
157 BASE_EXPORT bool toBool(
const QString &in,
bool *ok=0,
const QString &out=
"on,off,true,false,yes,no");
165 inline QString
toQString(
const std::wstring &in) {
return QString::fromStdWString(in); }
167 inline QString
toQString(
const string &in) {
return QString::fromStdString(in); }
190 bool operator()(
const QString &left,
const QString &right)
const {
191 return left.compare(right,Qt::CaseInsensitive) < 0;
196 bool operator()(
const QString &left,
const QString &right)
const {
197 return QString::localeAwareCompare(left,right) < 0;
202 bool operator()(
const QString &left,
const QString &right)
const {
203 return left.compare(right,Qt::CaseInsensitive) == 0;
208 uint operator()(
const QString &in)
const {
211 auto *p = in.constData();
212 for (
int i = 0; i<len; ++i) {
213 h = 31 * h + p[i].toUpper().unicode();
220 template <
typename T>
using QStringMap = std::map<QString, T, QStringCILess2>;
222 template <
typename T>
using QStringHashMap = std::unordered_map<QString, T, QStringCIHash2, QStringCIEqual2>;
224 using QStringSet = std::set<QString,QStringCILess2>;
226 using QStringHashSet = std::unordered_set<QString, QStringCIHash2, QStringCIEqual2>;
228 inline StringList toStringList(
const QStringList &qsl) {
231 sl.push_back(s.toStdString());
235 inline QStringList toQStringList(
const StringList &sl) {
238 qsl.push_back(QString::fromStdString(s));
242 inline StringList fromQStringList(
const QStringList &qsl) {
245 sl.push_back(qs.toStdString());
249 inline Buffer toBuffer(
const QByteArray &ba) {
250 Buffer buf; buf.reserve(ba.size());
251 buf.insert(buf.end(),ba.begin(), ba.end());
257 struct fmt::formatter<QString> :
public fmt::formatter<string> {
258 template <
typename ParseContext>
259 constexpr
auto parse(ParseContext &ctx) {
return fmt::formatter<string>::parse(ctx); }
261 template <
typename FormatContext>
262 auto format(QString
const &val, FormatContext &ctx) {
263 return fmt::formatter<string>::format(val.toStdString(), ctx);
268 using StateInfoOutput = QStringMap<QStringList>;
274 groups_ = vt.groups_;
278 std::vector<std::unordered_map<IString,int>> groups_;
280 void clear() { groups_.clear(); doneGroup_ = 0; groups_.resize(128); }
281 void update(
const std::vector<std::pair<int,IString>> &gi) {
284 groups_[v.first][v.second] += 1;
288 doneGroup_ += other.doneGroup_;
289 for (
int j=0; j<(int)other.groups_.size(); ++j) {
290 for (
auto &v: other.groups_[j])
291 groups_[j][v.first] += v.second;
294 int slotsUsed()
const {
296 for (
auto &v: groups_)
304 std::vector<std::pair<double,quint64>> lvals_, hvals_;
312 void clear() { lvals_.clear(); hvals_.clear(); }
313 void initialize(
const std::vector<double> &cval,quint64
id) {
314 for (
auto &v: cval) {
315 lvals_.push_back({v,
id});
316 hvals_.push_back({v,
id});
319 void update(
const std::vector<double> &cval,quint64
id) {
320 for (
int i=0; i<(int)cval.size(); ++i) {
321 if (cval[i] < lvals_[i].first)
322 lvals_[i] = {cval[i],
id};
323 else if (cval[i] > hvals_[i].first)
324 hvals_[i] = {cval[i],
id};
328 for (
int i=0; i<(int)cval.lvals_.size(); ++i) {
329 if (cval.lvals_[i].first < lvals_[i].first)
330 lvals_[i] = cval.lvals_[i];
331 if (cval.hvals_[i].first > hvals_[i].first)
332 hvals_[i] = cval.hvals_[i];
338 using QSL = QStringList;
340 template <
typename T>
341 QString QSN(
const T &t) {
return toQString(t); }
344 template <
typename T>
345 QString NUMSEP(
const T &t) {
return QString(
"%L1").arg(t); }
QString helper functions, plus some additions.
Combines base interface with Qt – allows Qt to interact with other Base types transparently.
2D Angular vector class.
Definition: avect.h:43
const T & z() const
Member access - returns the z component of the 2D angular vector.
Definition: avect.h:70
3D Angular vector class.
Definition: avect.h:176
Definition: basestring.h:134
Definition: basestring.h:77
BASE_EXPORT QString toQString(const QString &s, int width=0, char fill=' ')
Converts from a base type to a QString, using the width and fill character specified.
Definition: baseqstring.cpp:5
BASE_EXPORT QString readWord(QDataStream &ds, qint64 maxlen=0, const QString &separators=" \t\r\n")
Reads a single whitespace delimited word from the QDataStream (since QTextStream is bugged),...
Definition: baseqstring.cpp:340
BASE_EXPORT bool isLong(const QString &in, qint64 *l=0)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: baseqstring.cpp:259
BASE_EXPORT bool isUInt(const QString &in, uint *u=0)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: baseqstring.cpp:252
BASE_EXPORT bool isDouble(const QString &in, double *d=0)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: baseqstring.cpp:273
BASE_EXPORT bool isInt(const QString &in, int *i=0)
Definition: baseqstring.cpp:245
BASE_EXPORT bool isBool(const QString &in, bool *b=0, const QString &out="on,off,true,false,yes,no")
Definition: baseqstring.cpp:231
BASE_EXPORT bool toBool(const QString &in, bool *ok=0, const QString &out="on,off,true,false,yes,no")
Definition: baseqstring.cpp:280
#define BASE_EXPORT
Definition: basedef.h:24
BASE_EXPORT QString readLine(QDataStream &ds, qint64 maxlen=0)
Reads a single QString line from a QDataStream (since QTextStream is bugged), uses '\n' as an end-of-...
Definition: baseqstring.cpp:328
BASE_EXPORT bool isULong(const QString &in, quint64 *ul=0)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: baseqstring.cpp:266
BASE_EXPORT QString toBytes(const quint64 &ul)
Converts number ul into a memory size string.
Definition: baseqstring.h:200
Definition: baseqstring.h:206
Definition: baseqstring.h:188
Definition: baseqstring.h:194
Definition: baseqstring.h:270
Definition: baseqstring.h:303