Go to the documentation of this file.
19 #ifndef GZ_PLUGIN_SPECIALIZEDPLUGIN_HH_
20 #define GZ_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 "gz/plugin/detail/SpecializedPlugin.hh"
Definition: gz/plugin/EnablePluginFromThis.hh:25
Definition: gz/plugin/Plugin.hh:43
bool HasInterface() const
Checks if this Plugin has the specified type of interface.
std::shared_ptr< Interface > QueryInterfaceSharedPtr()
Get the requested interface as a std::shared_ptr. The template argument Interface must exactly match ...
Definition: gz/plugin/SpecializedPlugin.hh:37
friend class TemplatePluginPtr
Definition: gz/plugin/SpecializedPlugin.hh:101
Interface * QueryInterface()
Get an interface of the specified type, if it is provided by this plugin.
friend class SpecializedPlugin
Definition: gz/plugin/SpecializedPlugin.hh:98