X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/a6680ce3d763763a6010c81c8a5a8f7a1ce052db..9e321f1d39023f4ba86cd354eda0c347ac15fca2:/include/stg/module_settings.h?ds=sidebyside

diff --git a/include/stg/module_settings.h b/include/stg/module_settings.h
index 669cc225..a4de4539 100644
--- a/include/stg/module_settings.h
+++ b/include/stg/module_settings.h
@@ -1,39 +1,64 @@
- /*
- $Revision: 1.5 $
- $Date: 2010/03/04 11:49:52 $
- $Author: faust $
- */
+#pragma once
 
-#ifndef MODULE_SETTINGS_H
-#define MODULE_SETTINGS_H
-
-#include <cstring> // strcasecmp
 #include <string>
 #include <vector>
+#include <cstring> // strcasecmp
+
+namespace STG
+{
 
 //-----------------------------------------------------------------------------
-struct PARAM_VALUE
+struct ParamValue
 {
-    bool operator==(const PARAM_VALUE & rhs) const
-        { return !strcasecmp(param.c_str(), rhs.param.c_str()); }
+    ParamValue() = default;
+    ParamValue(const std::string& p, const std::vector<std::string>& vs) noexcept
+        : param(p),
+          value(vs)
+    {}
+    ParamValue(const std::string& p, const std::vector<std::string>& vs, const std::vector<ParamValue>& ss) noexcept
+        : param(p),
+          value(vs),
+          sections(ss)
+    {}
 
-    bool operator<(const PARAM_VALUE & rhs) const
-        { return strcasecmp(param.c_str(), rhs.param.c_str()) < 0; }
+    ParamValue(const ParamValue&) = default;
+    ParamValue& operator=(const ParamValue&) = default;
+    ParamValue(ParamValue&&) = default;
+    ParamValue& operator=(ParamValue&&) = default;
+
+    bool operator==(const ParamValue & rhs) const noexcept
+    { return !strcasecmp(param.c_str(), rhs.param.c_str()); }
+
+    bool operator<(const ParamValue & rhs) const noexcept
+    { return strcasecmp(param.c_str(), rhs.param.c_str()) < 0; }
 
     std::string param;
     std::vector<std::string> value;
+    std::vector<ParamValue> sections;
 };
 //-----------------------------------------------------------------------------
-struct MODULE_SETTINGS
+struct ModuleSettings
 {
-    bool operator==(const MODULE_SETTINGS & rhs) const
-        { return !strcasecmp(moduleName.c_str(), rhs.moduleName.c_str()); }
+    ModuleSettings() = default;
+    ModuleSettings(const std::string& name, const std::vector<ParamValue>& params) noexcept
+        : moduleName(name),
+          moduleParams(params)
+    {}
+
+    ModuleSettings(const ModuleSettings&) = default;
+    ModuleSettings& operator=(const ModuleSettings&) = default;
+    ModuleSettings(ModuleSettings&&) = default;
+    ModuleSettings& operator=(ModuleSettings&&) = default;
 
-    bool operator<(const MODULE_SETTINGS & rhs) const
-        { return strcasecmp(moduleName.c_str(), rhs.moduleName.c_str()) < 0; }
+    bool operator==(const ModuleSettings & rhs) const noexcept
+    { return !strcasecmp(moduleName.c_str(), rhs.moduleName.c_str()); }
 
-    std::string              moduleName;
-    std::vector<PARAM_VALUE> moduleParams;
+    bool operator<(const ModuleSettings & rhs) const noexcept
+    { return strcasecmp(moduleName.c_str(), rhs.moduleName.c_str()) < 0; }
+
+    std::string             moduleName;
+    std::vector<ParamValue> moduleParams;
 };
 //-----------------------------------------------------------------------------
-#endif
+
+}