Go to the documentation of this file.
17 #ifndef GZ_COMMON_SPECIALIZEDPLUGIN_HH_
18 #define GZ_COMMON_SPECIALIZEDPLUGIN_HH_
29 namespace detail {
template <
class,
class>
class ComposePlugin; }
33 template <
class... OtherSpecInterfaces>
67 template <
class SpecInterface>
78 public:
template <
class Interface>
79 Interface *QueryInterface();
82 public:
template <
class Interface>
83 const Interface *QueryInterface()
const;
86 public:
template <
class Interface>
90 public:
template <
class Interface>
94 public:
template <
class Interface>
95 bool HasInterface()
const;
102 template <
class,
class>
friend class detail::ComposePlugin;
112 private:
template <
class T>
struct type { };
118 private:
template <
class Interface>
119 Interface *PrivateQueryInterface(type<Interface> _type);
125 private: SpecInterface *PrivateQueryInterface(
126 type<SpecInterface> _type);
132 private:
template <
class Interface>
133 const Interface *PrivateQueryInterface(type<Interface> _type)
140 private:
const SpecInterface *PrivateQueryInterface(
141 type<SpecInterface> _type)
const;
147 private:
template <
class Interface>
148 bool PrivateHasInterface(type<Interface> _type)
const;
154 private:
bool PrivateHasInterface(type<SpecInterface> _type)
const;
157 private:
const Plugin::InterfaceMap::iterator
158 privateSpecializedInterfaceIterator;
168 #include "gz/common/detail/SpecializedPlugin.hh"
friend class TemplatePluginPtr
Definition: gz/common/SpecializedPlugin.hh:103
Forward declarations for the common classes.
friend class SpecializedPlugin
Definition: gz/common/SpecializedPlugin.hh:101
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:34
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:38