Blender  V3.3
Public Member Functions | List of all members
blender::devirtualize_parameters::Devirtualizer< Fn, SourceTypes > Class Template Reference

#include <BLI_devirtualize_parameters.hh>

Public Member Functions

 Devirtualizer (Fn fn, const SourceTypes *...sources)
 
bool executed () const
 
template<DeviMode... AllowedModes>
void try_execute_devirtualized (DeviModeSequence< AllowedModes... >)
 
void execute_without_devirtualization ()
 

Detailed Description

template<typename Fn, typename... SourceTypes>
class blender::devirtualize_parameters::Devirtualizer< Fn, SourceTypes >

Main class that performs the devirtualization.

Definition at line 62 of file BLI_devirtualize_parameters.hh.

Constructor & Destructor Documentation

◆ Devirtualizer()

template<typename Fn , typename... SourceTypes>
blender::devirtualize_parameters::Devirtualizer< Fn, SourceTypes >::Devirtualizer ( Fn  fn,
const SourceTypes *...  sources 
)
inline

Definition at line 82 of file BLI_devirtualize_parameters.hh.

Member Function Documentation

◆ execute_without_devirtualization()

template<typename Fn , typename... SourceTypes>
void blender::devirtualize_parameters::Devirtualizer< Fn, SourceTypes >::execute_without_devirtualization ( )
inline

Execute the function and pass in the original parameters without doing any devirtualization.

Definition at line 117 of file BLI_devirtualize_parameters.hh.

References BLI_assert.

◆ executed()

template<typename Fn , typename... SourceTypes>
bool blender::devirtualize_parameters::Devirtualizer< Fn, SourceTypes >::executed ( ) const
inline

Return true when the function passed to the constructor has been called already.

Definition at line 89 of file BLI_devirtualize_parameters.hh.

◆ try_execute_devirtualized()

template<typename Fn , typename... SourceTypes>
template<DeviMode... AllowedModes>
void blender::devirtualize_parameters::Devirtualizer< Fn, SourceTypes >::try_execute_devirtualized ( DeviModeSequence< AllowedModes... >  )
inline

At compile time, generates multiple variants of the function, each optimized for a different combination of devirtualized parameters. For every parameter, a bit flag is passed that determines how it will be devirtualized. At run-time, if possible, one of the generated functions is picked and executed.

To check whether the function was called successfully, call executed() afterwards.

Note
This generates an exponential amount of code in the final binary, depending on how many to-be-virtualized parameters there are.

Definition at line 106 of file BLI_devirtualize_parameters.hh.

References BLI_assert.

Referenced by blender::fn::CustomMF_presets::AllSpanOrSingle::try_devirtualize(), and blender::fn::CustomMF_presets::SomeSpanOrSingle< Indices >::try_devirtualize().


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