TerrainGen coverage


terraingen/
Coverage:
low: ≥ 0%
medium: ≥ 75.0%
high: ≥ 90.0%
Lines:
117 / 168
69.6%
Branches:
83 / 141
58.9%
Functions:
24 / 28
85.7%

python/src/objects.h
Line Branch Exec Source
1 /// @file
2 /// @brief Terrains and albedos as Python builds them, with mutable parts.
3 #pragma once
4
5 #include "common.h"
6
7 #include "terraingen/albedo/albedo.h"
8 #include "terraingen/pipeline/terrain.h"
9
10 #include <memory>
11 #include <vector>
12
13 namespace terraingen::python {
14
15 /// A terrain as Python builds it: the parts are held as mutable pointers so they can be
16 /// passed back to Python, and converted to a `Terrain` for evaluation.
17 struct PyTerrain {
18 std::shared_ptr<Source> source;
19 std::vector<std::shared_ptr<Layer>> layers;
20 Surface surface{};
21
22 /// The terrain as the library evaluates it.
23 8525 Terrain Get() const {
24 8525 Terrain terrain;
25 8525 terrain.source = source;
26
1/1
✓ Branch 3 taken 8525 times.
8525 terrain.layers.assign(layers.begin(), layers.end());
27 8525 terrain.surface = surface;
28 8525 return terrain;
29 }
30 };
31
32 /// An albedo as Python builds it, with mutable parts as for `PyTerrain`.
33 struct PyAlbedo {
34 std::shared_ptr<AlbedoSource> source;
35 std::vector<std::shared_ptr<AlbedoLayer>> layers;
36 Surface surface{};
37
38 /// The albedo as the library evaluates it.
39 25 Albedo Get() const {
40 25 Albedo albedo;
41 25 albedo.source = source;
42
1/1
✓ Branch 3 taken 25 times.
25 albedo.layers.assign(layers.begin(), layers.end());
43 25 albedo.surface = surface;
44 25 return albedo;
45 }
46 };
47
48 /// Pointers Python can hold to the same objects as `parts`.
49 template <typename T>
50 6 std::vector<std::shared_ptr<T>> MutableAll(const std::vector<std::shared_ptr<const T>>& parts) {
51 6 std::vector<std::shared_ptr<T>> held;
52
2/2
std::vector<std::shared_ptr<terraingen::AlbedoLayer>, std::allocator<std::shared_ptr<terraingen::AlbedoLayer> > > terraingen::python::MutableAll<terraingen::AlbedoLayer>(std::vector<std::shared_ptr<terraingen::AlbedoLayer const>, std::allocator<std::shared_ptr<terraingen::AlbedoLayer const> > > const&):
✓ Branch 2 taken 1 time.
std::vector<std::shared_ptr<terraingen::Layer>, std::allocator<std::shared_ptr<terraingen::Layer> > > terraingen::python::MutableAll<terraingen::Layer>(std::vector<std::shared_ptr<terraingen::Layer const>, std::allocator<std::shared_ptr<terraingen::Layer const> > > const&):
✓ Branch 2 taken 5 times.
6 held.reserve(parts.size());
53
3/4
std::vector<std::shared_ptr<terraingen::AlbedoLayer>, std::allocator<std::shared_ptr<terraingen::AlbedoLayer> > > terraingen::python::MutableAll<terraingen::AlbedoLayer>(std::vector<std::shared_ptr<terraingen::AlbedoLayer const>, std::allocator<std::shared_ptr<terraingen::AlbedoLayer const> > > const&):
✗ Branch 4 not taken.
✓ Branch 5 taken 1 time.
std::vector<std::shared_ptr<terraingen::Layer>, std::allocator<std::shared_ptr<terraingen::Layer> > > terraingen::python::MutableAll<terraingen::Layer>(std::vector<std::shared_ptr<terraingen::Layer const>, std::allocator<std::shared_ptr<terraingen::Layer const> > > const&):
✓ Branch 4 taken 9 times.
✓ Branch 5 taken 5 times.
15 for (const auto& part : parts) {
54
1/2
std::vector<std::shared_ptr<terraingen::AlbedoLayer>, std::allocator<std::shared_ptr<terraingen::AlbedoLayer> > > terraingen::python::MutableAll<terraingen::AlbedoLayer>(std::vector<std::shared_ptr<terraingen::AlbedoLayer const>, std::allocator<std::shared_ptr<terraingen::AlbedoLayer const> > > const&):
✗ Branch 2 not taken.
std::vector<std::shared_ptr<terraingen::Layer>, std::allocator<std::shared_ptr<terraingen::Layer> > > terraingen::python::MutableAll<terraingen::Layer>(std::vector<std::shared_ptr<terraingen::Layer const>, std::allocator<std::shared_ptr<terraingen::Layer const> > > const&):
✓ Branch 2 taken 9 times.
9 held.push_back(Mutable(part));
55 }
56 6 return held;
57 }
58
59 /// `terrain` as Python holds it.
60 5 inline PyTerrain FromTerrain(const Terrain& terrain) {
61 5 return {Mutable(terrain.source), MutableAll(terrain.layers), terrain.surface};
62
1/3
✓ Branch 2 taken 5 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
5 }
63
64 /// `albedo` as Python holds it.
65 1 inline PyAlbedo FromAlbedo(const Albedo& albedo) {
66 1 return {Mutable(albedo.source), MutableAll(albedo.layers), albedo.surface};
67
1/3
✓ Branch 2 taken 1 time.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
1 }
68
69 /// Calls `fn` with a `const Ground*` made by `terrain`'s source and first `layers` layers, or
70 /// with null when `terrain` is null, and returns what `fn` returns.
71 34709 template <typename Fn> auto WithGround(const PyTerrain* terrain, std::size_t layers, Fn fn) {
72
13/30
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindBedforms(nanobind::module_&)::{lambda(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindBedforms(nanobind::module_&)::{lambda(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 4256 times.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#2}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#2}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 0 taken 30406 times.
✓ Branch 1 taken 31 times.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindSandFill(nanobind::module_&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindSandFill(nanobind::module_&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindSandShadows(nanobind::module_&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindSandShadows(nanobind::module_&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::BedformLayer, nanobind::class_<terraingen::BedformLayer, terraingen::Layer> >(nanobind::class_<terraingen::BedformLayer, terraingen::Layer>&)::{lambda(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::BedformLayer, nanobind::class_<terraingen::BedformLayer, terraingen::Layer> >(nanobind::class_<terraingen::BedformLayer, terraingen::Layer>&)::{lambda(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::BoulderLayer, nanobind::class_<terraingen::BoulderLayer, terraingen::Layer> >(nanobind::class_<terraingen::BoulderLayer, terraingen::Layer>&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::BoulderLayer, nanobind::class_<terraingen::BoulderLayer, terraingen::Layer> >(nanobind::class_<terraingen::BoulderLayer, terraingen::Layer>&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::DuneLayer, nanobind::class_<terraingen::DuneLayer, terraingen::Layer> >(nanobind::class_<terraingen::DuneLayer, terraingen::Layer>&)::{lambda(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::DuneLayer, nanobind::class_<terraingen::DuneLayer, terraingen::Layer> >(nanobind::class_<terraingen::DuneLayer, terraingen::Layer>&)::{lambda(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::PavementLayer, nanobind::class_<terraingen::PavementLayer, terraingen::Layer> >(nanobind::class_<terraingen::PavementLayer, terraingen::Layer>&)::{lambda(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::PavementLayer, nanobind::class_<terraingen::PavementLayer, terraingen::Layer> >(nanobind::class_<terraingen::PavementLayer, terraingen::Layer>&)::{lambda(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::SandFillLayer, nanobind::class_<terraingen::SandFillLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandFillLayer, terraingen::Layer>&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::SandFillLayer, nanobind::class_<terraingen::SandFillLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandFillLayer, terraingen::Layer>&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::SandShadowLayer, nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer>&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::SandShadowLayer, nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer>&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::StrataLayer, nanobind::class_<terraingen::StrataLayer, terraingen::Layer> >(nanobind::class_<terraingen::StrataLayer, terraingen::Layer>&)::{lambda(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::StrataLayer, nanobind::class_<terraingen::StrataLayer, terraingen::Layer> >(nanobind::class_<terraingen::StrataLayer, terraingen::Layer>&)::{lambda(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
34709 if (terrain == nullptr) {
73
7/15
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindBedforms(nanobind::module_&)::{lambda(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindBedforms(nanobind::module_&)::{lambda(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 1 time.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 2 times.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#2}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#2}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 1 time.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 30406 times.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindSandFill(nanobind::module_&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindSandFill(nanobind::module_&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindSandShadows(nanobind::module_&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindSandShadows(nanobind::module_&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 1 time.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::BedformLayer, nanobind::class_<terraingen::BedformLayer, terraingen::Layer> >(nanobind::class_<terraingen::BedformLayer, terraingen::Layer>&)::{lambda(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::BedformLayer, nanobind::class_<terraingen::BedformLayer, terraingen::Layer> >(nanobind::class_<terraingen::BedformLayer, terraingen::Layer>&)::{lambda(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::BoulderLayer, nanobind::class_<terraingen::BoulderLayer, terraingen::Layer> >(nanobind::class_<terraingen::BoulderLayer, terraingen::Layer>&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::BoulderLayer, nanobind::class_<terraingen::BoulderLayer, terraingen::Layer> >(nanobind::class_<terraingen::BoulderLayer, terraingen::Layer>&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 1 time.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::DuneLayer, nanobind::class_<terraingen::DuneLayer, terraingen::Layer> >(nanobind::class_<terraingen::DuneLayer, terraingen::Layer>&)::{lambda(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::DuneLayer, nanobind::class_<terraingen::DuneLayer, terraingen::Layer> >(nanobind::class_<terraingen::DuneLayer, terraingen::Layer>&)::{lambda(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::PavementLayer, nanobind::class_<terraingen::PavementLayer, terraingen::Layer> >(nanobind::class_<terraingen::PavementLayer, terraingen::Layer>&)::{lambda(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::PavementLayer, nanobind::class_<terraingen::PavementLayer, terraingen::Layer> >(nanobind::class_<terraingen::PavementLayer, terraingen::Layer>&)::{lambda(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 1 time.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::SandFillLayer, nanobind::class_<terraingen::SandFillLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandFillLayer, terraingen::Layer>&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::SandFillLayer, nanobind::class_<terraingen::SandFillLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandFillLayer, terraingen::Layer>&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::SandShadowLayer, nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer>&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::SandShadowLayer, nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer>&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::StrataLayer, nanobind::class_<terraingen::StrataLayer, terraingen::Layer> >(nanobind::class_<terraingen::StrataLayer, terraingen::Layer>&)::{lambda(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::StrataLayer, nanobind::class_<terraingen::StrataLayer, terraingen::Layer> >(nanobind::class_<terraingen::StrataLayer, terraingen::Layer>&)::{lambda(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
30414 return fn(static_cast<const Ground*>(nullptr));
74 }
75
6/15
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindBedforms(nanobind::module_&)::{lambda(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindBedforms(nanobind::module_&)::{lambda(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 4256 times.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 1 time.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 5 times.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#2}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#2}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 31 times.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindSandFill(nanobind::module_&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindSandFill(nanobind::module_&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 1 time.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindSandShadows(nanobind::module_&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindSandShadows(nanobind::module_&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::BedformLayer, nanobind::class_<terraingen::BedformLayer, terraingen::Layer> >(nanobind::class_<terraingen::BedformLayer, terraingen::Layer>&)::{lambda(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::BedformLayer, nanobind::class_<terraingen::BedformLayer, terraingen::Layer> >(nanobind::class_<terraingen::BedformLayer, terraingen::Layer>&)::{lambda(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::BoulderLayer, nanobind::class_<terraingen::BoulderLayer, terraingen::Layer> >(nanobind::class_<terraingen::BoulderLayer, terraingen::Layer>&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::BoulderLayer, nanobind::class_<terraingen::BoulderLayer, terraingen::Layer> >(nanobind::class_<terraingen::BoulderLayer, terraingen::Layer>&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::DuneLayer, nanobind::class_<terraingen::DuneLayer, terraingen::Layer> >(nanobind::class_<terraingen::DuneLayer, terraingen::Layer>&)::{lambda(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::DuneLayer, nanobind::class_<terraingen::DuneLayer, terraingen::Layer> >(nanobind::class_<terraingen::DuneLayer, terraingen::Layer>&)::{lambda(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::PavementLayer, nanobind::class_<terraingen::PavementLayer, terraingen::Layer> >(nanobind::class_<terraingen::PavementLayer, terraingen::Layer>&)::{lambda(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::PavementLayer, nanobind::class_<terraingen::PavementLayer, terraingen::Layer> >(nanobind::class_<terraingen::PavementLayer, terraingen::Layer>&)::{lambda(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::SandFillLayer, nanobind::class_<terraingen::SandFillLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandFillLayer, terraingen::Layer>&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::SandFillLayer, nanobind::class_<terraingen::SandFillLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandFillLayer, terraingen::Layer>&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 1 time.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::SandShadowLayer, nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer>&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::SandShadowLayer, nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer>&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::StrataLayer, nanobind::class_<terraingen::StrataLayer, terraingen::Layer> >(nanobind::class_<terraingen::StrataLayer, terraingen::Layer>&)::{lambda(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::StrataLayer, nanobind::class_<terraingen::StrataLayer, terraingen::Layer> >(nanobind::class_<terraingen::StrataLayer, terraingen::Layer>&)::{lambda(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
4295 const Terrain built = terrain->Get();
76
6/15
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindBedforms(nanobind::module_&)::{lambda(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindBedforms(nanobind::module_&)::{lambda(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 4256 times.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 1 time.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 5 times.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#2}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#2}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 31 times.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindSandFill(nanobind::module_&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindSandFill(nanobind::module_&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 1 time.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindSandShadows(nanobind::module_&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindSandShadows(nanobind::module_&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::BedformLayer, nanobind::class_<terraingen::BedformLayer, terraingen::Layer> >(nanobind::class_<terraingen::BedformLayer, terraingen::Layer>&)::{lambda(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::BedformLayer, nanobind::class_<terraingen::BedformLayer, terraingen::Layer> >(nanobind::class_<terraingen::BedformLayer, terraingen::Layer>&)::{lambda(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::BoulderLayer, nanobind::class_<terraingen::BoulderLayer, terraingen::Layer> >(nanobind::class_<terraingen::BoulderLayer, terraingen::Layer>&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::BoulderLayer, nanobind::class_<terraingen::BoulderLayer, terraingen::Layer> >(nanobind::class_<terraingen::BoulderLayer, terraingen::Layer>&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::DuneLayer, nanobind::class_<terraingen::DuneLayer, terraingen::Layer> >(nanobind::class_<terraingen::DuneLayer, terraingen::Layer>&)::{lambda(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::DuneLayer, nanobind::class_<terraingen::DuneLayer, terraingen::Layer> >(nanobind::class_<terraingen::DuneLayer, terraingen::Layer>&)::{lambda(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::PavementLayer, nanobind::class_<terraingen::PavementLayer, terraingen::Layer> >(nanobind::class_<terraingen::PavementLayer, terraingen::Layer>&)::{lambda(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::PavementLayer, nanobind::class_<terraingen::PavementLayer, terraingen::Layer> >(nanobind::class_<terraingen::PavementLayer, terraingen::Layer>&)::{lambda(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::SandFillLayer, nanobind::class_<terraingen::SandFillLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandFillLayer, terraingen::Layer>&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::SandFillLayer, nanobind::class_<terraingen::SandFillLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandFillLayer, terraingen::Layer>&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 1 time.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::SandShadowLayer, nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer>&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::SandShadowLayer, nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer>&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::StrataLayer, nanobind::class_<terraingen::StrataLayer, terraingen::Layer> >(nanobind::class_<terraingen::StrataLayer, terraingen::Layer>&)::{lambda(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::StrataLayer, nanobind::class_<terraingen::StrataLayer, terraingen::Layer> >(nanobind::class_<terraingen::StrataLayer, terraingen::Layer>&)::{lambda(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
4295 const TerrainGround ground(built, layers);
77
6/15
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindBedforms(nanobind::module_&)::{lambda(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindBedforms(nanobind::module_&)::{lambda(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 4256 times.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, double, double, double) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 1 time.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindExposureField(nanobind::module_&)::{lambda(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int)#1}::operator()(terraingen::ExposureField const&, terraingen::python::PyTerrain const&, unsigned long, terraingen::RasterGrid const&, double, unsigned int) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 5 times.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#2}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#2}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindLayer(nanobind::module_&)::{lambda(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 31 times.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindSandFill(nanobind::module_&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindSandFill(nanobind::module_&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const&, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 1 time.
auto terraingen::python::WithGround<terraingen::python::(anonymous namespace)::BindSandShadows(nanobind::module_&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::(anonymous namespace)::BindSandShadows(nanobind::module_&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::BedformLayer, nanobind::class_<terraingen::BedformLayer, terraingen::Layer> >(nanobind::class_<terraingen::BedformLayer, terraingen::Layer>&)::{lambda(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::BedformLayer, nanobind::class_<terraingen::BedformLayer, terraingen::Layer> >(nanobind::class_<terraingen::BedformLayer, terraingen::Layer>&)::{lambda(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BedformLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::BoulderLayer, nanobind::class_<terraingen::BoulderLayer, terraingen::Layer> >(nanobind::class_<terraingen::BoulderLayer, terraingen::Layer>&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::BoulderLayer, nanobind::class_<terraingen::BoulderLayer, terraingen::Layer> >(nanobind::class_<terraingen::BoulderLayer, terraingen::Layer>&)::{lambda(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::BoulderLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::DuneLayer, nanobind::class_<terraingen::DuneLayer, terraingen::Layer> >(nanobind::class_<terraingen::DuneLayer, terraingen::Layer>&)::{lambda(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::DuneLayer, nanobind::class_<terraingen::DuneLayer, terraingen::Layer> >(nanobind::class_<terraingen::DuneLayer, terraingen::Layer>&)::{lambda(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::DuneLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::PavementLayer, nanobind::class_<terraingen::PavementLayer, terraingen::Layer> >(nanobind::class_<terraingen::PavementLayer, terraingen::Layer>&)::{lambda(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::PavementLayer, nanobind::class_<terraingen::PavementLayer, terraingen::Layer> >(nanobind::class_<terraingen::PavementLayer, terraingen::Layer>&)::{lambda(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::PavementLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::SandFillLayer, nanobind::class_<terraingen::SandFillLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandFillLayer, terraingen::Layer>&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::SandFillLayer, nanobind::class_<terraingen::SandFillLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandFillLayer, terraingen::Layer>&)::{lambda(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandFillLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✓ Branch 1 taken 1 time.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::SandShadowLayer, nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer>&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::SandShadowLayer, nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer>&)::{lambda(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::SandShadowLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
auto terraingen::python::WithGround<terraingen::python::BindMaterialCover<terraingen::StrataLayer, nanobind::class_<terraingen::StrataLayer, terraingen::Layer> >(nanobind::class_<terraingen::StrataLayer, terraingen::Layer>&)::{lambda(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}>(terraingen::python::PyTerrain const*, unsigned long, terraingen::python::BindMaterialCover<terraingen::StrataLayer, nanobind::class_<terraingen::StrataLayer, terraingen::Layer> >(nanobind::class_<terraingen::StrataLayer, terraingen::Layer>&)::{lambda(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long)#1}::operator()(terraingen::StrataLayer const&, double, double, double, terraingen::python::PyTerrain const*, unsigned long) const::{lambda(terraingen::Ground const*)#1}):
✗ Branch 1 not taken.
4295 return fn(static_cast<const Ground*>(&ground));
78 4295 }
79
80 /// Adds `material` and `material_cover_at` to a class binding of a `MaterialSource` layer.
81 308 template <typename Layer, typename Class> void BindMaterialCover(Class& cls) {
82 308 cls.def_prop_ro("material", [](const Layer& source) { return source.Material(); });
83 ✗ cls.def(
84 "material_cover_at",
85 308 [](const Layer& source, double x, double y, double spacing, const PyTerrain* terrain,
86 std::size_t layers) {
87 return WithGround(terrain, layers, [&](const Ground* ground) {
88 return source.MaterialCoverAt(x, y, spacing, ground);
89 });
90 },
91
35/35
void terraingen::python::BindMaterialCover<terraingen::BedformLayer, nanobind::class_<terraingen::BedformLayer, terraingen::Layer> >(nanobind::class_<terraingen::BedformLayer, terraingen::Layer>&):
✓ Branch 1 taken 44 times.
✓ Branch 4 taken 44 times.
✓ Branch 7 taken 44 times.
✓ Branch 10 taken 44 times.
✓ Branch 13 taken 44 times.
void terraingen::python::BindMaterialCover<terraingen::BoulderLayer, nanobind::class_<terraingen::BoulderLayer, terraingen::Layer> >(nanobind::class_<terraingen::BoulderLayer, terraingen::Layer>&):
✓ Branch 1 taken 44 times.
✓ Branch 4 taken 44 times.
✓ Branch 7 taken 44 times.
✓ Branch 10 taken 44 times.
✓ Branch 13 taken 44 times.
void terraingen::python::BindMaterialCover<terraingen::DuneLayer, nanobind::class_<terraingen::DuneLayer, terraingen::Layer> >(nanobind::class_<terraingen::DuneLayer, terraingen::Layer>&):
✓ Branch 1 taken 44 times.
✓ Branch 4 taken 44 times.
✓ Branch 7 taken 44 times.
✓ Branch 10 taken 44 times.
✓ Branch 13 taken 44 times.
void terraingen::python::BindMaterialCover<terraingen::PavementLayer, nanobind::class_<terraingen::PavementLayer, terraingen::Layer> >(nanobind::class_<terraingen::PavementLayer, terraingen::Layer>&):
✓ Branch 1 taken 44 times.
✓ Branch 4 taken 44 times.
✓ Branch 7 taken 44 times.
✓ Branch 10 taken 44 times.
✓ Branch 13 taken 44 times.
void terraingen::python::BindMaterialCover<terraingen::SandFillLayer, nanobind::class_<terraingen::SandFillLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandFillLayer, terraingen::Layer>&):
✓ Branch 1 taken 44 times.
✓ Branch 4 taken 44 times.
✓ Branch 7 taken 44 times.
✓ Branch 10 taken 44 times.
✓ Branch 13 taken 44 times.
void terraingen::python::BindMaterialCover<terraingen::SandShadowLayer, nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer> >(nanobind::class_<terraingen::SandShadowLayer, terraingen::Layer>&):
✓ Branch 1 taken 44 times.
✓ Branch 4 taken 44 times.
✓ Branch 7 taken 44 times.
✓ Branch 10 taken 44 times.
✓ Branch 13 taken 44 times.
void terraingen::python::BindMaterialCover<terraingen::StrataLayer, nanobind::class_<terraingen::StrataLayer, terraingen::Layer> >(nanobind::class_<terraingen::StrataLayer, terraingen::Layer>&):
✓ Branch 1 taken 44 times.
✓ Branch 4 taken 44 times.
✓ Branch 7 taken 44 times.
✓ Branch 10 taken 44 times.
✓ Branch 13 taken 44 times.
1540 "x"_a, "y"_a, "spacing"_a = 1.0, "terrain"_a = nb::none(), "layers"_a = 0,
92 "How fully the layer covers (x, y) with its material, in [0, 1]; layers that read the "
93 "ground need `terrain`'s source and its first `layers` layers.");
94 308 }
95
96 } // namespace terraingen::python
97