25 #ifndef INCLUDED_PluginSpecificRegistrationContextImpl_h_GUID_E8A348C1_28DC_4691_6214_32F75A6665F0 26 #define INCLUDED_PluginSpecificRegistrationContextImpl_h_GUID_E8A348C1_28DC_4691_6214_32F75A6665F0 36 #include <libfunctionality/PluginHandle.h> 44 namespace pluginhost {
93 const std::string ¶ms = std::string())
const;
120 typedef unique_ptr<void, OSVR_PluginDataDeleteCallback> PluginDataPtr;
122 typedef std::vector<PluginDataPtr> PluginDataList;
124 PluginDataList m_dataList;
125 libfunc::PluginHandle m_handle;
130 typedef std::vector<HardwareDetectCallback> HardwareDetectCallbackList;
131 HardwareDetectCallbackList m_hardwareDetectCallbacks;
133 typedef std::function<OSVR_ReturnCode(const char *)>
134 DriverInstantiationCallback;
135 typedef std::map<std::string, DriverInstantiationCallback>
136 DriverInstantiationMap;
137 DriverInstantiationMap m_driverInstantiationCallbacks;
145 #endif // INCLUDED_PluginSpecificRegistrationContextImpl_h_GUID_E8A348C1_28DC_4691_6214_32F75A6665F0 void setParent(RegistrationContext &parent)
Set parent registration context.
Definition: PluginSpecificRegistrationContextImpl.cpp:65
virtual void registerDriverInstantiationCallback(const char *name, OSVR_DriverInstantiationCallback constructor, void *userData)
Register a callback for constructing a driver by name with parameters.
Definition: PluginSpecificRegistrationContextImpl.cpp:141
Class responsible for hosting plugins, along with their registration and destruction.
Definition: RegistrationContext.h:53
virtual util::AnyMap & data()
Access the data storage map.
Definition: PluginSpecificRegistrationContextImpl.cpp:165
The main namespace for all C++ elements of the framework, internal and external.
Definition: namespace_osvr.dox:3
Header providing a templated functor wrapping the holding and calling of function pointer and userdat...
Class providing the external interface of a registration context backing a single plugin...
Definition: PluginSpecificRegistrationContext.h:52
Header to bring unique_ptr into the osvr namespace.
A data structure storing "any" by name, to reduce coupling.
Definition: AnyMap.h:42
void(* OSVR_PluginDataDeleteCallback)(void *pluginData)
Function type of a Plugin Data Delete callback.
Definition: PluginCallbackTypesC.h:48
Header including the full PluginKit C API.
void instantiateDriver(const std::string &driverName, const std::string ¶ms=std::string()) const
Call a driver instantiation callback for the given driver name.
Definition: PluginSpecificRegistrationContextImpl.cpp:102
OSVR_ReturnCode(* OSVR_HardwareDetectCallback)(OSVR_PluginRegContext ctx, void *userData)
Function type of a Hardware Detect callback.
Definition: PluginCallbackTypesC.h:51
void takePluginHandle(libfunc::PluginHandle &handle)
Assume ownership of the plugin handle keeping the plugin library loaded.
Definition: PluginSpecificRegistrationContextImpl.cpp:60
Header declaring the osvr::util::AnyMap structure.
void triggerHardwareDetectCallbacks()
Call all hardware detect callbacks registered by this plugin, if any.
Definition: PluginSpecificRegistrationContextImpl.cpp:92
virtual RegistrationContext & getParent()
Get parent registration context.
Definition: PluginSpecificRegistrationContextImpl.cpp:74
~PluginSpecificRegistrationContextImpl()
Destructor.
Definition: PluginSpecificRegistrationContextImpl.cpp:48
PluginSpecificRegistrationContextImpl(std::string const &name)
Constructor.
Definition: PluginSpecificRegistrationContextImpl.cpp:40
A class template turning a callback with some number of arguments, with a userdata pointer last...
Definition: CallbackWrapper.h:45
virtual void registerHardwareDetectCallback(OSVR_HardwareDetectCallback detectCallback, void *userData)
Register a callback to be invoked on some hardware detection event.
Definition: PluginSpecificRegistrationContextImpl.cpp:128
OSVR_ReturnCode(* OSVR_DriverInstantiationCallback)(OSVR_PluginRegContext ctx, const char *params, void *userData)
Function type of a driver instantiation callback.
Definition: PluginCallbackTypesC.h:55
Internal class backing the context of registrations performed by a single plugin. ...
Definition: PluginSpecificRegistrationContextImpl.h:48
virtual void registerDataWithDeleteCallback(OSVR_PluginDataDeleteCallback deleteCallback, void *pluginData)
Register data and a delete callback to be called on plugin unload.
Definition: PluginSpecificRegistrationContextImpl.cpp:118