1/*
2 * BluezQt - Asynchronous Bluez wrapper library
3 *
4 * SPDX-FileCopyrightText: 2015 David Rosca <nowrep@gmail.com>
5 *
6 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
7 */
8
9#ifndef BLUEZQT_MACROS_H
10#define BLUEZQT_MACROS_H
11
12// clang-format off
13
14// Change property value and emit propertyChanged signal
15#define PROPERTY_CHANGED(var, type_cast, signal) \
16 if (var != value.type_cast()) { \
17 var = value.type_cast(); \
18 Q_EMIT q.lock()->signal(var); \
19 }
20
21#define PROPERTY_CHANGED2(var, value, signal) \
22 const auto &val = value; \
23 if (var != val) { \
24 var = val; \
25 Q_EMIT q.lock()->signal(var); \
26 }
27
28// Clears property value and emit propertyChanged signal
29#define PROPERTY_INVALIDATED(var, empty, signal) \
30 if (var != empty) { \
31 var = empty; \
32 Q_EMIT q.lock()->signal(var); \
33 }
34
35#endif // BLUEZQT_MACROS_H
36

source code of bluez-qt/src/macros.h