9#ifndef CBM_KERNELFACTORY_H_
10#define CBM_KERNELFACTORY_H_
12#include "crabmeat-common.h"
13#include "kernel/kbase.h"
14#include "memory/cbm_factorystore.h"
17#define kernel_factory_prefix "kernel"
22struct CBM_API kernelfactory_base_t
25 kernelfactory_base_t()
27 virtual ~kernelfactory_base_t() { }
29 virtual char const * name()
const = 0;
31 virtual kernel_t * construct(
32 lid_t
const &)
const = 0;
34 kernel_t *)
const = 0;
37typedef cbm::factorystoreregister_t< kernelfactory_base_t > kernelfactoryregister_t;
40struct kernelfactory_t :
public kernelfactory_base_t
42 virtual ~kernelfactory_t();
44 char const * name()
const;
46 kernel_t * construct( lid_t
const &)
const;
47 void destroy( kernel_t *)
const;
53 kernelfactory_t< _K >(
char const *);
59cbm::kernelfactory_t< _K >::kernelfactory_t(
61 : kernelfactory_base_t(),
62 m_name(( _kname) ? _kname :
"")
64 kernelfactoryregister_t::register_factory( kernel_factory_prefix, _kname,
this);
68cbm::kernelfactory_t< _K >::~kernelfactory_t< _K >()
74cbm::kernelfactory_t< _K >::name()
77 return this->m_name.c_str();
82cbm::kernelfactory_t< _K >::construct(
86 return static_cast< cbm::kernel_t *
>( _K::new_instance( _id));
90cbm::kernelfactory_t< _K >::destroy(
96 _kernel->delete_instance();
The "Service Registry" holds information about available services (e.g., models, readers,...
Definition Lresources.h:51