diff options
Diffstat (limited to 'apps/apps.h')
-rw-r--r-- | apps/apps.h | 34 |
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 *) {} } } |