Program Listing for File lunanet_sat_app.h¶
↰ Return to documentation for file (applications/lunanet_sat_app.h)
#pragma once
#include <string>
#include <utility>
#include <vector>
#include "lupnt/applications/application.h"
#include "lupnt/core/definitions.h"
namespace lupnt {
class LunaNetSatApp;
class LunaNetSubApp {
public:
LunaNetSubApp() = default;
explicit LunaNetSubApp(std::string name) : name_(std::move(name)) {}
virtual ~LunaNetSubApp() = default;
virtual void Setup(LunaNetSatApp& app);
virtual void Step(Real t) = 0;
virtual void Finish();
const std::string& GetName() const { return name_; }
void SetName(std::string name) { name_ = std::move(name); }
protected:
std::string name_ = "lunanet_subapp";
};
class LunaNetSatApp : public Application {
public:
LunaNetSatApp() = default;
explicit LunaNetSatApp(Config& config);
void AddSubApp(Ptr<LunaNetSubApp> app);
const std::vector<Ptr<LunaNetSubApp>>& GetSubApps() const { return sub_apps_; }
void Setup() override;
void Step(Real t) override;
void Finish();
private:
std::vector<Ptr<LunaNetSubApp>> sub_apps_;
};
} // namespace lupnt