Compute Graph Framework SDK Reference  5.8
dw::framework::TypeBasedParameterProvider Class Reference

Detailed Description

A parameter provider which dispatches the retrieval of the parameter value to registered handlers which are selected based on the name, size, and optional array index of the parameter.

Definition at line 72 of file TypeBasedParameterProvider.hpp.

Inheritance diagram for dw::framework::TypeBasedParameterProvider:
Collaboration diagram for dw::framework::TypeBasedParameterProvider:

Public Member Functions

bool get (ParameterProvider const *const parentProvider, dw::core::StringView const &key, const std::type_info &semanticTypeInfo, const std::type_info &dataTypeInfo, void *out) const override
 
bool get (ParameterProvider const *const parentProvider, dw::core::StringView const &key, size_t const index, const std::type_info &semanticTypeInfo, const std::type_info &dataTypeInfo, void *out) const override
 
 TypeBasedParameterProvider ()=default
 Default constructor. More...
 
 ~TypeBasedParameterProvider () override=default
 Destructor. More...
 
- Public Member Functions inherited from dw::framework::ParameterProvider
template<typename S , typename T , size_t N, std::enable_if_t< std::is_same< T, dw::core::FixedString< N > >::value > * = nullptr>
bool get (dw::core::StringView const &key, dw::core::FixedString< N > *out) const
 
template<typename S , typename T , size_t N, std::enable_if_t< std::is_same< T, dw::core::FixedString< N > >::value > * = nullptr>
bool get (dw::core::StringView const &key, size_t const index, dw::core::FixedString< N > *out) const
 
template<typename T , typename std::enable_if_t< !std::is_array< T >::value &&!std::is_enum< T >::value > * = nullptr>
bool get (dw::core::StringView const &key, size_t const index, T *out) const
 
template<typename S , typename T , std::enable_if_t<!std::is_enum< T >::value > * = nullptr>
bool get (dw::core::StringView const &key, size_t const index, T *out) const
 
template<typename S , typename T , std::enable_if_t< std::is_enum< T >::value > * = nullptr>
bool get (dw::core::StringView const &key, size_t const index, T *out) const
 
template<typename T , typename std::enable_if_t< !std::is_array< T >::value &&!std::is_enum< T >::value > * = nullptr>
bool get (dw::core::StringView const &key, std::vector< T > *out) const
 
template<typename T , typename std::enable_if_t< !std::is_array< T >::value &&!std::is_enum< T >::value > * = nullptr>
bool get (dw::core::StringView const &key, T *out) const
 
template<typename T , typename std::enable_if_t< std::is_array< T >::value &&std::rank< T >::value==1 &&!std::is_enum< std::remove_extent_t< T > >::value > * = nullptr>
bool get (dw::core::StringView const &key, T *out) const
 
template<typename T , typename std::enable_if_t< std::is_array< T >::value &&std::rank< T >::value==1 &&std::is_same< T, char8_t >::value > * = nullptr>
bool get (dw::core::StringView const &key, T *out) const
 
template<typename T , typename std::enable_if_t< std::is_array< T >::value &&std::rank< T >::value==2 &&!std::is_enum< std::remove_all_extents_t< T > >::value > * = nullptr>
bool get (dw::core::StringView const &key, T *out) const
 
template<typename S , typename T , std::enable_if_t<!std::is_enum< T >::value > * = nullptr>
bool get (dw::core::StringView const &key, T *out) const
 
template<typename S , typename T , std::enable_if_t< std::is_enum< T >::value > * = nullptr>
bool get (dw::core::StringView const &key, T *out) const
 
virtual bool get (ParameterProvider const *const parentProvider, dw::core::StringView const &key, const std::type_info &semanticTypeInfo, const std::type_info &dataTypeInfo, void *out) const =0
 
virtual bool get (ParameterProvider const *const parentProvider, dw::core::StringView const &key, size_t const index, const std::type_info &semanticTypeInfo, const std::type_info &dataTypeInfo, void *out) const =0
 
template<typename T >
bool getOptional (dw::core::StringView const &key, size_t const index, T *out) const
 
template<typename S , typename T >
bool getOptional (dw::core::StringView const &key, size_t const index, T *out) const
 
template<typename T >
bool getOptional (dw::core::StringView const &key, T *out) const
 
