Blender V5.0
FN_multi_function_builder.hh File Reference

Go to the source code of this file.

Classes

struct  blender::fn::multi_function::build::exec_presets::Simple
struct  blender::fn::multi_function::build::exec_presets::Materialized
struct  blender::fn::multi_function::build::exec_presets::AllSpanOrSingle
struct  blender::fn::multi_function::build::exec_presets::SomeSpanOrSingle< Indices >
struct  blender::fn::multi_function::build::detail::MaterializeArgInfo< ParamTag >
class  blender::fn::multi_function::build::detail::CustomMF< CallFn, ParamTags >
class  blender::fn::multi_function::CustomMF_GenericConstant
class  blender::fn::multi_function::CustomMF_GenericConstantArray
class  blender::fn::multi_function::CustomMF_Constant< T >
class  blender::fn::multi_function::CustomMF_DefaultOutput
class  blender::fn::multi_function::CustomMF_GenericCopy

Namespaces

namespace  blender
namespace  blender::fn
namespace  blender::fn::multi_function
namespace  blender::fn::multi_function::build
namespace  blender::fn::multi_function::build::exec_presets
namespace  blender::fn::multi_function::build::detail

Enumerations

enum class  blender::fn::multi_function::build::exec_presets::FallbackMode { blender::fn::multi_function::build::exec_presets::Simple , blender::fn::multi_function::build::exec_presets::Materialized }
enum class  blender::fn::multi_function::build::detail::MaterializeArgMode { blender::fn::multi_function::build::detail::Unknown , blender::fn::multi_function::build::detail::Single , blender::fn::multi_function::build::detail::Span , blender::fn::multi_function::build::detail::Materialized }

Functions

