Blender V4.5
VArray< T > Class Template Reference

#include <BLI_virtual_array.hh>

Inherits blender::VArrayCommon< T >.

Public Member Functions

 VArray ()=default
 VArray (const VArray &other)=default
 VArray (VArray &&other) noexcept=default
 VArray (const VArrayImpl< T > *impl)
 VArray (std::shared_ptr< const VArrayImpl< T > > impl)
 VArray (varray_tag::span, Span< T > span)
 VArray (varray_tag::single, T value, const int64_t size)
VArrayoperator= (const VArray &other)
VArrayoperator= (VArray &&other) noexcept
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 VArray For (Args &&...args)
static VArray ForSingle (T value, const int64_t size)
static VArray ForSpan (Span< T > values)
template<typename GetFunc>
static VArray ForFunc (const int64_t size, GetFunc get_func)
template<typename StructT, T(*)(const StructT &) GetFunc>
static VArray ForDerivedSpan (Span< StructT > values)
template<typename ContainerT>
static VArray ForContainer (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 VArray< T >

A VArray wraps a virtual array implementation and provides easy access to its elements. It can be copied and moved. While it is relatively small, it should still be passed by reference if possible (other than e.g. Span).

Definition at line 798 of file BLI_virtual_array.hh.

Constructor & Destructor Documentation

◆ VArray() [1/7]

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

◆ VArray() [2/7]

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

◆ VArray() [3/7]

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

◆ VArray() [4/7]

template<typename T>
blender::VArray< T >::VArray ( const VArrayImpl< T > * impl)
inline

Definition at line 806 of file BLI_virtual_array.hh.

◆ VArray() [5/7]

template<typename T>
blender::VArray< T >::VArray ( std::shared_ptr< const VArrayImpl< T > > impl)
inline

Definition at line 808 of file BLI_virtual_array.hh.

◆ VArray() [6/7]

template<typename T>
blender::VArray< T >::VArray ( varray_tag::span ,
Span< T > span )
inline

Definition at line 810 of file BLI_virtual_array.hh.

◆ VArray() [7/7]

template<typename T>
blender::VArray< T >::VArray ( varray_tag::single ,
T value,
const int64_t size )
inline

Definition at line 815 of file BLI_virtual_array.hh.

Member Function Documentation

◆ For()

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

Construct a new virtual array for a custom #VArrayImpl.

Definition at line 823 of file BLI_virtual_array.hh.

Referenced by blender::bke::varray_for_deform_verts().

◆ ForContainer()

◆ ForDerivedSpan()

template<typename T>
template<typename StructT, T(*)(const StructT &) GetFunc>
VArray blender::VArray< T >::ForDerivedSpan ( Span< 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 862 of file BLI_virtual_array.hh.

Referenced by blender::draw::bmesh_normals_domain().

◆ ForFunc()

template<typename T>
template<typename GetFunc>
VArray blender::VArray< T >::ForFunc ( const int64_t size,
GetFunc get_func )
inlinestatic

Construct a new virtual that will invoke the provided function whenever an element is accessed.

Definition at line 852 of file BLI_virtual_array.hh.

Referenced by blender::nodes::node_geo_input_mesh_face_neighbors_cc::construct_vertex_count_varray().

◆ ForSingle()

◆ ForSpan()

template<typename T>
VArray blender::VArray< T >::ForSpan ( Span< T > values)
inlinestatic

◆ operator=() [1/2]

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

Definition at line 880 of file BLI_virtual_array.hh.

◆ operator=() [2/2]

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

Definition at line 886 of file BLI_virtual_array.hh.


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