template<typename S , typename T >
bool getOptional (dw::core::StringView const &key, T *out) const
 
template<typename T >
void getRequired (dw::core::StringView const &key, size_t const index, T *out) const
 
template<typename S , typename T >
void getRequired (dw::core::StringView const &key, size_t const index, T *out) const
 
template<typename T >
void getRequired (dw::core::StringView const &key, T *out) const
 
template<typename S , typename T >
void getRequired (dw::core::StringView const &key, T *out) const
 
 ParameterProvider ()=default
 Default constructor. More...
 
virtual ~ParameterProvider ()=default
 Destructor. More...
 

Protected Member Functions

TypeBasedParameterProvideroperator= (TypeBasedParameterProvider &&) &=default
 Move assignment operator. More...
 
TypeBasedParameterProvideroperator= (TypeBasedParameterProvider const &) &=default
 Copy assignment operator. More...
 
 TypeBasedParameterProvider (TypeBasedParameterProvider &&)=default
 Move constructor. More...
 
 TypeBasedParameterProvider (TypeBasedParameterProvider const &)=default
 Copy constructor. More...
 
- Protected Member Functions inherited from dw::framework::ParameterProvider
ParameterProvideroperator= (ParameterProvider &&) &=default
 Move assignment operator. More...
 
ParameterProvideroperator= (ParameterProvider const &) &=default
 Copy assignment operator. More...
 
 ParameterProvider (ParameterProvider &&)=default
 Move constructor. More...
 
 ParameterProvider (ParameterProvider const &)=default
 Copy constructor. More...
 

Static Protected Member Functions

static bool isPairEqual (const std::pair< const std::type_info &, const std::type_info & > &lhs, const std::pair< const std::type_info &, const std::type_info & > &rhs)
 

Handler functions retrieving parameters by name.

Function signature of this handler type.

using ParameterByNameHandler = std::function< bool(dw::core::StringView const &, void *)>
 
void registerByNameHandler (const std::type_info &dataTypeInfo, const std::type_info &semanticTypeInfo, ParameterByNameHandler &&handler)
 Register the handler function. More...
 
ParameterByNameHandler const * getByNameHandler (const std::type_info &dataTypeInfo, const std::type_info &semanticTypeInfo) const
 Get the handler function. More...
 
template<typename T >
void registerByNameHandler (ParameterByNameHandler &&handler)
 Register the handler function for the template type T. More...
 
template<typename T , typename S >
void registerByNameHandler (ParameterByNameHandler &&handler)
 Register the handler function for the template type T and the semantic template type S. More...
 

Handler functions retrieving parameters by data type, name and index.

Function signature of this handler type.

using ParameterByNameAndIndexHandler = std::function< bool(dw::core::StringView const &, size_t, void *)>
 
void registerByNameAndIndexHandler (const std::type_info &dataTypeInfo, const std::type_info &semanticTypeInfo, ParameterByNameAndIndexHandler &&handler)
 Register the handler function. More...
 
ParameterByNameAndIndexHandler const * getByNameAndIndexHandler (const std::type_info &dataTypeInfo, const std::type_info &semanticTypeInfo) const
 Get the handler function. More...
 
template<typename T >
void registerByNameAndIndexHandler (ParameterByNameAndIndexHandler &&handler)
 Register the handler function for the template type T. More...
 
template<typename T , typename S >
void registerByNameAndIndexHandler (ParameterByNameAndIndexHandler &&handler)
 Register the handler function for the template type T and the semantic template type S. More...
 

Handler functions retrieving parameters by data type and index.

Function signature of this handler type.

using ParameterByIndexHandler = std::function< bool(size_t, void *)>
 
void registerByIndexHandler (const std::type_info &dataTypeInfo, const std::type_info &semanticTypeInfo, ParameterByIndexHandler &&handler)
 Register the handler function. More...
 
ParameterByIndexHandler const * getByIndexHandler (const std::type_info &dataTypeInfo, const std::type_info &semanticTypeInfo) const
 Get the handler function. More...
 
template<typename T >
void registerByIndexHandler (ParameterByIndexHandler &&handler)
 Register the handler function for the template type T. More...
 
template<typename T , typename S >
void registerByIndexHandler (ParameterByIndexHandler &&handler)
 Register the handler function for the template type T and the semantic template type S. More...
 

