Blender V4.3
BLI_index_mask.hh File Reference
#include <array>
#include <limits>
#include <optional>
#include <variant>
#include "BLI_bit_span.hh"
#include "BLI_function_ref.hh"
#include "BLI_index_mask_fwd.hh"
#include "BLI_index_ranges_builder_fwd.hh"
#include "BLI_linear_allocator.hh"
#include "BLI_offset_span.hh"
#include "BLI_task.hh"
#include "BLI_unique_sorted_indices.hh"
#include "BLI_vector.hh"
#include "BLI_vector_set.hh"
#include "BLI_virtual_array_fwd.hh"

Go to the source code of this file.

Classes

struct  blender::index_mask::RawMaskIterator
 
struct  blender::index_mask::IndexMaskData
 
class  blender::index_mask::IndexMaskMemory
 
class  blender::index_mask::IndexMaskSegment
 
class  blender::index_mask::IndexMask
 
class  blender::index_mask::IndexMaskFromSegment
 

Namespaces

namespace  blender
 
namespace  blender::index_mask
 
namespace  blender::index_mask::detail
 

Functions

std::array< int16_t, max_segment_sizeblender::index_mask::build_static_indices_array ()
 
const IndexMaskblender::index_mask::get_static_index_mask_for_min_size (const int64_t min_size)
 
std::ostream & blender::index_mask::operator<< (std::ostream &stream, const IndexMask &mask)
 
IndexMask blender::index_mask::detail::from_predicate_impl (const IndexMask &universe, GrainSize grain_size, IndexMaskMemory &memory, FunctionRef< int64_t(IndexMaskSegment indices, int16_t *r_true_indices)> filter_indices)
 
Utilities
const std::array< int16_t, max_segment_size > & blender::index_mask::get_static_indices_array ()
 
template<typename T >
void blender::index_mask::masked_fill (MutableSpan< T > data, const T &value, const IndexMask &mask)
 
template<typename T >
void blender::index_mask::build_reverse_map (const IndexMask &mask, MutableSpan< T > r_map)
 
int64_t blender::index_mask::consolidate_index_mask_segments (MutableSpan< IndexMaskSegment > segments, IndexMaskMemory &memory)
 
#RawMaskIterator Inline Methods
bool blender::index_mask::operator!= (const RawMaskIterator &a, const RawMaskIterator &b)
 
bool blender::index_mask::operator== (const RawMaskIterator &a, const RawMaskIterator &b)
 

Variables

static constexpr int64_t blender::index_mask::max_segment_size_shift = 14
 
static constexpr int64_t blender::index_mask::max_segment_size = (1 << max_segment_size_shift)
 
static constexpr int64_t blender::index_mask::max_segment_size_mask_low = max_segment_size - 1
 
static constexpr int64_t blender::index_mask::max_segment_size_mask_high = ~max_segment_size_mask_low
 

#IndexMask Inline Methods

template<typename Fn >
constexpr bool blender::index_mask::has_segment_and_start_parameter
 
void blender::index_mask::init_empty_mask (IndexMaskData &data)
 
template<typename T , typename Fn >
void blender::index_mask::optimized_foreach_index (const IndexMaskSegment segment, const Fn fn)
 
template<typename T , typename Fn >
void blender::index_mask::optimized_foreach_index_with_pos (const IndexMaskSegment segment, const int64_t segment_pos, const Fn fn)
 
bool blender::index_mask::operator!= (const IndexMask &a, const IndexMask &b)