-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathargparser.cpp
More file actions
70 lines (56 loc) · 1.5 KB
/
argparser.cpp
File metadata and controls
70 lines (56 loc) · 1.5 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
/****************************************************************************
**
** Copyright (C) 2014 Bhathiya Perea
**
** This file is part of Express Remote
**
**
****************************************************************************/
#include "argparser.h"
ArgParser::ArgParser() {
QStringListIterator argIter(QApplication::arguments());
// eat first argument
if (argIter.hasNext()) {
argIter.next();
} else {
isOK = false;
}
// parse
while (argIter.hasNext()) {
QString cur = argIter.next();
if (cur.startsWith("-")) {
if (argsCountMap.contains(cur)) {
argsCountMap[cur] = argsCountMap[cur] + 1;
} else {
argsCountMap[cur] = 1;
}
if (!argsMap.contains(cur)) {
argsMap[cur] = QStringList();
}
if (argIter.hasNext()) {
argsMap[cur] << argIter.next();
} else {
// no arg for the command
isOK = false;
break;
}
} else {
otherArgs << cur;
}
}
}
int ArgParser::GetCntOf(const QString &key) {
if (argsCountMap.contains(key)) {
return argsCountMap[key];
} else {
return 0;
}
}
QStringList ArgParser::GetPositionalArguments() { return otherArgs; }
QStringList ArgParser::TakeArgument(const QString &key) {
argsCountMap.remove(key);
return argsMap.take(key);
}
QHash<QString, int> ArgParser::GetArgumentsCountMap() { return argsCountMap; }
QHash<QString, QStringList> ArgParser::GetArgumentsMap() { return argsMap; }
bool ArgParser::IsOK() { return isOK; }