Handler functions retrieving parameters by data type.

Function signature of this handler type.

using ParameterByTypeHandler = std::function< bool(void *)>
 
void registerByTypeHandler (const std::type_info &dataTypeInfo, const std::type_info &semanticTypeInfo, ParameterByTypeHandler &&handler)
 Register the handler function. More...
 
ParameterByTypeHandler const * getByTypeHandler (const std::type_info &dataTypeInfo, const std::type_info &semanticTypeInfo) const
 Get the handler function. More...
 
template<typename T >
void registerByTypeHandler (ParameterByTypeHandler &&handler)
 Register the handler function for the template type T. More...
 
template<typename T , typename S >
void registerByTypeHandler (ParameterByTypeHandler &&handler)
 Register the handler function for the template type T and the semantic template type S. More...
 

Parameter providers selected by data type.

Register the passed parameter provider for the template type T.

void registerProvider (const std::type_info &typeInfo, const ParameterProvider *provider)
 Register the parameter provider. More...
 
const ParameterProvidergetProvider (const std::type_info &typeInfo) const
 Get the parameter provider. More...
 
template<typename T >
void registerProvider (const ParameterProvider *provider)
 
template<typename T >
const ParameterProvidergetProvider () const
 Get the provider for the template type T. More...
 

Parameter provider children selected by data type.

Register the passed parameter provider child for the template type T.

const ITypeBasedParameterProviderChildgetProviderChild (const std::type_info &typeInfo) const
 Get the parameter provider child. More...
 
template<typename T >
void registerProviderChild (const T &providerChild)
 
template<typename T >
const ITypeBasedParameterProviderChildgetProviderChild () const
 Get the provider child for the template type T. More...
 
void registerProviderChild (const std::type_info &typeInfo, const ITypeBasedParameterProviderChild &providerChild)
 Register the parameter provider child . More...
 

Member Typedef Documentation

◆ ParameterByIndexHandler

using dw::framework::TypeBasedParameterProvider::ParameterByIndexHandler = std::function<bool(size_t, void*)>

Definition at line 240 of file TypeBasedParameterProvider.hpp.

◆ ParameterByNameAndIndexHandler

using dw::framework::TypeBasedParameterProvider::ParameterByNameAndIndexHandler = std::function<bool(dw::core::StringView const&, size_t, void*)>

Definition at line 206 of file TypeBasedParameterProvider.hpp.

◆ ParameterByNameHandler

using dw::framework::TypeBasedParameterProvider::ParameterByNameHandler = std::function<bool(dw::core::StringView const&, void*)>

Definition at line 172 of file TypeBasedParameterProvider.hpp.

◆ ParameterByTypeHandler

Definition at line 274 of file TypeBasedParameterProvider.hpp.

Constructor & Destructor Documentation

◆ TypeBasedParameterProvider() [1/3]

dw::framework::TypeBasedParameterProvider::TypeBasedParameterProvider ( TypeBasedParameterProvider const &  )
protecteddefault

Copy constructor.

◆ TypeBasedParameterProvider() [2/3]

dw::framework::TypeBasedParameterProvider::TypeBasedParameterProvider ( TypeBasedParameterProvider &&  )
protecteddefault

Move constructor.

◆ TypeBasedParameterProvider() [3/3]

dw::framework::TypeBasedParameterProvider::TypeBasedParameterProvider ( )
default

Default constructor.

◆ ~TypeBasedParameterProvider()

dw::framework::TypeBasedParameterProvider::~TypeBasedParameterProvider ( )
overridedefault

Destructor.

Member Function Documentation

◆ get() [1/2]

bool dw::framework::TypeBasedParameterProvider::get ( ParameterProvider const *const  parentProvider,
dw::core::StringView const &  key,
const std::type_info &  semanticTypeInfo,
const std::type_info &  dataTypeInfo,
void *  out 
) const
overridevirtual
See also
dw::framework::ParameterProvider::get(ParameterProvider const* const, dw::core::StringView const&, const std::type_info&, const std::type_info&, void*)

Implements dw::framework::ParameterProvider.

◆ get() [2/2]

