FinanceSim 0.1.0
Financial Simulation Library
Loading...
Searching...
No Matches
expenses_base.hpp
Go to the documentation of this file.
1#pragma once
2
3#include "core/model.hpp"
4
5namespace financesim {
6
9class ExpensesBase : public Model {
10public:
11 ExpensesBase(std::string id, std::string name, Schedule schedule);
12 virtual ~ExpensesBase() = default;
13
14 const std::string& id() const override { return id_; }
15 const std::string& name() const override { return name_; }
16 const Schedule& schedule() const override { return schedule_; }
17
18 void initialize(EventBus& bus) override;
19 void update(SimTime time) override;
20 void finalize() override;
21 void reset() override;
22
23protected:
24 EventBus& bus() { return *bus_; }
25
26 template<typename EventType, typename... Args>
27 void emit(SimTime time, Args&&... args) {
28 auto event = std::make_shared<EventType>(
29 time, id_, std::forward<Args>(args)...
30 );
32 }
33
34private:
35 std::string id_;
36 std::string name_;
38 EventBus* bus_ = nullptr;
39};
40
41} // namespace financesim
void publish(std::shared_ptr< const EventType > event)
Publish an event to all subscribers.
Definition event_bus.hpp:69
virtual ~ExpensesBase()=default
void update(SimTime time) override
void reset() override
Reset model to initial state (for replay)
const std::string & name() const override
Human-readable name/description.
void initialize(EventBus &bus) override
const std::string & id() const override
Unique identifier for this model instance.
void emit(SimTime time, Args &&... args)
const Schedule & schedule() const override
Get the model's execution schedule.
double SimTime
Represents a point in simulation time (continuous, in days)
Definition time.hpp:6