1// Copyright (C) 2022 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QCONSTRUCTORMACROS_H
5#define QCONSTRUCTORMACROS_H
6
7#if 0
8#pragma qt_class(QtConstructorMacros)
9#pragma qt_sync_stop_processing
10#endif
11
12#if defined(__cplusplus)
13
14#ifndef Q_CONSTRUCTOR_FUNCTION
15# define Q_CONSTRUCTOR_FUNCTION0(AFUNC) \
16 namespace { \
17 static const struct AFUNC ## _ctor_class_ { \
18 inline AFUNC ## _ctor_class_() { AFUNC(); } \
19 } AFUNC ## _ctor_instance_; \
20 }
21
22# define Q_CONSTRUCTOR_FUNCTION(AFUNC) Q_CONSTRUCTOR_FUNCTION0(AFUNC)
23#endif
24
25#ifndef Q_DESTRUCTOR_FUNCTION
26# define Q_DESTRUCTOR_FUNCTION0(AFUNC) \
27 namespace { \
28 static const struct AFUNC ## _dtor_class_ { \
29 inline AFUNC ## _dtor_class_() { } \
30 inline ~ AFUNC ## _dtor_class_() { AFUNC(); } \
31 } AFUNC ## _dtor_instance_; \
32 }
33# define Q_DESTRUCTOR_FUNCTION(AFUNC) Q_DESTRUCTOR_FUNCTION0(AFUNC)
34#endif
35
36#endif // __cplusplus
37
38#endif // QCONSTRUCTORMACROS_H
39

source code of qtbase/src/corelib/global/qconstructormacros.h