bool dw::framework::TypeBasedParameterProvider::get ( ParameterProvider const *const  parentProvider,
dw::core::StringView const &  key,
size_t const  index,
const std::type_info &  semanticTypeInfo,
const std::type_info &  dataTypeInfo,
void *  out 
) const
overridevirtual
See also
dw::framework::ParameterProvider::get(ParameterProvider const* const, dw::core::StringView const&, size_t const, const std::type_info&, const std::type_info&, void*)

Implements dw::framework::ParameterProvider.

◆ getByIndexHandler()

ParameterByIndexHandler const * dw::framework::TypeBasedParameterProvider::getByIndexHandler ( const std::type_info &  dataTypeInfo,
const std::type_info &  semanticTypeInfo 
) const
protected

Get the handler function.

◆ getByNameAndIndexHandler()

ParameterByNameAndIndexHandler const * dw::framework::TypeBasedParameterProvider::getByNameAndIndexHandler ( const std::type_info &  dataTypeInfo,
const std::type_info &  semanticTypeInfo 
) const
protected

Get the handler function.

◆ getByNameHandler()

ParameterByNameHandler const * dw::framework::TypeBasedParameterProvider::getByNameHandler ( const std::type_info &  dataTypeInfo,
const std::type_info &  semanticTypeInfo 
) const
protected

Get the handler function.

◆ getByTypeHandler()

ParameterByTypeHandler const * dw::framework::TypeBasedParameterProvider::getByTypeHandler ( const std::type_info &  dataTypeInfo,
const std::type_info &  semanticTypeInfo 
) const
protected

Get the handler function.

◆ getProvider() [1/2]

template<typename T >
const ParameterProvider * dw::framework::TypeBasedParameterProvider::getProvider ( ) const
inline

Get the provider for the template type T.

Definition at line 118 of file TypeBasedParameterProvider.hpp.

References getProvider().

Referenced by getProvider().

◆ getProvider() [2/2]

const ParameterProvider * dw::framework::TypeBasedParameterProvider::getProvider ( const std::type_info &  typeInfo) const
protected

Get the parameter provider.

◆ getProviderChild() [1/2]

template<typename T >
const ITypeBasedParameterProviderChild * dw::framework::TypeBasedParameterProvider::getProviderChild ( ) const
inline

Get the provider child for the template type T.

Definition at line 149 of file TypeBasedParameterProvider.hpp.

References getProviderChild().

Referenced by getProviderChild().

◆ getProviderChild() [2/2]

const ITypeBasedParameterProviderChild * dw::framework::TypeBasedParameterProvider::getProviderChild ( const std::type_info &  typeInfo) const
protected

Get the parameter provider child.

◆ isPairEqual()

static bool dw::framework::TypeBasedParameterProvider::isPairEqual ( const std::pair< const std::type_info &, const std::type_info & > &  lhs,
const std::pair< const std::type_info &, const std::type_info & > &  rhs 
)
staticprotected

Check if a two pairs of type infos is equal.

Due to a limitation/bug on QNX, two type_info for the same type might not compare equal to each other. This function is a WAR and falls back to a string comparison of .name().

◆ operator=() [1/2]

TypeBasedParameterProvider & dw::framework::TypeBasedParameterProvider::operator= ( TypeBasedParameterProvider &&  ) &
protecteddefault

Move assignment operator.

◆ operator=() [2/2]

TypeBasedParameterProvider & dw::framework::TypeBasedParameterProvider::operator= ( TypeBasedParameterProvider const &  ) &
protecteddefault

Copy assignment operator.

◆ registerByIndexHandler() [1/3]

void dw::framework::TypeBasedParameterProvider::registerByIndexHandler ( const std::type_info &  dataTypeInfo,
const std::type_info &  semanticTypeInfo,
ParameterByIndexHandler &&  handler 
)
protected

Register the handler function.

◆ registerByIndexHandler() [2/3]

template<typename T >
void dw::framework::TypeBasedParameterProvider::registerByIndexHandler ( ParameterByIndexHandler &&  handler)
inline

Register the handler function for the template type T.

Definition at line 244 of file TypeBasedParameterProvider.hpp.

Referenced by registerByIndexHandler().

◆ registerByIndexHandler() [3/3]

template<typename T , typename S >
void dw::framework::TypeBasedParameterProvider::registerByIndexHandler ( ParameterByIndexHandler &&  handler)
inline

