17 #ifndef IGNITION_COMMON_SPECIALIZEDPLUGIN_HH_
18 #define IGNITION_COMMON_SPECIALIZEDPLUGIN_HH_
30 namespace detail {
template <
class,
class>
class ComposePlugin; }
34 template <
class... OtherSpecInterfaces>
68 template <
class SpecInterface>
79 public:
template <
class Interface>
83 public:
template <
class Interface>
87 public:
template <
class Interface>
91 public:
template <
class Interface>
95 public:
template <
class Interface>
103 template <
class,
class>
friend class detail::ComposePlugin;
113 private: template <class T> struct type { };
119 private:
template <
class Interface>
120 Interface *PrivateQueryInterface(type<Interface> _type);
126 private: SpecInterface *PrivateQueryInterface(
127 type<SpecInterface> _type);
133 private:
template <
class Interface>
134 const Interface *PrivateQueryInterface(type<Interface> _type)
141 private:
const SpecInterface *PrivateQueryInterface(
142 type<SpecInterface> _type)
const;
148 private:
template <
class Interface>
149 bool PrivateHasInterface(type<Interface> _type)
const;
155 private:
bool PrivateHasInterface(type<SpecInterface> _type)
const;
158 private:
const Plugin::InterfaceMap::iterator
159 privateSpecializedInterfaceIterator;
169 #include "ignition/common/detail/SpecializedPlugin.hh"