40 #ifndef LUMIERA_INSTANCEHANDLE_H 41 #define LUMIERA_INSTANCEHANDLE_H 62 template<
class I,
class FA>
84 if (!descriptor)
return NULL;
85 lumiera_interfaceregistry_register_interface (descriptor, NULL);
100 return (ifa == lumiera_interfaceregistry_interface_find (ifa->interface,
123 template<
class I,
class FA>
136 template<
class I,
class FA>
194 LumieraInterface desc_;
206 InstanceHandle (
string const& iName, uint version,
size_t minminor,
string const& impName)
208 , instance_(reinterpret_cast<I*>
233 lumiera_interfaceregistry_remove_interface (desc_);
244 return facadeLink_.operator ->();
257 operator bool()
const 264 return not isValid();
lumiera_err lumiera_error_peek(void)
Check current error state without clearing it Please avoid this function and use lumiera_error() if p...
FA * operator->() const
act as smart pointer to allow access through the facade.
I & get() const
directly access the instance via the CL interface
LumieraInterface lumiera_interface_open(const char *interface, unsigned version, size_t minminorversion, const char *name)
Open an interface by version and name.
InstanceHandle(LumieraInterface descriptor)
Set up an InstanceHandle managing the registration and deregistration of interface(s).
Any copy and copy construction prohibited.
Per type specific configuration of instances created as service dependencies.
bool verify_validity(LumieraInterface ifa)
do a lookup within the interfaceregistry using the name/version found within the interface handle...
This header is for including and configuring NoBug.
Lumiera interface macros and structures.
Derived specific exceptions within Lumiera's exception hierarchy.
Mix-Ins to allow or prohibit various degrees of copying and cloning.
This framework allows to (re)configure the lib::Depend front-end for dependency-injection.
void lumiera_interface_close(LumieraInterface self)
Close an interface after use.
to be specialised and implemented for each individual interface and facade interface.
InstanceHandle(string const &iName, uint version, size_t minminor, string const &impName)
Set up an InstanceHandle representing a plugin.
lumiera_err lumiera_error(void)
Get and clear current error state.
Lumiera error handling (C++ interface).
Global registry for interfaces (extension points).
Handle tracking the registration of an interface, deregistering it on deletion.
LumieraInterface register_and_open(LumieraInterface descriptor)
takes a (single) instance definitions, as typically created when defining interfaces for external use...
Lumiera public interface.
typename lib::DependInject< FA >::template ServiceInstance< Proxy< InstanceHandle< I, FA > >> ServiceHandle
The ServiceHandle automatically creates and manages the Proxy instance.