|
Blender V4.3
|
#include <BLI_generic_virtual_array.hh>
Inherited by blender::GVArray, and blender::GVMutableArray.
Public Member Functions | |
| bool | may_have_ownership () const |
Protected Types | |
| using | Storage = Any<detail::GVArrayAnyExtraInfo, 40, 8> |
Protected Member Functions | |
| GVArrayCommon ()=default | |
Protected Attributes | |
| const GVArrayImpl * | impl_ = nullptr |
| Storage | storage_ |
#GVArrayCommon | |
| GVArrayCommon (const GVArrayCommon &other) | |
| GVArrayCommon (GVArrayCommon &&other) noexcept | |
| GVArrayCommon (const GVArrayImpl *impl) | |
| GVArrayCommon (std::shared_ptr< const GVArrayImpl > impl) | |
| ~GVArrayCommon () | |
| void | copy_from (const GVArrayCommon &other) |
| void | move_from (GVArrayCommon &&other) noexcept |
| const GVArrayImpl * | impl_from_storage () const |
| IndexRange | index_range () const |
| void | materialize (void *dst) const |
| void | materialize (const IndexMask &mask, void *dst) const |
| void | materialize_to_uninitialized (void *dst) const |
| void | materialize_to_uninitialized (const IndexMask &mask, void *dst) const |
| void | materialize_compressed (const IndexMask &mask, void *dst) const |
| void | materialize_compressed_to_uninitialized (const IndexMask &mask, void *dst) const |
| bool | is_span () const |
| GSpan | get_internal_span () const |
| bool | is_single () const |
| void | get_internal_single (void *r_value) const |
| void | get_internal_single_to_uninitialized (void *r_value) const |
Inline methods for #GVArrayCommon. | |
| template<typename ImplT , typename... Args> | |
| void | emplace (Args &&...args) |
| const CPPType & | type () const |
| operator bool () const | |
| int64_t | size () const |
| bool | is_empty () const |
| template<typename T > | |
| bool | try_assign_VArray (VArray< T > &varray) const |
| CommonVArrayInfo | common_info () const |
| void | get (int64_t index, void *r_value) const |
| template<typename T > | |
| T | get (int64_t index) const |
| void | get_to_uninitialized (int64_t index, void *r_value) const |
Utility class to reduce code duplication between #GVArray and #GVMutableArray. It pretty much follows #VArrayCommon. Don't use this class outside of this header.
Definition at line 93 of file BLI_generic_virtual_array.hh.
|
protected |
See #VArrayCommon for more information. The inline buffer is a bit larger here, because generic virtual array implementations often require a bit more space than typed ones.
Definition at line 99 of file BLI_generic_virtual_array.hh.
|
protecteddefault |
|
protected |
Definition at line 548 of file generic_virtual_array.cc.
References impl_, and impl_from_storage().
|
protectednoexcept |
Definition at line 553 of file generic_virtual_array.cc.
|
protected |
Definition at line 560 of file generic_virtual_array.cc.
|
protected |
Definition at line 565 of file generic_virtual_array.cc.
|
protecteddefault |
|
inline |
Definition at line 780 of file BLI_generic_virtual_array.hh.
References blender::GVArrayImpl::common_info(), and impl_.
Referenced by blender::bke::attribute_data_matches_varray(), blender::GVArrayImpl_For_SlicedGVArray::common_info(), blender::VArrayImpl_For_GVArray< T >::common_info(), blender::GVMutableArray::fill(), blender::GMutableVArraySpan::GMutableVArraySpan(), blender::GMutableVArraySpan::GMutableVArraySpan(), blender::GVArraySpan::GVArraySpan(), blender::GVArraySpan::GVArraySpan(), blender::GVArray::slice(), blender::GVArray::typed(), and blender::GVMutableArray::typed().
|
protected |
Definition at line 605 of file generic_virtual_array.cc.
References impl_, impl_from_storage(), and storage_.
Referenced by blender::GVMutableArray::operator GVArray(), blender::GVArray::operator=(), and blender::GVMutableArray::operator=().
|
inlineprotected |
Definition at line 724 of file BLI_generic_virtual_array.hh.
References emplace(), impl_, ptr, and storage_.
Referenced by emplace(), blender::GVArray::For(), blender::GVMutableArray::For(), blender::GVArray::GVArray(), blender::GVArray::GVArray(), and blender::GVArray::GVArray().
Returns a copy of the value at the given index. Usually a typed virtual array should be used instead, but sometimes this is simpler when only a few indices are needed.
Definition at line 746 of file BLI_generic_virtual_array.hh.
References BLI_assert, blender::GVArrayImpl::get(), impl_, size(), and type().
|
inline |
Definition at line 739 of file BLI_generic_virtual_array.hh.
References BLI_assert, blender::GVArrayImpl::get(), impl_, and size().
Referenced by blender::ed::spreadsheet::SpreadsheetLayoutDrawer::draw_content_cell(), blender::GVArrayImpl_For_SlicedGVArray::get(), blender::VArrayImpl_For_GVArray< T >::get(), blender::GVVectorArray_For_SingleGVArray::get_vector_element_impl(), and transform_active_color_data().
| void blender::GVArrayCommon::get_internal_single | ( | void * | r_value | ) | const |
Copies the value that is used for every element into r_value, which is expected to point to initialized memory. This invokes undefined behavior if the virtual array would not return the same value for every index.
Definition at line 644 of file generic_virtual_array.cc.
References BLI_assert, blender::GVArrayImpl::common_info(), blender::CPPType::copy_assign(), blender::CommonVArrayInfo::data, impl_, is_single(), and type().
Referenced by blender::bke::CurvesGeometry::adapt_domain(), blender::bke::adapt_mesh_attribute_domain(), and get_internal_single_to_uninitialized().
| void blender::GVArrayCommon::get_internal_single_to_uninitialized | ( | void * | r_value | ) | const |
Same as get_internal_single, but r_value points to initialized memory.
Definition at line 651 of file generic_virtual_array.cc.
References blender::CPPType::default_construct(), get_internal_single(), impl_, and blender::GVArrayImpl::type().
| GSpan blender::GVArrayCommon::get_internal_span | ( | ) | const |
Returns the internally used span of the virtual array. This invokes undefined behavior if the virtual array is not stored as a span internally.
Definition at line 631 of file generic_virtual_array.cc.
References BLI_assert, blender::GVArrayImpl::common_info(), blender::CommonVArrayInfo::data, impl_, is_span(), and type().
Referenced by blender::nodes::node_geo_instance_on_points_cc::add_instances_from_component(), blender::ed::greasepencil::attributes_varrays_span_data_equal(), blender::bke::build_mesh_positions(), blender::nodes::node_geo_instances_to_points_cc::convert_instances_to_points(), blender::bke::evaluate_attribute(), blender::nodes::node_geo_mesh_to_points_cc::geometry_set_mesh_to_points(), blender::nodes::node_geo_points_to_vertices_cc::geometry_set_points_to_vertices(), blender::geometry::preprocess_curves(), blender::geometry::preprocess_meshes(), blender::geometry::preprocess_pointclouds(), blender::bke::try_direct_evaluate_point_data(), and blender::bke::try_sharing_point_data().
|
inline |
Definition at line 757 of file BLI_generic_virtual_array.hh.
References BLI_assert, blender::GVArrayImpl::get_to_uninitialized(), impl_, and size().
Referenced by blender::GVArrayImpl_For_SlicedGVArray::get_to_uninitialized(), and blender::nodes::LazyFunctionForReduceForeachGeometryElement::handle_generation_items_group().
|
protected |
Definition at line 657 of file generic_virtual_array.cc.
References blender::Any< ExtraInfo, InlineBufferCapacity, Alignment >::extra_info(), blender::Any< ExtraInfo, InlineBufferCapacity, Alignment >::get(), blender::Any< ExtraInfo, InlineBufferCapacity, Alignment >::has_value(), and storage_.
Referenced by copy_from(), and GVArrayCommon().
| IndexRange blender::GVArrayCommon::index_range | ( | ) | const |
Definition at line 665 of file generic_virtual_array.cc.
References size().
Referenced by blender::bke::add_custom_data_layer_from_attribute_init(), and blender::array_utils::copy().
|
inline |
Definition at line 793 of file BLI_generic_virtual_array.hh.
References size().
Referenced by blender::bke::CurvesGeometry::adapt_domain(), blender::bke::adapt_mesh_attribute_domain(), and attr_create_generic().
| bool blender::GVArrayCommon::is_single | ( | ) | const |
Returns true when the virtual array returns the same value for every index.
Definition at line 638 of file generic_virtual_array.cc.
References blender::GVArrayImpl::common_info(), impl_, blender::CommonVArrayInfo::Single, and blender::CommonVArrayInfo::type.
Referenced by blender::bke::CurvesGeometry::adapt_domain(), blender::bke::adapt_mesh_attribute_domain(), blender::fn::find_varying_fields(), and get_internal_single().
| bool blender::GVArrayCommon::is_span | ( | ) | const |
Returns true when the virtual array is stored as a span internally.
Definition at line 625 of file generic_virtual_array.cc.
References blender::GVArrayImpl::common_info(), impl_, blender::CommonVArrayInfo::Span, and blender::CommonVArrayInfo::type.
Referenced by blender::nodes::node_geo_instance_on_points_cc::add_instances_from_component(), blender::ed::greasepencil::attributes_varrays_span_data_equal(), blender::bke::build_mesh_positions(), blender::nodes::node_geo_instances_to_points_cc::convert_instances_to_points(), blender::bke::evaluate_attribute(), blender::fn::evaluate_fields(), blender::nodes::node_geo_mesh_to_points_cc::geometry_set_mesh_to_points(), blender::nodes::node_geo_points_to_vertices_cc::geometry_set_points_to_vertices(), get_internal_span(), blender::GVMutableArray::get_internal_span(), blender::nodes::node_geo_grease_pencil_to_curves_cc::node_geo_exec(), blender::bke::MutableAttributeAccessor::rename(), blender::bke::try_direct_evaluate_point_data(), and blender::bke::try_sharing_point_data().
| void blender::GVArrayCommon::materialize | ( | const IndexMask & | mask, |
| void * | dst ) const |
Definition at line 579 of file generic_virtual_array.cc.
References impl_, and blender::GVArrayImpl::materialize().
| void blender::GVArrayCommon::materialize | ( | void * | dst | ) | const |
Definition at line 574 of file generic_virtual_array.cc.
References impl_, materialize(), and blender::GVArrayImpl::size().
Referenced by blender::bke::evaluate_attribute(), face_corner_color_equalize_verts(), materialize(), blender::GVArrayImpl_For_SlicedGVArray::materialize(), blender::VArrayImpl_For_GVArray< T >::materialize(), and blender::ed::greasepencil::select_set_mode_exec().
| void blender::GVArrayCommon::materialize_compressed | ( | const IndexMask & | mask, |
| void * | dst ) const |
Definition at line 595 of file generic_virtual_array.cc.
References impl_, and blender::GVArrayImpl::materialize_compressed().
Referenced by blender::GVArrayImpl_For_SlicedGVArray::materialize_compressed(), and blender::VArrayImpl_For_GVArray< T >::materialize_compressed().
| void blender::GVArrayCommon::materialize_compressed_to_uninitialized | ( | const IndexMask & | mask, |
| void * | dst ) const |
Definition at line 600 of file generic_virtual_array.cc.
References impl_, and blender::GVArrayImpl::materialize_compressed_to_uninitialized().
Referenced by blender::GVArrayImpl_For_SlicedGVArray::materialize_compressed_to_uninitialized(), and blender::VArrayImpl_For_GVArray< T >::materialize_compressed_to_uninitialized().
| void blender::GVArrayCommon::materialize_to_uninitialized | ( | const IndexMask & | mask, |
| void * | dst ) const |
Definition at line 589 of file generic_virtual_array.cc.
References BLI_assert, impl_, blender::GVArrayImpl::materialize_to_uninitialized(), and blender::GVArrayImpl::size().
| void blender::GVArrayCommon::materialize_to_uninitialized | ( | void * | dst | ) | const |
Definition at line 584 of file generic_virtual_array.cc.
References impl_, materialize_to_uninitialized(), and blender::GVArrayImpl::size().
Referenced by blender::bke::add_custom_data_layer_from_attribute_init(), ED_geometry_attribute_convert(), blender::GMutableVArraySpan::GMutableVArraySpan(), blender::GVArraySpan::GVArraySpan(), materialize_to_uninitialized(), blender::GVArrayImpl_For_SlicedGVArray::materialize_to_uninitialized(), and blender::VArrayImpl_For_GVArray< T >::materialize_to_uninitialized().
| bool blender::GVArrayCommon::may_have_ownership | ( | ) | const |
|
protectednoexcept |
Definition at line 614 of file generic_virtual_array.cc.
Referenced by blender::GVMutableArray::operator GVArray().
|
inline |
Definition at line 775 of file BLI_generic_virtual_array.hh.
|
inline |
Definition at line 785 of file BLI_generic_virtual_array.hh.
References impl_, and blender::GVArrayImpl::size().
Referenced by blender::nodes::node_geo_instance_on_points_cc::add_instances_from_component(), blender::fn::multi_function::ParamsBuilder::add_readonly_single_input(), blender::ed::greasepencil::attributes_varrays_not_equal(), blender::array_utils::copy(), blender::array_utils::copy(), ED_geometry_attribute_convert(), blender::fn::evaluate_fields(), blender::GVMutableArray::fill(), blender::GVArray::ForSingle(), blender::GVArray::ForSingleRef(), get(), get(), get_to_uninitialized(), blender::GVVectorArray_For_SingleGVArray::get_vector_size_impl(), blender::GMutableVArraySpan::GMutableVArraySpan(), blender::GMutableVArraySpan::GMutableVArraySpan(), blender::GVArray::GVArray(), blender::GVArrayImpl_For_SlicedGVArray::GVArrayImpl_For_SlicedGVArray(), blender::GVArraySpan::GVArraySpan(), blender::GVArraySpan::GVArraySpan(), index_range(), is_empty(), blender::GVMutableArray::set_by_copy(), blender::GVMutableArray::set_by_move(), blender::GVMutableArray::set_by_relocate(), and blender::ed::spreadsheet::ColumnValues::size().
|
inline |
Definition at line 764 of file BLI_generic_virtual_array.hh.
References BLI_assert, impl_, blender::CPPType::is(), blender::GVArrayImpl::try_assign_VArray(), and blender::GVArrayImpl::type().
Referenced by blender::GVArray::typed().
|
inline |
Definition at line 770 of file BLI_generic_virtual_array.hh.
References impl_, and blender::GVArrayImpl::type().
Referenced by blender::bke::adapt_curve_domain_curve_to_point(), blender::bke::adapt_curve_domain_point_to_curve(), blender::bke::CurvesGeometry::adapt_domain(), blender::bke::adapt_mesh_attribute_domain(), blender::bke::adapt_mesh_domain_corner_to_edge(), blender::bke::adapt_mesh_domain_corner_to_face(), blender::bke::adapt_mesh_domain_corner_to_point(), blender::bke::adapt_mesh_domain_edge_to_corner(), blender::bke::adapt_mesh_domain_edge_to_face(), blender::bke::adapt_mesh_domain_edge_to_point(), blender::bke::adapt_mesh_domain_face_to_corner(), blender::bke::adapt_mesh_domain_face_to_edge(), blender::bke::adapt_mesh_domain_face_to_point(), blender::bke::adapt_mesh_domain_point_to_corner(), blender::bke::adapt_mesh_domain_point_to_edge(), blender::bke::adapt_mesh_domain_point_to_face(), blender::fn::multi_function::ParamsBuilder::add_readonly_single_input(), blender::ed::spreadsheet::apply_row_filter(), attr_create_generic(), attr_create_generic(), blender::ed::greasepencil::attributes_varrays_not_equal(), blender::bke::mesh_surface_sample::BaryWeightSampleFn::BaryWeightSampleFn(), bke_attribute_copy_if_exists(), BKE_attribute_duplicate(), blender::nodes::node_geo_curve_sample_cc::SampleCurveFunction::call(), blender::array_utils::copy(), blender::array_utils::copy(), copy_attributes(), blender::bke::copy_curve_domain_attribute_to_mesh(), blender::bke::copy_main_point_domain_attribute_to_mesh(), blender::bke::copy_with_checked_indices(), blender::ed::greasepencil::curves_geometry_is_equal(), ED_geometry_attribute_convert(), blender::bke::evaluate_attribute(), blender::fn::evaluate_fields(), blender::ed::curves::extrude_curves(), blender::GVMutableArray::fill(), blender::GVArray::ForSingle(), blender::GVArray::ForSingleRef(), blender::array_utils::gather(), blender::bke::attribute_math::gather(), get(), get_internal_single(), get_internal_span(), blender::GVMutableArray::get_internal_span(), blender::nodes::node_geo_accumulate_field_cc::AccumulateFieldInput::get_varray_for_context(), blender::nodes::node_geo_accumulate_field_cc::TotalFieldInput::get_varray_for_context(), blender::GVArray::GVArray(), blender::nodes::LazyFunctionForReduceForeachGeometryElement::handle_generation_items_group(), blender::geometry::point_merge_by_distance(), blender::bke::MutableAttributeAccessor::rename(), blender::geometry::retrieve_attribute_spans(), blender::geometry::retrieve_attribute_spans(), blender::bke::mesh_surface_sample::sample_corner_attribute(), blender::bke::mesh_surface_sample::sample_face_attribute(), blender::bke::mesh_surface_sample::sample_point_attribute(), blender::ed::greasepencil::select_set_mode_exec(), blender::GVArray::slice(), blender::bke::compare_meshes::sort_domain_using_attributes(), blender::nodes::node_geo_dual_mesh_cc::transfer_attributes(), transform_active_color_data(), blender::bke::DataTypeConversions::try_convert(), blender::bke::DataTypeConversions::try_convert(), blender::bke::try_sharing_point_data(), blender::ed::spreadsheet::ColumnValues::type(), blender::GVMutableArray::typed(), blender::VArrayImpl_For_GVArray< T >::VArrayImpl_For_GVArray(), blender::bke::compare_meshes::verify_attributes_compatible(), vertex_paint_from_weight(), and blender::VMutableArrayImpl_For_GVMutableArray< T >::VMutableArrayImpl_For_GVMutableArray().
|
protected |
Definition at line 101 of file BLI_generic_virtual_array.hh.
Referenced by common_info(), copy_from(), emplace(), get(), get(), blender::GVArray::get_implementation(), get_internal_single(), get_internal_single_to_uninitialized(), get_internal_span(), blender::GVMutableArray::get_internal_span(), get_to_uninitialized(), GVArrayCommon(), GVArrayCommon(), is_single(), is_span(), materialize(), materialize(), materialize_compressed(), materialize_compressed_to_uninitialized(), materialize_to_uninitialized(), materialize_to_uninitialized(), size(), try_assign_VArray(), blender::GVMutableArray::try_assign_VMutableArray(), type(), and blender::GVArray::typed().
|
protected |
Definition at line 102 of file BLI_generic_virtual_array.hh.
Referenced by copy_from(), emplace(), GVArrayCommon(), GVArrayCommon(), and impl_from_storage().