19 #ifndef IGNITION_PLUGIN_SPECIALIZEDPLUGIN_HH_ 20 #define IGNITION_PLUGIN_SPECIALIZEDPLUGIN_HH_ 31 template <
class,
class>
class ComposePlugin;
32 template <
class>
class SelectSpecializers;
36 template <
class... OtherSpecInterfaces>
64 template <
class SpecInterface>
75 public:
template <
class Interface>
76 Interface *QueryInterface();
79 public:
template <
class Interface>
80 const Interface *QueryInterface()
const;
83 public:
template <
class Interface>
87 public:
template <
class Interface>
91 public:
template <
class Interface>
92 bool HasInterface()
const;
99 template <
class,
class>
friend class detail::ComposePlugin;
100 template <
class>
friend class detail::SelectSpecializers;
107 private:
template <
class T>
struct type { };
113 private:
template <
class Interface>
114 Interface *PrivateQueryInterface(type<Interface>);
120 private: SpecInterface *PrivateQueryInterface(type<SpecInterface>);
126 private:
template <
class Interface>
127 const Interface *PrivateQueryInterface(type<Interface>)
const;
133 private:
const SpecInterface *PrivateQueryInterface(
134 type<SpecInterface>)
const;
140 private:
template <
class Interface>
141 bool PrivateHasInterface(type<Interface>)
const;
147 private:
bool PrivateHasInterface(type<SpecInterface>)
const;
155 const Plugin::InterfaceMap::iterator privateSpecializedInterfaceIterator;
163 #include "ignition/plugin/detail/SpecializedPlugin.hh"
bool HasInterface() const
Checks if this Plugin has the specified type of interface.
Definition: SpecializedPlugin.hh:37
std::shared_ptr< Interface > QueryInterfaceSharedPtr()
Get the requested interface as a std::shared_ptr. The template argument Interface must exactly match ...
friend class TemplatePluginPtr
Definition: SpecializedPlugin.hh:101
Definition: EnablePluginFromThis.hh:25
friend class SpecializedPlugin
Definition: SpecializedPlugin.hh:98
Interface * QueryInterface()
Get an interface of the specified type, if it is provided by this plugin.