31 #ifndef LUMIERA_INSTANCEHANDLE_H 32 #define LUMIERA_INSTANCEHANDLE_H 53 template<
class I,
class FA>
72 inline LumieraInterface
75 if (!descriptor)
return NULL;
76 lumiera_interfaceregistry_register_interface (descriptor, NULL);
91 return (ifa == lumiera_interfaceregistry_interface_find (ifa->interface,
114 template<
class I,
class FA>
127 template<
class I,
class FA>
186 LumieraInterface desc_;
198 InstanceHandle (
string const& iName, uint version,
size_t minminor,
string const& impName)
200 , instance_(reinterpret_cast<I*>
225 lumiera_interfaceregistry_remove_interface (desc_);
236 return facadeLink_.operator ->();
249 operator bool()
const 256 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.