aboutsummaryrefslogtreecommitdiff
path: root/src/configuration.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/configuration.h')
-rw-r--r--src/configuration.h76
1 files changed, 0 insertions, 76 deletions
diff --git a/src/configuration.h b/src/configuration.h
deleted file mode 100644
index 5038a4d..0000000
--- a/src/configuration.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * This file is part of smolbote. It's copyrighted by the contributors recorded
- * in the version control history of the file, available from its original
- * location: https://neueland.iserlohn-fortress.net/smolbote.hg
- *
- * SPDX-License-Identifier: GPL-3.0
- */
-
-#ifndef CONFIGURATION_H
-#define CONFIGURATION_H
-
-#include <optional>
-#include <string>
-#include <vector>
-#include <QString>
-#include <boost/program_options.hpp>
-#include <QStringList>
-
-class Configuration
-{
-public:
- explicit Configuration();
- ~Configuration();
-
- bool read(const QString &path);
- bool parse(int argc, const char **argv);
-
- template <typename T>
- std::optional<T> value(const char *path) const
- {
- // if setting doesn't exist, we crash
- // in debug builds, check if setting exists
-#ifdef QT_DEBUG
- if(vm.count(path) == 0) {
- qWarning("value(%s) does not exist, probably crashing now", path);
- }
-#endif
-
- if constexpr(std::is_same_v<T, std::string>) {
- std::string r;
- try {
- r = vm[path].as<std::string>();
- } catch (boost::bad_any_cast &) {
- // try int
- try {
- r = std::to_string(vm[path].as<int>());
- } catch (boost::bad_any_cast &) {
-
- // try bool, and crash if not that either
- r = vm[path].as<bool>() ? "true" : "false";
- }
-
- }
-
- // check if it's a path
- if(r.front() == '~') {
- r.replace(0, 1, m_homePath);
- }
-
- return std::optional<std::string>(r);
- } else
- return std::optional<T>(vm[path].as<T>());
- }
-
- const std::vector<boost::shared_ptr<boost::program_options::option_description>> & options() {
- return desc.options();
- }
-
-private:
- boost::program_options::options_description desc;
- boost::program_options::variables_map vm;
-
- std::string m_homePath;
-};
-
-#endif // CONFIGURATION_H