40 template <
typename _Tp>
107 return dynamic_cast<T*
>(_parent);
129 template <
class PluginT,
class... ParamsT>
133 static_assert(std::is_base_of_v<ManagedIceObjectPlugin, PluginT>);
135 std::unique_ptr<ManagedIceObjectPlugin>& ptr = this->getPlugin(
typeid(PluginT),
prefix);
141 return static_cast<PluginT*
>(ptr.get());
144 template <
class PluginT,
class... ParamsT>
148 checkOutParameter(targ);
152 template <
class PluginT,
class... ParamsT>
155 const std::string
prefix =
"",
158 checkOutParameter(targ.get());
166 const std::string&
prefix()
const;
172 static void checkOutParameter(
void* targ);
174 std::unique_ptr<ManagedIceObjectPlugin>& getPlugin(
const std::type_info& typeInfo,
175 const std::string
prefix =
"");
181 std::vector<ManagedIceObjectPlugin*> _dependsOn;
virtual void preOnInitComponent()
void addPluginDependency(ManagedIceObjectPlugin *dependedOn)
bool parentDerives() const
void addPlugin(PluginT *&targ, const std::string prefix="", ParamsT &&... params)
virtual void postOnExitComponent()
virtual void postOnInitComponent()
ManagedIceObject & parent()
PluginT * addPlugin(const std::string prefix="", ParamsT &&... params)
friend class ManagedIceObject
virtual void postOnDisconnectComponent()
virtual void preOnConnectComponent()
virtual void preOnDisconnectComponent()
std::string makePropertyName(const std::string &name)
virtual void preOnExitComponent()
virtual void postOnConnectComponent()
void addPlugin(std::experimental::observer_ptr< PluginT > &targ, const std::string prefix="", ParamsT &&... params)
const std::string & prefix() const
ManagedIceObjectPlugin(ManagedIceObject &parent, std::string pre)
virtual ~ManagedIceObjectPlugin()=default
The ManagedIceObject is the base class for all ArmarX objects.
This file offers overloads of toIce() and fromIce() functions for STL container types.
observer_ptr< _Tp > make_observer(_Tp *__p) noexcept