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-2025 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