-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuiltins.cpp
More file actions
37 lines (30 loc) · 910 Bytes
/
builtins.cpp
File metadata and controls
37 lines (30 loc) · 910 Bytes
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
#include "builtins.h"
#include "builtins/false.h"
#include "builtins/true.h"
#include "builtins/help.h"
#include "builtins/cd.h"
#include "builtins/colon.h"
#include "builtins/read.h"
#include "builtins/source.h"
#include <map>
#include <unordered_map>
const std::unordered_map<std::string, BuiltinHandler> *get_builtins() {
const static std::unordered_map<std::string, BuiltinHandler> builtins {
{"cd", builtin_cd},
{"false", builtin_false},
{"true", builtin_true},
{"help", builtin_help},
{":", builtin_colon},
{"read", builtin_read},
{"source", builtin_source},
};
return &builtins;
}
std::optional<BuiltinHandler> find_builtin(const std::string &name) {
auto foundBuiltin = get_builtins()->find(name);
if(foundBuiltin != get_builtins()->end()) {
return foundBuiltin->second;
} else {
return {};
}
}