Blender V4.3
index_mask_expression.cc File Reference

Go to the source code of this file.

Classes

struct  blender::index_mask::CoarseSegment
 
struct  blender::index_mask::CoarseResult
 
struct  blender::index_mask::CourseBoundary
 
struct  blender::index_mask::DifferenceCourseBoundary
 
struct  blender::index_mask::EvaluatedSegment
 

Namespaces

namespace  blender
 
namespace  blender::index_mask
 

Enumerations

enum class  blender::index_mask::ExactEvalMode { blender::index_mask::Indices , blender::index_mask::Bits }
 

Functions

static void blender::index_mask::sort_course_boundaries (MutableSpan< CourseBoundary > boundaries)
 
static void blender::index_mask::sort_course_boundaries (MutableSpan< DifferenceCourseBoundary > boundaries)
 
static CoarseSegmentblender::index_mask::add_coarse_segment__full (CoarseSegment *prev_segment, const int64_t prev_boundary_index, const int64_t current_boundary_index, CoarseResult &result)
 
static CoarseSegmentblender::index_mask::add_coarse_segment__unknown (CoarseSegment *prev_segment, const int64_t prev_boundary_index, const int64_t current_boundary_index, CoarseResult &result)
 
static CoarseSegmentblender::index_mask::add_coarse_segment__copy (CoarseSegment *prev_segment, const int64_t prev_boundary_index, const int64_t current_boundary_index, const IndexMask &copy_from_mask, CoarseResult &result)
 
static void blender::index_mask::evaluate_coarse_union (const Span< CourseBoundary > boundaries, CoarseResult &r_result)
 
static void blender::index_mask::evaluate_coarse_intersection (const Span< CourseBoundary > boundaries, const int64_t terms_num, CoarseResult &r_result)
 
static void blender::index_mask::evaluate_coarse_difference (const Span< DifferenceCourseBoundary > boundaries, CoarseResult &r_result)
 
static CoarseResult blender::index_mask::evaluate_coarse (const Expr &root_expression, const Span< const Expr * > eval_order, const std::optional< IndexRange > eval_bounds=std::nullopt)
 
static Span< int16_tblender::index_mask::bits_to_indices (const BoundedBitSpan bits, LinearAllocator<> &allocator)
 
static IndexMaskSegment blender::index_mask::evaluate_exact_with_bits (const Expr &root_expression, LinearAllocator<> &allocator, const IndexRange bounds, const Span< const Expr * > eval_order)
 
static IndexMaskSegment blender::index_mask::union_index_mask_segments (const Span< IndexMaskSegment > segments, const int64_t bounds_min, int16_t *r_values)
 
static IndexMaskSegment blender::index_mask::intersect_index_mask_segments (const Span< IndexMaskSegment > segments, const int64_t bounds_min, int16_t *r_values)
 
static IndexMaskSegment blender::index_mask::difference_index_mask_segments (const IndexMaskSegment main_segment, const Span< IndexMaskSegment > subtract_segments, const int64_t bounds_min, int16_t *r_values)
 
static IndexMaskSegment blender::index_mask::evaluate_exact_with_indices (const Expr &root_expression, LinearAllocator<> &allocator, const IndexRange bounds, const Span< const Expr * > eval_order)
 
static Vector< IndexMaskSegmentblender::index_mask::build_result_mask_segments (const Span< EvaluatedSegment > evaluated_segments)
 
static Vector< const Expr *, inline_expr_array_sizeblender::index_mask::compute_eval_order (const Expr &root_expression)
 
static ExactEvalMode blender::index_mask::determine_exact_eval_mode (const Expr &root_expression)
 
static void blender::index_mask::evaluate_coarse_and_split_until_segments_are_short (const Expr &root_expression, const Span< const Expr * > eval_order, Vector< EvaluatedSegment, 16 > &r_evaluated_segments, Vector< IndexRange, 16 > &r_short_unknown_segments)
 
static void blender::index_mask::evaluate_short_unknown_segments_exactly (const Expr &root_expression, const ExactEvalMode exact_eval_mode, const Span< const Expr * > eval_order, const Span< IndexRange > short_unknown_segments, IndexMaskMemory &memory, Vector< EvaluatedSegment, 16 > &r_evaluated_segments)
 
static IndexMask blender::index_mask::evaluated_segments_to_index_mask (MutableSpan< EvaluatedSegment > evaluated_segments, IndexMaskMemory &memory)
 
static IndexMask blender::index_mask::evaluate_expression_impl (const Expr &root_expression, IndexMaskMemory &memory, const ExactEvalMode exact_eval_mode)
 
IndexMask blender::index_mask::evaluate_expression (const Expr &expression, IndexMaskMemory &memory)
 

Variables

constexpr int64_t blender::index_mask::inline_expr_array_size = 16
 
static constexpr int64_t blender::index_mask::segment_size_threshold = 32