AcceleratorConnections, Accelerators, and Manifests must all share a context.
static Context withLogger(Args &&...args)
Create a context with a specific logger type.
std::map< Type::ID, std::unique_ptr< Type > > TypeCache
void setLogger(std::unique_ptr< Logger > logger)
Register a logger with the accelerator. Assumes ownership of the logger.
Context(std::unique_ptr< Logger > logger)
std::unique_ptr< Logger > logger
std::optional< const Type * > getType(Type::ID id) const
Resolve a type id to the type.
std::unique_ptr< AcceleratorConnection > connect(std::string backend, std::string connection)
Connect to an accelerator backend.
void registerType(Type *type)
Register a type with the context. Takes ownership of the pointer type.