blink1-control
ConfigParser.hpp
Go to the documentation of this file.
1 
6 #pragma once
7 
8 #include <optional>
9 
10 #include <nlohmann/json.hpp>
11 
12 #include "blink-lib.hpp"
13 
14 #include "config/Config.hpp"
16 #include "config/RollupConfig.hpp"
17 
18 // @cond DO_NOT_DOCUMENT
19 using Json = nlohmann::json;
20 // @endcond
21 
22 namespace blink1_control::config {
23 
29  class ConfigParser {
30  [[nodiscard]] static bool parseConditions(const Json& json, Config& config);
31  [[nodiscard]] static bool parseCondition(const Json& json, Config& config);
32  [[nodiscard]] static bool parsePatterns(const Json& json, Config& config);
33  [[nodiscard]] static bool parsePattern(const Json& json, Config& config);
34  [[nodiscard]] static bool parseTopLevelVars(const Json& json, Config& config);
35  [[nodiscard]] static std::shared_ptr<ProcessMonitorConfig> parseProcessMonitor(const Json& json);
36  [[nodiscard]] static std::shared_ptr<RollupConfig> parseRollup(const Json& json);
37  [[nodiscard]] static blink1_lib::RGBN parseRgb(const std::string& rgbString);
38  static void readPattern(const Json& json, std::vector<std::unique_ptr<PatternCommand>>& commands);
39 
40  public:
48  [[nodiscard]] static std::optional<Config> parseConfig(std::istream& instream);
49  };
50 }
blink1_control::config::Config
Definition: Config.hpp:21
ProcessMonitorConfig.hpp
Header file for blink1_control::config::ProcessMonitorConfig.
blink1_control::config::ConfigParser::parseConfig
static std::optional< Config > parseConfig(std::istream &instream)
Config.hpp
Header file for blink1_control::config::Config.
blink1_control::config
Definition: ConditionConfig.hpp:12
RollupConfig.hpp
Header file for blink1_control::config::RollupConfig.
blink1_control::config::ConfigParser
Definition: ConfigParser.hpp:29