19 #ifndef GZ_PLUGIN_PLUGIN_HH_
20 #define GZ_PLUGIN_PLUGIN_HH_
26 #include <gz/utils/SuppressWarning.hh>
28 #include <gz/plugin/Export.hh>
37 template <
class,
class>
class ComposePlugin;
38 template <
class>
class SelectSpecializers;
40 class EnablePluginFromThis;
62 public:
template <
class Interface>
63 Interface *QueryInterface();
66 public:
template <
class Interface>
67 const Interface *QueryInterface()
const;
86 public:
template <
class Interface>
91 public:
template <
class Interface>
97 public:
template <
class Interface>
98 bool HasInterface()
const;
113 public:
bool HasInterface(
const std::string &_interfaceName,
114 const bool _demangled =
true)
const;
125 template <
class,
class>
friend class detail::ComposePlugin;
126 template <
class>
friend class detail::SelectSpecializers;
136 private:
void *PrivateQueryInterface(
140 private:
void PrivateCopyPluginInstance(
const Plugin &_other)
const;
147 private:
void PrivateCopyPluginInstance(
156 private:
void PrivateCreatePluginInstance(
164 private:
void PrivateCreateStaticPluginInstance(
184 private: InterfaceMap::iterator PrivateGetOrCreateIterator(
187 class Implementation;
188 GZ_UTILS_WARN_IGNORE__DLL_INTERFACE_MISSING
191 GZ_UTILS_WARN_RESUME__DLL_INTERFACE_MISSING
194 public:
virtual ~
Plugin();
199 #include "gz/plugin/detail/Plugin.hh"