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* iinterface = 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* iinterface = MAJOR::get_interface( interface_id);
 
  171     return MINOR::get_interface_static( static_cast<MINOR*>( 
this), interface_id);
 
  179 #endif // MI_BASE_INTERFACE_MERGER_H