18 #ifndef IGNITION_COMMON_PLUGIN_HH_
19 #define IGNITION_COMMON_PLUGIN_HH_
26 #include <gz/common/Export.hh>
27 #include <gz/utils/SuppressWarning.hh>
36 namespace detail {
template <
class,
class>
class ComposePlugin; }
55 public:
template <
class Interface>
56 Interface *QueryInterface();
59 public:
template <
class Interface>
60 const Interface *QueryInterface()
const;
81 public:
template <
class Interface>
82 Interface *QueryInterface(
const std::string &_interfaceName);
86 public:
template <
class Interface>
87 const Interface *QueryInterface(
95 public:
template <
class Interface>
100 public:
template <
class Interface>
122 public:
template <
class Interface>
128 public:
template <
class Interface>
137 public:
template <
class Interface>
138 bool HasInterface()
const;
145 public:
bool HasInterface(
const std::string &_interfaceName)
const;
152 template <
class,
class>
friend class detail::ComposePlugin;
156 private: GZ_DEPRECATED(5)
Plugin();
159 private:
void *PrivateGetInterface(
160 const
std::
string &_interfaceName) const;
163 private:
void PrivateCopyPluginInstance(const
Plugin &_other) const;
166 private:
void PrivateSetPluginInstance(const
PluginInfo *_info) const;
170 private: const
std::shared_ptr<
void>& PrivateGetInstancePtr() const;
180 private:
InterfaceMap::iterator PrivateGetOrCreateIterator(
181 const
std::
string &_interfaceName);
183 GZ_UTILS_WARN_IGNORE__DLL_INTERFACE_MISSING
185 private: const
std::unique_ptr<PluginPrivate> dataPtr;
186 GZ_UTILS_WARN_RESUME__DLL_INTERFACE_MISSING
189 public: virtual ~
Plugin();
194 #include "ignition/common/detail/Plugin.hh"