Go to the documentation of this file.
17 #ifndef IGNITION_COMMON_SPECIALIZEDPLUGIN_HH_
18 #define IGNITION_COMMON_SPECIALIZEDPLUGIN_HH_
22 #include <gz/common/config.hh>
30 namespace detail {
template <
class,
class>
class ComposePlugin; }
34 template <
class... OtherSpecInterfaces>
68 template <
class SpecInterface>
79 public:
template <
class Interface>
80 Interface *QueryInterface();
83 public:
template <
class Interface>
84 const Interface *QueryInterface()
const;
87 public:
template <
class Interface>
91 public:
template <
class Interface>
95 public:
template <
class Interface>
96 bool HasInterface()
const;
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 "gz/common/detail/SpecializedPlugin.hh"
friend class TemplatePluginPtr
Definition: gz/common/SpecializedPlugin.hh:104
Forward declarations for the common classes.
friend class SpecializedPlugin
Definition: gz/common/SpecializedPlugin.hh:102
bool HasInterface() const
Returns true if this Plugin has the specified type of interface. Note that this function only works w...
Definition: gz/common/SpecializedPlugin.hh:35
std::shared_ptr< Interface > QueryInterfaceSharedPtr()
Get the requested interface as a std::shared_ptr. Note that this function only works when the Interfa...
Interface * QueryInterface()
Get an interface of the specified type. Note that this function only works when the Interface type is...
Definition: gz/common/Plugin.hh:39