qtutils.h
4.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright 2012 The MITRE Corporation *
* *
* Licensed under the Apache License, Version 2.0 (the "License"); *
* you may not use this file except in compliance with the License. *
* You may obtain a copy of the License at *
* *
* http://www.apache.org/licenses/LICENSE-2.0 *
* *
* Unless required by applicable law or agreed to in writing, software *
* distributed under the License is distributed on an "AS IS" BASIS, *
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
* See the License for the specific language governing permissions and *
* limitations under the License. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#ifndef QTUTILS_QTUTILS_H
#define QTUTILS_QTUTILS_H
#include <QBuffer>
#include <QByteArray>
#include <QDir>
#include <QFile>
#include <QFileInfo>
#include <QFuture>
#include <QFutureSynchronizer>
#include <QMap>
#include <QString>
#include <QStringList>
#include <QThreadPool>
#include <string>
#include <vector>
namespace QtUtils
{
/**** File Utilities ****/
QStringList getFiles(QDir dir, bool recursive);
QStringList getFiles(const QString ®exp);
QStringList readLines(const QString &file);
void readFile(const QString &file, QStringList &lines);
void readFile(const QString &file, QByteArray &data, bool uncompress = false);
void writeFile(const QString &file, const QStringList &lines);
void writeFile(const QString &file, const QString &data);
void writeFile(const QString &file, const QByteArray &data, int compression = 0);
void copyFile(const QString &src, const QString &dst);
/**** Directory Utilities ****/
void touchDir(const QDir &dir);
void touchDir(const QFile &file);
void touchDir(const QFileInfo &fileInfo);
void emptyDir(QDir &dir);
void deleteDir(QDir &dir);
QString find(const QString &file, const QString &alt);
QString getAbsolutePath(const QString &filename);
/**** String Utilities ****/
bool toBool(const QString &string);
int toInt(const QString &string);
float toFloat(const QString &string);
QList<float> toFloats(const QStringList &strings);
QStringList toStringList(const QList<float> &values);
QStringList toStringList(const std::vector<std::string> &string_list);
QStringList toStringList(int num_strings, const char* strings[]);
QString shortTextHash(QString string);
QStringList parse(QString args, char split = ',', bool *ok = NULL);
void checkArgsSize(const QString &name, const QStringList &args, int min, int max);
QPointF toPoint(const QString &string, bool *ok = NULL);
QRectF toRect(const QString &string, bool *ok = NULL);
QStringList naturalSort(const QStringList &strings);
QString toTime(int s);
/**** Process Utilities ****/
bool runRScript(const QString &file);
bool runDot(const QString &file);
void showFile(const QString &file);
/**** Variant Utilities ****/
QString toString(const QVariant &variant);
QString toString(const QVariantList &variantList);
QString toString(const QVariantMap &QVariantMap);
template <typename T>
QVariantList toVariantList(const QList<T> &list)
{
QVariantList variantList;
foreach (const T &item, list)
variantList << item;
return variantList;
}
/**** Point Utilities ****/
float euclideanLength(const QPointF &point);
/**** Rect Utilities ****/
float overlap(const QRectF &r, const QRectF &s);
class BlockCompression : public QIODevice
{
public:
BlockCompression(QIODevice *_basis);
BlockCompression();
int blockSize;
QIODevice *basis;
bool open(QIODevice::OpenMode mode);
void close();
void setBasis(QIODevice *_basis);
QDataStream blockReader;
QByteArray decompressedBlock;
QBuffer decompressedBlockReader;
// read from current decompressed block, if out of space, read and decompress another
// block from basis
qint64 readData(char *data, qint64 remaining);
bool isSequential() const;
// write to a QByteArray, when max block sized is reached, compress and write
// it to basis
QBuffer * precompressedBlockWriter;
QDataStream blockWriter;
qint64 writeData(const char *data, qint64 remaining);
};
}
#endif // QTUTILS_QTUTILS_H