source: trunk/src/3rdparty/phonon/qt7/backendheader.h

Last change on this file was 2, checked in by Dmitry A. Kuminov, 17 years ago

Initially imported qt-all-opensource-src-4.5.1 from Trolltech.

File size: 5.7 KB
Line 
1/* This file is part of the KDE project.
2
3 Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4
5 This library is free software: you can redistribute it and/or modify
6 it under the terms of the GNU Lesser General Public License as published by
7 the Free Software Foundation, either version 2.1 or 3 of the License.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public License
15 along with this library. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#ifndef Phonon_QT7_BACKENDHEADER_H
19#define Phonon_QT7_BACKENDHEADER_H
20
21#include <QtCore/QString>
22#import <Foundation/NSAutoreleasePool.h>
23#include <CoreFoundation/CFBase.h>
24
25#ifndef Q_WS_MAC64
26#define QUICKTIME_C_API_AVAILABLE
27#endif
28
29QT_BEGIN_NAMESPACE
30
31namespace Phonon
32{
33namespace QT7
34{
35
36// Implemented in error.cpp:
37void gSetErrorString(const QString &errorString);
38QString gGetErrorString();
39void gSetErrorLocation(const QString &errorLocation);
40void gSetErrorType(int type);
41int gGetErrorType();
42void gClearError();
43
44#define NO_ERROR 0
45#define NORMAL_ERROR 1
46#define FATAL_ERROR 2
47
48#define ERROR_LOCATION \
49 QLatin1String("Function: ") + QLatin1String(__FUNCTION__) \
50 + QLatin1String(", File: ") + QLatin1String(__FILE__) \
51 + QLatin1String(", Line: ") + QString::number(__LINE__)
52
53#define SET_ERROR(string, type){ \
54 Phonon::QT7::gSetErrorString(string); \
55 Phonon::QT7::gSetErrorType(type); \
56 Phonon::QT7::gSetErrorLocation(ERROR_LOCATION); }
57
58#define BACKEND_ASSERT(test, string, type) \
59 bool fail = !test; \
60 if (fail) \
61 SET_ERROR(QLatin1String(string), type) \
62 if (fail)
63
64#define BACKEND_ASSERT2(test, string, type) \
65 if (!(test)) { \
66 SET_ERROR(QLatin1String(string), type) \
67 return; \
68 }
69
70#define BACKEND_ASSERT3(test, string, type, ret) \
71 if (!(test)) { \
72 SET_ERROR(QLatin1String(string), type) \
73 return ret; \
74 }
75
76#define ARGUMENT_UNSUPPORTED(a, x, type, ret) \
77 if ((a) == (x)) { \
78 SET_ERROR("Argument value not supported: "#a" == "#x, type); \
79 return ret; \
80 }
81
82#define CASE_UNSUPPORTED(string, type) SET_ERROR(string, type)
83
84#ifdef SET_DEBUG_IMPLEMENTED
85#define IMPLEMENTED qDebug() << "QT7:" << __FUNCTION__ << "(" << __FILE__ << "):"
86#else
87#define IMPLEMENTED if (1); else qDebug()
88#endif
89
90#ifdef SET_DEBUG_HALF_IMPLEMENTED
91#define HALF_IMPLEMENTED qDebug() << "QT7: --- HALF IMPLEMENTED:" << __FUNCTION__ << "(" << __FILE__ << "," << __LINE__ << "):"
92#else
93#define HALF_IMPLEMENTED if (1); else qDebug()
94#endif
95
96#ifdef SET_DEBUG_NOT_IMPLEMENTED
97#define NOT_IMPLEMENTED qDebug() << "QT7: *** NOT IMPLEMENTED:" << __FUNCTION__ << "(" << __FILE__ << "," << __LINE__ << "):"
98#else
99#define NOT_IMPLEMENTED if (1); else qDebug()
100#endif
101
102#ifdef SET_DEBUG_IMPLEMENTED_SILENT
103#define IMPLEMENTED_SILENT qDebug() << "QT7: (silent)" << __FUNCTION__ << "(" << __FILE__ << "," << __LINE__ << "):"
104#else
105#define IMPLEMENTED_SILENT if (1); else qDebug()
106#endif
107
108#ifdef SET_DEBUG_AUDIO_GRAPH
109#define DEBUG_AUDIO_GRAPH(x) qDebug() << "QT7 DEBUG GRAPH:" << x;
110#else
111#define DEBUG_AUDIO_GRAPH(x) {}
112#endif
113
114#ifdef SET_DEBUG_AUDIO_STREAM
115#define DEBUG_AUDIO_STREAM(x) qDebug() << "QT7 DEBUG STREAM:" << x;
116#else
117#define DEBUG_AUDIO_STREAM(x) {}
118#endif
119
120/////////////////////////////////////////////////////////////////////////////////////////
121
122class PhononAutoReleasePool
123{
124private:
125 void *pool;
126public:
127 PhononAutoReleasePool();
128 ~PhononAutoReleasePool();
129};
130
131/////////////////////////////////////////////////////////////////////////////////////////
132
133template <typename T>
134class PhononCFType
135{
136public:
137 inline PhononCFType(const T &t = 0) : type(t) {}
138 inline PhononCFType(const PhononCFType &helper) : type(helper.type) { if (type) CFRetain(type); }
139 inline ~PhononCFType() { if (type) CFRelease(type); }
140 inline operator T() { return type; }
141 inline PhononCFType operator =(const PhononCFType &helper)
142 {
143 if (helper.type)
144 CFRetain(helper.type);
145 CFTypeRef type2 = type;
146 type = helper.type;
147 if (type2)
148 CFRelease(type2);
149 return *this;
150 }
151 inline T *operator&() { return &type; }
152 static PhononCFType constructFromGet(const T &t)
153 {
154 CFRetain(t);
155 return PhononCFType<T>(t);
156 }
157protected:
158 T type;
159};
160
161/////////////////////////////////////////////////////////////////////////////////////////
162
163class PhononCFString : public PhononCFType<CFStringRef>
164{
165public:
166 inline PhononCFString(const QString &str) : PhononCFType<CFStringRef>(0), string(str) {}
167 inline PhononCFString(const CFStringRef cfstr = 0) : PhononCFType<CFStringRef>(cfstr) {}
168 inline PhononCFString(const PhononCFType<CFStringRef> &other) : PhononCFType<CFStringRef>(other) {}
169 operator QString() const;
170 operator CFStringRef() const;
171 static QString toQString(CFStringRef cfstr);
172 static CFStringRef toCFStringRef(const QString &str);
173private:
174 QString string;
175};
176}} //namespace Phonon::QT7
177
178QT_END_NAMESPACE
179
180#ifdef Q_CC_INTEL
181#pragma warning (disable : 1899) // mute icc warning for the use of 4cc
182#endif
183
184#endif // Phonon_QT7_BACKENDHEADER_H
Note: See TracBrowser for help on using the repository browser.