summaryrefslogtreecommitdiff
path: root/louloulibs/config
diff options
context:
space:
mode:
authorlouiz’ <louiz@louiz.org>2017-03-14 21:45:23 +0100
committerlouiz’ <louiz@louiz.org>2017-03-14 21:45:23 +0100
commit0ab40dc1ab4e689921da54080b135e1d22b1c586 (patch)
tree238ac477aa6b29a8d1e187a8d97ecbcbbbc663ef /louloulibs/config
parent2d3806152e854ace7533fc3ad34d4ac1c44e9687 (diff)
downloadbiboumi-0ab40dc1ab4e689921da54080b135e1d22b1c586.tar.gz
biboumi-0ab40dc1ab4e689921da54080b135e1d22b1c586.tar.bz2
biboumi-0ab40dc1ab4e689921da54080b135e1d22b1c586.tar.xz
biboumi-0ab40dc1ab4e689921da54080b135e1d22b1c586.zip
Refactoring louloulibs and cmake
Use OBJECT libraries Remove the louloulibs directory Write FOUND variables in the cache
Diffstat (limited to 'louloulibs/config')
-rw-r--r--louloulibs/config/config.cpp103
-rw-r--r--louloulibs/config/config.hpp93
2 files changed, 0 insertions, 196 deletions
diff --git a/louloulibs/config/config.cpp b/louloulibs/config/config.cpp
deleted file mode 100644
index 24a1c87..0000000
--- a/louloulibs/config/config.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-#include <config/config.hpp>
-
-#include <iostream>
-#include <cstring>
-
-#include <cstdlib>
-
-std::string Config::filename{};
-std::map<std::string, std::string> Config::values{};
-std::vector<t_config_changed_callback> Config::callbacks{};
-
-std::string Config::get(const std::string& option, const std::string& def)
-{
- auto it = Config::values.find(option);
-
- if (it == Config::values.end())
- return def;
- return it->second;
-}
-
-int Config::get_int(const std::string& option, const int& def)
-{
- std::string res = Config::get(option, "");
- if (!res.empty())
- return std::atoi(res.c_str());
- else
- return def;
-}
-
-void Config::set(const std::string& option, const std::string& value, bool save)
-{
- Config::values[option] = value;
- if (save)
- {
- Config::save_to_file();
- Config::trigger_configuration_change();
- }
-}
-
-void Config::connect(t_config_changed_callback callback)
-{
- Config::callbacks.push_back(callback);
-}
-
-void Config::clear()
-{
- Config::values.clear();
-}
-
-/**
- * Private methods
- */
-void Config::trigger_configuration_change()
-{
- std::vector<t_config_changed_callback>::iterator it;
- for (it = Config::callbacks.begin(); it < Config::callbacks.end(); ++it)
- (*it)();
-}
-
-bool Config::read_conf(const std::string& name)
-{
- if (!name.empty())
- Config::filename = name;
-
- std::ifstream file(Config::filename.data());
- if (!file.is_open())
- {
- std::cerr << "Error while opening file " << filename << " for reading: " << strerror(errno) << std::endl;
- return false;
- }
-
- Config::clear();
-
- std::string line;
- size_t pos;
- std::string option;
- std::string value;
- while (file.good())
- {
- std::getline(file, line);
- if (line == "" || line[0] == '#')
- continue ;
- pos = line.find('=');
- if (pos == std::string::npos)
- continue ;
- option = line.substr(0, pos);
- value = line.substr(pos+1);
- Config::values[option] = value;
- }
- return true;
-}
-
-void Config::save_to_file()
-{
- std::ofstream file(Config::filename.data());
- if (file.fail())
- {
- std::cerr << "Could not save config file." << std::endl;
- return ;
- }
- for (const auto& it: Config::values)
- file << it.first << "=" << it.second << '\n';
-}
diff --git a/louloulibs/config/config.hpp b/louloulibs/config/config.hpp
deleted file mode 100644
index 4e01281..0000000
--- a/louloulibs/config/config.hpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- * Read the config file and save all the values in a map.
- * Also, a singleton.
- *
- * Use Config::filename = "bla" to set the filename you want to use.
- *
- * If you want to exit if the file does not exist when it is open for
- * reading, set Config::file_must_exist = true.
- *
- * Config::get() can then be used to access the values in the conf.
- *
- * Use Config::close() when you're done getting/setting value. This will
- * save the config into the file.
- */
-
-#pragma once
-
-#include <functional>
-#include <fstream>
-#include <memory>
-#include <vector>
-#include <string>
-#include <map>
-
-typedef std::function<void()> t_config_changed_callback;
-
-class Config
-{
-public:
- Config() = default;
- ~Config() = default;
- Config(const Config&) = delete;
- Config& operator=(const Config&) = delete;
- Config(Config&&) = delete;
- Config& operator=(Config&&) = delete;
-
- /**
- * returns a value from the config. If it doesn’t exist, use
- * the second argument as the default.
- */
- static std::string get(const std::string&, const std::string&);
- /**
- * returns a value from the config. If it doesn’t exist, use
- * the second argument as the default.
- */
- static int get_int(const std::string&, const int&);
- /**
- * Set a value for the given option. And write all the config
- * in the file from which it was read if save is true.
- */
- static void set(const std::string&, const std::string&, bool save = false);
- /**
- * Adds a function to a list. This function will be called whenever a
- * configuration change occurs (when set() is called, or when the initial
- * conf is read)
- */
- static void connect(t_config_changed_callback);
- /**
- * Destroy the instance, forcing it to be recreated (with potentially
- * different parameters) the next time it’s needed.
- */
- static void clear();
- /**
- * Read the configuration file at the given path.
- */
- static bool read_conf(const std::string& name="");
- /**
- * Get the filename
- */
- static const std::string& get_filename()
- { return Config::filename; }
-
-private:
- /**
- * Set the value of the filename to use, before calling any method.
- */
- static std::string filename;
- /**
- * Write all the config values into the configuration file
- */
- static void save_to_file();
- /**
- * Call all the callbacks previously registered using connect().
- * This is used to notify any class that a configuration change occured.
- */
- static void trigger_configuration_change();
-
- static std::map<std::string, std::string> values;
- static std::vector<t_config_changed_callback> callbacks;
-
-};
-
-