summaryrefslogtreecommitdiffstats
path: root/src/core/config.hh
diff options
context:
space:
mode:
authoruntodesu <kirill@untode.su>2025-07-01 03:08:39 +0500
committeruntodesu <kirill@untode.su>2025-07-01 03:08:39 +0500
commit458e0005690ea9d579588a0a12368fc2c2c9a93a (patch)
tree588a9ca6cb3c76d9193b5bd4601d64f0e50e8c8c /src/core/config.hh
parentc7b0c8e0286a1b2bb7ec55e579137dfc3b22eeb9 (diff)
downloadvoxelius-458e0005690ea9d579588a0a12368fc2c2c9a93a.tar.bz2
voxelius-458e0005690ea9d579588a0a12368fc2c2c9a93a.zip
I hyper-focued on refactoring again
- I put a cool-sounding "we are number one" remix on repeat and straight up grinded the entire repository to a better state until 03:09 AM. I guess I have something wrong in my brain that makes me do this shit
Diffstat (limited to 'src/core/config.hh')
-rw-r--r--src/core/config.hh181
1 files changed, 0 insertions, 181 deletions
diff --git a/src/core/config.hh b/src/core/config.hh
deleted file mode 100644
index e63b560..0000000
--- a/src/core/config.hh
+++ /dev/null
@@ -1,181 +0,0 @@
-#ifndef CORE_CONFIG_HH
-#define CORE_CONFIG_HH 1
-#pragma once
-
-#include "core/concepts.hh"
-
-class IConfigValue {
-public:
- virtual ~IConfigValue(void) = default;
- virtual void set(const char* value) = 0;
- virtual const char* get(void) const = 0;
-};
-
-class ConfigBoolean final : public IConfigValue {
-public:
- explicit ConfigBoolean(bool default_value = false);
- virtual ~ConfigBoolean(void) = default;
-
- virtual void set(const char* value) override;
- virtual const char* get(void) const override;
-
- bool get_value(void) const;
- void set_value(bool value);
-
-private:
- bool m_value;
- std::string m_string;
-
-public:
- static const char* to_string(bool value);
- static bool from_string(const char* value);
-};
-
-template<vx::Arithmetic T>
-class ConfigNumber : public IConfigValue {
-public:
- explicit ConfigNumber(T default_value = T(0));
- explicit ConfigNumber(T default_value, T min_value, T max_value);
- virtual ~ConfigNumber(void) = default;
-
- virtual void set(const char* value) override;
- virtual const char* get(void) const override;
-
- T get_value(void) const;
- void set_value(T value);
-
- T get_min_value(void) const;
- T get_max_value(void) const;
- void set_limits(T min_value, T max_value);
-
-private:
- T m_value;
- T m_min_value;
- T m_max_value;
- std::string m_string;
-};
-
-class ConfigInt final : public ConfigNumber<int> {
-public:
- using ConfigNumber<int>::ConfigNumber;
-};
-
-class ConfigFloat final : public ConfigNumber<float> {
-public:
- using ConfigNumber<float>::ConfigNumber;
-};
-
-class ConfigUnsigned final : public ConfigNumber<unsigned int> {
-public:
- using ConfigNumber<unsigned int>::ConfigNumber;
-};
-
-class ConfigUnsigned64 final : public ConfigNumber<std::uint64_t> {
-public:
- using ConfigNumber<std::uint64_t>::ConfigNumber;
-};
-
-class ConfigSizeType final : public ConfigNumber<std::size_t> {
-public:
- using ConfigNumber<std::size_t>::ConfigNumber;
-};
-
-class ConfigString final : public IConfigValue {
-public:
- explicit ConfigString(const char* default_value);
- virtual ~ConfigString(void) = default;
-
- virtual void set(const char* value) override;
- virtual const char* get(void) const override;
-
-private:
- std::string m_value;
-};
-
-class Config final {
-public:
- Config(void) = default;
- virtual ~Config(void) = default;
-
- void load_cmdline(void);
- bool load_file(const char* path);
- bool save_file(const char* path) const;
-
- bool set_value(const char* name, const char* value);
- const char* get_value(const char* name) const;
-
- void add_value(const char* name, IConfigValue& vref);
-
- const IConfigValue* find(const char* name) const;
-
-private:
- std::unordered_map<std::string, IConfigValue*> m_values;
-};
-
-template<vx::Arithmetic T>
-inline ConfigNumber<T>::ConfigNumber(T default_value)
-{
- m_value = default_value;
- m_min_value = std::numeric_limits<T>::min();
- m_max_value = std::numeric_limits<T>::max();
- m_string = std::to_string(default_value);
-}
-
-template<vx::Arithmetic T>
-inline ConfigNumber<T>::ConfigNumber(T default_value, T min_value, T max_value)
-{
- m_value = default_value;
- m_min_value = min_value;
- m_max_value = max_value;
- m_string = std::to_string(default_value);
-}
-
-template<vx::Arithmetic T>
-inline void ConfigNumber<T>::set(const char* value)
-{
- std::istringstream(value) >> m_value;
- m_value = std::clamp(m_value, m_min_value, m_max_value);
- m_string = std::to_string(m_value);
-}
-
-template<vx::Arithmetic T>
-inline const char* ConfigNumber<T>::get(void) const
-{
- return m_string.c_str();
-}
-
-template<vx::Arithmetic T>
-inline T ConfigNumber<T>::get_value(void) const
-{
- return m_value;
-}
-
-template<vx::Arithmetic T>
-inline void ConfigNumber<T>::set_value(T value)
-{
- m_value = std::clamp(value, m_min_value, m_max_value);
- m_string = std::to_string(m_value);
-}
-
-template<vx::Arithmetic T>
-inline T ConfigNumber<T>::get_min_value(void) const
-{
- return m_min_value;
-}
-
-template<vx::Arithmetic T>
-inline T ConfigNumber<T>::get_max_value(void) const
-{
- return m_max_value;
-}
-
-template<vx::Arithmetic T>
-inline void ConfigNumber<T>::set_limits(T min_value, T max_value)
-{
- m_min_value = min_value;
- m_max_value = max_value;
- m_value = std::clamp(m_value, m_min_value, m_max_value);
- m_string = std::to_string(m_value);
-}
-
-#endif // CORE_CONFIG_HH