From 7f5d50787d06685d845281f4218261f1bf76b831 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Fri, 21 Jul 2023 01:30:57 +0300 Subject: [PATCH] Make default_application_factory support a custom factory callback --- .../app/default_application_factory.hpp | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/libs/app/include/psemek/app/default_application_factory.hpp b/libs/app/include/psemek/app/default_application_factory.hpp index 7fdb0e37..16b0f708 100644 --- a/libs/app/include/psemek/app/default_application_factory.hpp +++ b/libs/app/include/psemek/app/default_application_factory.hpp @@ -7,16 +7,18 @@ namespace psemek::app { - template - std::unique_ptr default_application_factory(application::options const & options) + template + std::unique_ptr default_application_factory(application::options const & options, Factory && factory) { struct factory_impl : application::factory { application::options opts; + Factory factory; - factory_impl(application::options const & options) + factory_impl(application::options const & options, Factory && factory) : opts(options) + , factory(std::move(factory)) {} application::options options() override @@ -26,11 +28,20 @@ namespace psemek::app std::unique_ptr create(application::options const & options, application::context const & context) override { - return std::make_unique(options, context); + return factory(options, context); } }; - return std::make_unique(options); + return std::make_unique(options, std::move(factory)); + } + + template + std::unique_ptr default_application_factory(application::options const & options) + { + return default_application_factory(options, [](auto const & options, auto const & context){ + return std::make_unique(options, context); + }); } } +