Blender V4.3
blender::detail Namespace Reference

Classes

struct  AnyTypeInfo
 
struct  GVArrayAnyExtraInfo
 
struct  NoExtraInfo
 
struct  ScopedDeferHelper
 
struct  VArrayAnyExtraInfo
 

Typedefs

template<typename T >
using Ptr = std::unique_ptr<T>
 

Functions

template<typename T , int Size>
bool any_less_or_equal_than (const VecBase< T, Size > &a, const VecBase< T, Size > &b)
 
template<typename T , int A_NumCol, int A_NumRow, int B_NumCol, int B_NumRow, typename MatA , typename MatB >
MatBase< T, B_NumCol, A_NumRow > matrix_mul_impl (const MatA &a, const MatB &b)
 

Variables

template<typename ExtraInfo , typename T >
constexpr AnyTypeInfo< ExtraInfo > info_for_inline
 
template<typename ExtraInfo , typename T >
constexpr AnyTypeInfo< ExtraInfo > info_for_unique_ptr
 
template<typename T , T Value, size_t... I>
ValueSequence< T,((I==0) ? Value :Value)... > make_value_sequence_impl (std::index_sequence< I... >)
 
template<typename T , T Value1, T Value2, size_t... Value1Indices, size_t... I>
ValueSequence< T,(ValueSequence< size_t, Value1Indices... >::template contains< I >() ? Value1 :Value2)... > make_two_value_sequence_impl (ValueSequence< size_t, Value1Indices... >, std::index_sequence< I... >)
 

Typedef Documentation

◆ Ptr

template<typename T >
using blender::detail::Ptr = std::unique_ptr<T>

Used when T can't be stored directly in the inline buffer and is stored in a #std::unique_ptr instead. In this scenario, the #std::unique_ptr is stored in the inline buffer.

Definition at line 60 of file BLI_any.hh.

Function Documentation

◆ any_less_or_equal_than()

template<typename T , int Size>
bool blender::detail::any_less_or_equal_than ( const VecBase< T, Size > & a,
const VecBase< T, Size > & b )
inlinenodiscard

Definition at line 154 of file BLI_bounds.hh.

References any_less_or_equal_than(), and b.

Referenced by any_less_or_equal_than().

◆ matrix_mul_impl()

template<typename T , int A_NumCol, int A_NumRow, int B_NumCol, int B_NumRow, typename MatA , typename MatB >
MatBase< T, B_NumCol, A_NumRow > blender::detail::matrix_mul_impl ( const MatA & a,
const MatB & b )

Multiply two matrices using matrix multiplication.

Definition at line 900 of file BLI_math_matrix_types.hh.

References b, matrix_mul_impl(), and result.

Referenced by matrix_mul_impl().

Variable Documentation

◆ info_for_inline

template<typename ExtraInfo , typename T >
AnyTypeInfo<ExtraInfo> blender::detail::info_for_inline
inlineconstexpr
Initial value:
= {
is_trivially_copy_constructible_extended_v<T> ?
nullptr :
+[](void *dst, const void *src) { new (dst) T(*static_cast<const T *>(src)); },
is_trivially_move_constructible_extended_v<T> ?
nullptr :
+[](void *dst, void *src) { new (dst) T(std::move(*static_cast<T *>(src))); },
is_trivially_destructible_extended_v<T> ?
nullptr :
+[](void *src) { std::destroy_at((static_cast<T *>(src))); },
nullptr,
ExtraInfo::template get<T>()}
#define T

Used when T is stored directly in the inline buffer of the #Any.

Definition at line 43 of file BLI_any.hh.

◆ info_for_unique_ptr

template<typename ExtraInfo , typename T >
AnyTypeInfo<ExtraInfo> blender::detail::info_for_unique_ptr
inlineconstexpr
Initial value:
= {
[](void *dst, const void *src) { new (dst) Ptr<T>(new T(**(const Ptr<T> *)src)); },
[](void *dst, void *src) { new (dst) Ptr<T>(new T(std::move(**(Ptr<T> *)src))); },
[](void *src) { std::destroy_at((Ptr<T> *)src); },
[](const void *src) -> const void * { return &**(const Ptr<T> *)src; },
ExtraInfo::template get<T>()}
std::unique_ptr< T > Ptr
Definition BLI_any.hh:60

Definition at line 62 of file BLI_any.hh.

◆ make_two_value_sequence_impl

template<typename T , T Value1, T Value2, size_t... Value1Indices, size_t... I>
ValueSequence< T,(ValueSequence< size_t, Value1Indices... >::template contains< I >() ? Value1 : Value2)... > blender::detail::make_two_value_sequence_impl(ValueSequence< size_t, Value1Indices... >, std::index_sequence< I... >) ( ValueSequence< size_t, Value1Indices... > ,
std::index_sequence< I... >  )
inline

Definition at line 99 of file BLI_parameter_pack_utils.hh.

◆ make_value_sequence_impl

template<typename T , T Value, size_t... I>
ValueSequence< T,((I==0) ? Value :Value)... > blender::detail::make_value_sequence_impl(std::index_sequence< I... >) ( std::index_sequence< I... > )
inline

Definition at line 89 of file BLI_parameter_pack_utils.hh.