Data and flow control. More...
#include "core/error.h"#include "util/iterator_util.h"#include "backbone/type_traits.h"#include "backbone/array.h"Go to the source code of this file.
Namespaces | |
| namespace | backbone |
| Random number generator; built on top of Drjit. | |
Functions | |
| template<typename NEWTYPE , typename OLDTYPE > | |
| NEWTYPE | cast (OLDTYPE &&val) |
| cast | |
| template<typename MASK , typename A , typename B > | |
| auto | select (MASK &&mask, A &&a, B &&b) |
| Extension of drjit::select to diff/non-diff masks. | |
| template<typename RET , typename C , typename Index > requires (!is_packet_v<Index>) && std::ranges::range<C> && std::convertible_to<bbm::iterable_value_t<C>, RET> && is_index_v<Index> | |
| constexpr RET | lookup (C &&container, const Index &idx, const index_mask_t< Index > &mask=true) |
| Non-packet look up. | |
| template<typename RET , typename C , typename Index > requires is_packet_v<RET> && is_packet_v<Index> && std::ranges::range<C> && is_index_v<Index> && std::convertible_to<bbm::iterable_value_t<C>, remove_packet_t<RET>> && (!is_packet_v<bbm::iterable_value_t<C>>) | |
| RET | lookup (C &&container, const Index &idx, const index_mask_t< Index > &mask=true) |
| Non-packet data, Packet look up. | |
| template<typename RET , typename C , typename Index > requires is_packet_v<RET> && is_packet_v<Index> && std::ranges::range<C> && is_index_v<Index> && std::convertible_to<bbm::iterable_value_t<C>, RET> && is_packet_v<bbm::iterable_value_t<C>> | |
| RET | lookup (C &&container, const Index &idx, const index_mask_t< Index > &mask=true) |
| Packet data, Packet look up. | |
| template<typename VAL , typename C , typename Index > requires (!is_packet_v<Index>) && std::ranges::range<C> && is_index_v<Index> && std::convertible_to<VAL, bbm::iterable_value_t<C>> | |
| constexpr void | set (C &&container, const Index &idx, VAL &&value, const index_mask_t< Index > &mask=true) |
| Non-packet set. | |
| template<typename VAL , typename C , typename Index > requires is_packet_v<VAL> && is_packet_v<Index> && std::ranges::range<C> && is_index_v<Index> && std::convertible_to<remove_packet_t<VAL>, bbm::iterable_value_t<C>> && (!is_packet_v<bbm::iterable_value_t<C>>) | |
| void | set (C &&container, const Index &idx, VAL &&value, const index_mask_t< Index > &mask=true) |
| Non-packet data, Packet set. | |
| template<typename VAL , typename C , typename Index > requires is_packet_v<VAL> && is_packet_v<Index> && std::ranges::range<C> && is_index_v<Index> && std::convertible_to<VAL, bbm::iterable_value_t<C>> && is_packet_v<bbm::iterable_value_t<C>> | |
| void | set (C &&container, const Index &idx, VAL &&value, const index_mask_t< Index > &mask=true) |
| Packet data, Packet set. | |
| template<typename C , typename PRED > requires std::ranges::range<C> && std::is_invocable_r_v<mask_t<bbm::iterable_value_t<C>>, PRED, bbm::iterable_value_t<C>> | |
| constexpr index_t< bbm::iterable_value_t< C > > | binary_search (C &&container, PRED &&predicate, const index_mask_t< bbm::iterable_value_t< C > > &mask=true) |
| binary search | |
Data and flow control.