Blender V5.0
blender::VMutableArray< T > Class Template Reference

#include <BLI_virtual_array.hh>

Inherits blender::VArrayCommon< T >.

Public Member Functions

 VMutableArray ()=default
 VMutableArray (const VMutableArray &other)=default
 VMutableArray (VMutableArray &&other) noexcept=default
 VMutableArray (const VMutableArrayImpl< T > *impl)
 VMutableArray (std::shared_ptr< const VMutableArrayImpl< T > > impl)
 operator VArray< T > () const &
 operator VArray< T > () &&noexcept
VMutableArrayoperator= (const VMutableArray &other)
VMutableArrayoperator= (VMutableArray &&other) noexcept
MutableSpan< Tget_internal_span () const
void set (const int64_t index, T value)
void set_all (Span< T > src)
bool try_assign_GVMutableArray (GVMutableArray &varray) const
Public Member Functions inherited from blender::VArrayCommon< T >
 operator bool () const
T operator[] (const int64_t index) const
T get (const int64_t index) const
int64_t size () const
T first () const
T last (const int64_t n=0) const
bool is_empty () const
IndexRange index_range () const
CommonVArrayInfo common_info () const
bool is_span () const
Span< Tget_internal_span () const
bool is_single () const
T get_internal_single () const
std::optional< Tget_if_single () const
void materialize (MutableSpan< T > r_span) const
void materialize (const IndexMask &mask, MutableSpan< T > r_span) const
void materialize_to_uninitialized (MutableSpan< T > r_span) const
void materialize_to_uninitialized (const IndexMask &mask, MutableSpan< T > r_span) const
void materialize_compressed (const IndexMask &mask, MutableSpan< T > r_span) const
void materialize_compressed_to_uninitialized (const IndexMask &mask, MutableSpan< T > r_span) const
bool try_assign_GVArray (GVArray &varray) const
const VArrayImpl< T > * get_implementation () const

Static Public Member Functions

template<typename ImplT, typename... Args>
static VMutableArray from (Args &&...args)
static VMutableArray from_span (MutableSpan< T > values)
template<typename StructT, T(*)(const StructT &) GetFunc, void(*)(StructT &, T) SetFunc>
static VMutableArray from_derived_span (MutableSpan< StructT > values)
template<typename ContainerT>
static VMutableArray from_container (ContainerT container)

Additional Inherited Members

Protected Types inherited from blender::VArrayCommon< T >
using Storage = Any<blender::detail::VArrayAnyExtraInfo<T>, 24, 8>
Protected Member Functions inherited from blender::VArrayCommon< T >
 VArrayCommon ()=default
 VArrayCommon (const VArrayCommon &other)
 VArrayCommon (VArrayCommon &&other) noexcept
 VArrayCommon (const VArrayImpl< T > *impl)
 VArrayCommon (std::shared_ptr< const VArrayImpl< T > > impl)
template<typename ImplT, typename... Args>
void emplace (Args &&...args)
void copy_from (const VArrayCommon &other)
void move_from (VArrayCommon &&other) noexcept
const VArrayImpl< T > * impl_from_storage () const
Protected Attributes inherited from blender::VArrayCommon< T >
const VArrayImpl< T > * impl_ = nullptr
Storage storage_

Detailed Description

template<typename T>
class blender::VMutableArray< T >

Similar to VArray but references a virtual array that can be modified.

Definition at line 965 of file BLI_virtual_array.hh.

Constructor & Destructor Documentation

◆ VMutableArray() [1/5]

template<typename T>
blender::VMutableArray< T >::VMutableArray ( )
default

◆ VMutableArray() [2/5]

template<typename T>
blender::VMutableArray< T >::VMutableArray ( const VMutableArray< T > & other)
default

References VMutableArray().

◆ VMutableArray() [3/5]

template<typename T>
blender::VMutableArray< T >::VMutableArray ( VMutableArray< T > && other)
defaultnoexcept

References VMutableArray().

◆ VMutableArray() [4/5]

template<typename T>
blender::VMutableArray< T >::VMutableArray ( const VMutableArrayImpl< T > * impl)
inline