Register the handler function for the template type T and the semantic template type S.

Definition at line 251 of file TypeBasedParameterProvider.hpp.

References registerByIndexHandler().

◆ registerByNameAndIndexHandler() [1/3]

void dw::framework::TypeBasedParameterProvider::registerByNameAndIndexHandler ( const std::type_info &  dataTypeInfo,
const std::type_info &  semanticTypeInfo,
ParameterByNameAndIndexHandler &&  handler 
)
protected

Register the handler function.

◆ registerByNameAndIndexHandler() [2/3]

template<typename T >
void dw::framework::TypeBasedParameterProvider::registerByNameAndIndexHandler ( ParameterByNameAndIndexHandler &&  handler)
inline

Register the handler function for the template type T.

Definition at line 210 of file TypeBasedParameterProvider.hpp.

Referenced by registerByNameAndIndexHandler().

◆ registerByNameAndIndexHandler() [3/3]

template<typename T , typename S >
void dw::framework::TypeBasedParameterProvider::registerByNameAndIndexHandler ( ParameterByNameAndIndexHandler &&  handler)
inline

Register the handler function for the template type T and the semantic template type S.

Definition at line 217 of file TypeBasedParameterProvider.hpp.

References registerByNameAndIndexHandler().

◆ registerByNameHandler() [1/3]

void dw::framework::TypeBasedParameterProvider::registerByNameHandler ( const std::type_info &  dataTypeInfo,
const std::type_info &  semanticTypeInfo,
ParameterByNameHandler &&  handler 
)
protected

Register the handler function.

◆ registerByNameHandler() [2/3]

template<typename T >
void dw::framework::TypeBasedParameterProvider::registerByNameHandler ( ParameterByNameHandler &&  handler)
inline

Register the handler function for the template type T.

Definition at line 176 of file TypeBasedParameterProvider.hpp.

Referenced by registerByNameHandler().

◆ registerByNameHandler() [3/3]

template<typename T , typename S >
void dw::framework::TypeBasedParameterProvider::registerByNameHandler ( ParameterByNameHandler &&  handler)
inline

Register the handler function for the template type T and the semantic template type S.

Definition at line 183 of file TypeBasedParameterProvider.hpp.

References registerByNameHandler().

◆ registerByTypeHandler() [1/3]

void dw::framework::TypeBasedParameterProvider::registerByTypeHandler ( const std::type_info &  dataTypeInfo,
const std::type_info &  semanticTypeInfo,
ParameterByTypeHandler &&  handler 
)
protected

Register the handler function.

◆ registerByTypeHandler() [2/3]

template<typename T >
void dw::framework::TypeBasedParameterProvider::registerByTypeHandler ( ParameterByTypeHandler &&  handler)
inline

Register the handler function for the template type T.

Definition at line 278 of file TypeBasedParameterProvider.hpp.

Referenced by registerByTypeHandler().

◆ registerByTypeHandler() [3/3]

template<typename T , typename S >
void dw::framework::TypeBasedParameterProvider::registerByTypeHandler ( ParameterByTypeHandler &&  handler)
inline

Register the handler function for the template type T and the semantic template type S.

Definition at line 285 of file TypeBasedParameterProvider.hpp.

References registerByTypeHandler().

◆ registerProvider() [1/2]

template<typename T >
void dw::framework::TypeBasedParameterProvider::registerProvider ( const ParameterProvider provider)
inline

Definition at line 111 of file TypeBasedParameterProvider.hpp.

References registerProvider().

Referenced by registerProvider().

◆ registerProvider() [2/2]

void dw::framework::TypeBasedParameterProvider::registerProvider ( const std::type_info &  typeInfo,
const ParameterProvider provider 
)
protected

Register the parameter provider.

◆ registerProviderChild() [1/2]

void dw::framework::TypeBasedParameterProvider::registerProviderChild ( const std::type_info &  typeInfo,
const ITypeBasedParameterProviderChild providerChild 
)

Register the parameter provider child .

◆ registerProviderChild() [2/2]

template<typename T >
void dw::framework::TypeBasedParameterProvider::registerProviderChild ( const T &  providerChild)
inline

Definition at line 142 of file TypeBasedParameterProvider.hpp.

References registerProviderChild().

Referenced by registerProviderChild().


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