7 #ifndef MI_BASE_INTERFACE_MERGER_H
8 #define MI_BASE_INTERFACE_MERGER_H
19 template <
typename MAJOR,
typename MINOR>
70 if( MAJOR::compare_iid( iid))
72 return MINOR::compare_iid( iid);
86 return static_cast<const T*
>(
get_interface(
typename T::IID()));
107 return MAJOR::get_iid();
114 return MAJOR::retain();
121 return MAJOR::release();
135 return static_cast<const MAJOR*
>(
this);
149 return static_cast<MAJOR*
>(
this);
153 template <
typename MAJOR,
typename MINOR>
155 const Uuid& interface_id)
const
157 const IInterface* iinterface = MAJOR::get_interface( interface_id);
160 return MINOR::get_interface_static( static_cast<const MINOR*>(
this), interface_id);
163 template <
typename MAJOR,
typename MINOR>
165 const Uuid& interface_id)
167 IInterface* iinterface = MAJOR::get_interface( interface_id);
170 return MINOR::get_interface_static( static_cast<MINOR*>(
this), interface_id);
178 #endif // MI_BASE_INTERFACE_MERGER_H