Antares Simulator
Power System Simulator
HydroErrorsCollector.h
1 /*
2 ** Copyright 2007-2025, 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 #include <map>
24 #include <sstream>
25 #include <string>
26 #include <vector>
27 
28 namespace Antares
29 {
30 
32 {
33 public:
34  class AreaReference final
35  {
36  public:
37  AreaReference(HydroErrorsCollector* collector, const std::string& name);
38  template<class T>
39  AreaReference& operator<<(const T& msg);
40 
41  private:
42  std::string& areaSingleErrorMessage_;
43  };
44 
45  AreaReference operator()(const std::string& name);
46  HydroErrorsCollector() = default;
47  void CheckForErrors() const;
48 
49 private:
50  std::map<std::string, std::vector<std::string>> areasErrorMap_;
51  std::string& CurrentMessage(const std::string& name);
52 };
53 
54 template<class T>
55 HydroErrorsCollector::AreaReference& HydroErrorsCollector::AreaReference::operator<<(const T& msg)
56 {
57  std::ostringstream strfy;
58  strfy << msg;
59  areaSingleErrorMessage_ += strfy.str();
60  return *this;
61 }
62 
63 } // namespace Antares
Definition: HydroErrorsCollector.h:35
Definition: HydroErrorsCollector.h:32