template<typename MaskT, typename... Args, typename... ParamTags, size_t... I, typename ElementFn>
void blender::fn::multi_function::build::detail::execute_array (TypeSequence< ParamTags... >, std::index_sequence< I... >, ElementFn element_fn, MaskT mask, Args &&__restrict... args)
template<typename... ParamTags, typename ElementFn, typename... Chunks>
void blender::fn::multi_function::build::detail::execute_materialized_impl (TypeSequence< ParamTags... >, const ElementFn element_fn, const int64_t size, Chunks &&__restrict... chunks)
template<typename... ParamTags, size_t... I, typename ElementFn, typename... LoadedParams>
void blender::fn::multi_function::build::detail::execute_materialized (TypeSequence< ParamTags... >, std::index_sequence< I... >, const ElementFn element_fn, const IndexMaskSegment mask, const std::tuple< LoadedParams... > &loaded_params)
template<typename ElementFn, typename ExecPreset, typename... ParamTags, size_t... I>
void blender::fn::multi_function::build::detail::execute_element_fn_as_multi_function (const ElementFn element_fn, const ExecPreset exec_preset, const IndexMask &mask, Params params, TypeSequence< ParamTags... >, std::index_sequence< I... >)
template<typename ElementFn, typename ExecPreset, typename... ParamTags>
auto blender::fn::multi_function::build::detail::build_multi_function_call_from_element_fn (const ElementFn element_fn, const ExecPreset exec_preset, TypeSequence< ParamTags... >)
template<typename Out, typename... In, typename ElementFn, typename ExecPreset>
auto blender::fn::multi_function::build::detail::build_multi_function_with_n_inputs_one_output (const char *name, const ElementFn element_fn, const ExecPreset exec_preset, TypeSequence< In... >)
template<typename Out1, typename Out2, typename... In, typename ElementFn, typename ExecPreset>
auto blender::fn::multi_function::build::detail::build_multi_function_with_n_inputs_two_outputs (const char *name, const ElementFn element_fn, const ExecPreset exec_preset, TypeSequence< In... >)
template<typename In1, typename Out1, typename ElementFn, typename ExecPreset = exec_presets::Materialized>
auto blender::fn::multi_function::build::SI1_SO (const char *name, const ElementFn element_fn, const ExecPreset exec_preset=exec_presets::Materialized())
template<typename In1, typename In2, typename Out1, typename ElementFn, typename ExecPreset = exec_presets::Materialized>
auto blender::fn::multi_function::build::SI2_SO (const char *name, const ElementFn element_fn, const ExecPreset exec_preset=exec_presets::Materialized())
template<typename In1, typename In2, typename In3, typename Out1, typename ElementFn, typename ExecPreset = exec_presets::Materialized>
auto blender::fn::multi_function::build::SI3_SO (const char *name, const ElementFn element_fn, const ExecPreset exec_preset=exec_presets::Materialized())
template<typename In1, typename In2, typename In3, typename In4, typename Out1, typename ElementFn, typename ExecPreset = exec_presets::Materialized>
auto blender::fn::multi_function::build::SI4_SO (const char *name, const ElementFn element_fn, const ExecPreset exec_preset=exec_presets::Materialized())
template<typename In1, typename In2, typename In3, typename In4, typename In5, typename Out1, typename ElementFn, typename ExecPreset = exec_presets::Materialized>
auto blender::fn::multi_function::build::SI5_SO (const char *name, const ElementFn element_fn, const ExecPreset exec_preset=exec_presets::Materialized())
template<typename In1, typename In2, typename In3, typename In4, typename In5, typename In6, typename Out1, typename ElementFn, typename ExecPreset = exec_presets::Materialized>
auto blender::fn::multi_function::build::SI6_SO (const char *name, const ElementFn element_fn, const ExecPreset exec_preset=exec_presets::Materialized())
template<typename In1, typename In2, typename In3, typename In4, typename In5, typename In6, typename In7, typename In8, typename Out1, typename ElementFn, typename ExecPreset = exec_presets::Materialized>
auto blender::fn::multi_function::build::SI8_SO (const char *name, const ElementFn element_fn, const ExecPreset exec_preset=exec_presets::Materialized())
template<typename Mut1, typename ElementFn, typename ExecPreset = exec_presets::AllSpanOrSingle>
auto blender::fn::multi_function::build::SM (const char *name, const ElementFn element_fn, const ExecPreset exec_preset=exec_presets::AllSpanOrSingle())
template<typename In1, typename Out1, typename Out2, typename ElementFn, typename ExecPreset = exec_presets::Materialized>
auto blender::fn::multi_function::build::SI1_SO2 (const char *name, const ElementFn element_fn, const ExecPreset exec_preset=exec_presets::Materialized())
template<typename In1, typename In2, typename Out1, typename Out2, typename ElementFn, typename ExecPreset = exec_presets::Materialized>
auto blender::fn::multi_function::build::SI2_SO2 (const char *name, const ElementFn element_fn, const ExecPreset exec_preset=exec_presets::Materialized())
template<typename In1, typename In2, typename In3, typename Out1, typename Out2, typename ElementFn, typename ExecPreset = exec_presets::Materialized>
auto blender::fn::multi_function::build::SI3_SO2 (const char *name, const ElementFn element_fn, const ExecPreset exec_preset=exec_presets::Materialized())
template<typename In1, typename In2, typename In3, typename In4, typename Out1, typename Out2, typename ElementFn, typename ExecPreset = exec_presets::Materialized>
auto blender::fn::multi_function::build::SI4_SO2 (const char *name, const ElementFn element_fn, const ExecPreset exec_preset=exec_presets::Materialized())
template<typename In1, typename In2, typename In3, typename In4, typename In5, typename Out1, typename Out2, typename ElementFn, typename ExecPreset = exec_presets::Materialized>
auto blender::fn::multi_function::build::SI5_SO2 (const char *name, const ElementFn element_fn, const ExecPreset exec_preset=exec_presets::Materialized())
template<typename In1, typename Out1, typename Out2, typename Out3, typename ElementFn, typename ExecPreset = exec_presets::Materialized>
auto blender::fn::multi_function::build::SI1_SO3 (const char *name, const ElementFn element_fn, const ExecPreset exec_preset=exec_presets::Materialized())
template<typename In1, typename Out1, typename Out2, typename Out3, typename Out4, typename ElementFn, typename ExecPreset = exec_presets::Materialized>
auto blender::fn::multi_function::build::SI1_SO4 (const char *name, const ElementFn element_fn, const ExecPreset exec_preset=exec_presets::Materialized())

Detailed Description

This file contains several utilities to create multi-functions with less redundant code.

Definition in file FN_multi_function_builder.hh.