AUI Framework  master
Cross-platform module-based framework for developing C++20 desktop applications
ASharedRaiiHelper.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
15#include <functional>
16#include <utility>
17#include <AUI/Common/AObject.h>
18
48public:
49 static _<ASharedRaiiHelper> make(std::function<void()> callback) {
50 return aui::ptr::manage(new ASharedRaiiHelper(std::move(callback)));
51 }
52
54 callback();
55 }
56
57private:
58 std::function<void()> callback;
59
60 explicit ASharedRaiiHelper(std::function<void()> callback) : callback(std::move(callback)) {}
61};
62
63
Shared completion marker for multithreaded callback-based future handling.
Definition: ASharedRaiiHelper.h:47
An std::weak_ptr with AUI extensions.
Definition: SharedPtrTypes.h:177
static _< T > manage(T *raw)
Definition: SharedPtrTypes.h:371