diff options
author | Adrian Kummerlaender | 2021-05-17 00:30:13 +0200 |
---|---|---|
committer | Adrian Kummerlaender | 2021-05-17 00:30:13 +0200 |
commit | a92271176a19e06611099c0eccc4e6a6887f4915 (patch) | |
tree | 54067b334bfae7d99c79cfb00da5891334f9514c /src/propagation.h | |
download | SweepLB-a92271176a19e06611099c0eccc4e6a6887f4915.tar SweepLB-a92271176a19e06611099c0eccc4e6a6887f4915.tar.gz SweepLB-a92271176a19e06611099c0eccc4e6a6887f4915.tar.bz2 SweepLB-a92271176a19e06611099c0eccc4e6a6887f4915.tar.lz SweepLB-a92271176a19e06611099c0eccc4e6a6887f4915.tar.xz SweepLB-a92271176a19e06611099c0eccc4e6a6887f4915.tar.zst SweepLB-a92271176a19e06611099c0eccc4e6a6887f4915.zip |
Extract public version of SweepLB
Diffstat (limited to 'src/propagation.h')
-rw-r--r-- | src/propagation.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/propagation.h b/src/propagation.h new file mode 100644 index 0000000..0bcb435 --- /dev/null +++ b/src/propagation.h @@ -0,0 +1,28 @@ +#pragma once + +#include "cuboid.h" +#include "concepts.h" + +namespace concepts { + +template <typename BUFFER> +concept CuboidConstructible = std::constructible_from<BUFFER, Cuboid>; + +template <typename BUFFER> +concept PopulationAccess = Arithmetic<typename BUFFER::value_t> + && requires(BUFFER& b) { + { b.get(unsigned{}, stage::pre_collision()) } -> std::same_as<typename BUFFER::value_t*>; + { b.get(unsigned{}, stage::post_collision()) } -> std::same_as<typename BUFFER::value_t*>; +}; + +template <typename BUFFER> +concept Propagatable = requires(BUFFER& b) { + b.stream(); +}; + +template <typename BUFFER> +concept PropagatablePopulationBuffer = CuboidConstructible<BUFFER> + && PopulationAccess<BUFFER> + && Propagatable<BUFFER>; + +} |