aboutsummaryrefslogtreecommitdiff
path: root/apps/apps.h
diff options
context:
space:
mode:
Diffstat (limited to 'apps/apps.h')
-rw-r--r--apps/apps.h34
1 files changed, 22 insertions, 12 deletions
diff --git a/apps/apps.h b/apps/apps.h
index 4a69b05..e9338a4 100644
--- a/apps/apps.h
+++ b/apps/apps.h
@@ -16,8 +16,7 @@ using json = nlohmann::json;
class missing_key : public std::runtime_error {
public:
- missing_key(const json::string_t key) : runtime_error("Missing key: " + key), key(key) {
- }
+ missing_key(const json::string_t key) : runtime_error("Missing key: " + key), key(key) {}
const json::string_t key;
};
@@ -33,11 +32,17 @@ T get(json j, std::string key) {
return ref;
}
+class unknown_app : public std::runtime_error {
+public:
+ unknown_app(const std::string &app_name) : runtime_error("Unknown application: " + app_name), app_name(app_name) {}
+
+ const std::string app_name;
+};
+
class app_execution {
public:
app_execution(po::options_description desc, po::variables_map vm, Logger logger)
- : desc(desc), vm(vm), logger(logger) {
- }
+ : desc(desc), vm(vm), logger(logger) {}
const po::options_description desc;
const po::variables_map vm;
@@ -48,14 +53,19 @@ public:
class app {
public:
- app(std::string app_name) : app_name(app_name) {
- }
+ app(std::string app_name) : app_name(app_name) {}
+
+ app(const app &) = delete;
+
+ app(app &&) = default;
virtual ~app() = default;
- virtual void add_options(po::options_description_easy_init &options){};
+ app &operator=(const app &) = delete;
+
+ virtual void add_options(po::options_description_easy_init &options) {}
- virtual void add_extra_options(po::options_description &options){};
+ virtual void add_extra_options(po::options_description &options) {}
virtual int main(app_execution &execution) = 0;
@@ -64,14 +74,14 @@ public:
std::string get_hostname();
+int real_main(app *app, int argc, const char *argv[]);
+
template <typename T>
class noop_delete {
public:
- void operator()(T *) const {
- }
+ void operator()(T *) const {}
};
-static inline void noop_deleter(void *) {
-}
+static inline void noop_deleter(void *) {}
}
}