Blender  V3.3
Classes | Typedefs | Variables
blender::detail Namespace Reference

Classes

struct  AnyTypeInfo
 
struct  NoExtraInfo
 
struct  GVArrayAnyExtraInfo
 
struct  ScopedDeferHelper
 
struct  VArrayAnyExtraInfo
 

Typedefs

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

Variables

template<typename ExtraInfo , typename T >
static constexpr AnyTypeInfo< ExtraInfo > info_for_inline
 
template<typename ExtraInfo , typename T >
static 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 = typedef 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 58 of file BLI_any.hh.

Variable Documentation

◆ info_for_inline

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

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

Definition at line 42 of file BLI_any.hh.

◆ info_for_unique_ptr

template<typename ExtraInfo , typename T >
constexpr AnyTypeInfo<ExtraInfo> blender::detail::info_for_unique_ptr
staticconstexpr
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>()}

Definition at line 60 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 90 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 80 of file BLI_parameter_pack_utils.hh.