8 #ifndef MI_BASE_INTERFACE_MERGER_H
9 #define MI_BASE_INTERFACE_MERGER_H
20 template <
typename MAJOR,
typename MINOR>
71 if( MAJOR::compare_iid( iid))
73 return MINOR::compare_iid( iid);
87 return static_cast<const T*
>(
get_interface(
typename T::IID()));
108 return MAJOR::get_iid();
115 return MAJOR::retain();
122 return MAJOR::release();
136 return static_cast<const MAJOR*
>(
this);
150 return static_cast<MAJOR*
>(
this);
154 template <
typename MAJOR,
typename MINOR>
156 const Uuid& interface_id)
const
158 const IInterface*
interface = MAJOR::get_interface( interface_id);
161 return MINOR::get_interface_static( static_cast<const MINOR*>(
this), interface_id);
164 template <
typename MAJOR,
typename MINOR>
166 const Uuid& interface_id)
168 IInterface*
interface = MAJOR::get_interface( interface_id);
171 return MINOR::get_interface_static( static_cast<MINOR*>(
this), interface_id);
179 #endif // MI_BASE_INTERFACE_MERGER_H