Blender V4.5
blender::VArrayImpl< T > Class Template Referenceabstract

#include <BLI_virtual_array.hh>

Inherited by blender::VArrayImpl_For_Func< T, GetFunc >, blender::VArrayImpl_For_GVArray< T >, blender::VArrayImpl_For_Single< T >, and blender::VMutableArrayImpl< T >.

Public Member Functions

 VArrayImpl (const int64_t size)
virtual ~VArrayImpl ()=default
int64_t size () const
virtual T get (int64_t index) const =0
virtual CommonVArrayInfo common_info () const
virtual void materialize (const IndexMask &mask, T *dst) const
virtual void materialize_to_uninitialized (const IndexMask &mask, T *dst) const
virtual void materialize_compressed (const IndexMask &mask, T *dst) const
virtual void materialize_compressed_to_uninitialized (const IndexMask &mask, T *dst) const
virtual bool try_assign_GVArray (GVArray &) const

Protected Attributes

int64_t size_

Detailed Description

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

Implements the specifics of how the elements of a virtual array are accessed. It contains a bunch of virtual methods that are wrapped by VArray.

Definition at line 76 of file BLI_virtual_array.hh.

Constructor & Destructor Documentation

◆ VArrayImpl()

◆ ~VArrayImpl()

template<typename T>
virtual blender::VArrayImpl< T >::~VArrayImpl ( )
virtualdefault

Member Function Documentation

◆ common_info()

◆ get()

template<typename T>
virtual T blender::VArrayImpl< T >::get ( int64_t index) const
pure virtual

◆ materialize()

template<typename T>
virtual void blender::VArrayImpl< T >::materialize ( const IndexMask & mask,
T * dst ) const
inlinevirtual

Copy values from the virtual array into the provided span. The index of the value in the virtual array is the same as the index in the span.

Reimplemented in blender::bke::VArrayImpl_For_VertexWeights, blender::VArrayImpl_For_GVArray< T >, blender::VArrayImpl_For_Single< T >, blender::VArrayImpl_For_Span< T >, and blender::VArrayImpl_For_Span< typename Container::value_type >.

Definition at line 112 of file BLI_virtual_array.hh.

References get(), i, mask(), and T.

◆ materialize_compressed()

template<typename T>
virtual void blender::VArrayImpl< T >::materialize_compressed ( const IndexMask & mask,
T * dst ) const
inlinevirtual

Copy values from the virtual array into the provided span. Contrary to materialize, the index in virtual array is not the same as the index in the output span. Instead, the span is filled without gaps.

Reimplemented in blender::VArrayImpl_For_GVArray< T >, blender::VArrayImpl_For_Single< T >, blender::VArrayImpl_For_Span< T >, and blender::VArrayImpl_For_Span< typename Container::value_type >.

Definition at line 130 of file BLI_virtual_array.hh.

References get(), i, mask(), pos, and T.

◆ materialize_compressed_to_uninitialized()

template<typename T>
virtual void blender::VArrayImpl< T >::materialize_compressed_to_uninitialized ( const IndexMask & mask,
T * dst ) const
inlinevirtual

◆ materialize_to_uninitialized()

template<typename T>
virtual void blender::VArrayImpl< T >::materialize_to_uninitialized ( const IndexMask & mask,
T * dst ) const
inlinevirtual

◆ size()

◆ try_assign_GVArray()

template<typename T>
virtual bool blender::VArrayImpl< T >::try_assign_GVArray ( GVArray & ) const
inlinevirtual

If this virtual wraps another GVArray, this method should assign the wrapped array to the provided reference. This allows losslessly converting between generic and typed virtual arrays in all cases. Return true when the virtual array was assigned and false when nothing was done.

Reimplemented in blender::VArrayImpl_For_GVArray< T >.

Definition at line 150 of file BLI_virtual_array.hh.

Member Data Documentation

◆ size_

template<typename T>
int64_t blender::VArrayImpl< T >::size_
protected

Number of elements in the virtual array. All virtual arrays have a size, but in some cases it may make sense to set it to the max value.

Definition at line 82 of file BLI_virtual_array.hh.

Referenced by blender::VMutableArrayImpl< T >::set_all(), size(), and VArrayImpl().


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