Phonon

phonondefs.h
1/* This file is part of the KDE project
2 Copyright (C) 2006-2007 Matthias Kretz <kretz@kde.org>
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) version 3, or any
8 later version accepted by the membership of KDE e.V. (or its
9 successor approved by the membership of KDE e.V.), Nokia Corporation
10 (or its successors, if any) and the KDE Free Qt Foundation, which shall
11 act as a proxy defined in Section 6 of version 3 of the license.
12
13 This library is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 Lesser General Public License for more details.
17
18 You should have received a copy of the GNU Lesser General Public
19 License along with this library. If not, see <http://www.gnu.org/licenses/>.
20
21*/
22
23#ifndef PHONONDEFS_H
24#define PHONONDEFS_H
25
26#include <QtGlobal>
27#include "phonon_export.h"
28
29#ifdef PHONON_BACKEND_VERSION_4_7
30# ifndef PHONON_BACKEND_VERSION_4_4
31# define PHONON_BACKEND_VERSION_4_4
32# endif
33#endif
34#ifdef PHONON_BACKEND_VERSION_4_4
35# ifndef PHONON_BACKEND_VERSION_4_3
36# define PHONON_BACKEND_VERSION_4_3
37# endif
38#endif
39#ifdef PHONON_BACKEND_VERSION_4_3
40# ifndef PHONON_BACKEND_VERSION_4_2
41# define PHONON_BACKEND_VERSION_4_2
42# endif
43#endif
44
45// the following inlines are correct - exclude per line doesn't work for multiline-macros so exclude
46// the whole file for inline checks
47//krazy:excludeall=inline
48#define P_DECLARE_PRIVATE(Class) \
49 inline Class##Private* k_func() { return reinterpret_cast<Class##Private *>(k_ptr); } \
50 inline const Class##Private* k_func() const { return reinterpret_cast<const Class##Private *>(k_ptr); } \
51 friend class Class##Private;
52
53/**
54 * \internal
55 * Used in class declarations to provide the needed functions. This is used for
56 * abstract base classes.
57 *
58 * \param classname The Name of the class this macro is used for.
59 *
60 * Example:
61 * \code
62 * class AbstractEffect : public QObject
63 * {
64 * Q _OBJECT
65 * Q_PROPERTY(int propertyA READ propertyA WRITE setPropertyA)
66 * PHONON_ABSTRACTBASE(AbstractEffect)
67 * public:
68 * int propertyA() const;
69 * void setPropertyA(int);
70 * };
71 * \endcode
72 *
73 * \see PHONON_OBJECT
74 * \see PHONON_HEIR
75 */
76#define PHONON_ABSTRACTBASE(classname) \
77protected: \
78 /**
79 * \internal
80 * Constructor that is called from derived classes.
81 *
82 * \param parent Standard QObject parent.
83 */ \
84 classname(classname ## Private &dd, QObject *parent); \
85private:
86
87/**
88 * \internal
89 * Used in class declarations to provide the needed functions. This is used for
90 * classes that inherit QObject directly.
91 *
92 * \param classname The Name of the class this macro is used for.
93 *
94 * Example:
95 * \code
96 * class EffectSettings : public QObject
97 * {
98 * Q _OBJECT
99 * Q_PROPERTY(int propertyA READ propertyA WRITE setPropertyA)
100 * PHONON_OBJECT(EffectSettings)
101 * public:
102 * int propertyA() const;
103 * void setPropertyA(int);
104 * };
105 * \endcode
106 *
107 * \see PHONON_ABSTRACTBASE
108 * \see PHONON_HEIR
109 */
110#define PHONON_OBJECT(classname) \
111public: \
112 /**
113 * Constructs an object with the given \p parent.
114 */ \
115 classname(QObject *parent = nullptr); \
116private:
117
118/**
119 * \internal
120 * Used in class declarations to provide the needed functions. This is used for
121 * classes that inherit another Phonon object.
122 *
123 * \param classname The Name of the class this macro is used for.
124 *
125 * Example:
126 * \code
127 * class ConcreteEffect : public AbstractEffect
128 * {
129 * Q _OBJECT
130 * Q_PROPERTY(int propertyB READ propertyB WRITE setPropertyB)
131 * PHONON_HEIR(ConcreteEffect)
132 * public:
133 * int propertyB() const;
134 * void setPropertyB(int);
135 * };
136 * \endcode
137 *
138 * \see PHONON_ABSTRACTBASE
139 * \see PHONON_OBJECT
140 */
141#define PHONON_HEIR(classname) \
142public: \
143 /**
144 * Constructs an object with the given \p parent.
145 */ \
146 classname(QObject *parent = nullptr); \
147
148
149#endif // PHONONDEFS_H
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:20:24 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.