AUI Framework  develop
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
ACleanup.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 <functional>
15#include <AUI/Common/AObject.h>
16#include <AUI/Common/AQueue.h>
17
18
23class API_AUI_CORE ACleanup {
24 friend void afterEntryCleanup();
25public:
26 using Callback = std::function<void()>;
27
31 static void afterEntry(Callback callback) {
32 std::unique_lock lock(inst().mSync);
33 inst().mCallbacks << std::move(callback);
34 }
35
36private:
37 static ACleanup& inst();
38
39 void afterEntryPerform();
40
41 AMutex mSync;
42 AQueue<Callback> mCallbacks;
43};
44
45
Cleanup helper.
Definition ACleanup.h:23
static void afterEntry(Callback callback)
Definition ACleanup.h:31
A std::queue with AUI extensions.
Definition AQueue.h:24
Basic syscall-based synchronization primitive.
Definition AMutex.h:33