Antares Simulator
Power System Simulator
library.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 #pragma once
22 
23 #include <string>
24 #include <unordered_map>
25 
26 #include "model.h"
27 #include "portType.h"
28 
29 namespace Antares::ModelerStudy::SystemModel
30 {
31 
33 class Library final
34 {
35 public:
36  Library() = default;
37  ~Library() = default;
38 
39  const std::string& Id() const
40  {
41  return id_;
42  }
43 
44  const std::string& Description() const
45  {
46  return description_;
47  }
48 
49  const std::unordered_map<std::string, PortType>& PortTypes() const
50  {
51  return portTypes_;
52  }
53 
54  const std::unordered_map<std::string, Model>& Models() const
55  {
56  return *models_;
57  }
58 
59 private:
60  friend class LibraryBuilder;
61 
62  std::string id_;
63  std::string description_;
64 
65  std::unordered_map<std::string, PortType> portTypes_;
66  std::shared_ptr<std::unordered_map<std::string, Model>>
67  models_ = std::make_shared<std::unordered_map<std::string, Model>>();
68 };
69 
75 class LibraryBuilder final
76 {
77 public:
78  LibraryBuilder& withId(const std::string& id);
79  LibraryBuilder& withDescription(const std::string& description);
80  LibraryBuilder& withPortTypes(std::vector<PortType>&& portTypes);
81  LibraryBuilder& withModels(std::vector<Model>&& models);
82 
83  const Library& build() const;
84 
85 private:
86  Library library_;
87 };
88 
89 } // namespace Antares::ModelerStudy::SystemModel
Builder for the Library class Follow builder pattern: builder.Library().withId("id")....
Definition: library.h:76
LibraryBuilder & withModels(std::vector< Model > &&models)
Sets the models of the library.
Definition: library.cpp:82
LibraryBuilder & withDescription(const std::string &description)
Sets the description of the library.
Definition: library.cpp:50
LibraryBuilder & withId(const std::string &id)
Sets the ID of the library.
Definition: library.cpp:38
LibraryBuilder & withPortTypes(std::vector< PortType > &&portTypes)
Sets the port types of the library.
Definition: library.cpp:64
const Library & build() const
Returns the Library object.
Definition: library.cpp:97
A library is a collection of models.
Definition: library.h:34