-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathparser.cpp
43 lines (40 loc) · 1003 Bytes
/
parser.cpp
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
//
// Created by Timofey Cherlenok on 19.03.2023.
//
#include "parser.h"
Parser::Parser(int argc, char **argv) {
exception_ = Status::OK;
if (argc == 1) {
exception_ = Status::NEED_INFO;
return;
}
if (argc < 3) {
exception_ = Status::NO_OUTPUT;
return;
}
input_ = argv[1];
output_ = argv[2];
if (argc == 3) {
return;
}
size_t index = 3;
std::string name;
std::vector<std::string> args;
while (index < argc) {
if (argv[index][0] == '-') {
if (!name.empty()) {
operations_.emplace_back(ParsedInput{.filter_name = name, .args = args});
args.clear();
}
name = ++argv[index];
} else {
args.push_back(argv[index]);
}
++index;
}
if (name.empty()) {
exception_ = Status::INVALID_INPUT;
return;
}
operations_.emplace_back(ParsedInput{.filter_name = name, .args = args});
}