AUI Framework  develop
Cross-platform base for C++ UI apps
Loading...
Searching...
No Matches
AObjectBase.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/Thread/AMutex.h>
15#include <AUI/Traits/concepts.h>
16#include <AUI/Traits/members.h>
17
18#include "AUI/Common/ASet.h"
19#include "AUI/Core.h"
20#include "AUI/Traits/values.h"
21#include "SharedPtrTypes.h"
22
23class API_AUI_CORE AObjectBase: public aui::noncopyable {
24 friend class AAbstractSignal;
25public:
26 AObjectBase() = default;
27
28 AObjectBase(AObjectBase&& rhs) noexcept {
29 AUI_ASSERTX(rhs.mSignals.empty(), "AObjectBase move is valid only if no signals connected to it");
30 }
31 ~AObjectBase() {
32 clearSignals();
33 }
34
35 void clearSignals() noexcept;
36
37private:
39};
A std::set with AUI extensions.
Definition ASet.h:25
#define AUI_ASSERTX(condition, what)
Asserts that the passed condition evaluates to true. Adds extra message string.
Definition Assert.h:74
Forbids copy of your class.
Definition values.h:40