Wayverb
persistent.h
1 #pragma once
2 
3 #include "combined/model/material.h"
4 #include "combined/model/output.h"
5 #include "combined/model/raytracer.h"
6 #include "combined/model/receiver.h"
7 #include "combined/model/source.h"
8 #include "combined/model/waveguide.h"
9 
10 namespace wayverb {
11 namespace combined {
12 namespace model {
13 
16 
17 class persistent final : public owning_member<persistent,
18  sources,
19  receivers,
20  raytracer,
21  waveguide,
22  min_size_vector<material, 1>> {
23 public:
24  using sources_t = sources;
25  using receivers_t = receivers;
26  using raytracer_t = class raytracer;
27  using waveguide_t = class waveguide;
28  using materials_t = class vector<material>;
29 
30  const auto& sources() const { return get<0>(); }
31  auto& sources() { return get<0>(); }
32 
33  const auto& receivers() const { return get<1>(); }
34  auto& receivers() { return get<1>(); }
35 
36  const auto& raytracer() const { return get<2>(); }
37  auto& raytracer() { return get<2>(); }
38 
39  const auto& waveguide() const { return get<3>(); }
40  auto& waveguide() { return get<3>(); }
41 
42  const auto& materials() const { return get<4>(); }
43  auto& materials() { return get<4>(); }
44 
45  NOTIFYING_COPY_ASSIGN_DECLARATION(persistent)
46 private:
47  inline void swap(persistent&) noexcept { using std::swap; };
48 };
49 
50 } // namespace model
51 } // namespace combined
52 } // namespace wayverb
Definition: vector.h:15
Definition: waveguide.h:84
Definition: persistent.h:17
Definition: pressure.h:22
Definition: capsule_base.h:9
A vector which must hold some minimum number of elements.
Definition: min_size_vector.h:11