diff options
| author | Claudius "keldu" Holeksa <mail@keldu.de> | 2026-01-15 15:36:45 +0100 |
|---|---|---|
| committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2026-01-15 15:36:45 +0100 |
| commit | 1d4f28f02e28fb7de9b9273ca936640818b45c6e (patch) | |
| tree | fc877b42e98e301e05e454b4d572bb8abe8d75dd /lib/core/c++/index.hpp | |
| parent | bf498dca2c333bd66775005571ef915cf27c3ee8 (diff) | |
| download | libs-lbm-1d4f28f02e28fb7de9b9273ca936640818b45c6e.tar.gz | |
Trying to find a simple approach to handling the data
Diffstat (limited to 'lib/core/c++/index.hpp')
| -rw-r--r-- | lib/core/c++/index.hpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/core/c++/index.hpp b/lib/core/c++/index.hpp new file mode 100644 index 0000000..00e597e --- /dev/null +++ b/lib/core/c++/index.hpp @@ -0,0 +1,30 @@ +#pragma once + +#include "common.hpp" + +namespace kel { +namespace lbm { + +template<typename T, uint64_t D> +saw::data<sch::FixedArray<sch::UInt64,D>> lower_index_from_pos(const saw::data<sch::Vector<T,D>>& pos){ + saw::data<sch::FixedArray<sch::UInt64,D>> ind; + + for(saw::data<sch::UInt64> i{0u}; i < ind.size(); ++i){ + ind.at(i).set(std::max(pos.at(i).template cast_to<sch::UInt64>().get(),0)); + } + + return ind; +} + +template<typename T, uint64_t D> +saw::data<sch::FixedArray<sch::UInt64,D>> upper_index_from_pos(const saw::data<sch::Vector<T,D>>& pos){ + auto ind = lower_index_from_pos(pos); + + for(saw::data<sch::UInt64> i{0u}; i < ind.size(); ++i){ + ++ind.at(i); + } + return ind; +} + +} +} |
