AUI Framework  develop
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
Factory.h
1/*
2 * AUI Framework - Declarative UI toolkit for modern C++20
3 * Copyright (C) 2020-2024 Alex2772 and Contributors
4 *
5 * SPDX-License-Identifier: MPL-2.0
6 *
7 * This Source Code Form is subject to the terms of the Mozilla Public
8 * License, v. 2.0. If a copy of the MPL was not distributed with this
9 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
10 */
11
12#pragma once
13
14#include <AUI/Common/SharedPtr.h>
15
16template <typename BaseType>
18{
19public:
20 virtual ~Factory() = default;
21 virtual _<BaseType> createObject() = 0;
22
23 _<BaseType> operator()()
24 {
25 return createObject();
26 }
27
28 template <typename DerivedType>
29 static _<Factory<BaseType>> makeFactoryOf() {
30 class MyFactory: public Factory<BaseType>
31 {
32 public:
33 _<BaseType> createObject() override
34 {
35 return _new<DerivedType>();
36 }
37 };
38 return _new<MyFactory>();
39 }
40};
Definition Factory.h:18
An std::weak_ptr with AUI extensions.
Definition SharedPtrTypes.h:178