diff options
Diffstat (limited to 'src/libcamera/include/pipeline_handler.h')
-rw-r--r-- | src/libcamera/include/pipeline_handler.h | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/src/libcamera/include/pipeline_handler.h b/src/libcamera/include/pipeline_handler.h index fdf8b8db..764dde9c 100644 --- a/src/libcamera/include/pipeline_handler.h +++ b/src/libcamera/include/pipeline_handler.h @@ -31,29 +31,28 @@ public: class PipelineHandlerFactory { public: + PipelineHandlerFactory(const char *name); virtual ~PipelineHandlerFactory() { }; virtual PipelineHandler *create() = 0; - static void registerType(const std::string &name, PipelineHandlerFactory *factory); - static PipelineHandler *create(const std::string &name, DeviceEnumerator *enumerator); - static std::vector<std::string> handlers(); + const std::string &name() const { return name_; } + + static void registerType(PipelineHandlerFactory *factory); + static std::vector<PipelineHandlerFactory *> &handlers(); private: - static std::map<std::string, PipelineHandlerFactory *> ®istry(); + std::string name_; }; -#define REGISTER_PIPELINE_HANDLER(handler) \ -class handler##Factory : public PipelineHandlerFactory { \ -public: \ - handler##Factory() \ - { \ - PipelineHandlerFactory::registerType(#handler, this); \ - } \ - virtual PipelineHandler *create() { \ - return new handler(); \ - } \ -}; \ +#define REGISTER_PIPELINE_HANDLER(handler) \ +class handler##Factory : public PipelineHandlerFactory { \ +public: \ + handler##Factory() : PipelineHandlerFactory(#handler) { } \ + PipelineHandler *create() final { \ + return new handler(); \ + } \ +}; \ static handler##Factory global_##handler##Factory; } /* namespace libcamera */ |