summaryrefslogtreecommitdiff
path: root/qmake/include/qglobal.h
Unidiff
Diffstat (limited to 'qmake/include/qglobal.h') (more/less context) (ignore whitespace changes)
-rw-r--r--qmake/include/qglobal.h1006
1 files changed, 1006 insertions, 0 deletions
diff --git a/qmake/include/qglobal.h b/qmake/include/qglobal.h
new file mode 100644
index 0000000..13cff64
--- a/dev/null
+++ b/qmake/include/qglobal.h
@@ -0,0 +1,1006 @@
1/****************************************************************************
2** $Id$
3**
4** Global type declarations and definitions
5**
6** Created : 920529
7**
8** Copyright (C) 1992-2002 Trolltech AS. All rights reserved.
9**
10** This file is part of the tools module of the Qt GUI Toolkit.
11**
12** This file may be distributed under the terms of the Q Public License
13** as defined by Trolltech AS of Norway and appearing in the file
14** LICENSE.QPL included in the packaging of this file.
15**
16** This file may be distributed and/or modified under the terms of the
17** GNU General Public License version 2 as published by the Free Software
18** Foundation and appearing in the file LICENSE.GPL included in the
19** packaging of this file.
20**
21** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22** licenses may use this file in accordance with the Qt Commercial License
23** Agreement provided with the Software.
24**
25** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27**
28** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29** information about Qt Commercial License Agreements.
30** See http://www.trolltech.com/qpl/ for QPL licensing information.
31** See http://www.trolltech.com/gpl/ for GPL licensing information.
32**
33** Contact info@trolltech.com if any conditions of this licensing are
34** not clear to you.
35**
36**********************************************************************/
37
38#ifndef QGLOBAL_H
39#define QGLOBAL_H
40
41#define QT_VERSION_STR "3.1.0-b2"
42/*
43 QT_VERSION is (major << 16) + (minor << 8) + patch.
44 */
45#define QT_VERSION 0x030100
46
47/*
48 The operating system, must be one of: (Q_OS_x)
49
50 MACX- Mac OS X
51 MAC9- Mac OS 9
52 MSDOS- MS-DOS and Windows
53 OS2- OS/2
54 OS2EMX- XFree86 on OS/2 (not PM)
55 WIN32- Win32 (Windows 95/98/ME and Windows NT/2000/XP)
56 CYGWIN- Cygwin
57 SOLARIS- Sun Solaris
58 HPUX- HP-UX
59 ULTRIX- DEC Ultrix
60 LINUX- Linux
61 FREEBSD- FreeBSD
62 NETBSD- NetBSD
63 OPENBSD- OpenBSD
64 BSDI- BSD/OS
65 IRIX- SGI Irix
66 OSF- HP Tru64 UNIX
67 SCO- SCO OpenServer 5
68 UNIXWARE- UnixWare 7, Open UNIX 8
69 AIX- AIX
70 HURD- GNU Hurd
71 DGUX- DG/UX
72 RELIANT- Reliant UNIX
73 DYNIX- DYNIX/ptx
74 QNX- QNX
75 QNX6- QNX RTP 6.1
76 LYNX- LynxOS
77 BSD4- Any BSD 4.4 system
78 UNIX- Any UNIX BSD/SYSV system
79*/
80
81#if defined(__APPLE__) && defined(__GNUC__)
82# define Q_OS_MACX
83#elif defined(__MACOSX__)
84# define Q_OS_MACX
85#elif defined(macintosh)
86# define Q_OS_MAC9
87#elif defined(__CYGWIN__)
88# define Q_OS_CYGWIN
89#elif defined(MSDOS) || defined(_MSDOS)
90# define Q_OS_MSDOS
91#elif defined(__OS2__)
92# if defined(__EMX__)
93# define Q_OS_OS2EMX
94# else
95# define Q_OS_OS2
96# endif
97#elif !defined(SAG_COM) && (defined(WIN64) || defined(_WIN64) || defined(__WIN64__))
98# define Q_OS_WIN32
99# define Q_OS_WIN64
100#elif !defined(SAG_COM) && (defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__))
101# define Q_OS_WIN32
102#elif defined(__MWERKS__) && defined(__INTEL__)
103# define Q_OS_WIN32
104#elif defined(__sun) || defined(sun)
105# define Q_OS_SOLARIS
106#elif defined(hpux) || defined(__hpux)
107# define Q_OS_HPUX
108#elif defined(__ultrix) || defined(ultrix)
109# define Q_OS_ULTRIX
110#elif defined(sinix)
111# define Q_OS_RELIANT
112#elif defined(__linux__) || defined(__linux)
113# define Q_OS_LINUX
114#elif defined(__FreeBSD__)
115# define Q_OS_FREEBSD
116# define Q_OS_BSD4
117#elif defined(__NetBSD__)
118# define Q_OS_NETBSD
119# define Q_OS_BSD4
120#elif defined(__OpenBSD__)
121# define Q_OS_OPENBSD
122# define Q_OS_BSD4
123#elif defined(__bsdi__)
124# define Q_OS_BSDI
125# define Q_OS_BSD4
126#elif defined(__sgi)
127# define Q_OS_IRIX
128#elif defined(__osf__)
129# define Q_OS_OSF
130#elif defined(_AIX)
131# define Q_OS_AIX
132#elif defined(__Lynx__)
133# define Q_OS_LYNX
134#elif defined(__GNU_HURD__)
135# define Q_OS_HURD
136#elif defined(__DGUX__)
137# define Q_OS_DGUX
138#elif defined(__QNXNTO__)
139# define Q_OS_QNX6
140#elif defined(__QNX__)
141# define Q_OS_QNX
142#elif defined(_SEQUENT_)
143# define Q_OS_DYNIX
144#elif defined(_SCO_DS) /* SCO OpenServer 5 */
145# define Q_OS_SCO
146#elif defined(__UNIXWARE__) /* UnixWare 7 + GCC, Open UNIX 8 + GCC */
147# define Q_OS_UNIXWARE
148# define Q_OS_UNIXWARE7
149#elif defined(__USLC__) /* UnixWare 7 + UDK, Open UNIX 8 + OUDK */
150# define Q_OS_UNIXWARE
151# define Q_OS_UNIXWARE7
152#else
153# error "Qt has not been ported to this OS - talk to qt-bugs@trolltech.com"
154#endif
155
156#if defined(Q_OS_MAC9) || defined(Q_OS_MACX)
157# define Q_OS_MAC
158#endif
159
160#if defined(Q_OS_MAC9) || defined(Q_OS_MSDOS) || defined(Q_OS_OS2) || defined(Q_OS_WIN32) || defined(Q_OS_WIN64)
161# undef Q_OS_UNIX
162#elif !defined(Q_OS_UNIX)
163# define Q_OS_UNIX
164#endif
165
166
167/*
168 The compiler, must be one of: (Q_CC_x)
169
170 SYM- Symantec C++ for both PC and Macintosh
171 MPW- MPW C++
172 MWERKS- Metrowerks CodeWarrior
173 MSVC- Microsoft Visual C/C++
174 BOR- Borland/Turbo C++
175 WAT- Watcom C++
176 GNU- GNU C++
177 COMEAU- Comeau C++
178 EDG- Edison Design Group C++
179 OC - CenterLine C++
180 SUN- Sun WorkShop, Forte Developer, or Sun ONE Studio C++
181 MIPS- MIPSpro C++
182 DEC- DEC C++
183 HP - HPUX C++
184 HPACC- HPUX ANSI C++
185 USLC- SCO OUDK, UDK, and UnixWare 2.X C++
186 CDS- Reliant C++
187 KAI- KAI C++
188 INTEL- Intel C++
189 HIGHC- MetaWare High C/C++
190 PGI- Portland Group C++
191 GHS- Green Hills Optimizing C++ Compilers
192
193 Should be sorted most to least authoritative.
194*/
195
196/* Symantec C++ is now Digital Mars */
197#if defined(__DMC__) || defined(__SC__)
198# define Q_CC_SYM
199/* "explicit" semantics implemented in 8.1e but keyword recognized since 7.5 */
200# if defined(__SC__) && __SC__ < 0x750
201# define Q_NO_EXPLICIT_KEYWORD
202# endif
203# define Q_NO_USING_KEYWORD
204# if !defined(_CPPUNWIND)
205# define Q_NO_EXCEPTIONS
206# endif
207
208#elif defined(applec)
209# define Q_CC_MPW
210# define Q_NO_BOOL_TYPE
211# define Q_NO_EXPLICIT_KEYWORD
212# define Q_NO_USING_KEYWORD
213
214#elif defined(__MWERKS__)
215# define Q_CC_MWERKS
216/* "explicit" recognized since 4.0d1 */
217# define QMAC_PASCAL pascal
218# define Q_NO_USING_KEYWORD /* ### check "using" status */
219
220#elif defined(_MSC_VER)
221# define Q_CC_MSVC
222/* proper support of bool for _MSC_VER >= 1100 */
223# define Q_CANNOT_DELETE_CONSTANT
224# define Q_INLINE_TEMPLATES inline
225/* Visual C++.Net issues for _MSC_VER >= 1300 */
226# if _MSC_VER >= 1300
227# define Q_CC_MSVC_NET
228# define Q_TYPENAME
229# endif
230# define Q_NO_USING_KEYWORD /* ### check "using" status */
231
232#elif defined(__BORLANDC__) || defined(__TURBOC__)
233# define Q_CC_BOR
234# if __BORLANDC__ < 0x502
235# define Q_NO_BOOL_TYPE
236# define Q_NO_EXPLICIT_KEYWORD
237# endif
238# define Q_NO_USING_KEYWORD /* ### check "using" status */
239
240#elif defined(__WATCOMC__)
241# define Q_CC_WAT
242# if defined(Q_OS_QNX4)
243/* compiler flags */
244# define Q_TYPENAME
245# define Q_NO_BOOL_TYPE
246# define Q_CANNOT_DELETE_CONSTANT
247# define mutable
248/* ??? */
249# define Q_BROKEN_TEMPLATE_SPECIALIZATION
250/* no template classes in QVariant */
251# define QT_NO_TEMPLATE_VARIANT
252/* Wcc does not fill in functions needed by valuelists, maps, and
253 valuestacks implicitly */
254# define Q_FULL_TEMPLATE_INSTANTIATION
255/* can we just compare the structures? */
256# define Q_FULL_TEMPLATE_INSTANTIATION_MEMCMP
257/* these are not useful to our customers */
258# define QT_QWS_NO_SHM
259# define QT_NO_QWS_MULTIPROCESS
260# define QT_NO_SQL
261# define QT_NO_QWS_CURSOR
262# endif
263
264#elif defined(__GNUC__)
265# define Q_CC_GNU
266# define Q_C_CALLBACKS
267# if __GNUC__ == 2 && __GNUC_MINOR__ <= 7
268# define Q_FULL_TEMPLATE_INSTANTIATION
269# endif
270/* GCC 2.95 knows "using" but does not support it correctly */
271# if __GNUC__ == 2 && __GNUC_MINOR__ <= 95
272# define Q_NO_USING_KEYWORD
273# endif
274# if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP)
275# define Q_PACKED __attribute__ ((packed))
276# endif
277# if !defined(__EXCEPTIONS)
278# define Q_NO_EXCEPTIONS
279# endif
280
281/* IBM compiler versions are a bit messy. There are actually two products:
282 the C product, and the C++ product. The C++ compiler is always packaged
283 with the latest version of the C compiler. Version numbers do not always
284 match. This little table (I'm not sure it's accurate) should be helpful:
285
286 C++ product C product
287
288 C Set 3.1 C Compiler 3.0
289 ... ...
290 C++ Compiler 3.6.6 C Compiler 4.3
291 ... ...
292 Visual Age C++ 4.0 ...
293 ... ...
294 Visual Age C++ 5.0 C Compiler 5.0
295
296 Now:
297 __xlC__ is the version of the C compiler in hexadecimal notation
298 is only an approximation of the C++ compiler version
299 __IBMCPP__ is the version of the C++ compiler in decimal notation
300 but it is not defined on older compilers like C Set 3.1 */
301#elif defined(__xlC__)
302# define Q_CC_XLC
303# define Q_FULL_TEMPLATE_INSTANTIATION
304# if __xlC__ < 0x400
305# define Q_NO_BOOL_TYPE
306# define Q_NO_EXPLICIT_KEYWORD
307# define Q_NO_USING_KEYWORD
308# define Q_TYPENAME
309# define Q_INLINE_TEMPLATES inline
310# define Q_BROKEN_TEMPLATE_SPECIALIZATION
311# define Q_CANNOT_DELETE_CONSTANT
312# endif
313
314/* Older versions of DEC C++ do not define __EDG__ or __EDG - observed
315 on DEC C++ V5.5-004. New versions do define __EDG__ - observed on
316 Compaq C++ V6.3-002.
317 This compiler is different enough from other EDG compilers to handle
318 it separately anyway. */
319#elif defined(__DECCXX)
320# define Q_CC_DEC
321/* Compaq C++ V6 compilers are EDG-based but I'm not sure about older
322 DEC C++ V5 compilers. */
323# if defined(__EDG__)
324# define Q_CC_EDG
325# endif
326/* Compaq have disabled EDG's _BOOL macro and use _BOOL_EXISTS instead
327 - observed on Compaq C++ V6.3-002.
328 In any case versions prior to Compaq C++ V6.0-005 do not have bool. */
329# if !defined(_BOOL_EXISTS)
330# define Q_NO_BOOL_TYPE
331# endif
332/* Spurious (?) error messages observed on Compaq C++ V6.5-014. */
333# define Q_NO_USING_KEYWORD
334/* Apply to all versions prior to Compaq C++ V6.0-000 - observed on
335 DEC C++ V5.5-004. */
336# if __DECCXX_VER < 60060000
337# define Q_TYPENAME
338# define Q_BROKEN_TEMPLATE_SPECIALIZATION
339# define Q_CANNOT_DELETE_CONSTANT
340# endif
341/* avoid undefined symbol problems with out-of-line template members */
342# define Q_INLINE_TEMPLATES inline
343
344/* Compilers with EDG front end are similar. To detect them we test:
345 __EDG documented by SGI, observed on MIPSpro 7.3.1.1 and KAI C++ 4.0b
346 __EDG__ documented in EDG online docs, observed on Compaq C++ V6.3-002 */
347#elif defined(__EDG) || defined(__EDG__)
348# define Q_CC_EDG
349/* From the EDG documentation (does not seem to apply to Compaq C++):
350 _BOOL
351 Defined in C++ mode when bool is a keyword. The name of this
352 predefined macro is specified by a configuration flag. _BOOL
353 is the default.
354 __BOOL_DEFINED
355 Defined in Microsoft C++ mode when bool is a keyword. */
356# if !defined(_BOOL) && !defined(__BOOL_DEFINED)
357# define Q_NO_BOOL_TYPE
358# endif
359
360/* The Portland Group compiler is based on EDG and does define __EDG__ */
361# if defined(__COMO__)
362# define Q_CC_COMEAU
363# define Q_C_CALLBACKS
364
365/* Using the `using' keyword avoids KAI C++ warnings */
366# elif defined(__KCC)
367# define Q_CC_KAI
368# if !defined(_EXCEPTIONS)
369# define Q_NO_EXCEPTIONS
370# endif
371
372/* Using the `using' keyword avoids Intel C++ warnings */
373# elif defined(__INTEL_COMPILER)
374# define Q_CC_INTEL
375# if !defined(__EXCEPTIONS)
376# define Q_NO_EXCEPTIONS
377# endif
378
379/* The Portland Group compiler is based on EDG and does define __EDG__ */
380# elif defined(__PGI)
381# define Q_CC_PGI
382# if !defined(__EXCEPTIONS)
383# define Q_NO_EXCEPTIONS
384# endif
385
386/* Never tested! */
387# elif defined(__ghs)
388# define Q_CC_GHS
389
390/* The UnixWare 7 UDK compiler is based on EDG and does define __EDG__ */
391# elif defined(__USLC__) && defined(__SCO_VERSION__)
392# define Q_CC_USLC
393# define Q_NO_USING_KEYWORD /* ### check "using" status */
394
395/* Never tested! */
396# elif defined(CENTERLINE_CLPP) || defined(OBJECTCENTER)
397# define Q_CC_OC
398# define Q_NO_USING_KEYWORD
399
400/* CDS++ is not documented to define __EDG__ or __EDG in the Reliant
401 documentation but we suppose it does, in any case it does follow
402 conventions like _BOOL */
403# elif defined(sinix)
404# define Q_CC_CDS
405# define Q_NO_USING_KEYWORD
406# if defined(__cplusplus) && (__cplusplus < 2) /* Cfront C++ mode */
407# define Q_NO_EXCEPTIONS
408# endif
409
410/* The MIPSpro compiler in o32 mode is based on EDG but disables features
411 such as template specialization nevertheless */
412# elif defined(__sgi)
413# define Q_CC_MIPS
414# if defined(_MIPS_SIM) && (_MIPS_SIM == _ABIO32) /* o32 ABI */
415# define Q_TYPENAME
416# define Q_BROKEN_TEMPLATE_SPECIALIZATION
417# define Q_STRICT_INLINING_RULES
418# elif defined(_COMPILER_VERSION) && (_COMPILER_VERSION < 730) /* 7.2 */
419# define Q_TYPENAME
420# define Q_BROKEN_TEMPLATE_SPECIALIZATION
421# endif
422# define Q_NO_USING_KEYWORD /* ### check "using" status */
423# endif
424
425/* The older UnixWare 2.X compiler? */
426#elif defined(__USLC__) && !defined(__SCO_VERSION__)
427# define Q_CC_USLC
428# define Q_NO_BOOL_TYPE
429# define Q_NO_EXPLICIT_KEYWORD
430# define Q_NO_USING_KEYWORD
431
432/* Never tested! */
433#elif defined(__HIGHC__)
434# define Q_CC_HIGHC
435
436#elif defined(__SUNPRO_CC)
437# define Q_CC_SUN
438/* 5.0 compiler or better
439 'bool' is enabled by default but can be disabled using -features=nobool
440 in which case _BOOL is not defined
441 this is the default in 4.2 compatibility mode triggered by -compat=4 */
442# if __SUNPRO_CC >= 0x500
443# if !defined(_BOOL)
444# define Q_NO_BOOL_TYPE
445# endif
446# if defined(__SUNPRO_CC_COMPAT) && (__SUNPRO_CC_COMPAT <= 4)
447# define Q_NO_USING_KEYWORD
448# endif
449# define Q_C_CALLBACKS
450/* 4.2 compiler or older */
451# else
452# define Q_NO_BOOL_TYPE
453# define Q_NO_EXPLICIT_KEYWORD
454# define Q_NO_USING_KEYWORD
455# endif
456
457#elif defined(Q_OS_HPUX)
458/* __HP_aCC was not defined in first aCC releases */
459# if defined(__HP_aCC) || __cplusplus >= 199707L
460# define Q_CC_HPACC
461# else
462# define Q_CC_HP
463# define Q_NO_BOOL_TYPE
464# define Q_FULL_TEMPLATE_INSTANTIATION
465# define Q_BROKEN_TEMPLATE_SPECIALIZATION
466# define Q_NO_EXPLICIT_KEYWORD
467# endif
468# define Q_NO_USING_KEYWORD /* ### check "using" status */
469
470#else
471# error "Qt has not been tested with this compiler - talk to qt-bugs@trolltech.com"
472#endif
473
474#ifndef Q_PACKED
475# define Q_PACKED
476#endif
477
478
479/*
480 The window system, must be one of: (Q_WS_x)
481
482 MACX- Mac OS X
483 MAC9- Mac OS 9
484 QWS- Qt/Embedded
485 WIN32- Windows
486 X11- X Window System
487 PM - unsupported
488 WIN16- unsupported
489*/
490
491#if defined(Q_OS_MAC9)
492# define Q_WS_MAC9
493#elif defined(Q_OS_MSDOS)
494# define Q_WS_WIN16
495# error "Qt requires Win32 and does not work with Windows 3.x"
496#elif defined(_WIN32_X11_)
497# define Q_WS_X11
498#elif defined(Q_OS_WIN32)
499# define Q_WS_WIN32
500# if defined(Q_OS_WIN64)
501# define Q_WS_WIN64
502# endif
503#elif defined(Q_OS_OS2)
504# define Q_WS_PM
505# error "Qt does not work with OS/2 Presentation Manager or Workplace Shell"
506#elif defined(Q_OS_UNIX)
507# if defined(QWS)
508# define Q_WS_QWS
509# elif defined(Q_OS_MACX)
510# define Q_WS_MACX
511# else
512# define Q_WS_X11
513# endif
514#endif
515#if defined(Q_OS_MAC) && !defined(QMAC_PASCAL)
516# define QMAC_PASCAL
517#endif
518
519#if defined(Q_WS_WIN16) || defined(Q_WS_WIN32)
520# define Q_WS_WIN
521#endif
522
523#if (defined(Q_WS_MAC9) || defined(Q_WS_MACX)) && !defined(Q_WS_QWS) && !defined(Q_WS_X11)
524# define Q_WS_MAC
525#endif
526
527
528/*
529 Some classes do not permit copies to be made of an object.
530 These classes contains a private copy constructor and operator=
531 to disable copying (the compiler gives an error message).
532 Undefine Q_DISABLE_COPY to turn off this checking.
533*/
534
535#define Q_DISABLE_COPY
536
537#if defined(__cplusplus)
538
539
540//
541// Useful type definitions for Qt
542//
543
544#if defined(Q_NO_BOOL_TYPE)
545#if defined(Q_CC_HP)
546// bool is an unsupported reserved keyword in later versions
547#define bool int
548#else
549typedef int bool;
550#endif
551#endif
552
553typedef unsigned char uchar;
554typedef unsigned short ushort;
555 typedef unsigneduint;
556typedef unsigned long ulong;
557 typedef char *pchar;
558 typedef uchar *puchar;
559typedef const char *pcchar;
560
561
562//
563// Constant bool values
564//
565
566#ifndef TRUE
567const bool FALSE = 0;
568const bool TRUE = !0;
569#endif
570#if defined(__WATCOMC__)
571# if defined(Q_OS_QNX4)
572const bool false = FALSE;
573const bool true = TRUE;
574# endif
575#endif
576
577
578//
579// Use the "explicit" keyword on platforms that support it.
580//
581
582#if !defined(Q_NO_EXPLICIT_KEYWORD)
583# define Q_EXPLICIT explicit
584#else
585# define Q_EXPLICIT
586#endif
587
588
589//
590// Workaround for static const members on MSVC++.
591//
592
593#if defined(Q_CC_MSVC)
594# define QT_STATIC_CONST static
595# define QT_STATIC_CONST_IMPL
596#else
597# define QT_STATIC_CONST static const
598# define QT_STATIC_CONST_IMPL const
599#endif
600
601
602//
603// Utility macros and inline functions
604//
605
606 #define QMAX(a, b)((b) < (a) ? (a) : (b))
607 #define QMIN(a, b)((a) < (b) ? (a) : (b))
608 #define QABS(a)((a) >= 0 ? (a) : -(a))
609
610inline int qRound( double d )
611{
612 return d >= 0.0 ? int(d + 0.5) : int( d - ((int)d-1) + 0.5 ) + ((int)d-1);
613}
614
615
616//
617// Size-dependent types (architechture-dependent byte order)
618//
619
620#if !defined(QT_CLEAN_NAMESPACE)
621// source compatibility with Qt 1.x
622 typedef signed char INT8; // 8 bit signed
623 typedef unsigned char UINT8; // 8 bit unsigned
624 typedef short INT16; // 16 bit signed
625 typedef unsigned short UINT16; // 16 bit unsigned
626 typedef int INT32; // 32 bit signed
627 typedef unsigned int UINT32; // 32 bit unsigned
628#endif
629
630 typedef signed char Q_INT8; // 8 bit signed
631 typedef unsigned char Q_UINT8;// 8 bit unsigned
632 typedef short Q_INT16;// 16 bit signed
633 typedef unsigned short Q_UINT16;// 16 bit unsigned
634 typedef int Q_INT32;// 32 bit signed
635 typedef unsigned int Q_UINT32;// 32 bit unsigned
636#if defined(Q_OS_WIN64)
637// LLP64 64-bit model on Windows
638 typedef __int64 Q_LONG; // word up to 64 bit signed
639 typedef unsigned __int64 Q_ULONG;// word up to 64 bit unsigned
640#else
641// LP64 64-bit model on Linux
642 typedef long Q_LONG;
643 typedef unsigned long Q_ULONG;
644#endif
645
646#if !defined(QT_CLEAN_NAMESPACE)
647// mininum size of 64 bits is not guaranteed
648 #define Q_INT64 Q_LONG
649 #define Q_UINT64 Q_ULONG
650#endif
651
652#if defined(Q_OS_MACX) && !defined(QT_LARGEFILE_SUPPORT)
653# define QT_LARGEFILE_SUPPORT 64
654#endif
655#if defined(QT_LARGEFILE_SUPPORT)
656 typedef unsigned long long QtOffset;
657#else
658 typedef Q_ULONG QtOffset;
659#endif
660
661
662//
663// Data stream functions is provided by many classes (defined in qdatastream.h)
664//
665
666class QDataStream;
667
668
669//
670// Feature subsetting
671//
672// Note that disabling some features will produce a libqt that is not
673// compatible with other libqt builds. Such modifications are only
674// supported on Qt/Embedded where reducing the library size is important
675// and where the application-suite is often a fixed set.
676//
677
678#if !defined(QT_MOC)
679#if defined(QCONFIG_LOCAL)
680#include <qconfig-local.h>
681#elif defined(QCONFIG_MINIMAL)
682#include <qconfig-minimal.h>
683#elif defined(QCONFIG_SMALL)
684#include <qconfig-small.h>
685#elif defined(QCONFIG_MEDIUM)
686#include <qconfig-medium.h>
687#elif defined(QCONFIG_LARGE)
688#include <qconfig-large.h>
689#else // everything...
690#include <qconfig.h>
691#endif
692#endif
693
694
695#ifndef QT_BUILD_KEY
696#define QT_BUILD_KEY "unspecified"
697#endif
698
699// prune to local config
700#include "qmodules.h"
701#ifndef QT_MODULE_ICONVIEW
702# define QT_NO_ICONVIEW
703#endif
704#ifndef QT_MODULE_WORKSPACE
705# define QT_NO_WORKSPACE
706#endif
707#ifndef QT_MODULE_NETWORK
708#define QT_NO_NETWORK
709#endif
710#ifndef QT_MODULE_CANVAS
711# define QT_NO_CANVAS
712#endif
713#ifndef QT_MODULE_TABLE
714#define QT_NO_TABLE
715#endif
716#ifndef QT_MODULE_XML
717# define QT_NO_XML
718#endif
719#ifndef QT_MODULE_OPENGL
720# define QT_NO_OPENGL
721#endif
722#if !defined(QT_MODULE_SQL)
723# define QT_NO_SQL
724#endif
725
726#if defined(Q_WS_MAC9)
727//No need for menu merging
728# ifndef QMAC_QMENUBAR_NO_MERGE
729# define QMAC_QMENUBAR_NO_MERGE
730# endif
731//Mac9 does not use quartz
732# ifndef QMAC_NO_QUARTZ
733# define QMAC_NO_QUARTZ
734# endif
735# ifndef QMAC_QMENUBAR_NO_EVENT
736# define QMAC_QMENUBAR_NO_EVENT
737# endif
738#endif
739#if defined(Q_WS_MACX) //for no nobody uses quartz, just putting in first level hooks
740# ifndef QMAC_NO_QUARTZ
741# define QMAC_NO_QUARTZ
742# endif
743# ifndef QMAC_QMENUBAR_NO_EVENT
744# define QMAC_QMENUBAR_NO_EVENT
745# endif
746#endif
747
748#ifndef QT_H
749#include <qfeatures.h>
750#endif // QT_H
751
752
753//
754// Create Qt DLL if QT_DLL is defined (Windows only)
755//
756
757#if defined(Q_OS_WIN32) || defined(Q_OS_WIN64)
758# if defined(QT_NODLL)
759# undef QT_MAKEDLL
760# undef QT_DLL
761 # elif defined(QT_MAKEDLL)/* create a Qt DLL library */
762# if defined(QT_DLL)
763# undef QT_DLL
764# endif
765# define Q_EXPORT __declspec(dllexport)
766# define Q_TEMPLATEDLL
767# define Q_TEMPLATE_EXTERN
768 # undef Q_DISABLE_COPY/* avoid unresolved externals */
769 # elif defined(QT_DLL) /* use a Qt DLL library */
770# define Q_EXPORT __declspec(dllimport)
771# define Q_TEMPLATEDLL
772# ifndef Q_TEMPLATE_EXTERN
773# if defined(Q_CC_MSVC)
774# define Q_TEMPLATE_EXTERN /*extern*/ //### too many warnings, even though disabled
775# else
776# define Q_TEMPLATE_EXTERN
777# endif
778# endif
779# undef Q_DISABLE_COPY /* avoid unresolved externals */
780# endif
781#else
782 # undef QT_MAKEDLL /* ignore these for other platforms */
783# undef QT_DLL
784#endif
785
786#ifndef Q_EXPORT
787# define Q_EXPORT
788#endif
789
790
791//
792// Some platform specific stuff
793//
794
795#if defined(Q_WS_WIN)
796extern Q_EXPORT bool qt_winunicode;
797#endif
798
799
800//
801// System information
802//
803
804Q_EXPORT const char *qVersion();
805Q_EXPORT bool qSysInfo( int *wordSize, bool *bigEndian );
806#if defined(Q_WS_WIN)
807Q_EXPORT int qWinVersion();
808#if defined(UNICODE)
809#define QT_WA( uni, ansi ) if ( qt_winunicode ) { uni } else { ansi }
810#define QT_WA_INLINE( uni, ansi ) ( qt_winunicode ? uni : ansi )
811#else
812#define QT_WA( uni, ansi ) ansi
813#define QT_WA_INLINE( uni, ansi ) ansi
814#endif
815#endif
816
817#ifdef Q_OS_TEMP
818#ifdef QT_WA
819#undef QT_WA
820#undef QT_WA_INLINE
821#endif
822#define QT_WA( uni, ansi ) uni
823#define QT_WA_INLINE( uni, ansi ) ( uni )
824#endif
825
826#ifndef Q_INLINE_TEMPLATES
827# define Q_INLINE_TEMPLATES
828#endif
829
830#ifndef Q_TYPENAME
831# define Q_TYPENAME typename
832#endif
833
834//
835// Use to avoid "unused parameter" warnings
836//
837
838#define Q_UNUSED(x) (void)x;
839
840//
841// Debugging and error handling
842//
843
844#if !defined(QT_NO_CHECK)
845 # define QT_CHECK_STATE // check state of objects etc.
846 # define QT_CHECK_RANGE // check range of indexes etc.
847 # define QT_CHECK_NULL // check null pointers
848 # define QT_CHECK_MATH // check math functions
849#endif
850
851#if !defined(QT_NO_DEBUG) && !defined(QT_DEBUG)
852 # define QT_DEBUG // display debug messages
853 # if !defined(QT_NO_COMPAT) // compatibility with Qt 2
854# if !defined(NO_DEBUG) && !defined(DEBUG)
855 # if !defined(Q_OS_MACX) // clash with MacOS X headers
856# define DEBUG
857# endif
858# endif
859# endif
860#endif
861
862
863 Q_EXPORT void qDebug( const char *, ... )// print debug message
864#if defined(Q_CC_GNU) && !defined(__INSURE__)
865 __attribute__ ((format (printf, 1, 2)))
866#endif
867;
868
869 Q_EXPORT void qWarning( const char *, ... )// print warning message
870#if defined(Q_CC_GNU) && !defined(__INSURE__)
871 __attribute__ ((format (printf, 1, 2)))
872#endif
873;
874
875 Q_EXPORT void qFatal( const char *, ... )// print fatal message and exit
876#if defined(Q_CC_GNU)
877 __attribute__ ((format (printf, 1, 2)))
878#endif
879;
880
881Q_EXPORT void qSystemWarning( const char *, int code = -1 );
882
883 #if !defined(QT_CLEAN_NAMESPACE) // compatibility with Qt 1
884
885 Q_EXPORT void debug( const char *, ... )// print debug message
886#if defined(Q_CC_GNU) && !defined(__INSURE__)
887 __attribute__ ((format (printf, 1, 2)))
888#endif
889;
890
891 Q_EXPORT void warning( const char *, ... )// print warning message
892#if defined(Q_CC_GNU) && !defined(__INSURE__)
893 __attribute__ ((format (printf, 1, 2)))
894#endif
895;
896
897 Q_EXPORT void fatal( const char *, ... )// print fatal message and exit
898#if defined(Q_CC_GNU) && !defined(__INSURE__)
899 __attribute__ ((format (printf, 1, 2)))
900#endif
901;
902
903#endif // QT_CLEAN_NAMESPACE
904
905
906#if !defined(Q_ASSERT)
907# if defined(QT_CHECK_STATE)
908# if defined(QT_FATAL_ASSERT)
909# define Q_ASSERT(x) ((x) ? (void)0 : qFatal("ASSERT: \"%s\" in %s (%d)",#x,__FILE__,__LINE__))
910# else
911# define Q_ASSERT(x) ((x) ? (void)0 : qWarning("ASSERT: \"%s\" in %s (%d)",#x,__FILE__,__LINE__))
912# endif
913# else
914# define Q_ASSERT(x)
915# endif
916#endif
917
918 #if !defined(QT_NO_COMPAT) // compatibility with Qt 2
919# if !defined(ASSERT)
920# if !defined(Q_OS_TEMP)
921# define ASSERT(x) Q_ASSERT(x)
922# endif
923# endif
924#endif // QT_NO_COMPAT
925
926
927Q_EXPORT bool qt_check_pointer( bool c, const char *, int );
928
929#if defined(QT_CHECK_NULL)
930# define Q_CHECK_PTR(p) (qt_check_pointer((p)==0,__FILE__,__LINE__))
931#else
932# define Q_CHECK_PTR(p)
933#endif
934
935 #if !defined(QT_NO_COMPAT) // compatibility with Qt 2
936# if !defined(CHECK_PTR)
937# define CHECK_PTR(x) Q_CHECK_PTR(x)
938# endif
939#endif // QT_NO_COMPAT
940
941enum QtMsgType { QtDebugMsg, QtWarningMsg, QtFatalMsg };
942
943typedef void (*QtMsgHandler)(QtMsgType, const char *);
944Q_EXPORT QtMsgHandler qInstallMsgHandler( QtMsgHandler );
945
946 #if !defined(QT_NO_COMPAT) // compatibility with Qt 2
947typedef QtMsgHandler msg_handler;
948#endif // QT_NO_COMPAT
949
950Q_EXPORT void qSuppressObsoleteWarnings( bool = TRUE );
951
952Q_EXPORT void qObsolete( const char *obj, const char *oldfunc,
953 const char *newfunc );
954Q_EXPORT void qObsolete( const char *obj, const char *oldfunc );
955Q_EXPORT void qObsolete( const char *message );
956
957
958//
959// Install paths from configure
960//
961
962Q_EXPORT const char *qInstallPath();
963Q_EXPORT const char *qInstallPathDocs();
964Q_EXPORT const char *qInstallPathHeaders();
965Q_EXPORT const char *qInstallPathLibs();
966Q_EXPORT const char *qInstallPathBins();
967Q_EXPORT const char *qInstallPathPlugins();
968Q_EXPORT const char *qInstallPathData();
969
970#endif // __cplusplus
971
972#endif // QGLOBAL_H
973
974//
975// Avoid some particularly useless warnings from some stupid compilers.
976// To get ALL C++ compiler warnings, define QT_CC_WARNINGS or comment out
977// the line "#define QT_NO_WARNINGS"
978//
979
980#if !defined(QT_CC_WARNINGS)
981# define QT_NO_WARNINGS
982#endif
983#if defined(QT_NO_WARNINGS)
984# if defined(Q_CC_MSVC)
985# pragma warning(disable: 4244) // 'conversion' conversion from 'type1' to 'type2', possible loss of data
986# pragma warning(disable: 4275) // non - DLL-interface classkey 'identifier' used as base for DLL-interface classkey 'identifier'
987# pragma warning(disable: 4514) // unreferenced inline/local function has been removed
988# pragma warning(disable: 4800) // 'type' : forcing value to bool 'true' or 'false' (performance warning)
989# pragma warning(disable: 4097) // typedef-name 'identifier1' used as synonym for class-name 'identifier2'
990# pragma warning(disable: 4706) // assignment within conditional expression
991# pragma warning(disable: 4786) // truncating debug info after 255 characters
992# pragma warning(disable: 4660) // template-class specialization 'identifier' is already instantiated
993# pragma warning(disable: 4355) // 'this' : used in base member initializer list
994# pragma warning(disable: 4231) // nonstandard extension used : 'extern' before template explicit instantiation
995# elif defined(Q_CC_BOR)
996# pragma option -w-inl
997# pragma option -w-aus
998# pragma warn -inl
999# pragma warn -pia
1000# pragma warn -ccc
1001# pragma warn -rch
1002# pragma warn -sig
1003# elif defined(Q_CC_MWERKS)
1004# pragma warn_possunwant off
1005# endif
1006#endif