Definition at line 971 of file BLI_virtual_array.hh.

References T, and blender::VArrayCommon< T >::VArrayCommon().

◆ VMutableArray() [5/5]

template<typename T>
blender::VMutableArray< T >::VMutableArray ( std::shared_ptr< const VMutableArrayImpl< T > > impl)
inline

Definition at line 973 of file BLI_virtual_array.hh.

References T, and blender::VArrayCommon< T >::VArrayCommon().

Member Function Documentation

◆ from()

template<typename T>
template<typename ImplT, typename... Args>
VMutableArray blender::VMutableArray< T >::from ( Args &&... args)
inlinestatic

◆ from_container()

template<typename T>
template<typename ContainerT>
VMutableArray blender::VMutableArray< T >::from_container ( ContainerT container)
inlinestatic

Construct a new virtual array for an existing container. Every container that lays out the elements in a plain array works. This takes ownership of the passed in container. If that is not desired, use from_span instead.

Definition at line 1012 of file BLI_virtual_array.hh.

References from(), and VMutableArray().

Referenced by blender::tests::TEST().

◆ from_derived_span()

template<typename T>
template<typename StructT, T(*)(const StructT &) GetFunc, void(*)(StructT &, T) SetFunc>
VMutableArray blender::VMutableArray< T >::from_derived_span ( MutableSpan< StructT > values)
inlinestatic

Construct a new virtual array for an existing span with a mapping function. This does not take ownership of the span.

Definition at line 1002 of file BLI_virtual_array.hh.

References from(), and VMutableArray().

Referenced by blender::bke::instance_position_varray_for_write(), and blender::tests::TEST().

◆ from_span()

template<typename T>
VMutableArray blender::VMutableArray< T >::from_span ( MutableSpan< T > values)
inlinestatic

Construct a new virtual array for an existing span. This does not take ownership of the span.

Definition at line 992 of file BLI_virtual_array.hh.

References from(), and VMutableArray().

Referenced by blender::fn::FieldEvaluator::add_with_destination(), blender::tests::TEST(), and blender::GVMutableArray::typed().

◆ get_internal_span()

template<typename T>
MutableSpan< T > blender::VMutableArray< T >::get_internal_span ( ) const
inline

Get access to the internal span. This invokes undefined behavior if the is_span returned false.

Definition at line 1049 of file BLI_virtual_array.hh.

References BLI_assert, blender::CommonVArrayInfo::data, blender::VArrayCommon< T >::is_span(), and T.

Referenced by blender::tests::TEST().

◆ operator VArray< T >() [1/2]

template<typename T>
blender::VMutableArray< T >::operator VArray< T > ( ) &&
inlinenoexcept

Convert to a VArray by moving.

Definition at line 1026 of file BLI_virtual_array.hh.

◆ operator VArray< T >() [2/2]

template<typename T>
blender::VMutableArray< T >::operator VArray< T > ( ) const &
inline

Convert to a VArray by copying.

Definition at line 1018 of file BLI_virtual_array.hh.

◆ operator=() [1/2]

template<typename T>
VMutableArray & blender::VMutableArray< T >::operator= ( const VMutableArray< T > & other)
inline

◆ operator=() [2/2]

template<typename T>
VMutableArray & blender::VMutableArray< T >::operator= ( VMutableArray< T > && other)
inlinenoexcept

◆ set()

◆ set_all()

template<typename T>
void blender::VMutableArray< T >::set_all ( Span< T > src)
inline

Copy the values from the source span to all elements in the virtual array.

Definition at line 1069 of file BLI_virtual_array.hh.

References BLI_assert, and blender::Span< T >::size().

◆ try_assign_GVMutableArray()

template<typename T>
bool blender::VMutableArray< T >::try_assign_GVMutableArray ( GVMutableArray< T > & varray) const
inline

See #GVMutableArrayImpl::try_assign_GVMutableArray.

Definition at line 1076 of file BLI_virtual_array.hh.

Referenced by blender::GVMutableArray::GVMutableArray().


The documentation for this class was generated from the following file: