Blender V5.0
blender::CPPType Class Reference

#include <BLI_cpp_type.hh>

Inherits blender::NonCopyable, and blender::NonMovable.

Public Member Functions

template<typename T, CPPTypeFlags Flags>
 CPPType (TypeTag< T >, TypeForValue< CPPTypeFlags, Flags >, StringRef debug_name)
virtual ~CPPType ()=default
StringRefNull name () const
bool is_printable () const
bool is_equality_comparable () const
bool is_hashable () const
bool pointer_has_valid_alignment (const void *ptr) const
bool pointer_can_point_to_instance (const void *ptr) const
void default_construct (void *ptr) const
void default_construct_n (void *ptr, int64_t n) const
void default_construct_indices (void *ptr, const IndexMask &mask) const
void value_initialize (void *ptr) const
void value_initialize_n (void *ptr, int64_t n) const
void value_initialize_indices (void *ptr, const IndexMask &mask) const
void destruct (void *ptr) const
void destruct_n (void *ptr, int64_t n) const
void destruct_indices (void *ptr, const IndexMask &mask) const
void copy_assign (const void *src, void *dst) const
void copy_assign_n (const void *src, void *dst, int64_t n) const
void copy_assign_indices (const void *src, void *dst, const IndexMask &mask) const
void copy_assign_compressed (const void *src, void *dst, const IndexMask &mask) const
void copy_construct (const void *src, void *dst) const
void copy_construct_n (const void *src, void *dst, int64_t n) const
void copy_construct_indices (const void *src, void *dst, const IndexMask &mask) const
void copy_construct_compressed (const void *src, void *dst, const IndexMask &mask) const
void move_assign (void *src, void *dst) const
void move_assign_n (void *src, void *dst, int64_t n) const
void move_assign_indices (void *src, void *dst, const IndexMask &mask) const
void move_construct (void *src, void *dst) const
void move_construct_n (void *src, void *dst, int64_t n) const
void move_construct_indices (void *src, void *dst, const IndexMask &mask) const
void relocate_assign (void *src, void *dst) const
void relocate_assign_n (void *src, void *dst, int64_t n) const
void relocate_assign_indices (void *src, void *dst, const IndexMask &mask) const
void relocate_construct (void *src, void *dst) const
void relocate_construct_n (void *src, void *dst, int64_t n) const
void relocate_construct_indices (void *src, void *dst, const IndexMask &mask) const
void fill_assign_n (const void *value, void *dst, int64_t n) const
void fill_assign_indices (const void *value, void *dst, const IndexMask &mask) const
void fill_construct_n (const void *value, void *dst, int64_t n) const
void fill_construct_indices (const void *value, void *dst, const IndexMask &mask) const
bool can_exist_in_buffer (const int64_t buffer_size, const int64_t buffer_alignment) const
void print (const void *value, std::stringstream &ss) const
std::string to_string (const void *value) const
void print_or_default (const void *value, std::stringstream &ss, StringRef default_value) const
bool is_equal (const void *a, const void *b) const
bool is_equal_or_false (const void *a, const void *b) const
uint64_t hash (const void *value) const
uint64_t hash_or_fallback (const void *value, uint64_t fallback_hash) const
const void * default_value () const
uint64_t hash () const
template<typename T>
bool is () const
template<typename... T>
bool is_any () const
template<typename... Types, typename Fn>
void to_static_type (const Fn &fn) const
template<typename... Types, typename Fn>
void to_static_type_tag (const Fn &fn) const

Static Public Member Functions

template<typename T>
static const CPPTypeget ()
template<typename T>
static const CPPTypeget_impl ()
template<>
const CPPTypeget_impl ()=delete

Public Attributes

int64_t size = 0
int64_t alignment = 0
bool is_trivial = false
bool is_trivially_destructible = false
bool has_special_member_functions = false
bool is_default_constructible = false
bool is_copy_constructible = false
bool is_move_constructible = false
bool is_destructible = false
bool is_copy_assignable = false
bool is_move_assignable = false
void(*)(void *) destruct_fn () const

Detailed Description

Definition at line 100 of file BLI_cpp_type.hh.

Constructor & Destructor Documentation

◆ CPPType()

◆ ~CPPType()

virtual blender::CPPType::~CPPType ( )
virtualdefault

References CPPType().

Member Function Documentation

◆ can_exist_in_buffer()

bool blender::CPPType::can_exist_in_buffer ( const int64_t buffer_size,
const int64_t buffer_alignment ) const
inline

◆ copy_assign()

◆ copy_assign_compressed()

void blender::CPPType::copy_assign_compressed ( const void * src,
void * dst,
const IndexMask & mask ) const
inline

Similar to copy_assign_indices, but does not leave gaps in the #dst array.

Definition at line 564 of file BLI_cpp_type.hh.

References mask().

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

◆ copy_assign_indices()

void blender::CPPType::copy_assign_indices ( const void * src,
void * dst,
const IndexMask & mask ) const
inline

Definition at line 559 of file BLI_cpp_type.hh.

References mask().

◆ copy_assign_n()

void blender::CPPType::copy_assign_n ( const void * src,
void * dst,
int64_t n ) const
inline

◆ copy_construct()

◆ copy_construct_compressed()

void blender::CPPType::copy_construct_compressed ( const void * src,
void * dst,
const IndexMask & mask ) const
inline

Similar to copy_construct_indices, but does not leave gaps in the #dst array.

Definition at line 588 of file BLI_cpp_type.hh.

References mask().

◆ copy_construct_indices()

void blender::CPPType::copy_construct_indices ( const void * src,
void * dst,
const IndexMask & mask ) const
inline

Definition at line 581 of file BLI_cpp_type.hh.

References mask().

◆ copy_construct_n()

void blender::CPPType::copy_construct_n ( const void * src,
void * dst,
int64_t n ) const
inline

◆ default_construct()

void blender::CPPType::default_construct ( void * ptr) const
inline

Call the default constructor at the given memory location. The memory should be uninitialized before this method is called. For some trivial types (like int), this method does nothing.

C++ equivalent: new (ptr) T;

Definition at line 504 of file BLI_cpp_type.hh.

References ptr.

Referenced by blender::ed::greasepencil::insert_selected_values(), blender::geometry::reverse_order(), blender::ed::greasepencil::select_similar_by_value(), and blender::tests::TEST().

◆ default_construct_indices()

void blender::CPPType::default_construct_indices ( void * ptr,
const IndexMask & mask ) const
inline

Definition at line 514 of file BLI_cpp_type.hh.

References mask(), and ptr.

◆ default_construct_n()

void blender::CPPType::default_construct_n ( void * ptr,
int64_t n ) const
inline

◆ default_value()

◆ destruct()

◆ destruct_indices()

void blender::CPPType::destruct_indices ( void * ptr,
const IndexMask & mask ) const
inline

◆ destruct_n()

void blender::CPPType::destruct_n ( void * ptr,
int64_t n ) const
inline

◆ fill_assign_indices()

void blender::CPPType::fill_assign_indices ( const void * value,
void * dst,
const IndexMask & mask ) const
inline

◆ fill_assign_n()

◆ fill_construct_indices()

void blender::CPPType::fill_construct_indices ( const void * value,
void * dst,
const IndexMask & mask ) const
inline

◆ fill_construct_n()

void blender::CPPType::fill_construct_n ( const void * value,
void * dst,
int64_t n ) const
inline

Copy the given value to the first n elements in an array starting at dst.

The array should be uninitialized before this method is called.

Definition at line 665 of file BLI_cpp_type.hh.

Referenced by blender::bke::convert_storage_to_customdata(), blender::bke::copy_attributes_group_to_group(), blender::nodes::List::ArrayData::ForValue(), blender::bke::Attribute::ArrayData::from_value(), and blender::bke::initialize_new_data().

◆ get()

template<typename T>
const CPPType & blender::CPPType::get ( )
inlinestatic

Get the CPPType that corresponds to a specific static type. This only works for types that actually implement the template specialization using BLI_CPP_TYPE_MAKE.

Definition at line 467 of file BLI_cpp_type.hh.

References CPPType(), and get_impl().

Referenced by blender::bke::MutableAttributeAccessor::add(), blender::bke::add_implicit_conversion(), blender::fn::multi_function::ParamsBuilder::add_readonly_single_input(), blender::fn::multi_function::ParamsBuilder::add_readonly_single_input_value(), blender::fn::multi_function::ProcedureBuilder::add_single_input_parameter(), blender::fn::multi_function::ProcedureBuilder::add_single_mutable_parameter(), blender::fn::multi_function::ParamsBuilder::add_uninitialized_single_output(), blender::fn::lazy_function::tests::AddLazyFunction::AddLazyFunction(), blender::bke::attribute_type_to_cpp_type(), blender::compositor::Result::cpp_type(), blender::bke::custom_data_type_to_cpp_type(), blender::fn::multi_function::CustomMF_Constant< T >::equals(), blender::nodes::LazyFunctionForClosureZone::execute_impl(), blender::fn::lazy_function::detail::execute_lazy_function_eagerly_impl(), blender::nodes::geo_eval_log::GeoTreeLog::find_primitive_socket_value(), blender::nodes::node_fn_format_string_cc::format_strings(), blender::fn::multi_function::DataType::ForSingle(), blender::fn::multi_function::DataType::ForVector(), blender::bke::AttributeExistsFieldInput::from(), blender::bke::AttributeFieldInput::from(), blender::bke::AttributeIter::get(), blender::bke::get_mutable_attribute(), blender::nodes::node_fn_format_string_cc::get_pattern_by_type(), blender::compositor::get_result_data(), blender::compositor::get_result_data(), blender::compositor::get_result_single_value(), blender::compositor::get_result_single_value(), blender::bke::get_span_attribute(), blender::bke::get_varray_attribute(), blender::GVArray::GVArray(), blender::GVMutableArray::GVMutableArray(), blender::nodes::initialize_zone_wrapper(), is(), blender::nodes::lazy_function_interface_from_node(), blender::nodes::LazyFunctionForBakeInputsUsage::LazyFunctionForBakeInputsUsage(), blender::nodes::node_geo_bake_cc::LazyFunctionForBakeNode::LazyFunctionForBakeNode(), blender::nodes::LazyFunctionForClosureZone::LazyFunctionForClosureZone(), blender::nodes::node_geo_enable_output_cc::LazyFunctionForEnableOutputNode::LazyFunctionForEnableOutputNode(), blender::nodes::LazyFunctionForEnableOutputSocketUsage::LazyFunctionForEnableOutputSocketUsage(), blender::nodes::LazyFunctionForExtractingReferenceSet::LazyFunctionForExtractingReferenceSet(), blender::nodes::LazyFunctionForGeometryNode::LazyFunctionForGeometryNode(), blender::nodes::LazyFunctionForGizmoInputsUsage::LazyFunctionForGizmoInputsUsage(), blender::nodes::LazyFunctionForGizmoNode::LazyFunctionForGizmoNode(), blender::nodes::LazyFunctionForImplicitConversion::LazyFunctionForImplicitConversion(), blender::nodes::node_geo_index_switch_cc::LazyFunctionForIndexSwitchNode::LazyFunctionForIndexSwitchNode(), blender::nodes::LazyFunctionForIndexSwitchSocketUsage::LazyFunctionForIndexSwitchSocketUsage(), blender::nodes::LazyFunctionForJoinReferenceSets::LazyFunctionForJoinReferenceSets(), blender::nodes::LazyFunctionForLogicalOr::LazyFunctionForLogicalOr(), blender::nodes::node_geo_menu_switch_cc::LazyFunctionForMenuSwitchNode::LazyFunctionForMenuSwitchNode(), blender::nodes::node_geo_menu_switch_cc::LazyFunctionForMenuSwitchSocketUsage::LazyFunctionForMenuSwitchSocketUsage(), blender::nodes::LazyFunctionForMultiInput::LazyFunctionForMultiInput(), blender::nodes::LazyFunctionForRerouteNode::LazyFunctionForRerouteNode(), blender::nodes::node_geo_simulation_cc::sim_input_node::LazyFunctionForSimulationInputNode::LazyFunctionForSimulationInputNode(), blender::nodes::LazyFunctionForSimulationInputsUsage::LazyFunctionForSimulationInputsUsage(), blender::nodes::node_geo_simulation_cc::sim_output_node::LazyFunctionForSimulationOutputNode::LazyFunctionForSimulationOutputNode(), blender::nodes::node_geo_switch_cc::LazyFunctionForSwitchNode::LazyFunctionForSwitchNode(), blender::nodes::LazyFunctionForSwitchSocketUsage::LazyFunctionForSwitchSocketUsage(), blender::nodes::LazyFunctionForViewerInputUsage::LazyFunctionForViewerInputUsage(), blender::nodes::node_geo_warning_cc::LazyFunctionForWarningNode::LazyFunctionForWarningNode(), blender::bke::AttributeAccessor::lookup(), blender::bke::MutableAttributeAccessor::lookup_or_add_for_write(), blender::fn::make_constant_field(), make_socket_type_bool(), make_socket_type_bundle(), make_socket_type_closure(), make_socket_type_collection(), make_socket_type_float(), make_socket_type_geometry(), make_socket_type_image(), make_socket_type_int(), make_socket_type_material(), make_socket_type_matrix(), make_socket_type_menu(), make_socket_type_object(), make_socket_type_rgba(), make_socket_type_rotation(), make_socket_type_string(), make_socket_type_texture(), make_socket_type_vector(), blender::ed::mesh::set_attribute::mesh_set_attribute_exec(), blender::nodes::node_geo_sample_uv_surface_cc::node_geo_exec(), blender::nodes::node_geo_tool_set_selection_cc::node_geo_exec(), blender::fn::FieldOperation::output_cpp_type(), blender::fn::lazy_function::tests::PartialEvaluationTestFunction::PartialEvaluationTestFunction(), blender::bke::bake::read_blob_shared_simple_span(), blender::ed::curves::set_attribute_exec(), blender::ed::pointcloud::set_attribute_exec(), blender::fn::multi_function::SignatureBuilder::single_input(), blender::fn::multi_function::SignatureBuilder::single_mutable(), blender::fn::multi_function::SignatureBuilder::single_output(), blender::nodes::socket_type_info_by_static_type(), blender::bke::socket_type_to_geo_nodes_base_cpp_type(), blender::fn::lazy_function::tests::StoreValueFunction::StoreValueFunction(), blender::fn::lazy_function::tests::TEST(), blender::fn::lazy_function::tests::TEST(), blender::fn::multi_function::tests::TEST(), blender::fn::multi_function::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), blender::tests::TEST(), to_static_type(), blender::fn::multi_function::SignatureBuilder::vector_input(), blender::fn::multi_function::SignatureBuilder::vector_mutable(), and blender::fn::multi_function::SignatureBuilder::vector_output().

◆ get_impl() [1/2]

template<typename T>
const CPPType & blender::CPPType::get_impl ( )
static

References b, CPPType(), default_value(), mask(), and ptr.

Referenced by get().

◆ get_impl() [2/2]

template<>
const CPPType & blender::CPPType::get_impl ( )
staticdelete

References CPPType().

◆ hash() [1/2]

uint64_t blender::CPPType::hash ( ) const
inline

Definition at line 720 of file BLI_cpp_type.hh.

References blender::get_default_hash().

Referenced by hash_or_fallback().

◆ hash() [2/2]

uint64_t blender::CPPType::hash ( const void * value) const
inline

Definition at line 702 of file BLI_cpp_type.hh.

◆ hash_or_fallback()

uint64_t blender::CPPType::hash_or_fallback ( const void * value,
uint64_t fallback_hash ) const
inline

Definition at line 707 of file BLI_cpp_type.hh.

References hash(), and is_hashable().

Referenced by blender::NodesModifierUsageInferenceCache::ensure().

◆ is()

template<typename T>
bool blender::CPPType::is ( ) const
inline

Definition at line 730 of file BLI_cpp_type.hh.

References get().

Referenced by blender::ed::spreadsheet::apply_row_filter(), blender::ed::curves::apply_selection_operation_at_index(), BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(), blender::nodes::node_geo_tool_set_selection_cc::clamp_selection(), blender::nodes::node_geo_duplicate_elements_cc::copy_stable_id_curves(), blender::nodes::node_geo_duplicate_elements_cc::copy_stable_id_edges(), blender::nodes::node_geo_duplicate_elements_cc::copy_stable_id_faces(), blender::nodes::node_geo_duplicate_elements_cc::copy_stable_id_point(), blender::bke::cpp_type_to_attribute_type(), blender::ed::spreadsheet::cpp_type_to_column_type(), blender::bke::cpp_type_to_custom_data_type(), blender::geometry::create_id_index_map(), blender::ed::spreadsheet::SpreadsheetLayoutDrawer::draw_content_cell_value(), blender::GValueMap< Key >::extract(), blender::ed::curves::extrude_curves(), blender::ed::sculpt_paint::fill_mesh_color(), blender::ed::curves::fill_selection(), blender::ed::curves::fill_selection_false(), blender::ed::curves::fill_selection_false(), blender::ed::pointcloud::fill_selection_false(), blender::ed::curves::fill_selection_true(), blender::ed::curves::fill_selection_true(), blender::ed::pointcloud::fill_selection_true(), blender::nodes::node_fn_format_string_cc::format_with_fmt(), blender::nodes::node_fn_format_string_cc::format_with_hash_syntax(), blender::nodes::node_fn_format_string_cc::format_without_format_specifier(), blender::geometry::gather_realize_tasks_for_instances(), blender::bke::geo_nodes_base_cpp_type_to_socket_type(), blender::nodes::node_fn_format_string_cc::get_pattern_by_type(), blender::nodes::node_fn_format_string_cc::get_pattern_by_type_impl(), blender::ed::curves::has_anything_selected(), blender::ed::curves::invert_selection(), blender::ed::pointcloud::invert_selection(), blender::nodes::node_geo_tool_set_selection_cc::invert_selection(), is_any(), blender::nodes::geo_eval_log::GeoTreeLogger::log_value(), blender::bke::MutableAttributeAccessor::lookup_for_write(), blender::geometry::point_merge_by_distance(), blender::geometry::preprocess_curves(), blender::geometry::preprocess_meshes(), blender::geometry::preprocess_pointclouds(), blender::bke::bake::read_blob_simple_gspan(), blender::ed::curves::select_adjacent(), blender::ed::curves::select_ends_exec(), blender::ed::sculpt_paint::color::to_static_color_type(), and blender::bke::bake::write_blob_simple_gspan().

◆ is_any()

template<typename... T>
bool blender::CPPType::is_any ( ) const
inline

◆ is_equal()

bool blender::CPPType::is_equal ( const void * a,
const void * b ) const
inline

Definition at line 689 of file BLI_cpp_type.hh.

References b.

Referenced by is_equal_or_false().

◆ is_equal_or_false()

bool blender::CPPType::is_equal_or_false ( const void * a,
const void * b ) const
inline

◆ is_equality_comparable()

bool blender::CPPType::is_equality_comparable ( ) const
inline

Definition at line 484 of file BLI_cpp_type.hh.

Referenced by is_equal_or_false().

◆ is_hashable()

bool blender::CPPType::is_hashable ( ) const
inline

Definition at line 489 of file BLI_cpp_type.hh.

Referenced by hash_or_fallback().

◆ is_printable()

bool blender::CPPType::is_printable ( ) const
inline

◆ move_assign()

void blender::CPPType::move_assign ( void * src,
void * dst ) const
inline

Move an instance of this type from src to dst.

The memory pointed to by dst should be initialized.

C++ equivalent: dst = std::move(src);

Definition at line 595 of file BLI_cpp_type.hh.

Referenced by blender::bke::node_socket_move_default_value(), and blender::geometry::reverse_order().

◆ move_assign_indices()

void blender::CPPType::move_assign_indices ( void * src,
void * dst,
const IndexMask & mask ) const
inline

Definition at line 605 of file BLI_cpp_type.hh.

References mask().

◆ move_assign_n()

void blender::CPPType::move_assign_n ( void * src,
void * dst,
int64_t n ) const
inline

Definition at line 600 of file BLI_cpp_type.hh.

◆ move_construct()

void blender::CPPType::move_construct ( void * src,
void * dst ) const
inline

◆ move_construct_indices()

void blender::CPPType::move_construct_indices ( void * src,
void * dst,
const IndexMask & mask ) const
inline

Definition at line 620 of file BLI_cpp_type.hh.

References mask().

◆ move_construct_n()

void blender::CPPType::move_construct_n ( void * src,
void * dst,
int64_t n ) const
inline

Definition at line 615 of file BLI_cpp_type.hh.

◆ name()

◆ pointer_can_point_to_instance()

bool blender::CPPType::pointer_can_point_to_instance ( const void * ptr) const
inline

Definition at line 499 of file BLI_cpp_type.hh.

References pointer_has_valid_alignment(), and ptr.

Referenced by print().

◆ pointer_has_valid_alignment()

bool blender::CPPType::pointer_has_valid_alignment ( const void * ptr) const
inline

Returns true, when the given pointer fulfills the alignment requirement of this type.

Definition at line 494 of file BLI_cpp_type.hh.

References ptr.

Referenced by pointer_can_point_to_instance().

◆ print()

void blender::CPPType::print ( const void * value,
std::stringstream & ss ) const
inline

◆ print_or_default()

void blender::CPPType::print_or_default ( const void * value,
std::stringstream & ss,
StringRef default_value ) const

Definition at line 22 of file cpp_type.cc.

References default_value(), is_printable(), and print().

◆ relocate_assign()

void blender::CPPType::relocate_assign ( void * src,
void * dst ) const
inline

Relocates an instance of this type from src to dst. src will point to uninitialized memory afterwards.

C++ equivalent: dst = std::move(src); src->~T();

Definition at line 625 of file BLI_cpp_type.hh.

Referenced by blender::GValueMap< Key >::extract().

◆ relocate_assign_indices()

void blender::CPPType::relocate_assign_indices ( void * src,
void * dst,
const IndexMask & mask ) const
inline

Definition at line 635 of file BLI_cpp_type.hh.

References mask().

◆ relocate_assign_n()

void blender::CPPType::relocate_assign_n ( void * src,
void * dst,
int64_t n ) const
inline

Definition at line 630 of file BLI_cpp_type.hh.

◆ relocate_construct()

void blender::CPPType::relocate_construct ( void * src,
void * dst ) const
inline

Relocates an instance of this type from src to dst. src will point to uninitialized memory afterwards.

C++ equivalent: new (dst) T(std::move(src)) src->~T();

Definition at line 640 of file BLI_cpp_type.hh.

◆ relocate_construct_indices()

void blender::CPPType::relocate_construct_indices ( void * src,
void * dst,
const IndexMask & mask ) const
inline

Definition at line 650 of file BLI_cpp_type.hh.

References mask().

◆ relocate_construct_n()

void blender::CPPType::relocate_construct_n ( void * src,
void * dst,
int64_t n ) const
inline

Definition at line 645 of file BLI_cpp_type.hh.

◆ to_static_type()

template<typename... Types, typename Fn>
void blender::CPPType::to_static_type ( const Fn & fn) const
inline

Convert a CPPType that is only known at run-time, to a static type that is known at compile-time. This allows the compiler to optimize a function for specific types, while all other types can still use a generic fallback function.

Parameters
TypesThe types that code should be generated for.
fnThe function object to call. This is expected to have a templated operator() and a non-templated operator(). The templated version will be called if the current CPPType matches any of the given types. Otherwise, the non-templated function is called.

Definition at line 740 of file BLI_cpp_type.hh.

References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add_new(), get(), and blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::lookup_default().

Referenced by to_static_type_tag().

◆ to_static_type_tag()

template<typename... Types, typename Fn>
void blender::CPPType::to_static_type_tag ( const Fn & fn) const
inline

Similar to to_static_type but is easier to use with a lambda function. The function is expected to take a single auto TypeTag parameter. To extract the static type, use: using T = typename decltype(TypeTag)::type;

If the current CPPType is not in #Types, the type tag is void.

Definition at line 428 of file BLI_cpp_type.hh.

References to_static_type().

Referenced by blender::bke::attribute_math::convert_to_static_type(), blender::tests::TEST(), blender::nodes::node_geo_blur_attribute_cc::to_static_type_for_blur(), and transform_active_color_data().

◆ to_string()

std::string blender::CPPType::to_string ( const void * value) const

Definition at line 15 of file cpp_type.cc.

References print().

Referenced by blender::fn::lazy_function::Graph::to_dot().

◆ value_initialize()

void blender::CPPType::value_initialize ( void * ptr) const
inline

Same as default_construct, but does zero initialization for trivial types.

C++ equivalent: new (ptr) T();

Definition at line 519 of file BLI_cpp_type.hh.

References ptr.

Referenced by blender::fn::evaluate_constant_field(), blender::bke::node_socket_move_default_value(), and blender::tests::TEST().

◆ value_initialize_indices()

◆ value_initialize_n()

void blender::CPPType::value_initialize_n ( void * ptr,
int64_t n ) const
inline

Member Data Documentation

◆ alignment

◆ destruct_fn

void(*)(void *) blender::CPPType::destruct_fn() const

Definition at line 387 of file BLI_cpp_type.hh.

◆ has_special_member_functions

bool blender::CPPType::has_special_member_functions = false

Returns true, when the type has the following functions:

  • Default constructor.
  • Copy constructor.
  • Move constructor.
  • Copy assignment operator.
  • Move assignment operator.
  • Destructor.

Definition at line 145 of file BLI_cpp_type.hh.

Referenced by CPPType().

◆ is_copy_assignable

bool blender::CPPType::is_copy_assignable = false

Definition at line 151 of file BLI_cpp_type.hh.

Referenced by CPPType().

◆ is_copy_constructible

bool blender::CPPType::is_copy_constructible = false

Definition at line 148 of file BLI_cpp_type.hh.

Referenced by CPPType().

◆ is_default_constructible

bool blender::CPPType::is_default_constructible = false

Definition at line 147 of file BLI_cpp_type.hh.

Referenced by CPPType().

◆ is_destructible

bool blender::CPPType::is_destructible = false

Definition at line 150 of file BLI_cpp_type.hh.

Referenced by CPPType().

◆ is_move_assignable

bool blender::CPPType::is_move_assignable = false

Definition at line 152 of file BLI_cpp_type.hh.

Referenced by CPPType().

◆ is_move_constructible

bool blender::CPPType::is_move_constructible = false

Definition at line 149 of file BLI_cpp_type.hh.

Referenced by CPPType().

◆ is_trivial

bool blender::CPPType::is_trivial = false

When true, the value is like a normal C type, it can be copied around with #memcpy and does not have to be destructed.

C++ equivalent: std::is_trivial_v<T>;

Definition at line 125 of file BLI_cpp_type.hh.

Referenced by CPPType(), blender::bke::bake::read_blob_simple_gspan(), and blender::bke::bake::write_blob_simple_gspan().

◆ is_trivially_destructible

bool blender::CPPType::is_trivially_destructible = false

When true, the destructor does not have to be called on this type. This can sometimes be used for optimization purposes.

C++ equivalent: std::is_trivially_destructible_v<T>;

Definition at line 134 of file BLI_cpp_type.hh.

Referenced by blender::ResourceScope::allocate_owned(), CPPType(), blender::fn::evaluate_fields(), blender::bke::Attribute::ArrayData::from_uninitialized(), blender::bke::Attribute::ArrayData::from_value(), blender::bke::Attribute::SingleData::from_value(), blender::nodes::sharing_ptr_for_array(), and blender::nodes::sharing_ptr_for_value().

◆ size

int64_t blender::CPPType::size = 0

Required memory in bytes for an instance of this type.

C++ equivalent: sizeof(T);

Definition at line 108 of file BLI_cpp_type.hh.

Referenced by blender::LinearAllocator< Allocator >::allocate(), blender::LinearAllocator< Allocator >::allocate_array(), blender::bke::attribute_init_to_data(), blender::nodes::compute_attributes_to_store(), blender::ed::geometry::convert_attribute(), CPPType(), blender::nodes::create_repeated_list(), blender::ed::curves::set_selection_domain::curves_set_selection_domain_exec(), blender::fn::multi_function::CustomMF_GenericConstant::CustomMF_GenericConstant(), blender::ed::greasepencil::ensure_selection_domain(), blender::bke::evaluate_attribute(), blender::nodes::List::ArrayData::ForConstructed(), blender::nodes::List::ArrayData::ForUninitialized(), blender::nodes::List::ArrayData::ForValue(), blender::nodes::List::SingleData::ForValue(), blender::bke::Attribute::ArrayData::from_uninitialized(), blender::bke::Attribute::ArrayData::from_value(), blender::bke::Attribute::SingleData::from_value(), blender::GVMutableArray::get_internal_span(), blender::bke::get_span_attribute(), blender::fn::multi_function::ValueAllocator::obtain_OneSingle(), blender::fn::multi_function::ValueAllocator::obtain_Span(), blender::bke::bake::read_blob_shared_simple_gspan(), blender::bke::bake::read_blob_simple_gspan(), blender::fn::multi_function::ValueAllocator::release_value(), blender::geometry::reorder_attribute_domain(), blender::geometry::reorder_attribute_groups(), blender::bke::AttributeStorage::resize(), blender::compositor::Result::size_in_bytes(), blender::bke::try_capture_fields_on_geometry(), blender::bke::bake::write_blob_simple_gspan(), and blender::bke::write_shared_array().


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