FhSim  3.1.0
Marine systems simulation
Loading...
Searching...
No Matches
WakeRegistry.h
1#pragma once
4
5#include <marenv/marenv.h>
6#include <marenv/wake/WakeAccumulator.h> // WakeComposition
7#include <marenv/wake/WakeField.h>
8
9#include <memory>
10#include <string>
11#include <utility>
12#include <vector>
13
14namespace marenv::wake
15{
24{
25 const WakeField* exclude = nullptr;
26 const WakeField* own = nullptr;
27};
28
50{
51public:
58 void Add(const std::string& id, std::shared_ptr<WakeField> field);
59
63 void Remove(const std::string& id);
64
66 bool Has(const std::string& id) const;
67
71 std::shared_ptr<WakeField> Get(const std::string& id) const;
72
74 std::vector<std::string> Ids() const;
75
94 std::vector<std::shared_ptr<const WakeField>> SelectReaching(const WakeQueryRegion& region, const WakeField* exclude = nullptr) const;
95
103 WakeComposition Compose(double time, const double pos[3], const WakeQuery& query = {}) const;
104
105private:
106 using Entry = std::pair<std::string, std::shared_ptr<WakeField>>;
107
108 std::vector<Entry>::const_iterator Find(const std::string& id) const;
109
110 std::vector<Entry> m_fields;
111};
112
113} // namespace marenv::wake
Definition WakeField.h:50
Definition WakeRegistry.h:50
void Add(const std::string &id, std::shared_ptr< WakeField > field)
std::vector< std::shared_ptr< const WakeField > > SelectReaching(const WakeQueryRegion &region, const WakeField *exclude=nullptr) const
bool Has(const std::string &id) const
Whether a field is registered under id.
std::vector< std::string > Ids() const
The identifiers in registration order.
std::shared_ptr< WakeField > Get(const std::string &id) const
void Remove(const std::string &id)
WakeComposition Compose(double time, const double pos[3], const WakeQuery &query={}) const
Policy mixin: this type is neither copyable nor movable.
Definition marenv.h:96
Definition WakeAccumulator.h:15
Definition WakeField.h:17
Definition WakeRegistry.h:24
const WakeField * exclude
A registered field to skip; null skips none.
Definition WakeRegistry.h:25
const WakeField * own
An unregistered field to compose in as well; null adds none.
Definition WakeRegistry.h:26