FinanceSim 0.1.0
Financial Simulation Library
Loading...
Searching...
No Matches
model.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4#include <memory>
5#include "core/time.hpp"
6#include "core/event_bus.hpp"
7
8namespace financesim {
9
12class Model {
13public:
14 virtual ~Model() = default;
15
17 virtual const std::string& id() const = 0;
18
20 virtual const std::string& name() const = 0;
21
23 virtual const Schedule& schedule() const = 0;
24
27 virtual void initialize(EventBus& bus) = 0;
28
31 virtual void update(SimTime time) = 0;
32
35 virtual void finalize() = 0;
36
38 virtual void reset() = 0;
39
40protected:
41 Model() = default;
42};
43
44using ModelPtr = std::shared_ptr<Model>;
45
46} // namespace financesim
virtual ~Model()=default
virtual const std::string & name() const =0
Human-readable name/description.
virtual void update(SimTime time)=0
virtual void initialize(EventBus &bus)=0
virtual const Schedule & schedule() const =0
Get the model's execution schedule.
virtual void reset()=0
Reset model to initial state (for replay)
virtual void finalize()=0
virtual const std::string & id() const =0
Unique identifier for this model instance.
double SimTime
Represents a point in simulation time (continuous, in days)
Definition time.hpp:6
std::shared_ptr< Model > ModelPtr
Definition model.hpp:44