ADTF  3.18.2
adtf::ucom::catwo::detail Namespace Reference

Namespace for all internally used uCOM functionality implemented. More...

Classes

class  has_interface_type
 template that checks whether a type has an accessible interface_type property. More...
 
struct  is_interface
 template that checks whether a type is an interface with an IID. More...
 
struct  is_interface< T, typename std::enable_if<!has_interface_type< T >::value >::type >
 
struct  is_interface< T, typename std::enable_if< has_interface_type< T >::value &&!is_interface_helper< T >::value >::type >
 
struct  is_interface< T, typename std::enable_if< has_interface_type< T >::value &&is_interface_helper< T >::value >::type >
 
class  has_get_interface
 template that checks whether a type has an accessible (protected or public) GetInterface method. More...
 
struct  base_dispatcher
 
struct  base_dispatcher< void, void >
 
struct  base_dispatcher< BaseClass, typename std::enable_if<!is_interface< BaseClass >::value &&!has_get_interface< BaseClass >::value >::type >
 This template is for base classes that are no interfaces and do not implement IObject. More...
 
struct  base_dispatcher< BaseClass, typename std::enable_if<!is_interface< BaseClass >::value &&has_get_interface< BaseClass >::value >::type >
 This template forwards a GetInterface call to a base class. More...
 
struct  base_dispatcher< Interface, typename std::enable_if< is_interface< Interface >::value >::type >
 This template returns a pointer to the implemented Interface if requested. More...
 
class  derive_from_without_hierarchy
 This template checks if the first base implements the requested interface, otherwise checks the next base. More...
 
class  derive_from_with_hierarchy
 This template checks if the first base implements the requested interface, otherwise checks the next base. More...
 
class  expose_additional_interfaces
 
class  object_without_iobject
 This template is used to prevent an ambiguous base of ucom::ant::IObject. More...
 
class  derive_from
 This template checks if the first base implements the requested interface, otherwise checks the next base. More...
 
struct  parent_follows_child
 this template checks if parent interfaces are not specified before their children More...
 
struct  parent_follows_child< Base, NextBase, Bases... >
 this template checks if parent interfaces are not specified before their children More...
 
class  object_without_iobject< Base, Bases... >
 This template is used to prevent an ambiguous base of ucom::ant::IObject. More...
 

Typedefs

template<typename T >
using is_interface_helper = std::is_same< T, typename T::interface_type >
 
template<typename Base , typename NextBase >
using derive_from_type = typename std::conditional< std::is_same< NextBase, object_without_iobject<> >::value, expose_additional_interfaces< Base >, typename std::conditional< std::is_base_of< Base, NextBase >::value, expose_additional_interfaces< NextBase, Base >, typename std::conditional< std::is_base_of< ucom::ant::IObject, Base >::value, derive_from_with_hierarchy< Base, NextBase >, derive_from_without_hierarchy< Base, NextBase > >::type >::type >::type
 this intermediate type is used to keep binary compatibility
 

Detailed Description

Namespace for all internally used uCOM functionality implemented.