24 return std::make_unique<ConcreteTable>(std::move(name));
46 virtual std::unique_ptr<Table>
decorate(std::unique_ptr<Table> table)
const = 0;
51requires std::derived_from<T, Table>
58 std::unique_ptr<Table>
decorate(std::unique_ptr<Table> table)
const override {
59 return std::make_unique<T>(std::move(table));
ThreadSafeStringPool::proxy_type ThreadSafePooledString
ConcreteTableFactoryDecorator(std::unique_ptr< TableFactory > table_factory)
std::unique_ptr< Table > decorate(std::unique_ptr< Table > table) const override
Basic implementation of TableFactory.
std::unique_ptr< Table > make(ThreadSafePooledString name) const override
Returns a Table with the given name.
Abstract Decorator class that concrete TableFactoryDecorator inherit from.
std::unique_ptr< Table > make(ThreadSafePooledString name) const override
Returns a Table with the given name.
TableFactoryDecorator(std::unique_ptr< TableFactory > table_factory)
std::unique_ptr< TableFactory > table_factory_
virtual std::unique_ptr< Table > decorate(std::unique_ptr< Table > table) const =0
The table factory creates Tables with all enabled decorators.
virtual std::unique_ptr< Table > make(ThreadSafePooledString name) const =0
Returns a Table with the given name.
virtual ~TableFactory()=default