Antares Simulator
Power System Simulator
Loading...
Searching...
No Matches
decoders.hxx
1/*
2 * Copyright 2007-2024, RTE (https://www.rte-france.com)
3 * See AUTHORS.txt
4 * SPDX-License-Identifier: MPL-2.0
5 * This file is part of Antares-Simulator,
6 * Adequacy and Performance assessment for interconnected energy networks.
7 *
8 * Antares_Simulator is free software: you can redistribute it and/or modify
9 * it under the terms of the Mozilla Public Licence 2.0 as published by
10 * the Mozilla Foundation, either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * Antares_Simulator is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * Mozilla Public Licence 2.0 for more details.
17 *
18 * You should have received a copy of the Mozilla Public Licence 2.0
19 * along with Antares_Simulator. If not, see <https://opensource.org/license/mpl-2-0/>.
20 */
21
22#pragma once
23
24#include "antares/io/inputs/yml-system/system.h"
25
26#include "yaml-cpp/yaml.h"
27
28// Implement convert specializations
29namespace YAML
30{
31
42template<typename T>
43inline T as_fallback_default(const Node& n)
44{
45 return n.as<T>(T());
46}
47
48template<>
49struct convert<Antares::IO::Inputs::YmlSystem::Parameter>
50{
51 static bool decode(const Node& node, Antares::IO::Inputs::YmlSystem::Parameter& rhs)
52 {
53 if (!node.IsMap())
54 {
55 return false;
56 }
57 rhs.id = node["id"].as<std::string>();
58 rhs.time_dependent = node["time-dependent"].as<bool>();
59 rhs.scenario_dependent = node["scenario-dependent"].as<bool>();
60 rhs.value = node["value"].as<std::string>();
61 return true;
62 }
63};
64
65template<>
66struct convert<Antares::IO::Inputs::YmlSystem::Component>
67{
68 static bool decode(const Node& node, Antares::IO::Inputs::YmlSystem::Component& rhs)
69 {
70 if (!node.IsMap())
71 {
72 return false;
73 }
74 rhs.id = node["id"].as<std::string>();
75 rhs.model = node["model"].as<std::string>();
76 rhs.scenarioGroup = node["scenario-group"].as<std::string>();
77 rhs.parameters = as_fallback_default<
78 std::vector<Antares::IO::Inputs::YmlSystem::Parameter>>(node["parameters"]);
79 return true;
80 }
81};
82
83template<>
84struct convert<Antares::IO::Inputs::YmlSystem::System>
85{
86 static bool decode(const Node& node, Antares::IO::Inputs::YmlSystem::System& rhs)
87 {
88 rhs.id = node["id"].as<std::string>();
89 rhs.libraries = as_fallback_default<std::vector<std::string>>(node["model-libraries"]);
90 rhs.components = as_fallback_default<
91 std::vector<Antares::IO::Inputs::YmlSystem::Component>>(node["components"]);
92 return true;
93 }
94};
95
96} // namespace YAML