AUI Framework
master
Cross-platform module-based framework for developing C++20 desktop applications
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
16
template
<
typename
BaseType>
17
class
Factory
18
{
19
public
:
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
};
Factory
Definition:
Factory.h:18
_
An std::weak_ptr with AUI extensions.
Definition:
SharedPtrTypes.h:177