helics 3.7.0
Loading...
Searching...
No Matches
helicsApp.hpp
1/*
2Copyright (c) 2017-2026,
3Battelle Memorial Institute; Lawrence Livermore National Security, LLC; Alliance for Energy
4Innovation LLC. See the top-level NOTICE for additional details. All rights reserved.
5SPDX-License-Identifier: BSD-3-Clause
6*/
7#pragma once
8
9#include "../application_api/CombinationFederate.hpp"
10
11#include <fstream>
12#include <memory>
13#include <string>
14#include <string_view>
15#include <vector>
16
17namespace CLI {
18class App;
19} // namespace CLI
20
21namespace helics::fileops {
22class JsonBuffer;
23}
24namespace helics::apps {
25
26class AppTextParser;
27
32class HELICS_CXX_EXPORT App {
33 public:
35 App() = default;
40 App(std::string_view defaultAppName, std::vector<std::string> args);
46 App(std::string_view defaultAppName, int argc, char* argv[]);
52 App(std::string_view appName, const FederateInfo& fedInfo);
58 App(std::string_view appName, const std::shared_ptr<Core>& core, const FederateInfo& fedInfo);
64 App(std::string_view appName, CoreApp& core, const FederateInfo& fedInfo);
71 App(std::string_view appName, const std::string& configString);
72
74 App(App&& other_app) = default;
76 App(const App& other_app) = delete;
78 App& operator=(App&& app) = default;
81 App& operator=(const App& app) = delete;
82 virtual ~App();
83
90 void loadFile(const std::string& filename, bool enableFederateInterfaceRegistration = true);
97 virtual void initialize();
98 /*run the Player*/
99 virtual void run();
100
104 virtual void runTo(Time stopTime_input) = 0;
105
107 virtual void finalize();
108
110 bool isActive() const { return !deactivated; }
112 const CombinationFederate& accessUnderlyingFederate() const { return *fed; }
113
115 std::shared_ptr<CombinationFederate> getUnderlyingFederatePointer() { return fed; }
116
117 protected:
121 virtual void loadJsonFile(const std::string& jsonString,
122 bool enableFederateInterfaceRegistration);
128 void loadJsonFileConfiguration(const std::string& appName,
129 const std::string& jsonString,
130 bool enableFederateInterfaceRegistration);
132 virtual void loadTextFile(const std::string& textFile);
134 void loadInputFiles();
136 void loadConfigOptions(AppTextParser& aparser);
137
138 private:
139 void loadConfigOptions(const fileops::JsonBuffer& element);
141 std::unique_ptr<helicsCLI11App> generateParser();
143 void processArgs(std::unique_ptr<helicsCLI11App>& app,
144 FederateInfo& fedInfo,
145 std::string_view defaultAppName);
146
147 protected:
148 std::shared_ptr<CombinationFederate> fed;
149 Time stopTime = Time::maxVal();
150 std::string configFileName;
151 std::string inputFileName;
152 std::string outFileName;
153 bool useLocal{false};
154 bool fileLoaded{false};
155 bool deactivated{false};
156 bool quietMode{false};
157 bool helpMode{false};
158 std::vector<std::string> remArgs;
159};
160
162 public:
163 explicit AppTextParser(const std::string& filename);
165 std::vector<int> preParseFile(const std::vector<char>& klines);
166
167 const std::string& configString() const { return configStr; }
169 bool loadNextLine(std::string& line, int& lineNumber);
170 void reset();
171
172 private:
173 bool mLineComment{false};
174 std::ifstream filePtr;
175 std::string configStr;
176 std::string mFileName;
177 int currentLineNumber{0};
178};
179} // namespace helics::apps
Definition application_api/CombinationFederate.hpp:18
Definition FederateInfo.hpp:28
Definition helicsApp.hpp:161
std::vector< int > preParseFile(const std::vector< char > &klines)
Definition helicsApp.cpp:151
bool loadNextLine(std::string &line, int &lineNumber)
Definition helicsApp.cpp:199
Definition helicsApp.hpp:32
std::string inputFileName
the name of the app input file
Definition helicsApp.hpp:151
std::string configFileName
name of the config file used for constructing the federate
Definition helicsApp.hpp:150
std::shared_ptr< CombinationFederate > fed
the federate created for the App
Definition helicsApp.hpp:148
std::string outFileName
the name of any output file
Definition helicsApp.hpp:152
virtual void runTo(Time stopTime_input)=0
App & operator=(const App &app)=delete
const CombinationFederate & accessUnderlyingFederate() const
Definition helicsApp.hpp:112
std::shared_ptr< CombinationFederate > getUnderlyingFederatePointer()
Definition helicsApp.hpp:115
App(const App &other_app)=delete
App & operator=(App &&app)=default
App(App &&other_app)=default
bool isActive() const
Definition helicsApp.hpp:110
Definition JsonProcessingFunctions.hpp:25
TimeRepresentation< count_time< 9 > > Time
Definition helicsTime.hpp:27