author | kergoth <kergoth> | 2002-11-01 00:10:42 (UTC) |
---|---|---|
committer | kergoth <kergoth> | 2002-11-01 00:10:42 (UTC) |
commit | 5042e3cf0d3514552769e441f5aad590c8eaf967 (patch) (side-by-side diff) | |
tree | 4a5ea45f3519d981a172ab5275bf38c6fa778dec /qmake/include | |
parent | 108c1c753e74e989cc13923086996791428c9af4 (diff) | |
download | opie-5042e3cf0d3514552769e441f5aad590c8eaf967.zip opie-5042e3cf0d3514552769e441f5aad590c8eaf967.tar.gz opie-5042e3cf0d3514552769e441f5aad590c8eaf967.tar.bz2 |
Adding qmake in preperation for new build system
81 files changed, 17561 insertions, 0 deletions
diff --git a/qmake/include/private/qapplication_p.h b/qmake/include/private/qapplication_p.h new file mode 100644 index 0000000..6fab6b3 --- a/dev/null +++ b/qmake/include/private/qapplication_p.h @@ -0,0 +1,87 @@ +/**************************************************************************** +** $Id$ +** +** Definition of some Qt private functions. +** +** Created : 000228 +** +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QAPPLICATION_P_H +#define QAPPLICATION_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp, qcolor_x11.cpp, qfiledialog.cpp +// and many other. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#endif // QT_H + +class QWidget; +class QObject; +class QClipboard; +class QKeyEvent; +class QMouseEvent; +class QWheelEvent; + +extern Q_EXPORT bool qt_modal_state(); +extern Q_EXPORT void qt_enter_modal( QWidget* ); +extern Q_EXPORT void qt_leave_modal( QWidget* ); + +extern bool qt_is_gui_used; +#ifndef QT_NO_CLIPBOARD +extern QClipboard *qt_clipboard; +#endif + +#if defined (Q_OS_WIN32) || defined (Q_OS_CYGWIN) +extern Qt::WindowsVersion qt_winver; +#endif + +#if defined (Q_WS_X11) +extern int qt_ncols_option; +#endif + + +extern void qt_dispatchEnterLeave( QWidget*, QWidget* ); + + + +#endif diff --git a/qmake/include/private/qcolor_p.h b/qmake/include/private/qcolor_p.h new file mode 100644 index 0000000..942a803 --- a/dev/null +++ b/qmake/include/private/qcolor_p.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** $Id$ +** +** Named color support for non-X platforms. +** The color names have been borrowed from X. +** +** Created : 000228 +** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QCOLOR_P_H +#define QCOLOR_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qmenudata.cpp, qmenubar.cpp, qmenubar.cpp, qpopupmenu.cpp, +// qmotifstyle.cpp and qwindowssstyle.cpp. This header file may change +// from version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#endif // QT_H + +extern uint qt_get_rgb_val( const char *name ); +extern bool qt_get_named_rgb( const char *, QRgb* ); +extern void qt_reset_color_avail(); + +#endif diff --git a/qmake/include/private/qcom_p.h b/qmake/include/private/qcom_p.h new file mode 100644 index 0000000..6e7e1c8 --- a/dev/null +++ b/qmake/include/private/qcom_p.h @@ -0,0 +1,337 @@ +/**************************************************************************** +** $Id$ +** +** ... +** +** Copyright (C) 2001-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QCOM_H +#define QCOM_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include "qstringlist.h" +#include "quuid.h" +#endif // QT_H + +#ifndef QT_NO_COMPONENT + +class QObject; +struct QUInterfaceDescription; +struct QUObject; + +#define QRESULT unsigned long +#define QS_OK (QRESULT)0x00000000 +#define QS_FALSE (QRESULT)0x00000001 + +#define QE_NOTIMPL (QRESULT)0x80000001 +#define QE_OUTOFMEMORY (QRESULT)0x80000002 +#define QE_INVALIDARG (QRESULT)0x80000003 +#define QE_NOINTERFACE (QRESULT)0x80000004 +#define QE_NOCOMPONENT (QRESULT)0x80000005 + + +// {1D8518CD-E8F5-4366-99E8-879FD7E482DE} +#ifndef IID_QUnknown +#define IID_QUnknown QUuid(0x1d8518cd, 0xe8f5, 0x4366, 0x99, 0xe8, 0x87, 0x9f, 0xd7, 0xe4, 0x82, 0xde) +#endif + +struct Q_EXPORT QUnknownInterface +{ + virtual QRESULT queryInterface( const QUuid&, QUnknownInterface** ) = 0; + virtual ulong addRef() = 0; + virtual ulong release() = 0; +}; + +// {FBAC965E-A441-413F-935E-CDF582573FAB} +#ifndef IID_QDispatch +#define IID_QDispatch QUuid( 0xfbac965e, 0xa441, 0x413f, 0x93, 0x5e, 0xcd, 0xf5, 0x82, 0x57, 0x3f, 0xab) +#endif + +// the dispatch interface that inherits the unknown interface.. It is +// used to explore interfaces during runtime and to do dynamic calls. +struct Q_EXPORT QDispatchInterface : public QUnknownInterface +{ + // returns the interface description of this dispatch interface. + virtual const QUInterfaceDescription* interfaceDescription() const = 0; + + // returns the event description of this dispatch interface. + virtual const QUInterfaceDescription* eventsDescription() const = 0; + + // invokes method id with parameters V*. Returns some sort of + // exception code. + virtual QRESULT invoke( int id, QUObject* o ) = 0; + + // installs listener as event listener + virtual void installListener( QDispatchInterface* listener ) = 0; + + // remove listener as event listener + virtual void removeListener( QDispatchInterface* listener ) = 0; +}; + +template <class T> +class QInterfacePtr +{ +public: + QInterfacePtr():iface(0){} + + QInterfacePtr( T* i) { + if ( (iface = i) ) + iface->addRef(); + } + + QInterfacePtr(const QInterfacePtr<T> &p) { + if ( (iface = p.iface) ) + iface->addRef(); + } + + ~QInterfacePtr() { + if ( iface ) + iface->release(); + } + + QInterfacePtr<T> &operator=(const QInterfacePtr<T> &p) { + if ( iface != p.iface ) { + if ( iface ) + iface->release(); + if ( (iface = p.iface) ) + iface->addRef(); + } + return *this; + } + + QInterfacePtr<T> &operator=(T* i) { + if (iface != i ) { + if ( iface ) + iface->release(); + if ( (iface = i) ) + iface->addRef(); + } + return *this; + } + + bool operator==( const QInterfacePtr<T> &p ) const { return iface == p.iface; } + + bool operator!= ( const QInterfacePtr<T>& p ) const { return !( *this == p ); } + + bool isNull() const { return !iface; } + + T* operator->() const { return iface; } + + T& operator*() const { return *iface; } + + operator T*() const { return iface; } + + QUnknownInterface** operator &() const { + if( iface ) + iface->release(); + return (QUnknownInterface**)&iface; + } + + T** operator &() { + if ( iface ) + iface->release(); + return &iface; + } + +private: + T* iface; +}; + +// {10A1501B-4C5F-4914-95DD-C400486CF900} +#ifndef IID_QObject +#define IID_QObject QUuid( 0x10a1501b, 0x4c5f, 0x4914, 0x95, 0xdd, 0xc4, 0x00, 0x48, 0x6c, 0xf9, 0x00) +#endif + +struct Q_EXPORT QObjectInterface +{ + virtual QObject* qObject() = 0; +}; + +// {5F3968A5-F451-45b1-96FB-061AD98F926E} +#ifndef IID_QComponentInformation +#define IID_QComponentInformation QUuid(0x5f3968a5, 0xf451, 0x45b1, 0x96, 0xfb, 0x6, 0x1a, 0xd9, 0x8f, 0x92, 0x6e) +#endif + +struct Q_EXPORT QComponentInformationInterface : public QUnknownInterface +{ + virtual QString name() const = 0; + virtual QString description() const = 0; + virtual QString author() const = 0; + virtual QString version() const = 0; +}; + +// {6CAA771B-17BB-4988-9E78-BA5CDDAAC31E} +#ifndef IID_QComponentFactory +#define IID_QComponentFactory QUuid( 0x6caa771b, 0x17bb, 0x4988, 0x9e, 0x78, 0xba, 0x5c, 0xdd, 0xaa, 0xc3, 0x1e) +#endif + +struct Q_EXPORT QComponentFactoryInterface : public QUnknownInterface +{ + virtual QRESULT createInstance( const QUuid &cid, const QUuid &iid, QUnknownInterface** instance, QUnknownInterface *outer ) = 0; +}; + +// {D16111D4-E1E7-4C47-8599-24483DAE2E07} +#ifndef IID_QLibrary +#define IID_QLibrary QUuid( 0xd16111d4, 0xe1e7, 0x4c47, 0x85, 0x99, 0x24, 0x48, 0x3d, 0xae, 0x2e, 0x07) +#endif + +struct Q_EXPORT QLibraryInterface : public QUnknownInterface +{ + virtual bool init() = 0; + virtual void cleanup() = 0; + virtual bool canUnload() const = 0; +}; + +// {3F8FDC44-3015-4f3e-B6D6-E4AAAABDEAAD} +#ifndef IID_QFeatureList +#define IID_QFeatureList QUuid(0x3f8fdc44, 0x3015, 0x4f3e, 0xb6, 0xd6, 0xe4, 0xaa, 0xaa, 0xbd, 0xea, 0xad) +#endif + +struct Q_EXPORT QFeatureListInterface : public QUnknownInterface +{ + virtual QStringList featureList() const = 0; +}; + +// {B5FEB5DE-E0CD-4E37-B0EB-8A812499A0C1} +#ifndef IID_QComponentRegistration +#define IID_QComponentRegistration QUuid( 0xb5feb5de, 0xe0cd, 0x4e37, 0xb0, 0xeb, 0x8a, 0x81, 0x24, 0x99, 0xa0, 0xc1) +#endif + +struct Q_EXPORT QComponentRegistrationInterface : public QUnknownInterface +{ + virtual bool registerComponents( const QString &filepath ) const = 0; + virtual bool unregisterComponents() const = 0; +}; + +// internal class that wraps an initialized ulong +struct Q_EXPORT QtULong +{ + QtULong() : ref( 0 ) { } + operator unsigned long () const { return ref; } + unsigned long& operator++() { return ++ref; } + unsigned long operator++( int ) { return ref++; } + unsigned long& operator--() { return --ref; } + unsigned long operator--( int ) { return ref--; } + + unsigned long ref; +}; +// default implementation of ref counting. A variable "ulong ref" has to be a member + + +#define Q_REFCOUNT \ +private: \ + QtULong qtrefcount; \ +public: \ + ulong addRef() {return qtrefcount++;} \ + ulong release() {if(!--qtrefcount){delete this;return 0;}return qtrefcount;} + +#ifndef Q_EXPORT_COMPONENT +#if defined(QT_THREAD_SUPPORT) +#define QT_THREADED_BUILD 1 +#define Q_UCM_FLAGS_STRING "11" +#else +#define QT_THREADED_BUILD 0 +#define Q_UCM_FLAGS_STRING "01" +#endif + +#ifndef Q_EXTERN_C +#ifdef __cplusplus +#define Q_EXTERN_C extern "C" +#else +#define Q_EXTERN_C extern +#endif +#endif + +// this is duplicated at Q_PLUGIN_VERIFICATION_DATA in qgplugin.h +// NOTE: if you change pattern, you MUST change the pattern in +// qcomlibrary.cpp as well. changing the pattern will break all +// backwards compatibility as well (no old plugins will be loaded). +#ifndef Q_UCM_VERIFICATION_DATA +# define Q_UCM_VERIFICATION_DATA \ + static const char *qt_ucm_verification_data = \ + "pattern=""QT_UCM_VERIFICATION_DATA""\n" \ + "version="QT_VERSION_STR"\n" \ + "flags="Q_UCM_FLAGS_STRING"\n" \ + "buildkey="QT_BUILD_KEY"\0"; +#endif // Q_UCM_VERIFICATION_DATA + +// This macro expands to the default implementation of ucm_instantiate. +#ifndef Q_CREATE_INSTANCE +# define Q_CREATE_INSTANCE( IMPLEMENTATION ) \ + IMPLEMENTATION *i = new IMPLEMENTATION; \ + QUnknownInterface* iface = 0; \ + i->queryInterface( IID_QUnknown, &iface ); \ + return iface; +#endif // Q_CREATE_INSTANCE + +# ifdef Q_WS_WIN +# ifdef Q_CC_BOR +# define Q_EXPORT_COMPONENT() \ + Q_UCM_VERIFICATION_DATA \ + Q_EXTERN_C __declspec(dllexport) \ + const char * __stdcall qt_ucm_query_verification_data() \ + { return qt_ucm_verification_data; } \ + Q_EXTERN_C __declspec(dllexport) QUnknownInterface* \ + __stdcall ucm_instantiate() +# else +# define Q_EXPORT_COMPONENT() \ + Q_UCM_VERIFICATION_DATA \ + Q_EXTERN_C __declspec(dllexport) \ + const char *qt_ucm_query_verification_data() \ + { return qt_ucm_verification_data; } \ + Q_EXTERN_C __declspec(dllexport) QUnknownInterface* ucm_instantiate() +# endif +# else +# define Q_EXPORT_COMPONENT() \ + Q_UCM_VERIFICATION_DATA \ + Q_EXTERN_C \ + const char *qt_ucm_query_verification_data() \ + { return qt_ucm_verification_data; } \ + Q_EXTERN_C QUnknownInterface* ucm_instantiate() +# endif +# define Q_EXPORT_INTERFACE() Q_EXPORT_COMPONENT() +#endif + +#endif //QT_NO_COMPONENT + +#endif //QCOM_H diff --git a/qmake/include/private/qcomlibrary_p.h b/qmake/include/private/qcomlibrary_p.h new file mode 100644 index 0000000..f52f679 --- a/dev/null +++ b/qmake/include/private/qcomlibrary_p.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QComLibrary class +** +** Copyright (C) 2001-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QUCOMLIBRARY_H +#define QUCOMLIBRARY_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include "qcom_p.h" +#include "qlibrary.h" +#endif // QT_H + +#ifndef QT_NO_COMPONENT + +class Q_EXPORT QComLibrary : public QLibrary +{ +public: + QComLibrary( const QString &filename ); + ~QComLibrary(); + + bool unload(); + QRESULT queryInterface( const QUuid &iid, QUnknownInterface **iface ); + uint qtVersion(); + +private: + void createInstanceInternal(); + + QUnknownInterface *entry; + QLibraryInterface *libiface; + uint qt_version; + +}; + +#endif //QT_NO_COMPONENT + +#endif // QUCOMLIBRARY_H diff --git a/qmake/include/private/qcomplextext_p.h b/qmake/include/private/qcomplextext_p.h new file mode 100644 index 0000000..2132522 --- a/dev/null +++ b/qmake/include/private/qcomplextext_p.h @@ -0,0 +1,123 @@ +/**************************************************************************** +** $Id$ +** +** Internal header file. +** +** Created : +** +** Copyright (C) 2001 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QCOMPLEXTEXT_H +#define QCOMPLEXTEXT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt Remote Control. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include <qstring.h> +#include <qpointarray.h> +#include <qfont.h> +#include <qpainter.h> +#include <qptrlist.h> +#include <qshared.h> +#endif // QT_H + +#ifndef QT_NO_COMPLEXTEXT + +// bidi helper classes. Internal to Qt +struct Q_EXPORT QBidiStatus { + QBidiStatus() { + eor = QChar::DirON; + lastStrong = QChar::DirON; + last = QChar:: DirON; + } + QChar::Direction eor; + QChar::Direction lastStrong; + QChar::Direction last; +}; + +struct Q_EXPORT QBidiContext : public QShared { + // ### ref and deref parent? + QBidiContext( uchar level, QChar::Direction embedding, QBidiContext *parent = 0, bool override = FALSE ); + ~QBidiContext(); + + unsigned char level; + bool override : 1; + QChar::Direction dir : 5; + + QBidiContext *parent; +}; + +struct Q_EXPORT QBidiControl { + QBidiControl() { context = 0; } + QBidiControl( QBidiContext *c, QBidiStatus s) + { context = c; if( context ) context->ref(); status = s; } + ~QBidiControl() { if ( context && context->deref() ) delete context; } + void setContext( QBidiContext *c ) { if ( context == c ) return; if ( context && context->deref() ) delete context; context = c; context->ref(); } + QBidiContext *context; + QBidiStatus status; +}; + +struct Q_EXPORT QTextRun { + QTextRun(int _start, int _stop, QBidiContext *context, QChar::Direction dir); + + int start; + int stop; + // explicit + implicit levels here + uchar level; +}; + +class Q_EXPORT QComplexText { +public: + static QString shapedString( const QString &str, int from = 0, int len = -1, QPainter::TextDirection dir = QPainter::Auto, const QFontMetrics *fm = 0); + static QChar shapedCharacter(const QString &str, int pos, const QFontMetrics *fm = 0); + + // positions non spacing marks relative to the base character at position pos. + static QPointArray positionMarks( QFontPrivate *f, const QString &str, int pos, QRect *boundingRect = 0 ); + + static QPtrList<QTextRun> *bidiReorderLine( QBidiControl *control, const QString &str, int start, int len, + QChar::Direction basicDir = QChar::DirON ); + static QString bidiReorderString( const QString &str, QChar::Direction basicDir = QChar::DirON ); +}; + + +#endif //QT_NO_COMPLEXTEXT + +#endif diff --git a/qmake/include/private/qcomponentfactory_p.h b/qmake/include/private/qcomponentfactory_p.h new file mode 100644 index 0000000..1ac973f --- a/dev/null +++ b/qmake/include/private/qcomponentfactory_p.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** $Id$ +** +** Definition of the QComponentFactory class +** +** Created : 990101 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QCOMPONENTFACTORY_H +#define QCOMPONENTFACTORY_H + +#ifndef QT_H +#include "qcom_p.h" +#endif // QT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_NO_COMPONENT + +class Q_EXPORT QComponentFactory +{ +public: + static QRESULT createInstance( const QString &cid, const QUuid &iid, QUnknownInterface** instance, QUnknownInterface *outer = 0 ); + static QRESULT registerServer( const QString &filename ); + static QRESULT unregisterServer( const QString &filename ); + + static bool registerComponent( const QUuid &cid, const QString &filename, const QString &name = QString::null, + int version = 0, const QString &description = QString::null ); + static bool unregisterComponent( const QUuid &cid ); +}; + +#endif // QT_NO_COMPONENT + +#endif // QCOMPONENTFACTORY_H diff --git a/qmake/include/private/qcriticalsection_p.h b/qmake/include/private/qcriticalsection_p.h new file mode 100644 index 0000000..7d9feca --- a/dev/null +++ b/qmake/include/private/qcriticalsection_p.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QCriticalSection class +** +** Copyright (C) 2001-2002 Trolltech AS. All rights reserved. +** +** This file is part of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QCRITICALSECTION_H +#define QCRITICALSECTION_H + +#ifndef QT_H +#endif // QT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt Remote Control. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// +// + +#if defined(QT_THREAD_SUPPORT) + +#if defined(Q_WS_WIN) + +/* + QCriticalSection +*/ + +class QCriticalSectionPrivate; + +class QCriticalSection +{ +public: + QCriticalSection(); + ~QCriticalSection(); + void enter(); + void leave(); + +private: + QCriticalSectionPrivate *d; +}; + +#endif + +#endif + +#endif diff --git a/qmake/include/private/qdir_p.h b/qmake/include/private/qdir_p.h new file mode 100644 index 0000000..35dba28 --- a/dev/null +++ b/qmake/include/private/qdir_p.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** $Id$ +** +** Definition of some private QDir functions. +** +** Created : 2000.11.06 +** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QDIR_P_H +#define QDIR_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qdir.cpp and qdir_*.cpp. +// This header file may change from version to version without notice, +// or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#endif // QT_H + +extern QStringList qt_makeFilterList( const QString & ); + + +extern int qt_cmp_si_sortSpec; + +#if defined(Q_C_CALLBACKS) +extern "C" { +#endif + +#ifdef Q_OS_TEMP +extern int __cdecl qt_cmp_si( const void *, const void * ); +#else +extern int qt_cmp_si( const void *, const void * ); +#endif + +#if defined(Q_C_CALLBACKS) +} +#endif + + +#endif // QDIR_P_H diff --git a/qmake/include/private/qeffects_p.h b/qmake/include/private/qeffects_p.h new file mode 100644 index 0000000..4178b6f --- a/dev/null +++ b/qmake/include/private/qeffects_p.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QEffects functions +** +** Created : 2000.06.21 +** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of the widgets module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QEFFECTS_P_H +#define QEFFECTS_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qeffects.cpp, qcombobox.cpp, qpopupmenu.cpp and qtooltip.cpp. +// This header file may change from version to version without notice, +// or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include "qnamespace.h" +#endif // QT_H + +#ifndef QT_NO_EFFECTS +class QWidget; + +struct QEffects +{ + enum Direction { + LeftScroll = 0x0001, + RightScroll = 0x0002, + UpScroll = 0x0004, + DownScroll = 0x0008 + }; + + typedef uint DirFlags; +}; + +extern void Q_EXPORT qScrollEffect( QWidget*, QEffects::DirFlags dir = QEffects::DownScroll, int time = -1 ); +extern void Q_EXPORT qFadeEffect( QWidget*, int time = -1 ); +#endif // QT_NO_EFFECTS + +#endif // QEFFECTS_P_H diff --git a/qmake/include/private/qeventloop_p.h b/qmake/include/private/qeventloop_p.h new file mode 100644 index 0000000..b64d0df --- a/dev/null +++ b/qmake/include/private/qeventloop_p.h @@ -0,0 +1,74 @@ +#ifndef QEVENTLOOP_P_H +#define QEVENTLOOP_P_H + +#include "qplatformdefs.h" +#include "qwindowdefs.h" + +class QSocketNotifier; + +#if defined(Q_OS_UNIX) +#include <qptrlist.h> + +struct QSockNot +{ + QSocketNotifier *obj; + int fd; + fd_set *queue; +}; + +class QSockNotType +{ +public: + QSockNotType(); + ~QSockNotType(); + + QPtrList<QSockNot> *list; + fd_set select_fds; + fd_set enabled_fds; + fd_set pending_fds; + +}; +#endif // Q_OS_UNIX + + +class QEventLoopPrivate +{ +public: + QEventLoopPrivate() + { + reset(); + } + + void reset() { + looplevel = 0; + quitcode = 0; + quitnow = FALSE; + exitloop = FALSE; + } + + int looplevel; + int quitcode; + bool quitnow; + bool exitloop; + +#if defined(Q_WS_MAC) + EventLoopTimerRef select_timer; +#endif + +#if defined(Q_WS_X11) + int xfd; +#endif // Q_WS_X11 + +#if defined(Q_OS_UNIX) + int thread_pipe[2]; + + // pending socket notifiers list + QPtrList<QSockNot> sn_pending_list; + // highest fd for all socket notifiers + int sn_highest; + // 3 socket notifier types - read, write and exception + QSockNotType sn_vec[3]; +#endif +}; + +#endif // QEVENTLOOP_P_H diff --git a/qmake/include/private/qfiledefs_p.h b/qmake/include/private/qfiledefs_p.h new file mode 100644 index 0000000..627717f --- a/dev/null +++ b/qmake/include/private/qfiledefs_p.h @@ -0,0 +1,64 @@ +/**************************************************************************** +** $Id$ +** +** Common macros and system include files for QFile, QFileInfo and QDir. +** +** Created : 930812 +** +** Copyright (C) 1992-2001 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QFILEDEFS_P_H +#define QFILEDEFS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qfileinfo*.cpp. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// +// + +// Be sure to include qplatformdefs.h first! +struct QFileInfoCache +{ +#if defined(Q_WS_WIN) + QT_STATBUF st; +#else + struct stat st; +#endif +}; + + +#endif diff --git a/qmake/include/private/qfontcodecs_p.h b/qmake/include/private/qfontcodecs_p.h new file mode 100644 index 0000000..8222f98 --- a/dev/null +++ b/qmake/include/private/qfontcodecs_p.h @@ -0,0 +1,368 @@ +/**************************************************************************** +** $Id$ +** +** Font utilities for X11 +** +** Created : 20001101 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QFONTCODECS_P_H +#define QFONTCODECS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qfontencodings_x11.cpp and qfont_x11.cpp. This header file may +// change from version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include <qglobal.h> +#include <qtextcodec.h> +#endif // QT_H + + +#ifndef QT_NO_CODECS +#ifndef QT_NO_BIG_CODECS + + +class QJpUnicodeConv; + + +class QFontJis0201Codec : public QTextCodec +{ +public: + QFontJis0201Codec(); + + const char *name() const; + + int mibEnum() const; + +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::fromUnicode; +#endif + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; + int heuristicNameMatch(const char* hint) const; + +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::canEncode; +#endif + bool canEncode( QChar ) const; +}; + + +class QFontJis0208Codec : public QTextCodec +{ +public: + QFontJis0208Codec(); + ~QFontJis0208Codec(); + + // Return the official name for the encoding. + const char* name() const ; + + // Return the MIB enum for the encoding if it is listed in the + // IANA character-sets encoding file. + int mibEnum() const ; + + // Converts len characters from chars to Unicode. + QString toUnicode(const char* chars, int len) const ; + + // Converts lenInOut characters (of type QChar) from the start of + // the string uc, returning a QCString result, and also returning + // the length of the result in lenInOut. +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::fromUnicode; +#endif + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; + int heuristicNameMatch(const char* hint) const; + +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::canEncode; +#endif + bool canEncode( QChar ) const; + +private: + QJpUnicodeConv *convJP; +}; + + + + +class QFontKsc5601Codec : public QTextCodec +{ +public: + QFontKsc5601Codec(); + + // Return the official name for the encoding. + const char* name() const ; + + // Return the MIB enum for the encoding if it is listed in the + // IANA character-sets encoding file. + int mibEnum() const ; + + // Converts len characters from chars to Unicode. + QString toUnicode(const char* chars, int len) const ; + + // Converts lenInOut characters (of type QChar) from the start of + // the string uc, returning a QCString result, and also returning + // the length of the result in lenInOut. +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::fromUnicode; +#endif + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::canEncode; +#endif + bool canEncode( QChar ) const; +}; + + + + +class QFontGb2312Codec : public QTextCodec +{ +public: + QFontGb2312Codec(); + + // Return the official name for the encoding. + const char* name() const ; + + // Return the MIB enum for the encoding if it is listed in the + // IANA character-sets encoding file. + int mibEnum() const ; + + // Converts len characters from chars to Unicode. + QString toUnicode(const char* chars, int len) const ; + + // Converts lenInOut characters (of type QChar) from the start of + // the string uc, returning a QCString result, and also returning + // the length of the result in lenInOut. + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; + bool canEncode( QChar ) const; +}; + + + + +class QFontGbkCodec : public QTextCodec +{ +public: + QFontGbkCodec(); + + // Return the official name for the encoding. + const char* name() const ; + + // Return the MIB enum for the encoding if it is listed in the + // IANA character-sets encoding file. + int mibEnum() const ; + + // Converts len characters from chars to Unicode. + QString toUnicode(const char* chars, int len) const ; + + // Converts lenInOut characters (of type QChar) from the start of + // the string uc, returning a QCString result, and also returning + // the length of the result in lenInOut. + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; + int heuristicNameMatch(const char* hint) const; + bool canEncode( QChar ) const; +}; + + + + +class QFontGb18030_0Codec : public QTextCodec +{ +public: + QFontGb18030_0Codec(); + + // Return the official name for the encoding. + const char* name() const ; + + // Return the MIB enum for the encoding if it is listed in the + // IANA character-sets encoding file. + int mibEnum() const ; + + // Converts len characters from chars to Unicode. + QString toUnicode(const char* chars, int len) const ; + + // Converts lenInOut characters (of type QChar) from the start of + // the string uc, returning a QCString result, and also returning + // the length of the result in lenInOut. +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::fromUnicode; +#endif + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::canEncode; +#endif + bool canEncode( QChar ) const; +}; + + + + +class QFontBig5Codec : public QTextCodec +{ +public: + QFontBig5Codec(); + + // Return the official name for the encoding. + const char* name() const ; + + // Return the MIB enum for the encoding if it is listed in the + // IANA character-sets encoding file. + int mibEnum() const ; + + // Converts len characters from chars to Unicode. + QString toUnicode(const char* chars, int len) const ; + + // Converts lenInOut characters (of type QChar) from the start of + // the string uc, returning a QCString result, and also returning + // the length of the result in lenInOut. +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::fromUnicode; +#endif + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::canEncode; +#endif + int heuristicNameMatch(const char* hint) const; + bool canEncode( QChar ) const; +}; + + + +class QFontBig5hkscsCodec : public QTextCodec +{ +public: + QFontBig5hkscsCodec(); + + // Return the official name for the encoding. + const char* name() const ; + + // Return the MIB enum for the encoding if it is listed in the + // IANA character-sets encoding file. + int mibEnum() const ; + + // Converts len characters from chars to Unicode. + QString toUnicode(const char* chars, int len) const ; + + // Converts lenInOut characters (of type QChar) from the start of + // the string uc, returning a QCString result, and also returning + // the length of the result in lenInOut. + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; + int heuristicNameMatch(const char* hint) const; +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::canEncode; +#endif + bool canEncode( QChar ) const; +}; + + + + +// ------------------------------------------------------------------ +// the shaping codec for iso8859-6.8x fonts (see www.langbox.com) + +class QFontArabic68Codec : public QTextCodec +{ +public: + QFontArabic68Codec(); + + // Return the official name for the encoding. + const char* name() const ; + + // Return the MIB enum for the encoding if it is listed in the + // IANA character-sets encoding file. + int mibEnum() const ; + + // Converts len characters from chars to Unicode. + QString toUnicode(const char* chars, int len) const ; + + // Converts lenInOut characters (of type QChar) from the start of + // the string uc, returning a QCString result, and also returning + // the length of the result in lenInOut. + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; + QByteArray fromUnicode( const QString &str, int from, int len ) const; + unsigned short characterFromUnicode(const QString &str, int pos) const; +}; + + +class QFontLaoCodec : public QTextCodec +{ +public: + QFontLaoCodec(); + + const char *name() const; + + int mibEnum() const; + +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::fromUnicode; +#endif + QCString fromUnicode(const QString& uc, int& lenInOut ) const; + + int heuristicContentMatch(const char *, int) const; + +#if !defined(Q_NO_USING_KEYWORD) + using QTextCodec::canEncode; +#endif + bool canEncode( QChar ) const; +}; + +#endif // QT_NO_BIG_CODECS +#endif // QT_NO_CODECS + +#endif // QFONTCODECS_P_H diff --git a/qmake/include/private/qfontdata_p.h b/qmake/include/private/qfontdata_p.h new file mode 100644 index 0000000..917d14f --- a/dev/null +++ b/qmake/include/private/qfontdata_p.h @@ -0,0 +1,479 @@ +/**************************************************************************** +** $Id$ +** +** Definition of internal QFontData struct +** +** Created : 941229 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QFONTDATA_P_H +#define QFONTDATA_P_H + +#ifndef QT_H +#include <qcache.h> +#include <qobject.h> +#include <qpaintdevice.h> +#endif // QT_H +#include <limits.h> + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of internal files. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// +// + +class QPaintDevice; + +#ifdef Q_WS_WIN +#include <qt_windows.h> +#endif + +#ifdef Q_WS_X11 +#include <qt_x11.h> + +class QCharStruct; +#endif + +// font description +struct QFontDef { + QFontDef() + : pixelSize(0), pointSize(0), lbearing(SHRT_MIN), rbearing(SHRT_MIN), + styleStrategy(QFont::PreferDefault), styleHint(QFont::AnyStyle), + weight(0), italic(FALSE), underline(FALSE), strikeOut(FALSE), + fixedPitch(FALSE), hintSetByUser(FALSE), rawMode(FALSE), dirty(TRUE) + { ; } + + QString family; + QString addStyle; + + int pixelSize; + int pointSize; + short lbearing; + short rbearing; + + ushort styleStrategy; + uchar styleHint; + uchar weight; + + bool italic; + bool underline; + bool strikeOut; + bool fixedPitch; + bool hintSetByUser; + bool rawMode; + + bool dirty; +}; + + +class QTextCodec; + +#ifdef Q_WS_X11 + +// this is a shared wrapper for XFontStruct (to prevent a font being freed by +// the cache while it's being used) +class QFontStruct : public QShared +{ +public: + QFontStruct(Qt::HANDLE h, Qt::HANDLE xfth, Qt::HANDLE xftp, + QCString n, QTextCodec *c, int a) : + QShared(), handle(h), xfthandle(xfth), xftpattern(xftp), + name(n), codec(c), cache_cost(a), scale( 1. ) + { ; } + + ~QFontStruct(); + + Qt::HANDLE handle, xfthandle, xftpattern; + QCString name; + QTextCodec *codec; + int cache_cost; + float scale; // needed for printing, to correctly scale font metrics for bitmap fonts +}; + +enum { widthCacheSize = 0x500 }; + +class QFontX11Data // used as a QFontPrivate member +{ +public: + // X fontstruct handles for each character set + QFontStruct *fontstruct[QFont::LastPrivateScript]; + + uchar widthCache[widthCacheSize]; + + QFontX11Data(); + ~QFontX11Data(); +}; + +#endif // Q_WS_X11 + + +#ifdef Q_WS_WIN + +class QFontStruct : public QShared +{ +public: + QFontStruct( const QString &key ); + ~QFontStruct() { reset(); } + bool dirty() const { return hfont == 0; } + HDC dc() const; + HFONT font() const { return hfont; } + const TEXTMETRICA *textMetricA() const { return &tm.a; } + const TEXTMETRICW *textMetricW() const { return &tm.w; } + QString key() const { return k; } + void reset(); + + QString k; + HDC hdc; + HFONT hfont; + uint stockFont:1; + uint paintDevice:1; + union { + TEXTMETRICW w; + TEXTMETRICA a; + } tm; + int lw; + int cache_cost; +// friend void QFont::initFontInfo() const; +}; + +#endif // Q_WS_WIN + +#if defined( Q_WS_MAC ) + +#if defined( Q_WS_MACX ) +# define QMAC_FONT_ATSUI +#endif +#include "qt_mac.h" +class QMacFontInfo; + +class QFontStruct : public QShared +{ +public: + inline QFontStruct() : QShared(), info(NULL), fnum(-1), cache_cost(0), internal_fi(NULL) { } +#if defined( QMAC_FONT_ATSUI ) && 0 + ATSFontMetrics *info; + int maxWidth() const { return (int)info->maxAdvanceWidth; } +#else + FontInfo *info; + int maxWidth() const { return info->widMax; } +#endif + int ascent() const { return (int)info->ascent; } + int descent() const { return (int)info->descent; } + int leading() const { return (int)info->leading; } + int minLeftBearing() const { return 0; } + int minRightBearing() const { return 0; } + + short fnum; + int psize, cache_cost; + QMacFontInfo *internal_fi; +}; + +#endif + +#ifdef Q_WS_QWS +class QFontStruct; +class QGfx; +#endif + +typedef QCacheIterator<QFontStruct> QFontCacheIterator; +class QFontCache : public QObject, public QCache<QFontStruct> +{ +public: + QFontCache(); + ~QFontCache(); + + bool insert(const QString &, const QFontStruct *, int c); +#ifndef Q_WS_MAC + void deleteItem(Item d); +#endif + void timerEvent(QTimerEvent *); + + +protected: + + +private: + int timer_id; + bool fast; +}; + + +// QFontPrivate - holds all data on which a font operates +class QFontPrivate : public QShared +{ +public: + static QFontCache *fontCache; + + +public: + + QFontPrivate(); + QFontPrivate(const QFontPrivate &fp); + QFontPrivate( const QFontPrivate &fp, QPaintDevice *pd ); + ~QFontPrivate(); + + // requested font + QFontDef request; + // actual font + QFontDef actual; + + bool exactMatch; + int lineWidth; + + // common functions + QString defaultFamily() const; + QString lastResortFamily() const; + QString lastResortFont() const; + QString key() const; + + static int getFontWeight(const QCString &, bool = FALSE); + QRect boundingRect( const QChar &ch ); + + struct TextRun { + TextRun() + { + xoff = 0; + yoff = 0; + x2off = 0; + script = QFont::NoScript; + string = 0; + length = 0; + next = 0; + } + + ~TextRun() + { + if ( next ) + delete next; + } + + void setParams( int x, int y, int x2, const QChar *s, int len, + QFont::Script sc = QFont::NoScript ) { + xoff = x; + yoff = y; + x2off = x2; + string = s; + length = len; + script = sc; + } + int xoff; + int yoff; + int x2off; + QFont::Script script; + const QChar *string; + int length; + TextRun *next; +#ifdef Q_WS_X11 + QByteArray mapped; +#endif + }; + + // some replacement functions for native calls. This is needed, because shaping and + // non spacing marks can change the extents of a string to draw. At the same time + // drawing needs to take care to correctly position non spacing marks. + int textWidth( const QString &str, int pos, int len ); + + // returns the script a certain character is in. Needed to separate the string + // into runs of different scripts as required for X11 and opentype. + QFont::Script scriptForChar(const QChar &c); + +#ifdef Q_WS_X11 + QFont::Script hanHack( const QChar & c ); + static char **getXFontNames(const char *, int *); + static bool fontExists(const QString &); + static bool parseXFontName(char *, char **); + static QCString fixXLFD( const QCString & ); + static bool fillFontDef(XFontStruct *, QFontDef *, int); + static bool fillFontDef(const QCString &, QFontDef *, int); + + static inline bool isZero(char *x) + { + return (x[0] == '0' && x[1] == 0); + } + + static inline bool isScalable( char **tokens ) + { + return (isZero(tokens[PixelSize]) && + isZero(tokens[PointSize]) && + isZero(tokens[AverageWidth])); + } + + static inline bool isSmoothlyScalable( char **tokens ) + { + return (isZero(tokens[ResolutionX]) && isZero(tokens[ResolutionY])); + } + + static inline bool isFixedPitch( char **tokens ) + { + return (tokens[Spacing][0] == 'm' || + tokens[Spacing][0] == 'c' || + tokens[Spacing][0] == 'M' || + tokens[Spacing][0] == 'C'); + } + + // XLFD fields + enum FontFieldNames { + Foundry, + Family, + Weight, + Slant, + Width, + AddStyle, + PixelSize, + PointSize, + ResolutionX, + ResolutionY, + Spacing, + AverageWidth, + CharsetRegistry, + CharsetEncoding, + NFontFields + }; + +#ifndef QT_NO_XFTFREETYPE + XftPattern *findXftFont(const QChar &, bool *, double *scale) const; + XftPattern *bestXftPattern(const QString &, const QString &, const QChar &, double *scale) const; +#endif // QT_NO_XFTFREETYPE + QCString findFont(QFont::Script, bool *, double *) const; + QCString bestFamilyMember(QFont::Script, const QString &, const QString &, + const QString &, int *, double *) const; + QCString bestMatch(const char *, int *, QFont::Script, double *) const; + int fontMatchScore(const char *, QCString &, float *, int *, bool *, + bool *, QFont::Script, double *) const; + void initFontInfo(QFont::Script, double scale); + void load(QFont::Script = QFont::NoScript, bool = TRUE); + bool loadUnicode(QFont::Script, const QChar &); + void computeLineWidth(); + + int textWidth( const QString &str, int pos, int len, TextRun *cache ); + void textExtents( const QString &str, int pos, int len, QCharStruct *overall ); + void drawText( Display *dpy, int screen, Qt::HANDLE hd, Qt::HANDLE rendhd, + GC gc, const QColor &pen, Qt::BGMode, const QColor &bgcolor, + int x, int y, const TextRun *cache, int pdWidth ); + bool inFont( const QChar &ch ); + + QFontX11Data x11data; + static QFont::Script defaultScript; + int x11Screen; +#endif // Q_WS_X11 + + QPaintDevice *paintdevice; + +#ifdef Q_WS_WIN + void load(); + void initFontInfo(); + HFONT create( bool *stockFont, HDC hdc = 0, bool compatMode = FALSE ); + QFontStruct *fin; + + void buildCache( HDC hdc, const QString &str, int pos, int len, TextRun *cache ); + void drawText( HDC hdc, int x, int y, TextRun *cache ); +#endif // Q_WS_WIN + +#ifdef Q_WS_QWS + void load(); + QFontStruct *fin; + int textWidth( const QString &str, int pos, int len, TextRun *cache ); + void drawText( QGfx *gfx, int x, int y, const TextRun *cache ); +#endif + +#if defined( Q_WS_MAC ) + void macSetFont(QPaintDevice *); + void drawText(int x, int y, QString s, int len, QPaintDevice *dev, const QRegion *rgn); + void computeLineWidth(); + void load(); + QFontStruct *fin; +#endif + +}; + +inline QFontPrivate::QFontPrivate() + : QShared(), exactMatch(FALSE), lineWidth(1) +{ + +#if defined(Q_WS_WIN) || defined(Q_WS_QWS) || defined(Q_WS_MAC) + fin = 0; +#endif // Q_WS_WIN || Q_WS_QWS +#if defined(Q_WS_X11) + x11Screen = QPaintDevice::x11AppScreen(); +#endif // Q_WS_X11 + paintdevice = 0; +} + +inline QFontPrivate::QFontPrivate(const QFontPrivate &fp) + : QShared(), request(fp.request), actual(fp.actual), +exactMatch(fp.exactMatch), lineWidth(1) +{ + Q_ASSERT(!fp.paintdevice); +#if defined(Q_WS_WIN) || defined(Q_WS_QWS) || defined(Q_WS_MAC) + fin = 0; +#endif // Q_WS_WIN || Q_WS_QWS +#if defined(Q_WS_X11) + x11Screen = fp.x11Screen; +#endif // Q_WS_X11 + paintdevice = 0; +} + +inline QFontPrivate::QFontPrivate( const QFontPrivate &fp, QPaintDevice *pd ) + : QShared(), request(fp.request), actual(fp.actual), +exactMatch(fp.exactMatch), lineWidth(1) +{ + +#if defined(Q_WS_WIN) || defined(Q_WS_QWS) || defined(Q_WS_MAC) + fin = 0; +#endif // Q_WS_WIN || Q_WS_QWS +#if defined(Q_WS_X11) + x11Screen = pd->x11Screen(); +#endif // Q_WS_X11 + paintdevice = pd; +} + +#ifndef Q_WS_QWS +inline QFontPrivate::~QFontPrivate() +{ +#if defined(Q_WS_WIN) + if( fin ) + fin->deref(); +#endif +#if defined(Q_WS_MAC) + if( fin && fin->deref() ) + delete fin; +#endif +} +#endif + +#endif // QFONTDATA_P_H diff --git a/qmake/include/private/qgfxdriverinterface_p.h b/qmake/include/private/qgfxdriverinterface_p.h new file mode 100644 index 0000000..1782ed4 --- a/dev/null +++ b/qmake/include/private/qgfxdriverinterface_p.h @@ -0,0 +1,56 @@ +/**************************************************************************** +** $Id$ +** +** Definition of Qt/Embedded Graphics Driver Interface +** +** Created : 20020211 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses for Qt/Embedded may use this file in accordance with the +** Qt Embedded Commercial License Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QGFXDRIVERINTERFACE_H +#define QGFXDRIVERINTERFACE_H + +#ifndef QT_H +#include <private/qcom_p.h> +#endif // QT_H + +#ifndef QT_NO_COMPONENT + +// {449EC6C6-DF3E-43E3-9E57-354A3D05AB34} +#ifndef IID_QGfxDriver +#define IID_QGfxDriver QUuid( 0x449ec6c6, 0xdf3e, 0x43e3, 0x9e, 0x57, 0x35, 0x4a, 0x3d, 0x05, 0xab, 0x34) +#endif + +class QScreen; + +struct Q_EXPORT QGfxDriverInterface : public QFeatureListInterface +{ + virtual QScreen* create( const QString& driver, int displayId ) = 0; +}; + +#endif // QT_NO_COMPONENT + +#endif // QGFXDRIVERINTERFACE_H diff --git a/qmake/include/private/qgpluginmanager_p.h b/qmake/include/private/qgpluginmanager_p.h new file mode 100644 index 0000000..e0c0e78 --- a/dev/null +++ b/qmake/include/private/qgpluginmanager_p.h @@ -0,0 +1,107 @@ +/********************************************************************** +** $Id$ +** +** Definition of QGPluginManager class +** +** Copyright (C) 2000-2001 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QGPLUGINMANAGER_H +#define QGPLUGINMANAGER_H + +#ifndef QT_H +#include "qdict.h" +#include "qlibrary.h" +#include "quuid.h" +#include "qstringlist.h" +#include "qcom_p.h" +#endif // QT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_NO_COMPONENT + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QDict<QLibrary>; +// MOC_SKIP_END +#endif + +class Q_EXPORT QGPluginManager +{ +public: + QGPluginManager( const QUuid& id, const QStringList& paths = QString::null, const QString &suffix = QString::null, bool cs = TRUE ); + ~QGPluginManager(); + + void addLibraryPath( const QString& path ); + const QLibrary* library( const QString& feature ) const; + QStringList featureList() const; + + bool autoUnload() const; + void setAutoUnload( bool ); + +protected: + bool enabled() const; + bool addLibrary( QLibrary* plugin ); + + QRESULT queryUnknownInterface(const QString& feature, QUnknownInterface** iface) const; + + QUuid interfaceId; + QDict<QLibrary> plugDict; // Dict to match feature with library + QDict<QLibrary> libDict; // Dict to match library file with library + QStringList libList; + + uint casesens : 1; + uint autounload : 1; +}; + +inline void QGPluginManager::setAutoUnload( bool unload ) +{ + autounload = unload; +} + +inline bool QGPluginManager::autoUnload() const +{ + return autounload; +} + +#endif + +#endif //QGPLUGINMANAGER_H diff --git a/qmake/include/private/qimageformatinterface_p.h b/qmake/include/private/qimageformatinterface_p.h new file mode 100644 index 0000000..5f7601c --- a/dev/null +++ b/qmake/include/private/qimageformatinterface_p.h @@ -0,0 +1,75 @@ +/**************************************************************************** +** $Id$ +** +** Definition of ??? +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QIMAGEFORMATINTERFACE_H +#define QIMAGEFORMATINTERFACE_H + +#ifndef QT_H +#include <private/qcom_p.h> +#endif // QT_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of internal files. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_NO_COMPONENT + +// {04903F05-54B1-4726-A849-FB5CB097CA87} +#ifndef IID_QImageFormat +#define IID_QImageFormat QUuid( 0x04903f05, 0x54b1, 0x4726, 0xa8, 0x49, 0xfb, 0x5c, 0xb0, 0x97, 0xca, 0x87 ) +#endif + +class QImage; + +struct Q_EXPORT QImageFormatInterface : public QFeatureListInterface +{ + virtual QRESULT loadImage( const QString &format, const QString &filename, QImage * ) = 0; + virtual QRESULT saveImage( const QString &format, const QString &filename, const QImage & ) = 0; + + virtual QRESULT installIOHandler( const QString & ) = 0; +}; + +#endif // QT_NO_COMPONENT + +#endif // QIMAGEFORMATINTERFACE_H diff --git a/qmake/include/private/qinputcontext_p.h b/qmake/include/private/qinputcontext_p.h new file mode 100644 index 0000000..9ac0d2b --- a/dev/null +++ b/qmake/include/private/qinputcontext_p.h @@ -0,0 +1,121 @@ +/**************************************************************************** +** $Id$ +** +** Definition of ??? +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QINPUTCONTEXT_P_H +#define QINPUTCONTEXT_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of internal files. This header file may change from version to version +// without notice, or even be removed. +// +// We mean it. +// +// + +#include <qglobal.h> + +class QKeyEvent; +class QWidget; +class QFont; +class QString; + + +#ifdef Q_WS_X11 +#include "qarray.h" +#include "qwindowdefs.h" +#include "qt_x11.h" +#endif + +#ifdef Q_WS_WIN +#include <qt_windows.h> +#endif + +#ifdef Q_WS_QWS +class QWSIMEvent; +#endif + +class QInputContext +{ +public: +#ifdef Q_WS_X11 + QInputContext(QWidget *); // should be a toplevel widget + ~QInputContext(); + + void setFocus(); + void setComposePosition(int, int); + void setComposeArea(int, int, int, int); + void reset(); + + int lookupString(XKeyEvent *, QCString &, KeySym *, Status *) const; + void setXFontSet(const QFont &); + + void *ic; + QString text, lastcompose; + QWidget *focusWidget; + bool composing; + QFont font; + XFontSet fontset; + QMemArray<bool> selectedChars; +#endif // Q_WS_X11 + +#ifdef Q_WS_QWS + static void translateIMEvent( QWSIMEvent *, QWidget * ); + static void reset(); +private: + static QWidget* focusWidget; + static QString* composition; +#endif //Q_WS_QWS + +#ifdef Q_WS_WIN + static void init(); + static void shutdown(); + + static void TranslateMessage( const MSG *msg); + static LRESULT DefWindowProc( HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam ); + + static void setFont( const QWidget *w, const QFont & ); + static void setFocusHint( int x, int y, int w, int h, const QWidget *widget ); + static bool startComposition(); + static bool endComposition( QWidget *fw = 0 ); + static bool composition( LPARAM lparam ); +#endif +}; + +#endif // QINPUTCONTEXT_P_H diff --git a/qmake/include/private/qinternal_p.h b/qmake/include/private/qinternal_p.h new file mode 100644 index 0000000..ae38695 --- a/dev/null +++ b/qmake/include/private/qinternal_p.h @@ -0,0 +1,157 @@ +/**************************************************************************** +** $Id$ +** +** Definition of some shared interal classes +** +** Created : 010427 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QINTERNAL_P_H +#define QINTERNAL_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// +#ifndef QT_H +#include <qnamespace.h> +#include <qrect.h> +#endif // QT_H + +class QWidget; +class QPainter; +class QPixmap; + +class Q_EXPORT QSharedDoubleBuffer +{ +public: + enum DoubleBufferFlags { + NoFlags = 0x00, + InitBG = 0x01, + Force = 0x02, + Default = InitBG | Force + }; + typedef uint DBFlags; + + QSharedDoubleBuffer( DBFlags f = Default ); + QSharedDoubleBuffer( QWidget* widget, + int x = 0, int y = 0, int w = -1, int h = -1, + DBFlags f = Default ); + QSharedDoubleBuffer( QPainter* painter, + int x = 0, int y = 0, int w = -1, int h = -1, + DBFlags f = Default ); + QSharedDoubleBuffer( QWidget *widget, const QRect &r, DBFlags f = Default ); + QSharedDoubleBuffer( QPainter *painter, const QRect &r, DBFlags f = Default ); + ~QSharedDoubleBuffer(); + + bool begin( QWidget* widget, int x = 0, int y = 0, int w = -1, int h = -1 ); + bool begin( QPainter* painter, int x = 0, int y = 0, int w = -1, int h = -1); + bool begin( QWidget* widget, const QRect &r ); + bool begin( QPainter* painter, const QRect &r ); + bool end(); + + QPainter* painter() const; + + bool isActive() const; + bool isBuffered() const; + void flush(); + + static bool isDisabled() { return !dblbufr; } + static void setDisabled( bool off ) { dblbufr = !off; } + + static void cleanup(); + +private: + enum DoubleBufferState { + Active = 0x0100, + BufferActive = 0x0200, + ExternalPainter = 0x0400 + }; + typedef uint DBState; + + QPixmap *getPixmap(); + void releasePixmap(); + + QWidget *wid; + int rx, ry, rw, rh; + DBFlags flags; + DBState state; + + QPainter *p, *external_p; + QPixmap *pix; + + static bool dblbufr; +}; + +inline bool QSharedDoubleBuffer::begin( QWidget* widget, const QRect &r ) +{ return begin( widget, r.x(), r.y(), r.width(), r.height() ); } + +inline bool QSharedDoubleBuffer::begin( QPainter *painter, const QRect &r ) +{ return begin( painter, r.x(), r.y(), r.width(), r.height() ); } + +inline QPainter* QSharedDoubleBuffer::painter() const +{ return p; } + +inline bool QSharedDoubleBuffer::isActive() const +{ return ( state & Active ); } + +inline bool QSharedDoubleBuffer::isBuffered() const +{ return ( state & BufferActive ); } + + +class QVirtualDestructor { +public: + virtual ~QVirtualDestructor() {} +}; + +template <class T> +class QAutoDeleter : public QVirtualDestructor { +public: + QAutoDeleter( T* p ) : ptr( p ) {} + ~QAutoDeleter() { delete ptr; } +private: + T* ptr; +}; + +template <class T> +QAutoDeleter<T>* qAutoDeleter( T* p ) +{ + return new QAutoDeleter<T>( p ); +} +#endif // QINTERNAL_P_H diff --git a/qmake/include/private/qkbddriverinterface_p.h b/qmake/include/private/qkbddriverinterface_p.h new file mode 100644 index 0000000..efc7ded --- a/dev/null +++ b/qmake/include/private/qkbddriverinterface_p.h @@ -0,0 +1,56 @@ +/**************************************************************************** +** $Id$ +** +** Definition of Qt/Embedded Keyboard Driver Interface +** +** Created : 20020218 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses for Qt/Embedded may use this file in accordance with the +** Qt Embedded Commercial License Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QKBDDRIVERINTERFACE_H +#define QKBDDRIVERINTERFACE_H + +#ifndef QT_H +#include <private/qcom_p.h> +#endif // QT_H + +#ifndef QT_NO_COMPONENT + +// {C7C838EA-FC3E-4905-92AD-F479E81F1D02} +#ifndef IID_QKbdDriver +#define IID_QKbdDriver QUuid( 0xc7c838ea, 0xfc3e, 0x4905, 0x92, 0xad, 0xf4, 0x79, 0xe8, 0x1f, 0x1d, 0x02) +#endif + +class QWSKeyboardHandler; + +struct Q_EXPORT QKbdDriverInterface : public QFeatureListInterface +{ + virtual QWSKeyboardHandler* create( const QString& driver, const QString& device ) = 0; +}; + +#endif // QT_NO_COMPONENT + +#endif // QKBDDRIVERINTERFACE_H diff --git a/qmake/include/private/qlayoutengine_p.h b/qmake/include/private/qlayoutengine_p.h new file mode 100644 index 0000000..4d88afe --- a/dev/null +++ b/qmake/include/private/qlayoutengine_p.h @@ -0,0 +1,128 @@ +/**************************************************************************** +** $Id$ +** +** Internal header file. +** +** Created : 981027 +** +** Copyright (C) 1998-99 by Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QLAYOUTENGINE_P_H +#define QLAYOUTENGINE_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qlayout.cpp, qlayoutengine.cpp, qmainwindow.cpp and qsplitter.cpp. +// This header file may change from version to version without notice, +// or even be removed. +// +// We mean it. +// +// + + +#ifndef QT_H +#include "qabstractlayout.h" +#endif // QT_H + +#ifndef QT_NO_LAYOUT + +struct QLayoutStruct +{ + void initParameters() { + minimumSize = sizeHint = 0; + maximumSize = QLAYOUTSIZE_MAX; + expansive = FALSE; + empty = TRUE; + } + void init() { + stretch = 0; + initParameters(); + } + + QCOORD smartSizeHint() { + return ( stretch > 0 ) ? minimumSize : sizeHint; + } + + // permanent storage + int stretch; + + // parameters + QCOORD sizeHint; + QCOORD maximumSize; + QCOORD minimumSize; + bool expansive; + bool empty; + + // temporary storage + bool done; + + // result + int pos; + int size; +}; + + +Q_EXPORT void qGeomCalc( QMemArray<QLayoutStruct> &chain, int start, int count, + int pos, int space, int spacer ); +Q_EXPORT QSize qSmartMinSize( const QWidgetItem *i ); +Q_EXPORT QSize qSmartMinSize( QWidget *w ); +Q_EXPORT QSize qSmartMaxSize( const QWidgetItem *i, int align = 0 ); +Q_EXPORT QSize qSmartMaxSize( QWidget *w, int align = 0 ); + + +/* + Modify total maximum (max) and total expansion (exp) + when adding boxmax/boxexp. + + Expansive boxes win over non-expansive boxes. +*/ +static inline void qMaxExpCalc( QCOORD & max, bool &exp, + QCOORD boxmax, bool boxexp ) +{ + if ( exp ) { + if ( boxexp ) + max = QMAX( max, boxmax ); + } else { + if ( boxexp ) + max = boxmax; + else + max = QMIN( max, boxmax ); + } + exp = exp || boxexp; +} + +#endif //QT_NO_LAYOUT +#endif diff --git a/qmake/include/private/qlibrary_p.h b/qmake/include/private/qlibrary_p.h new file mode 100644 index 0000000..c4dd565 --- a/dev/null +++ b/qmake/include/private/qlibrary_p.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** $Id$ +** +** Definition of an internal QLibrary class +** +** Created : 2000-01-01 +** +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QLIBRARY_P_H +#define QLIBRARY_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the QLibrary class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +#include "qlibrary.h" + +#ifndef QT_NO_LIBRARY + +#ifndef QT_H +#if defined(Q_CC_GNU) +#warning "avoid including header file \"qwindowdefs.h\" in directory 'tools'" +#endif +#include "qwindowdefs.h" +#endif // QT_H + +class QLibraryPrivate +{ +public: + QLibraryPrivate( QLibrary *lib ); + +#ifdef Q_WS_WIN + HINSTANCE pHnd; +#else + void *pHnd; +#endif + + bool loadLibrary(); + bool freeLibrary(); + void *resolveSymbol( const char * ); + +private: + QLibrary *library; +}; + +#endif // QT_NO_LIBRARY +#endif // QLIBRARY_P_H diff --git a/qmake/include/private/qmousedriverinterface_p.h b/qmake/include/private/qmousedriverinterface_p.h new file mode 100644 index 0000000..fd76308 --- a/dev/null +++ b/qmake/include/private/qmousedriverinterface_p.h @@ -0,0 +1,56 @@ +/**************************************************************************** +** $Id$ +** +** Definition of Qt/Embedded Mouse Driver Interface +** +** Created : 20020220 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses for Qt/Embedded may use this file in accordance with the +** Qt Embedded Commercial License Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QMOUSEDRIVERINTERFACE_H +#define QMOUSEDRIVERINTERFACE_H + +#ifndef QT_H +#include <private/qcom_p.h> +#endif // QT_H + +#ifndef QT_NO_COMPONENT + +// {4367CF5A-F7CE-407B-8BB6-DF19AEDA2EBB} +#ifndef IID_QMouseDriver +#define IID_QMouseDriver QUuid( 0x4367cf5a, 0xf7ce, 0x407b, 0x8b, 0xb6, 0xdf, 0x19, 0xae, 0xda, 0x2e, 0xbb) +#endif + +class QWSMouseHandler; + +struct Q_EXPORT QMouseDriverInterface : public QFeatureListInterface +{ + virtual QWSMouseHandler* create( const QString& driver, const QString &device ) = 0; +}; + +#endif // QT_NO_COMPONENT + +#endif // QMOUSEDRIVERINTERFACE_H diff --git a/qmake/include/private/qmutex_p.h b/qmake/include/private/qmutex_p.h new file mode 100644 index 0000000..d4ce97a --- a/dev/null +++ b/qmake/include/private/qmutex_p.h @@ -0,0 +1,70 @@ +/**************************************************************************** +** $Id$ +** +** QMutex private class declarations +** +** Created : 20012507 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QMUTEX_P_H +#define QMUTEX_P_H + +#ifndef QT_H +#endif // QT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qmutex_unix.cpp and qmutex_win.cpp. This header file may change +// from version to version without notice, or even be removed. +// +// We mean it. +// + +class QMutexPrivate { +public: + // Q_MUTEX_T is defined in the various *.cpp files + Q_MUTEX_T handle; + + virtual ~QMutexPrivate(); + + virtual void lock() = 0; + virtual void unlock() = 0; + virtual bool locked() = 0; + virtual bool trylock() = 0; + virtual int type() const = 0; +}; + + +#endif // QMUTEX_P_H diff --git a/qmake/include/private/qmutexpool_p.h b/qmake/include/private/qmutexpool_p.h new file mode 100644 index 0000000..3d9fef7 --- a/dev/null +++ b/qmake/include/private/qmutexpool_p.h @@ -0,0 +1,39 @@ +#ifndef QMUTEXPOOL_H +#define QMUTEXPOOL_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of QSettings. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// +// + +#ifdef QT_THREAD_SUPPORT + +#include "qmutex.h" +#include "qmemarray.h" + +class QMutexPool +{ +public: + QMutexPool( bool recursive = FALSE, int size = 17 ); + ~QMutexPool(); + + QMutex *get( void *address ); + +private: + QMutex mutex; + QMemArray<QMutex*> mutexes; + bool recurs; +}; + +extern QMutexPool *qt_global_mutexpool; + +#endif // QT_THREAD_SUPPORT + +#endif // QMUTEXPOOL_H diff --git a/qmake/include/private/qpainter_p.h b/qmake/include/private/qpainter_p.h new file mode 100644 index 0000000..43f454e --- a/dev/null +++ b/qmake/include/private/qpainter_p.h @@ -0,0 +1,63 @@ +/**************************************************************************** +** $Id$ +** +** Definition of some Qt private functions. +** +** Created : 000909 +** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QPAINTER_P_H +#define QPAINTER_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qpainter.cpp and qfont.cpp. This header file may change +// from version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#endif // QT_H + +extern void qt_format_text( const QFont& f, const QRect &r, + int tf, const QString& str, int len, QRect *brect, + int tabstops, int* tabarray, int tabarraylen, + QTextParag **internal, QPainter* painter ); + + +#endif diff --git a/qmake/include/private/qpluginmanager_p.h b/qmake/include/private/qpluginmanager_p.h new file mode 100644 index 0000000..4b64ba0 --- a/dev/null +++ b/qmake/include/private/qpluginmanager_p.h @@ -0,0 +1,73 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QPluginManager class +** +** Created : 2000-01-01 +** +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QPLUGINMANAGER_H +#define QPLUGINMANAGER_H + +#ifndef QT_H +#include "qgpluginmanager_p.h" +#endif // QT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_NO_COMPONENT + +template<class Type> +class QPluginManager : public QGPluginManager +{ +public: + QPluginManager( const QUuid& id, const QStringList& paths = QString::null, const QString &suffix = QString::null, bool cs = TRUE ) + : QGPluginManager( id, paths, suffix, cs ) {} + QRESULT queryInterface(const QString& feature, Type** iface) const + { + return queryUnknownInterface( feature, (QUnknownInterface**)iface ); + } +}; + +#endif //QT_NO_COMPONENT + +#endif //QPLUGINMANAGER_H diff --git a/qmake/include/private/qpsprinter_p.h b/qmake/include/private/qpsprinter_p.h new file mode 100644 index 0000000..27a4968 --- a/dev/null +++ b/qmake/include/private/qpsprinter_p.h @@ -0,0 +1,89 @@ +/********************************************************************** +** $Id$ +** +** Definition of internal QPSPrinter class. +** QPSPrinter implements PostScript (tm) output via QPrinter. +** +** Created : 940927 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QPSPRINTER_P_H +#define QPSPRINTER_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qpsprinter.cpp and qprinter_x11.cpp. +// This header file may change from version to version without notice, +// or even be removed. +// +// We mean it. +// +// + + +#ifndef QT_H +#include "qprinter.h" +#include "qtextstream.h" +#endif // QT_H + +#ifndef QT_NO_PRINTER + +struct QPSPrinterPrivate; + +class Q_EXPORT QPSPrinter : public QPaintDevice +{ +private: + // QPrinter uses these + QPSPrinter( QPrinter *, int ); + ~QPSPrinter(); + + bool cmd ( int, QPainter *, QPDevCmdParam * ); + + enum { NewPage = 100, AbortPrinting }; + + friend class QPrinter; +private: + // not used by QPrinter + QPSPrinterPrivate *d; + + // Disabled copy constructor and operator= + QPSPrinter( const QPSPrinter & ); + QPSPrinter &operator=( const QPSPrinter & ); +}; + +#endif // QT_NO_PRINTER + +#endif // QPSPRINTER_P_H diff --git a/qmake/include/private/qrichtext_p.h b/qmake/include/private/qrichtext_p.h new file mode 100644 index 0000000..8e29804 --- a/dev/null +++ b/qmake/include/private/qrichtext_p.h @@ -0,0 +1,2133 @@ +/**************************************************************************** +** $Id$ +** +** Definition of internal rich text classes +** +** Created : 990124 +** +** Copyright (C) 1999-2002 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QRICHTEXT_P_H +#define QRICHTEXT_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include "qstring.h" +#include "qptrlist.h" +#include "qrect.h" +#include "qfontmetrics.h" +#include "qintdict.h" +#include "qmap.h" +#include "qstringlist.h" +#include "qfont.h" +#include "qcolor.h" +#include "qsize.h" +#include "qvaluelist.h" +#include "qvaluestack.h" +#include "qobject.h" +#include "qdict.h" +#include "qpixmap.h" +#include "qstylesheet.h" +#include "qptrvector.h" +#include "qpainter.h" +#include "qlayout.h" +#include "qobject.h" +#include "private/qcomplextext_p.h" +#include "qapplication.h" +#endif // QT_H + +#ifndef QT_NO_RICHTEXT + +class QTextDocument; +class QTextString; +class QTextPreProcessor; +class QTextFormat; +class QTextCursor; +class QTextParagraph; +class QTextFormatter; +class QTextIndent; +class QTextFormatCollection; +class QStyleSheetItem; +#ifndef QT_NO_TEXTCUSTOMITEM +class QTextCustomItem; +#endif +class QTextFlow; +struct QBidiContext; + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +class Q_EXPORT QTextStringChar +{ + friend class QTextString; + +public: + // this is never called, initialize variables in QTextString::insert()!!! + QTextStringChar() : lineStart( 0 ), type( Regular ), startOfRun( 0 ) {d.format=0;} + ~QTextStringChar(); + + QChar c; + enum Type { Regular=0, Custom=1, Anchor=2, CustomAnchor=3 }; + uint lineStart : 1; + uint rightToLeft : 1; + uint hasCursor : 1; + uint canBreak : 1; + Type type : 2; + uint startOfRun : 1; + + int x; + int height() const; + int ascent() const; + int descent() const; + bool isCustom() const { return (type & Custom) != 0; } + QTextFormat *format() const; +#ifndef QT_NO_TEXTCUSTOMITEM + QTextCustomItem *customItem() const; +#endif + void setFormat( QTextFormat *f ); +#ifndef QT_NO_TEXTCUSTOMITEM + void setCustomItem( QTextCustomItem *i ); +#endif + struct CustomData + { + QTextFormat *format; +#ifndef QT_NO_TEXTCUSTOMITEM + QTextCustomItem *custom; +#endif + QString anchorName; + QString anchorHref; + }; + +#ifndef QT_NO_TEXTCUSTOMITEM + void loseCustomItem(); +#endif + + union { + QTextFormat* format; + CustomData* custom; + } d; + + bool isAnchor() const { return ( type & Anchor) != 0; } + bool isLink() const { return isAnchor() && !!d.custom->anchorHref; } + QString anchorName() const; + QString anchorHref() const; + void setAnchor( const QString& name, const QString& href ); + +private: + QTextStringChar &operator=( const QTextStringChar & ) { + //abort(); + return *this; + } + friend class QComplexText; + friend class QTextParagraph; +}; + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QMemArray<QTextStringChar>; +// MOC_SKIP_END +#endif + +class Q_EXPORT QTextString +{ +public: + + QTextString(); + QTextString( const QTextString &s ); + virtual ~QTextString(); + + static QString toString( const QMemArray<QTextStringChar> &data ); + QString toString() const; + + QTextStringChar &at( int i ) const; +#if defined(Q_STRICT_INLINING_RULES) + // This is for the IRIX MIPSpro o32 ABI - it fails, claiming the + // implementation to be a redefinition. + inline int length() const; +#else + int length() const; +#endif + + int width( int idx ) const; + + void insert( int index, const QString &s, QTextFormat *f ); + void insert( int index, const QChar *unicode, int len, QTextFormat *f ); + void insert( int index, QTextStringChar *c, bool doAddRefFormat = FALSE ); + void truncate( int index ); + void remove( int index, int len ); + void clear(); + + void setFormat( int index, QTextFormat *f, bool useCollection ); + + void setBidi( bool b ) { bidi = b; } + bool isBidi() const; + bool isRightToLeft() const; + QChar::Direction direction() const; + void setDirection( QChar::Direction d ) { dir = d; bidiDirty = TRUE; } + + QMemArray<QTextStringChar> subString( int start = 0, int len = 0xFFFFFF ) const; + QMemArray<QTextStringChar> rawData() const { return data.copy(); } + + void operator=( const QString &s ) { clear(); insert( 0, s, 0 ); } + void operator+=( const QString &s ) { insert( length(), s, 0 ); } + void prepend( const QString &s ) { insert( 0, s, 0 ); } + +private: + void checkBidi() const; + + QMemArray<QTextStringChar> data; + uint bidiDirty : 1; + uint bidi : 1; // true when the paragraph has right to left characters + uint rightToLeft : 1; + uint dir : 5; +}; + +inline bool QTextString::isBidi() const +{ + if ( bidiDirty ) + checkBidi(); + return bidi; +} + +inline bool QTextString::isRightToLeft() const +{ + if ( bidiDirty ) + checkBidi(); + return rightToLeft; +} + +inline QChar::Direction QTextString::direction() const +{ + return (QChar::Direction) dir; +} + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QValueStack<int>; +Q_TEMPLATE_EXTERN template class Q_EXPORT QValueStack<QTextParagraph*>; +Q_TEMPLATE_EXTERN template class Q_EXPORT QValueStack<bool>; +// MOC_SKIP_END +#endif + +class Q_EXPORT QTextCursor +{ +public: + QTextCursor( QTextDocument *d = 0 ); + QTextCursor( const QTextCursor &c ); + QTextCursor &operator=( const QTextCursor &c ); + virtual ~QTextCursor() {} + + bool operator==( const QTextCursor &c ) const; + bool operator!=( const QTextCursor &c ) const { return !(*this == c); } + +#if defined(Q_STRICT_INLINING_RULES) + // This is for the IRIX MIPSpro o32 ABI - it fails, claiming the + // implementation to be a redefinition. + inline QTextParagraph *paragraph() const; +#else + QTextParagraph *paragraph() const; +#endif + + void setParagraph( QTextParagraph*p ) { gotoPosition(p, 0 ); } + QTextDocument *document() const; + int index() const; + void setIndex( int index ) { gotoPosition(paragraph(), index ); } + + void gotoPosition( QTextParagraph* p, int index = 0); + void gotoLeft(); + void gotoRight(); + void gotoNextLetter(); + void gotoPreviousLetter(); + void gotoUp(); + void gotoDown(); + void gotoLineEnd(); + void gotoLineStart(); + void gotoHome(); + void gotoEnd(); + void gotoPageUp( int visibleHeight ); + void gotoPageDown( int visibleHeight ); + void gotoNextWord(); + void gotoPreviousWord(); + void gotoWordLeft(); + void gotoWordRight(); + + void insert( const QString &s, bool checkNewLine, QMemArray<QTextStringChar> *formatting = 0 ); + void splitAndInsertEmptyParagraph( bool ind = TRUE, bool updateIds = TRUE ); + bool remove(); + void indent(); + + bool atParagStart(); + bool atParagEnd(); + + int x() const; // x in current paragraph + int y() const; // y in current paragraph + + int globalX() const; + int globalY() const; + + QTextParagraph *topParagraph() const { return paras.isEmpty() ? para : paras.first(); } + int offsetX() const { return ox; } // inner document offset + int offsetY() const { return oy; } // inner document offset + int totalOffsetX() const; // total document offset + int totalOffsetY() const; // total document offset + + bool place( const QPoint &pos, QTextParagraph *s ) { return place( pos, s, FALSE ); } + bool place( const QPoint &pos, QTextParagraph *s, bool link ); + void restoreState(); + + + int nestedDepth() const { return (int)indices.count(); } //### size_t/int cast + void oneUp() { if ( !indices.isEmpty() ) pop(); } + void setValid( bool b ) { valid = b; } + bool isValid() const { return valid; } + +private: + enum Operation { EnterBegin, EnterEnd, Next, Prev, Up, Down }; + + void push(); + void pop(); + void processNesting( Operation op ); + void invalidateNested(); + void gotoIntoNested( const QPoint &globalPos ); + + QTextParagraph *para; + int idx, tmpIndex; + int ox, oy; + QValueStack<int> indices; + QValueStack<QTextParagraph*> paras; + QValueStack<int> xOffsets; + QValueStack<int> yOffsets; + uint valid : 1; + +}; + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +class Q_EXPORT QTextCommand +{ +public: + enum Commands { Invalid, Insert, Delete, Format, Style }; + + QTextCommand( QTextDocument *d ) : doc( d ), cursor( d ) {} + virtual ~QTextCommand(); + + virtual Commands type() const; + + virtual QTextCursor *execute( QTextCursor *c ) = 0; + virtual QTextCursor *unexecute( QTextCursor *c ) = 0; + +protected: + QTextDocument *doc; + QTextCursor cursor; + +}; + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QPtrList<QTextCommand>; +// MOC_SKIP_END +#endif + +class Q_EXPORT QTextCommandHistory +{ +public: + QTextCommandHistory( int s ) : current( -1 ), steps( s ) { history.setAutoDelete( TRUE ); } + virtual ~QTextCommandHistory(); + + void clear() { history.clear(); current = -1; } + + void addCommand( QTextCommand *cmd ); + QTextCursor *undo( QTextCursor *c ); + QTextCursor *redo( QTextCursor *c ); + + bool isUndoAvailable(); + bool isRedoAvailable(); + + void setUndoDepth( int d ) { steps = d; } + int undoDepth() const { return steps; } + + int historySize() const { return history.count(); } + int currentPosition() const { return current; } + +private: + QPtrList<QTextCommand> history; + int current, steps; + +}; + +inline QTextCommandHistory::~QTextCommandHistory() +{ + clear(); +} + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +#ifndef QT_NO_TEXTCUSTOMITEM +class Q_EXPORT QTextCustomItem +{ +public: + QTextCustomItem( QTextDocument *p ) + : xpos(0), ypos(-1), width(-1), height(0), parent( p ) + {} + virtual ~QTextCustomItem(); + virtual void draw(QPainter* p, int x, int y, int cx, int cy, int cw, int ch, const QColorGroup& cg, bool selected ) = 0; + + virtual void adjustToPainter( QPainter* ); + + enum Placement { PlaceInline = 0, PlaceLeft, PlaceRight }; + virtual Placement placement() const; + bool placeInline() { return placement() == PlaceInline; } + + virtual bool ownLine() const; + virtual void resize( int nwidth ); + virtual void invalidate(); + virtual int ascent() const { return height; } + + virtual bool isNested() const; + virtual int minimumWidth() const; + + virtual QString richText() const; + + int xpos; // used for floating items + int ypos; // used for floating items + int width; + int height; + + QRect geometry() const { return QRect( xpos, ypos, width, height ); } + + virtual bool enter( QTextCursor *, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy, bool atEnd = FALSE ); + virtual bool enterAt( QTextCursor *, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy, const QPoint & ); + virtual bool next( QTextCursor *, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); + virtual bool prev( QTextCursor *, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); + virtual bool down( QTextCursor *, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); + virtual bool up( QTextCursor *, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); + + void setParagraph( QTextParagraph *p ) { parag = p; } + QTextParagraph *paragraph() const { return parag; } + + QTextDocument *parent; + QTextParagraph *parag; + + virtual void pageBreak( int y, QTextFlow* flow ); +}; +#endif + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QMap<QString, QString>; +// MOC_SKIP_END +#endif + +#ifndef QT_NO_TEXTCUSTOMITEM +class Q_EXPORT QTextImage : public QTextCustomItem +{ +public: + QTextImage( QTextDocument *p, const QMap<QString, QString> &attr, const QString& context, + QMimeSourceFactory &factory ); + virtual ~QTextImage(); + + Placement placement() const { return place; } + void adjustToPainter( QPainter* ); + int minimumWidth() const { return width; } + + QString richText() const; + + void draw( QPainter* p, int x, int y, int cx, int cy, int cw, int ch, const QColorGroup& cg, bool selected ); + +private: + QRegion* reg; + QPixmap pm; + Placement place; + int tmpwidth, tmpheight; + QMap<QString, QString> attributes; + QString imgId; + +}; +#endif + +#ifndef QT_NO_TEXTCUSTOMITEM +class Q_EXPORT QTextHorizontalLine : public QTextCustomItem +{ +public: + QTextHorizontalLine( QTextDocument *p, const QMap<QString, QString> &attr, const QString& context, + QMimeSourceFactory &factory ); + virtual ~QTextHorizontalLine(); + + void adjustToPainter( QPainter* ); + void draw(QPainter* p, int x, int y, int cx, int cy, int cw, int ch, const QColorGroup& cg, bool selected ); + QString richText() const; + + bool ownLine() const { return TRUE; } + +private: + int tmpheight; + QColor color; + bool shade; + +}; +#endif + +#ifndef QT_NO_TEXTCUSTOMITEM +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QPtrList<QTextCustomItem>; +// MOC_SKIP_END +#endif +#endif + +class Q_EXPORT QTextFlow +{ + friend class QTextDocument; +#ifndef QT_NO_TEXTCUSTOMITEM + friend class QTextTableCell; +#endif + +public: + QTextFlow(); + virtual ~QTextFlow(); + + virtual void setWidth( int width ); + int width() const; + + virtual void setPageSize( int ps ); + int pageSize() const { return pagesize; } + + virtual int adjustLMargin( int yp, int h, int margin, int space ); + virtual int adjustRMargin( int yp, int h, int margin, int space ); + +#ifndef QT_NO_TEXTCUSTOMITEM + virtual void registerFloatingItem( QTextCustomItem* item ); + virtual void unregisterFloatingItem( QTextCustomItem* item ); +#endif + virtual QRect boundingRect() const; + virtual void drawFloatingItems(QPainter* p, int cx, int cy, int cw, int ch, const QColorGroup& cg, bool selected ); + + virtual int adjustFlow( int y, int w, int h ); // adjusts y according to the defined pagesize. Returns the shift. + + virtual bool isEmpty(); + + void clear(); + +private: + int w; + int pagesize; + +#ifndef QT_NO_TEXTCUSTOMITEM + QPtrList<QTextCustomItem> leftItems; + QPtrList<QTextCustomItem> rightItems; +#endif +}; + +inline int QTextFlow::width() const { return w; } + +#ifndef QT_NO_TEXTCUSTOMITEM +class QTextTable; + +class Q_EXPORT QTextTableCell : public QLayoutItem +{ + friend class QTextTable; + +public: + QTextTableCell( QTextTable* table, + int row, int column, + const QMap<QString, QString> &attr, + const QStyleSheetItem* style, + const QTextFormat& fmt, const QString& context, + QMimeSourceFactory &factory, QStyleSheet *sheet, const QString& doc ); + virtual ~QTextTableCell(); + + QSize sizeHint() const ; + QSize minimumSize() const ; + QSize maximumSize() const ; + QSizePolicy::ExpandData expanding() const; + bool isEmpty() const; + void setGeometry( const QRect& ) ; + QRect geometry() const; + + bool hasHeightForWidth() const; + int heightForWidth( int ) const; + + void adjustToPainter( QPainter* ); + + int row() const { return row_; } + int column() const { return col_; } + int rowspan() const { return rowspan_; } + int colspan() const { return colspan_; } + int stretch() const { return stretch_; } + + QTextDocument* richText() const { return richtext; } + QTextTable* table() const { return parent; } + + void draw( QPainter* p, int x, int y, int cx, int cy, int cw, int ch, const QColorGroup& cg, bool selected ); + + QBrush *backGround() const { return background; } + virtual void invalidate(); + + int verticalAlignmentOffset() const; + int horizontalAlignmentOffset() const; + +private: + QRect geom; + QTextTable* parent; + QTextDocument* richtext; + int row_; + int col_; + int rowspan_; + int colspan_; + int stretch_; + int maxw; + int minw; + bool hasFixedWidth; + QBrush *background; + int cached_width; + int cached_sizehint; + QMap<QString, QString> attributes; + int align; +}; +#endif + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QPtrList<QTextTableCell>; +Q_TEMPLATE_EXTERN template class Q_EXPORT QMap<QTextCursor*, int>; +// MOC_SKIP_END +#endif + +#ifndef QT_NO_TEXTCUSTOMITEM +class Q_EXPORT QTextTable: public QTextCustomItem +{ + friend class QTextTableCell; + +public: + QTextTable( QTextDocument *p, const QMap<QString, QString> &attr ); + virtual ~QTextTable(); + + void adjustToPainter( QPainter *p ); + void pageBreak( int y, QTextFlow* flow ); + void draw( QPainter* p, int x, int y, int cx, int cy, int cw, int ch, + const QColorGroup& cg, bool selected ); + + bool noErase() const { return TRUE; } + bool ownLine() const { return TRUE; } + Placement placement() const { return place; } + bool isNested() const { return TRUE; } + void resize( int nwidth ); + virtual void invalidate(); + + virtual bool enter( QTextCursor *c, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy, bool atEnd = FALSE ); + virtual bool enterAt( QTextCursor *c, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy, const QPoint &pos ); + virtual bool next( QTextCursor *c, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); + virtual bool prev( QTextCursor *c, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); + virtual bool down( QTextCursor *c, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); + virtual bool up( QTextCursor *c, QTextDocument *&doc, QTextParagraph *¶g, int &idx, int &ox, int &oy ); + + QString richText() const; + + int minimumWidth() const; + + QPtrList<QTextTableCell> tableCells() const { return cells; } + + bool isStretching() const { return stretch; } + +private: + void format( int w ); + void addCell( QTextTableCell* cell ); + +private: + QGridLayout* layout; + QPtrList<QTextTableCell> cells; + int cachewidth; + int fixwidth; + int cellpadding; + int cellspacing; + int border; + int outerborder; + int stretch; + int innerborder; + int us_cp, us_ib, us_b, us_ob, us_cs; + QMap<QString, QString> attributes; + QMap<QTextCursor*, int> currCell; + Placement place; + void adjustCells( int y , int shift ); + int pageBreakFor; +}; +#endif +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +#ifndef QT_NO_TEXTCUSTOMITEM +class QTextTableCell; +class QTextParagraph; +#endif + +struct Q_EXPORT QTextDocumentSelection +{ + QTextCursor startCursor, endCursor; + bool swapped; +}; + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QMap<int, QColor>; +Q_TEMPLATE_EXTERN template class Q_EXPORT QMap<int, bool>; +Q_TEMPLATE_EXTERN template class Q_EXPORT QMap<int, QTextDocumentSelection>; +Q_TEMPLATE_EXTERN template class Q_EXPORT QPtrList<QTextDocument>; +// MOC_SKIP_END +#endif + +class Q_EXPORT QTextDocument : public QObject +{ + Q_OBJECT + +#ifndef QT_NO_TEXTCUSTOMITEM + friend class QTextTableCell; +#endif + friend class QTextCursor; + friend class QTextEdit; + friend class QTextParagraph; + +public: + enum SelectionIds { + Standard = 0, + IMSelectionText = 31998, + IMCompositionText = 31999, // this must be higher! + Temp = 32000 // This selection must not be drawn, it's used e.g. by undo/redo to + // remove multiple lines with removeSelectedText() + }; + + QTextDocument( QTextDocument *p ); + QTextDocument( QTextDocument *d, QTextFormatCollection *f ); + virtual ~QTextDocument(); + + QTextDocument *parent() const { return par; } + QTextParagraph *parentParagraph() const { return parentPar; } + + void setText( const QString &text, const QString &context ); + QMap<QString, QString> attributes() const { return attribs; } + void setAttributes( const QMap<QString, QString> &attr ) { attribs = attr; } + + QString text() const; + QString text( int parag ) const; + QString originalText() const; + + int x() const; + int y() const; + int width() const; + int widthUsed() const; + int visibleWidth() const; + int height() const; + void setWidth( int w ); + int minimumWidth() const; + bool setMinimumWidth( int needed, int used = -1, QTextParagraph *parag = 0 ); + + void setY( int y ); + int leftMargin() const; + void setLeftMargin( int lm ); + int rightMargin() const; + void setRightMargin( int rm ); + + QTextParagraph *firstParagraph() const; + QTextParagraph *lastParagraph() const; + void setFirstParagraph( QTextParagraph *p ); + void setLastParagraph( QTextParagraph *p ); + + void invalidate(); + + void setPreProcessor( QTextPreProcessor *sh ); + QTextPreProcessor *preProcessor() const; + + void setFormatter( QTextFormatter *f ); + QTextFormatter *formatter() const; + + void setIndent( QTextIndent *i ); + QTextIndent *indent() const; + + QColor selectionColor( int id ) const; + bool invertSelectionText( int id ) const; + void setSelectionColor( int id, const QColor &c ); + void setInvertSelectionText( int id, bool b ); + bool hasSelection( int id, bool visible = FALSE ) const; + void setSelectionStart( int id, const QTextCursor &cursor ); + bool setSelectionEnd( int id, const QTextCursor &cursor ); + void selectAll( int id ); + bool removeSelection( int id ); + void selectionStart( int id, int ¶gId, int &index ); + QTextCursor selectionStartCursor( int id ); + QTextCursor selectionEndCursor( int id ); + void selectionEnd( int id, int ¶gId, int &index ); + void setFormat( int id, QTextFormat *f, int flags ); + int numSelections() const { return nSelections; } + void addSelection( int id ); + + QString selectedText( int id, bool asRichText = FALSE ) const; + void removeSelectedText( int id, QTextCursor *cursor ); + void indentSelection( int id ); + + QTextParagraph *paragAt( int i ) const; + + void addCommand( QTextCommand *cmd ); + QTextCursor *undo( QTextCursor *c = 0 ); + QTextCursor *redo( QTextCursor *c = 0 ); + QTextCommandHistory *commands() const { return commandHistory; } + + QTextFormatCollection *formatCollection() const; + + bool find( QTextCursor &cursor, const QString &expr, bool cs, bool wo, bool forward); + + void setTextFormat( Qt::TextFormat f ); + Qt::TextFormat textFormat() const; + + bool inSelection( int selId, const QPoint &pos ) const; + + QStyleSheet *styleSheet() const { return sheet_; } +#ifndef QT_NO_MIME + QMimeSourceFactory *mimeSourceFactory() const { return factory_; } +#endif + QString context() const { return contxt; } + + void setStyleSheet( QStyleSheet *s ); + void setDefaultFormat( const QFont &font, const QColor &color ); +#ifndef QT_NO_MIME + void setMimeSourceFactory( QMimeSourceFactory *f ) { if ( f ) factory_ = f; } +#endif + void setContext( const QString &c ) { if ( !c.isEmpty() ) contxt = c; } + + void setUnderlineLinks( bool b ); + bool underlineLinks() const { return underlLinks; } + + void setPaper( QBrush *brush ) { if ( backBrush ) delete backBrush; backBrush = brush; } + QBrush *paper() const { return backBrush; } + + void doLayout( QPainter *p, int w ); + void draw( QPainter *p, const QRect& rect, const QColorGroup &cg, const QBrush *paper = 0 ); + void drawParagraph( QPainter *p, QTextParagraph *parag, int cx, int cy, int cw, int ch, + QPixmap *&doubleBuffer, const QColorGroup &cg, + bool drawCursor, QTextCursor *cursor, bool resetChanged = TRUE ); + QTextParagraph *draw( QPainter *p, int cx, int cy, int cw, int ch, const QColorGroup &cg, + bool onlyChanged = FALSE, bool drawCursor = FALSE, QTextCursor *cursor = 0, + bool resetChanged = TRUE ); + +#ifndef QT_NO_TEXTCUSTOMITEM + void registerCustomItem( QTextCustomItem *i, QTextParagraph *p ); + void unregisterCustomItem( QTextCustomItem *i, QTextParagraph *p ); +#endif + + void setFlow( QTextFlow *f ); + void takeFlow(); + QTextFlow *flow() const { return flow_; } + bool isPageBreakEnabled() const { return pages; } + void setPageBreakEnabled( bool b ) { pages = b; } + + void setUseFormatCollection( bool b ) { useFC = b; } + bool useFormatCollection() const { return useFC; } + +#ifndef QT_NO_TEXTCUSTOMITEM + QTextTableCell *tableCell() const { return tc; } + void setTableCell( QTextTableCell *c ) { tc = c; } +#endif + + void setPlainText( const QString &text ); + void setRichText( const QString &text, const QString &context ); + QString richText() const; + QString plainText() const; + + bool focusNextPrevChild( bool next ); + + int alignment() const; + void setAlignment( int a ); + + int *tabArray() const; + int tabStopWidth() const; + void setTabArray( int *a ); + void setTabStops( int tw ); + + void setUndoDepth( int d ) { commandHistory->setUndoDepth( d ); } + int undoDepth() const { return commandHistory->undoDepth(); } + + int length() const; + void clear( bool createEmptyParag = FALSE ); + + virtual QTextParagraph *createParagraph( QTextDocument *d, QTextParagraph *pr = 0, QTextParagraph *nx = 0, bool updateIds = TRUE ); + void insertChild( QObject *o ) { QObject::insertChild( o ); } + void removeChild( QObject *o ) { QObject::removeChild( o ); } + void insertChild( QTextDocument *d ) { childList.append( d ); } + void removeChild( QTextDocument *d ) { childList.removeRef( d ); } + QPtrList<QTextDocument> children() const { return childList; } + + bool hasFocusParagraph() const; + QString focusHref() const; + QString focusName() const; + + void invalidateOriginalText() { oTextValid = FALSE; oText = ""; } + +signals: + void minimumWidthChanged( int ); + +private: + void init(); + QPixmap *bufferPixmap( const QSize &s ); + // HTML parser + bool hasPrefix(const QChar* doc, int length, int pos, QChar c); + bool hasPrefix(const QChar* doc, int length, int pos, const QString& s); +#ifndef QT_NO_TEXTCUSTOMITEM + QTextCustomItem* parseTable( const QMap<QString, QString> &attr, const QTextFormat &fmt, + const QChar* doc, int length, int& pos, QTextParagraph *curpar ); +#endif + bool eatSpace(const QChar* doc, int length, int& pos, bool includeNbsp = FALSE ); + bool eat(const QChar* doc, int length, int& pos, QChar c); + QString parseOpenTag(const QChar* doc, int length, int& pos, QMap<QString, QString> &attr, bool& emptyTag); + QString parseCloseTag( const QChar* doc, int length, int& pos ); + QChar parseHTMLSpecialChar(const QChar* doc, int length, int& pos); + QString parseWord(const QChar* doc, int length, int& pos, bool lower = TRUE); + QChar parseChar(const QChar* doc, int length, int& pos, QStyleSheetItem::WhiteSpaceMode wsm ); + void setRichTextInternal( const QString &text, QTextCursor* cursor = 0 ); + void setRichTextMarginsInternal( QPtrList< QPtrVector<QStyleSheetItem> >& styles, QTextParagraph* stylesPar ); + +private: + struct Q_EXPORT Focus { + QTextParagraph *parag; + int start, len; + QString href; + QString name; + }; + + int cx, cy, cw, vw; + QTextParagraph *fParag, *lParag; + QTextPreProcessor *pProcessor; + QMap<int, QColor> selectionColors; + QMap<int, QTextDocumentSelection> selections; + QMap<int, bool> selectionText; + QTextCommandHistory *commandHistory; + QTextFormatter *pFormatter; + QTextIndent *indenter; + QTextFormatCollection *fCollection; + Qt::TextFormat txtFormat; + uint preferRichText : 1; + uint pages : 1; + uint useFC : 1; + uint withoutDoubleBuffer : 1; + uint underlLinks : 1; + uint nextDoubleBuffered : 1; + uint oTextValid : 1; + uint mightHaveCustomItems : 1; + int align; + int nSelections; + QTextFlow *flow_; + QTextDocument *par; + QTextParagraph *parentPar; +#ifndef QT_NO_TEXTCUSTOMITEM + QTextTableCell *tc; +#endif + QBrush *backBrush; + QPixmap *buf_pixmap; + Focus focusIndicator; + int minw; + int wused; + int leftmargin; + int rightmargin; + QTextParagraph *minwParag, *curParag; + QStyleSheet* sheet_; +#ifndef QT_NO_MIME + QMimeSourceFactory* factory_; +#endif + QString contxt; + QMap<QString, QString> attribs; + int *tArray; + int tStopWidth; + int uDepth; + QString oText; + QPtrList<QTextDocument> childList; + QColor linkColor; + double scaleFontsFactor; + + short list_tm,list_bm, list_lm, li_tm, li_bm, par_tm, par_bm; +#if defined(Q_DISABLE_COPY) // Disabled copy constructor and operator= + QTextDocument( const QTextDocument & ); + QTextDocument &operator=( const QTextDocument & ); +#endif +}; + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + + +class Q_EXPORT QTextDeleteCommand : public QTextCommand +{ +public: + QTextDeleteCommand( QTextDocument *d, int i, int idx, const QMemArray<QTextStringChar> &str, + const QByteArray& oldStyle ); + QTextDeleteCommand( QTextParagraph *p, int idx, const QMemArray<QTextStringChar> &str ); + virtual ~QTextDeleteCommand(); + + Commands type() const { return Delete; } + QTextCursor *execute( QTextCursor *c ); + QTextCursor *unexecute( QTextCursor *c ); + +protected: + int id, index; + QTextParagraph *parag; + QMemArray<QTextStringChar> text; + QByteArray styleInformation; + +}; + +class Q_EXPORT QTextInsertCommand : public QTextDeleteCommand +{ +public: + QTextInsertCommand( QTextDocument *d, int i, int idx, const QMemArray<QTextStringChar> &str, + const QByteArray& oldStyleInfo ) + : QTextDeleteCommand( d, i, idx, str, oldStyleInfo ) {} + QTextInsertCommand( QTextParagraph *p, int idx, const QMemArray<QTextStringChar> &str ) + : QTextDeleteCommand( p, idx, str ) {} + virtual ~QTextInsertCommand() {} + + Commands type() const { return Insert; } + QTextCursor *execute( QTextCursor *c ) { return QTextDeleteCommand::unexecute( c ); } + QTextCursor *unexecute( QTextCursor *c ) { return QTextDeleteCommand::execute( c ); } + +}; + +class Q_EXPORT QTextFormatCommand : public QTextCommand +{ +public: + QTextFormatCommand( QTextDocument *d, int sid, int sidx, int eid, int eidx, const QMemArray<QTextStringChar> &old, QTextFormat *f, int fl ); + virtual ~QTextFormatCommand(); + + Commands type() const { return Format; } + QTextCursor *execute( QTextCursor *c ); + QTextCursor *unexecute( QTextCursor *c ); + +protected: + int startId, startIndex, endId, endIndex; + QTextFormat *format; + QMemArray<QTextStringChar> oldFormats; + int flags; + +}; + +class Q_EXPORT QTextStyleCommand : public QTextCommand +{ +public: + QTextStyleCommand( QTextDocument *d, int fParag, int lParag, const QByteArray& beforeChange ); + virtual ~QTextStyleCommand() {} + + Commands type() const { return Style; } + QTextCursor *execute( QTextCursor *c ); + QTextCursor *unexecute( QTextCursor *c ); + + static QByteArray readStyleInformation( QTextDocument* d, int fParag, int lParag ); + static void writeStyleInformation( QTextDocument* d, int fParag, const QByteArray& style ); + +private: + int firstParag, lastParag; + QByteArray before; + QByteArray after; +}; + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +struct Q_EXPORT QTextParagraphSelection +{ + int start, end; +}; + +struct Q_EXPORT QTextLineStart +{ + QTextLineStart() : y( 0 ), baseLine( 0 ), h( 0 ) +#ifndef QT_NO_COMPLEXTEXT + , bidicontext( 0 ) +#endif + { } + QTextLineStart( ushort y_, ushort bl, ushort h_ ) : y( y_ ), baseLine( bl ), h( h_ ), + w( 0 ) +#ifndef QT_NO_COMPLEXTEXT + , bidicontext( 0 ) +#endif + { } +#ifndef QT_NO_COMPLEXTEXT + QTextLineStart( QBidiContext *c, QBidiStatus s ) : y(0), baseLine(0), h(0), + status( s ), bidicontext( c ) { if ( bidicontext ) bidicontext->ref(); } +#endif + + virtual ~QTextLineStart() + { +#ifndef QT_NO_COMPLEXTEXT + if ( bidicontext && bidicontext->deref() ) + delete bidicontext; +#endif + } + +#ifndef QT_NO_COMPLEXTEXT + void setContext( QBidiContext *c ) { + if ( c == bidicontext ) + return; + if ( bidicontext && bidicontext->deref() ) + delete bidicontext; + bidicontext = c; + if ( bidicontext ) + bidicontext->ref(); + } + QBidiContext *context() const { return bidicontext; } +#endif + +public: + ushort y, baseLine, h; +#ifndef QT_NO_COMPLEXTEXT + QBidiStatus status; +#endif + int w; + +private: +#ifndef QT_NO_COMPLEXTEXT + QBidiContext *bidicontext; +#endif +}; + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QMap<int, QTextParagraphSelection>; +Q_TEMPLATE_EXTERN template class Q_EXPORT QMap<int, QTextLineStart*>; +// MOC_SKIP_END +#endif + +class Q_EXPORT QTextParagraphData +{ +public: + QTextParagraphData() {} + virtual ~QTextParagraphData(); + virtual void join( QTextParagraphData * ); +}; + +class Q_EXPORT QTextParagraphPseudoDocument +{ +public: + QTextParagraphPseudoDocument(); + ~QTextParagraphPseudoDocument(); + QRect docRect; + QTextFormatter *pFormatter; + QTextCommandHistory *commandHistory; + int minw; + int wused; +}; + +//nase +class Q_EXPORT QTextParagraph +{ + friend class QTextDocument; + friend class QTextCursor; + +public: + QTextParagraph( QTextDocument *d, QTextParagraph *pr = 0, QTextParagraph *nx = 0, bool updateIds = TRUE ); + virtual ~QTextParagraph(); + + QTextString *string() const; + QTextStringChar *at( int i ) const; // maybe remove later + int leftGap() const; + int length() const; // maybe remove later + + void setListStyle( QStyleSheetItem::ListStyle ls ) { lstyle = ls; changed = TRUE; } + QStyleSheetItem::ListStyle listStyle() const { return lstyle; } + void setListItem( bool li ); + bool isListItem() const { return litem; } + void setListValue( int v ) { list_val = v; } + int listValue() const { return list_val > 0 ? list_val : -1; } + + void setListDepth( int depth ); + int listDepth() const { return ldepth; } + +// void setFormat( QTextFormat *fm ); +// QTextFormat *paragFormat() const; + + QTextDocument *document() const; + QTextParagraphPseudoDocument *pseudoDocument() const; + + QRect rect() const; + void setHeight( int h ) { r.setHeight( h ); } + void show(); + void hide(); + bool isVisible() const { return visible; } + + QTextParagraph *prev() const; + QTextParagraph *next() const; + void setPrev( QTextParagraph *s ); + void setNext( QTextParagraph *s ); + + void insert( int index, const QString &s ); + void insert( int index, const QChar *unicode, int len ); + void append( const QString &s, bool reallyAtEnd = FALSE ); + void truncate( int index ); + void remove( int index, int len ); + void join( QTextParagraph *s ); + + void invalidate( int chr ); + + void move( int &dy ); + void format( int start = -1, bool doMove = TRUE ); + + bool isValid() const; + bool hasChanged() const; + void setChanged( bool b, bool recursive = FALSE ); + + int lineHeightOfChar( int i, int *bl = 0, int *y = 0 ) const; + QTextStringChar *lineStartOfChar( int i, int *index = 0, int *line = 0 ) const; + int lines() const; + QTextStringChar *lineStartOfLine( int line, int *index = 0 ) const; + int lineY( int l ) const; + int lineBaseLine( int l ) const; + int lineHeight( int l ) const; + void lineInfo( int l, int &y, int &h, int &bl ) const; + + void setSelection( int id, int start, int end ); + void removeSelection( int id ); + int selectionStart( int id ) const; + int selectionEnd( int id ) const; + bool hasSelection( int id ) const; + bool hasAnySelection() const; + bool fullSelected( int id ) const; + + void setEndState( int s ); + int endState() const; + + void setParagId( int i ); + int paragId() const; + + bool firstPreProcess() const; + void setFirstPreProcess( bool b ); + + void indent( int *oldIndent = 0, int *newIndent = 0 ); + + void setExtraData( QTextParagraphData *data ); + QTextParagraphData *extraData() const; + + QMap<int, QTextLineStart*> &lineStartList(); + + void setFormat( int index, int len, QTextFormat *f, bool useCollection = TRUE, int flags = -1 ); + + void setAlignment( int a ); + int alignment() const; + + virtual void paint( QPainter &painter, const QColorGroup &cg, QTextCursor *cursor = 0, bool drawSelections = FALSE, + int clipx = -1, int clipy = -1, int clipw = -1, int cliph = -1 ); + + virtual int topMargin() const; + virtual int bottomMargin() const; + virtual int leftMargin() const; + virtual int firstLineMargin() const; + virtual int rightMargin() const; + virtual int lineSpacing() const; + +#ifndef QT_NO_TEXTCUSTOMITEM + void registerFloatingItem( QTextCustomItem *i ); + void unregisterFloatingItem( QTextCustomItem *i ); +#endif + + void setFullWidth( bool b ) { fullWidth = b; } + bool isFullWidth() const { return fullWidth; } + +#ifndef QT_NO_TEXTCUSTOMITEM + QTextTableCell *tableCell() const; +#endif + + QBrush *background() const; + + int documentWidth() const; + int documentVisibleWidth() const; + int documentX() const; + int documentY() const; + QTextFormatCollection *formatCollection() const; + QTextFormatter *formatter() const; + + virtual int nextTab( int i, int x ); + int *tabArray() const; + void setTabArray( int *a ); + void setTabStops( int tw ); + + void adjustToPainter( QPainter *p ); + + void setNewLinesAllowed( bool b ); + bool isNewLinesAllowed() const; + + QString richText() const; + + void addCommand( QTextCommand *cmd ); + QTextCursor *undo( QTextCursor *c = 0 ); + QTextCursor *redo( QTextCursor *c = 0 ); + QTextCommandHistory *commands() const; + virtual void copyParagData( QTextParagraph *parag ); + + void setBreakable( bool b ) { breakable = b; } + bool isBreakable() const { return breakable; } + + void setBackgroundColor( const QColor &c ); + QColor *backgroundColor() const { return bgcol; } + void clearBackgroundColor(); + + void setMovedDown( bool b ) { movedDown = b; } + bool wasMovedDown() const { return movedDown; } + + void setDirection( QChar::Direction d ); + QChar::Direction direction() const; + void setPaintDevice( QPaintDevice *pd ) { paintdevice = pd; } + + void readStyleInformation( QDataStream& stream ); + void writeStyleInformation( QDataStream& stream ) const; + +protected: + virtual void setColorForSelection( QColor &c, QPainter &p, const QColorGroup& cg, int selection ); + virtual void drawLabel( QPainter* p, int x, int y, int w, int h, int base, const QColorGroup& cg ); + virtual void drawString( QPainter &painter, const QString &str, int start, int len, int xstart, + int y, int baseLine, int w, int h, int selection, + QTextStringChar *formatChar, const QColorGroup& cg, + bool rightToLeft ); + +private: + QMap<int, QTextParagraphSelection> &selections() const; +#ifndef QT_NO_TEXTCUSTOMITEM + QPtrList<QTextCustomItem> &floatingItems() const; +#endif + QBrush backgroundBrush( const QColorGroup&cg ) { if ( bgcol ) return *bgcol; return cg.brush( QColorGroup::Base ); } + void invalidateStyleCache(); + + QMap<int, QTextLineStart*> lineStarts; + int invalid; + QRect r; + QTextParagraph *p, *n; + void *docOrPseudo; + uint changed : 1; + uint firstFormat : 1; + uint firstPProcess : 1; + uint needPreProcess : 1; + uint fullWidth : 1; + uint lastInFrame : 1; + uint visible : 1; + uint breakable : 1; + uint movedDown : 1; + uint mightHaveCustomItems : 1; + uint hasdoc : 1; + uint litem : 1; // whether the paragraph is a list item + uint rtext : 1; // whether the paragraph needs rich text margin + int align : 4; + int state, id; + QTextString *str; + QMap<int, QTextParagraphSelection> *mSelections; +#ifndef QT_NO_TEXTCUSTOMITEM + QPtrList<QTextCustomItem> *mFloatingItems; +#endif + QStyleSheetItem::ListStyle lstyle; + short utm, ubm, ulm, urm, uflm, ulinespacing; + int *tArray; + short tabStopWidth; + QTextParagraphData *eData; + short list_val; + QColor *bgcol; + ushort ldepth; + QPaintDevice *paintdevice; +}; + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +class Q_EXPORT QTextFormatter +{ +public: + QTextFormatter(); + virtual ~QTextFormatter(); + + virtual int format( QTextDocument *doc, QTextParagraph *parag, int start, const QMap<int, QTextLineStart*> &oldLineStarts ) = 0; + virtual int formatVertically( QTextDocument* doc, QTextParagraph* parag ); + + bool isWrapEnabled( QTextParagraph *p ) const { if ( !wrapEnabled ) return FALSE; if ( p && !p->isBreakable() ) return FALSE; return TRUE;} + int wrapAtColumn() const { return wrapColumn;} + virtual void setWrapEnabled( bool b ); + virtual void setWrapAtColumn( int c ); + virtual void setAllowBreakInWords( bool b ) { biw = b; } + bool allowBreakInWords() const { return biw; } + + int minimumWidth() const { return thisminw; } + int widthUsed() const { return thiswused; } + + static bool isBreakable( QTextString *string, int pos ); + +protected: + virtual QTextLineStart *formatLine( QTextParagraph *parag, QTextString *string, QTextLineStart *line, QTextStringChar *start, + QTextStringChar *last, int align = Qt::AlignAuto, int space = 0 ); +#ifndef QT_NO_COMPLEXTEXT + virtual QTextLineStart *bidiReorderLine( QTextParagraph *parag, QTextString *string, QTextLineStart *line, QTextStringChar *start, + QTextStringChar *last, int align, int space ); +#endif + void insertLineStart( QTextParagraph *parag, int index, QTextLineStart *ls ); + + int thisminw; + int thiswused; + +private: + bool wrapEnabled; + int wrapColumn; + bool biw; + +#ifdef HAVE_THAI_BREAKS + static QCString *thaiCache; + static QTextString *cachedString; + static ThBreakIterator *thaiIt; +#endif +}; + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +class Q_EXPORT QTextFormatterBreakInWords : public QTextFormatter +{ +public: + QTextFormatterBreakInWords(); + virtual ~QTextFormatterBreakInWords() {} + + int format( QTextDocument *doc, QTextParagraph *parag, int start, const QMap<int, QTextLineStart*> &oldLineStarts ); + +}; + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +class Q_EXPORT QTextFormatterBreakWords : public QTextFormatter +{ +public: + QTextFormatterBreakWords(); + virtual ~QTextFormatterBreakWords() {} + + int format( QTextDocument *doc, QTextParagraph *parag, int start, const QMap<int, QTextLineStart*> &oldLineStarts ); + +}; + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +class Q_EXPORT QTextIndent +{ +public: + QTextIndent(); + virtual ~QTextIndent() {} + + virtual void indent( QTextDocument *doc, QTextParagraph *parag, int *oldIndent = 0, int *newIndent = 0 ) = 0; + +}; + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +class Q_EXPORT QTextPreProcessor +{ +public: + enum Ids { + Standard = 0 + }; + + QTextPreProcessor(); + virtual ~QTextPreProcessor() {} + + virtual void process( QTextDocument *doc, QTextParagraph *, int, bool = TRUE ) = 0; + virtual QTextFormat *format( int id ) = 0; + +}; + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +class Q_EXPORT QTextFormat +{ + friend class QTextFormatCollection; + friend class QTextDocument; + +public: + enum Flags { + NoFlags, + Bold = 1, + Italic = 2, + Underline = 4, + Family = 8, + Size = 16, + Color = 32, + Misspelled = 64, + VAlign = 128, + StrikeOut= 256, + Font = Bold | Italic | Underline | Family | Size | StrikeOut, + Format = Font | Color | Misspelled | VAlign + }; + + enum VerticalAlignment { AlignNormal, AlignSuperScript, AlignSubScript }; + + QTextFormat(); + virtual ~QTextFormat(); + + QTextFormat( const QStyleSheetItem *s ); + QTextFormat( const QFont &f, const QColor &c, QTextFormatCollection *parent = 0 ); + QTextFormat( const QTextFormat &fm ); + QTextFormat makeTextFormat( const QStyleSheetItem *style, const QMap<QString,QString>& attr, double scaleFontsFactor ) const; + QTextFormat& operator=( const QTextFormat &fm ); + QColor color() const; + QFont font() const; + bool isMisspelled() const; + VerticalAlignment vAlign() const; + int minLeftBearing() const; + int minRightBearing() const; + int width( const QChar &c ) const; + int width( const QString &str, int pos ) const; + int height() const; + int ascent() const; + int descent() const; + int leading() const; + bool useLinkColor() const; + + void setBold( bool b ); + void setItalic( bool b ); + void setUnderline( bool b ); + void setStrikeOut( bool b ); + void setFamily( const QString &f ); + void setPointSize( int s ); + void setFont( const QFont &f ); + void setColor( const QColor &c ); + void setMisspelled( bool b ); + void setVAlign( VerticalAlignment a ); + + bool operator==( const QTextFormat &f ) const; + QTextFormatCollection *parent() const; + const QString &key() const; + + static QString getKey( const QFont &f, const QColor &c, bool misspelled, VerticalAlignment vAlign ); + + void addRef(); + void removeRef(); + + QString makeFormatChangeTags( QTextFormat* defaultFormat, QTextFormat *f, const QString& oldAnchorHref, const QString& anchorHref ) const; + QString makeFormatEndTags( QTextFormat* defaultFormat, const QString& anchorHref ) const; + + static void setPainter( QPainter *p ); + static QPainter* painter(); + + bool fontSizesInPixels() { return usePixelSizes; } + +protected: + virtual void generateKey(); + +private: + void update(); + static void applyFont( const QFont &f ); + +private: + QFont fn; + QColor col; + QFontMetrics fm; + uint missp : 1; + uint linkColor : 1; + uint usePixelSizes : 1; + int leftBearing, rightBearing; + VerticalAlignment ha; + uchar widths[ 256 ]; + int hei, asc, dsc; + QTextFormatCollection *collection; + int ref; + QString k; + int logicalFontSize; + int stdSize; + static QPainter *pntr; + static QFontMetrics *pntr_fm; + static int pntr_asc; + static int pntr_hei; + static int pntr_ldg; + static int pntr_dsc; + +}; + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QDict<QTextFormat>; +// MOC_SKIP_END +#endif + +class Q_EXPORT QTextFormatCollection +{ + friend class QTextDocument; + friend class QTextFormat; + +public: + QTextFormatCollection(); + virtual ~QTextFormatCollection(); + + void setDefaultFormat( QTextFormat *f ); + QTextFormat *defaultFormat() const; + virtual QTextFormat *format( QTextFormat *f ); + virtual QTextFormat *format( QTextFormat *of, QTextFormat *nf, int flags ); + virtual QTextFormat *format( const QFont &f, const QColor &c ); + virtual void remove( QTextFormat *f ); + virtual QTextFormat *createFormat( const QTextFormat &f ) { return new QTextFormat( f ); } + virtual QTextFormat *createFormat( const QFont &f, const QColor &c ) { return new QTextFormat( f, c, this ); } + + void updateDefaultFormat( const QFont &font, const QColor &c, QStyleSheet *sheet ); + QDict<QTextFormat> dict() const { return cKey; } + + QPaintDevice *paintDevice() const { return paintdevice; } + void setPaintDevice( QPaintDevice * ); + +private: + void updateKeys(); + +private: + QTextFormat *defFormat, *lastFormat, *cachedFormat; + QDict<QTextFormat> cKey; + QTextFormat *cres; + QFont cfont; + QColor ccol; + QString kof, knf; + int cflags; + + QPaintDevice *paintdevice; +}; + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +inline int QTextString::length() const +{ + return data.size(); +} + +inline int QTextParagraph::length() const +{ + return str->length(); +} + +inline QRect QTextParagraph::rect() const +{ + return r; +} + +inline QTextParagraph *QTextCursor::paragraph() const +{ + return para; +} + +inline int QTextCursor::index() const +{ + return idx; +} + + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +inline int QTextDocument::x() const +{ + return cx; +} + +inline int QTextDocument::y() const +{ + return cy; +} + +inline int QTextDocument::width() const +{ + return QMAX( cw, flow_->width() ); +} + +inline int QTextDocument::visibleWidth() const +{ + return vw; +} + +inline QTextParagraph *QTextDocument::firstParagraph() const +{ + return fParag; +} + +inline QTextParagraph *QTextDocument::lastParagraph() const +{ + return lParag; +} + +inline void QTextDocument::setFirstParagraph( QTextParagraph *p ) +{ + fParag = p; +} + +inline void QTextDocument::setLastParagraph( QTextParagraph *p ) +{ + lParag = p; +} + +inline void QTextDocument::setWidth( int w ) +{ + cw = QMAX( w, minw ); + flow_->setWidth( cw ); + vw = w; +} + +inline int QTextDocument::minimumWidth() const +{ + return minw; +} + +inline void QTextDocument::setY( int y ) +{ + cy = y; +} + +inline int QTextDocument::leftMargin() const +{ + return leftmargin; +} + +inline void QTextDocument::setLeftMargin( int lm ) +{ + leftmargin = lm; +} + +inline int QTextDocument::rightMargin() const +{ + return rightmargin; +} + +inline void QTextDocument::setRightMargin( int rm ) +{ + rightmargin = rm; +} + +inline QTextPreProcessor *QTextDocument::preProcessor() const +{ + return pProcessor; +} + +inline void QTextDocument::setPreProcessor( QTextPreProcessor * sh ) +{ + pProcessor = sh; +} + +inline void QTextDocument::setFormatter( QTextFormatter *f ) +{ + delete pFormatter; + pFormatter = f; +} + +inline QTextFormatter *QTextDocument::formatter() const +{ + return pFormatter; +} + +inline void QTextDocument::setIndent( QTextIndent *i ) +{ + indenter = i; +} + +inline QTextIndent *QTextDocument::indent() const +{ + return indenter; +} + +inline QColor QTextDocument::selectionColor( int id ) const +{ + return selectionColors[ id ]; +} + +inline bool QTextDocument::invertSelectionText( int id ) const +{ + return selectionText[ id ]; +} + +inline void QTextDocument::setSelectionColor( int id, const QColor &c ) +{ + selectionColors[ id ] = c; +} + +inline void QTextDocument::setInvertSelectionText( int id, bool b ) +{ + selectionText[ id ] = b; +} + +inline QTextFormatCollection *QTextDocument::formatCollection() const +{ + return fCollection; +} + +inline int QTextDocument::alignment() const +{ + return align; +} + +inline void QTextDocument::setAlignment( int a ) +{ + align = a; +} + +inline int *QTextDocument::tabArray() const +{ + return tArray; +} + +inline int QTextDocument::tabStopWidth() const +{ + return tStopWidth; +} + +inline void QTextDocument::setTabArray( int *a ) +{ + tArray = a; +} + +inline void QTextDocument::setTabStops( int tw ) +{ + tStopWidth = tw; +} + +inline QString QTextDocument::originalText() const +{ + if ( oTextValid ) + return oText; + return text(); +} + +inline void QTextDocument::setFlow( QTextFlow *f ) +{ + if ( flow_ ) + delete flow_; + flow_ = f; +} + +inline void QTextDocument::takeFlow() +{ + flow_ = 0; +} + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +inline QColor QTextFormat::color() const +{ + return col; +} + +inline QFont QTextFormat::font() const +{ + return fn; +} + +inline bool QTextFormat::isMisspelled() const +{ + return missp; +} + +inline QTextFormat::VerticalAlignment QTextFormat::vAlign() const +{ + return ha; +} + +inline bool QTextFormat::operator==( const QTextFormat &f ) const +{ + return k == f.k; +} + +inline QTextFormatCollection *QTextFormat::parent() const +{ + return collection; +} + +inline void QTextFormat::addRef() +{ + ref++; +} + +inline void QTextFormat::removeRef() +{ + ref--; + if ( !collection ) + return; + if ( this == collection->defFormat ) + return; + if ( ref == 0 ) + collection->remove( this ); +} + +inline const QString &QTextFormat::key() const +{ + return k; +} + +inline bool QTextFormat::useLinkColor() const +{ + return linkColor; +} + + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +inline QTextStringChar &QTextString::at( int i ) const +{ + return data[ i ]; +} + +// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +inline QTextStringChar *QTextParagraph::at( int i ) const +{ + return &str->at( i ); +} + +inline bool QTextParagraph::isValid() const +{ + return invalid == -1; +} + +inline bool QTextParagraph::hasChanged() const +{ + return changed; +} + +inline void QTextParagraph::setBackgroundColor( const QColor & c ) +{ + delete bgcol; + bgcol = new QColor( c ); + setChanged( TRUE ); +} + +inline void QTextParagraph::clearBackgroundColor() +{ + delete bgcol; bgcol = 0; setChanged( TRUE ); +} + +inline void QTextParagraph::append( const QString &s, bool reallyAtEnd ) +{ + if ( reallyAtEnd ) + insert( str->length(), s ); + else + insert( QMAX( str->length() - 1, 0 ), s ); +} + +inline QTextParagraph *QTextParagraph::prev() const +{ + return p; +} + +inline QTextParagraph *QTextParagraph::next() const +{ + return n; +} + +inline bool QTextParagraph::hasAnySelection() const +{ + return mSelections ? !selections().isEmpty() : FALSE; +} + +inline void QTextParagraph::setEndState( int s ) +{ + if ( s == state ) + return; + state = s; +} + +inline int QTextParagraph::endState() const +{ + return state; +} + +inline void QTextParagraph::setParagId( int i ) +{ + id = i; +} + +inline int QTextParagraph::paragId() const +{ + if ( id == -1 ) + qWarning( "invalid parag id!!!!!!!! (%p)", (void*)this ); + return id; +} + +inline bool QTextParagraph::firstPreProcess() const +{ + return firstPProcess; +} + +inline void QTextParagraph::setFirstPreProcess( bool b ) +{ + firstPProcess = b; +} + +inline QMap<int, QTextLineStart*> &QTextParagraph::lineStartList() +{ + return lineStarts; +} + +inline QTextString *QTextParagraph::string() const +{ + return str; +} + +inline QTextDocument *QTextParagraph::document() const +{ + if ( hasdoc ) + return (QTextDocument*) docOrPseudo; + return 0; +} + +inline QTextParagraphPseudoDocument *QTextParagraph::pseudoDocument() const +{ + if ( hasdoc ) + return 0; + return (QTextParagraphPseudoDocument*) docOrPseudo; +} + + +#ifndef QT_NO_TEXTCUSTOMITEM +inline QTextTableCell *QTextParagraph::tableCell() const +{ + return hasdoc ? document()->tableCell () : 0; +} +#endif + +inline QTextCommandHistory *QTextParagraph::commands() const +{ + return hasdoc ? document()->commands() : pseudoDocument()->commandHistory; +} + + +inline int QTextParagraph::alignment() const +{ + return align; +} + +#ifndef QT_NO_TEXTCUSTOMITEM +inline void QTextParagraph::registerFloatingItem( QTextCustomItem *i ) +{ + floatingItems().append( i ); +} + +inline void QTextParagraph::unregisterFloatingItem( QTextCustomItem *i ) +{ + floatingItems().removeRef( i ); +} +#endif + +inline QBrush *QTextParagraph::background() const +{ +#ifndef QT_NO_TEXTCUSTOMITEM + return tableCell() ? tableCell()->backGround() : 0; +#else + return 0; +#endif +} + +inline int QTextParagraph::documentWidth() const +{ + return hasdoc ? document()->width() : pseudoDocument()->docRect.width(); +} + +inline int QTextParagraph::documentVisibleWidth() const +{ + return hasdoc ? document()->visibleWidth() : pseudoDocument()->docRect.width(); +} + +inline int QTextParagraph::documentX() const +{ + return hasdoc ? document()->x() : pseudoDocument()->docRect.x(); +} + +inline int QTextParagraph::documentY() const +{ + return hasdoc ? document()->y() : pseudoDocument()->docRect.y(); +} + +inline void QTextParagraph::setExtraData( QTextParagraphData *data ) +{ + eData = data; +} + +inline QTextParagraphData *QTextParagraph::extraData() const +{ + return eData; +} + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +inline void QTextFormatCollection::setDefaultFormat( QTextFormat *f ) +{ + defFormat = f; +} + +inline QTextFormat *QTextFormatCollection::defaultFormat() const +{ + return defFormat; +} + +// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +inline QTextFormat *QTextStringChar::format() const +{ + return (type == Regular) ? d.format : d.custom->format; +} + + +#ifndef QT_NO_TEXTCUSTOMITEM +inline QTextCustomItem *QTextStringChar::customItem() const +{ + return isCustom() ? d.custom->custom : 0; +} +#endif + +inline int QTextStringChar::height() const +{ +#ifndef QT_NO_TEXTCUSTOMITEM + return !isCustom() ? format()->height() : ( customItem()->placement() == QTextCustomItem::PlaceInline ? customItem()->height : 0 ); +#else + return format()->height(); +#endif +} + +inline int QTextStringChar::ascent() const +{ +#ifndef QT_NO_TEXTCUSTOMITEM + return !isCustom() ? format()->ascent() : ( customItem()->placement() == QTextCustomItem::PlaceInline ? customItem()->ascent() : 0 ); +#else + return format()->ascent(); +#endif +} + +inline int QTextStringChar::descent() const +{ +#ifndef QT_NO_TEXTCUSTOMITEM + return !isCustom() ? format()->descent() : 0; +#else + return format()->descent(); +#endif +} + +#endif //QT_NO_RICHTEXT + +#endif diff --git a/qmake/include/private/qsettings_p.h b/qmake/include/private/qsettings_p.h new file mode 100644 index 0000000..18d118b --- a/dev/null +++ b/qmake/include/private/qsettings_p.h @@ -0,0 +1,133 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QSettings related classes +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses for Windows may use this file in accordance with the Qt Commercial +** License Agreement provided with the Software. +** +** This file is not available for use under any other license without +** express written permission from the copyright holder. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QSETTINGS_P_H +#define QSETTINGS_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of QSettings. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include "qstringlist.h" +#include "qmap.h" +#include "qvaluestack.h" +#endif // QT_H + +class QSettingsSysPrivate; + +// QSettingsGroup is a map of key/value pairs +class QSettingsGroup : public QMap<QString,QString> +{ +public: + QSettingsGroup(); + + bool modified; +}; + +// QSettingsHeading is a map of heading/group pairs +class QSettingsHeading : public QMap<QString,QSettingsGroup> +{ +public: + QSettingsHeading::Iterator git; + void read(const QString &); + void parseLine(QTextStream &); +}; + + +class QSettingsPrivate +{ +public: + QSettingsPrivate( QSettings::Format format ); + ~QSettingsPrivate(); + + QSettingsGroup readGroup(); + void removeGroup(const QString &); + void writeGroup(const QString &, const QString &); + QDateTime modificationTime(); + + QStringList searchPaths; + QMap<QString,QSettingsHeading> headings; + QString group; + QString heading; + + /*### static data brings threading trouble + static QString *defProduct; + static QString *defDomain; + */ + QValueStack<QString> groupStack; + QString groupPrefix; + + bool groupDirty :1; + bool modified :1; + bool globalScope :1; + +#if defined(Q_WS_WIN) || defined(Q_OS_MAC) + // system dependent implementations to use the + // system specific setting database (ie. registry on Windows) + + QSettingsSysPrivate *sysd; + void sysInit(); + void sysClear(); + +#if !defined(Q_NO_BOOL_TYPE) + bool sysWriteEntry( const QString &, bool ); +#endif + bool sysWriteEntry( const QString &, double ); + bool sysWriteEntry( const QString &, int ); + bool sysWriteEntry( const QString &, const QString & ); + bool sysWriteEntry( const QString &, const QStringList & ); + bool sysWriteEntry( const QString &, const QStringList &, const QChar& sep ); + + QStringList sysEntryList(const QString &) const; + QStringList sysSubkeyList(const QString &) const; + + QStringList sysReadListEntry( const QString &, bool * = 0 ) const; + QStringList sysReadListEntry( const QString &, const QChar& sep, bool * = 0 ) const; + QString sysReadEntry( const QString &, const QString &def = QString::null, bool * = 0 ) const; + int sysReadNumEntry( const QString &, int def = 0, bool * = 0 ) const; + double sysReadDoubleEntry( const QString &, double def = 0, bool * = 0 ) const; + bool sysReadBoolEntry( const QString &, bool def = 0, bool * = 0 ) const; + + bool sysRemoveEntry( const QString & ); + + bool sysSync(); + + void sysInsertSearchPath( QSettings::System, const QString & ); + void sysRemoveSearchPath( QSettings::System, const QString & ); +#endif +}; + +#endif // QSETTINGS_P_H diff --git a/qmake/include/private/qsharedmemory_p.h b/qmake/include/private/qsharedmemory_p.h new file mode 100644 index 0000000..4a8339d --- a/dev/null +++ b/qmake/include/private/qsharedmemory_p.h @@ -0,0 +1,84 @@ +/**************************************************************************** +** $Id$ +** +** Includes system files for shared memory +** +** Created : 020124 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses for Qt/Embedded may use this file in accordance with the +** Qt Embedded Commercial License Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_qws.cpp and qgfxvnc_qws.cpp. This header file may +// change from version to version without notice, or even be removed. +// +// + +#if !defined(QT_QSHM_H) +#define QT_QSHM_H + +#include <qstring.h> + +#if !defined (QT_QWS_NO_SHM) + +#include <sys/types.h> +#include <sys/ipc.h> + +class QSharedMemory { +public: + QSharedMemory(){}; + QSharedMemory(int, QString, char c = 'Q'); + ~QSharedMemory(){}; + + bool create(); + void destroy(); + + bool attach(); + void detach(); + + void setPermissions(mode_t mode); + int size(); + void * base() { return shmBase; }; + +private: + void *shmBase; + int shmSize; + QString shmFile; + char character; +#if defined(QT_POSIX_QSHM) + int shmFD; +#else + int shmId; + key_t key; + int idInitted; +#endif +}; + +#endif +#endif diff --git a/qmake/include/private/qsqldriverinterface_p.h b/qmake/include/private/qsqldriverinterface_p.h new file mode 100644 index 0000000..8957b86 --- a/dev/null +++ b/qmake/include/private/qsqldriverinterface_p.h @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Definition of QSqlDriverInterface class +** +** Created : 2000-11-03 +** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of the sql module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition licenses may use this +** file in accordance with the Qt Commercial License Agreement provided +** with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QSQLDRIVERINTERFACE_H +#define QSQLDRIVERINTERFACE_H + +#ifndef QT_H +#include <private/qcom_p.h> +#endif // QT_H + +#if !defined( QT_MODULE_SQL ) || defined( QT_LICENSE_PROFESSIONAL ) +#define QM_EXPORT_SQL +#else +#define QM_EXPORT_SQL Q_EXPORT +#endif + +#ifndef QT_NO_SQL + +#ifndef QT_NO_COMPONENT + +// {EDDD5AD5-DF3C-400c-A711-163B72FE5F61} +#ifndef IID_QSqlDriverFactory +#define IID_QSqlDriverFactory QUuid(0xeddd5ad5, 0xdf3c, 0x400c, 0xa7, 0x11, 0x16, 0x3b, 0x72, 0xfe, 0x5f, 0x61) +#endif + +class QSqlDriver; + +struct QM_EXPORT_SQL QSqlDriverFactoryInterface : public QFeatureListInterface +{ + virtual QSqlDriver* create( const QString& name ) = 0; +}; + +#endif //QT_NO_COMPONENT +#endif // QT_NO_SQL + +#endif // QSQLDRIVERINTERFACE_H diff --git a/qmake/include/private/qsqlextension_p.h b/qmake/include/private/qsqlextension_p.h new file mode 100644 index 0000000..597b266 --- a/dev/null +++ b/qmake/include/private/qsqlextension_p.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Definition of the QSqlExtension class +** +** Created : 2002-06-03 +** +** Copyright (C) 2002 Trolltech AS. All rights reserved. +** +** This file is part of the sql module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition licenses may use this +** file in accordance with the Qt Commercial License Agreement provided +** with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QSQLEXTENSION_P_H +#define QSQLEXTENSION_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include "qmap.h" +#include "qstring.h" +#include "qvariant.h" +#endif // QT_H + +#ifndef QT_NO_SQL + +#if !defined( QT_MODULE_SQL ) || defined( QT_LICENSE_PROFESSIONAL ) +#define QM_EXPORT_SQL +#else +#define QM_EXPORT_SQL Q_EXPORT +#endif + +#if defined(Q_TEMPLATEDLL) +Q_TEMPLATE_EXTERN template class QM_EXPORT_SQL QMap<QString,QVariant>; +Q_TEMPLATE_EXTERN template class QM_EXPORT_SQL QMap<int,QString>; +#endif + +class QM_EXPORT_SQL QSqlExtension { +public: + QSqlExtension(); + virtual ~QSqlExtension(); + virtual bool prepare( const QString& query ); + virtual bool exec(); + virtual void bindValue( const QString& holder, const QVariant& value ); + virtual void bindValue( int pos, const QVariant& value ); + virtual void addBindValue( const QVariant& value ); + void clearValues(); + void clearIndex(); + + enum BindMethod { BindByPosition, BindByName }; + BindMethod bindMethod(); + BindMethod bindm; + int bindCount; + + QMap<int, QString> index; + QMap<QString, QVariant> values; +}; + +class QM_EXPORT_SQL QSqlDriverExtension +{ +public: + QSqlDriverExtension(); + virtual ~QSqlDriverExtension(); + virtual bool isOpen() const = 0; +}; + +#endif +#endif diff --git a/qmake/include/private/qsqlmanager_p.h b/qmake/include/private/qsqlmanager_p.h new file mode 100644 index 0000000..e5f45b8 --- a/dev/null +++ b/qmake/include/private/qsqlmanager_p.h @@ -0,0 +1,159 @@ +/**************************************************************************** +** +** Definition of QSqlManager class +** +** Created : 2000-11-03 +** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of the sql module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition licenses may use this +** file in accordance with the Qt Commercial License Agreement provided +** with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QSQLMANAGER_P_H +#define QSQLMANAGER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of other Qt classes. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include "qglobal.h" +#include "qstring.h" +#include "qstringlist.h" +#include "qsql.h" +#include "qsqlerror.h" +#include "qsqlindex.h" +#include "qsqlcursor.h" +#endif // QT_H + +#if !defined( QT_MODULE_SQL ) || defined( QT_LICENSE_PROFESSIONAL ) +#define QM_EXPORT_SQL +#else +#define QM_EXPORT_SQL Q_EXPORT +#endif + +#ifndef QT_NO_SQL + +class QSqlCursor; +class QSqlForm; +class QSqlCursorManagerPrivate; + +class QM_EXPORT_SQL QSqlCursorManager +{ +public: + QSqlCursorManager(); + virtual ~QSqlCursorManager(); + + virtual void setSort( const QSqlIndex& sort ); + virtual void setSort( const QStringList& sort ); + QStringList sort() const; + virtual void setFilter( const QString& filter ); + QString filter() const; + virtual void setCursor( QSqlCursor* cursor, bool autoDelete = FALSE ); + QSqlCursor* cursor() const; + + virtual void setAutoDelete( bool enable ); + bool autoDelete() const; + + virtual bool refresh(); + virtual bool findBuffer( const QSqlIndex& idx, int atHint = 0 ); + +private: + QSqlCursorManagerPrivate* d; +}; + +#ifndef QT_NO_SQL_FORM + +class QSqlFormManagerPrivate; + +class QM_EXPORT_SQL QSqlFormManager +{ +public: + QSqlFormManager(); + virtual ~QSqlFormManager(); + + virtual void setForm( QSqlForm* form ); + QSqlForm* form(); + virtual void setRecord( QSqlRecord* record ); + QSqlRecord* record(); + + virtual void clearValues(); + virtual void readFields(); + virtual void writeFields(); + +private: + QSqlFormManagerPrivate* d; +}; + +#endif + +class QWidget; +class QDataManagerPrivate; + +class QM_EXPORT_SQL QDataManager +{ +public: + QDataManager(); + virtual ~QDataManager(); + + virtual void setMode( QSql::Op m ); + QSql::Op mode() const; + virtual void setAutoEdit( bool autoEdit ); + bool autoEdit() const; + + virtual void handleError( QWidget* parent, const QSqlError& error ); + virtual QSql::Confirm confirmEdit( QWidget* parent, QSql::Op m ); + virtual QSql::Confirm confirmCancel( QWidget* parent, QSql::Op m ); + + virtual void setConfirmEdits( bool confirm ); + virtual void setConfirmInsert( bool confirm ); + virtual void setConfirmUpdate( bool confirm ); + virtual void setConfirmDelete( bool confirm ); + virtual void setConfirmCancels( bool confirm ); + + bool confirmEdits() const; + bool confirmInsert() const; + bool confirmUpdate() const; + bool confirmDelete() const; + bool confirmCancels() const; + +private: + QDataManagerPrivate* d; +}; + + +#endif +#endif diff --git a/qmake/include/private/qstyleinterface_p.h b/qmake/include/private/qstyleinterface_p.h new file mode 100644 index 0000000..4aaedc7 --- a/dev/null +++ b/qmake/include/private/qstyleinterface_p.h @@ -0,0 +1,61 @@ +/**************************************************************************** +** $Id$ +** +** ... +** +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. +** +** This file is part of the widgets module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QSTYLEINTERFACE_H +#define QSTYLEINTERFACE_H + +#ifndef QT_H +#include <private/qcom_p.h> +#endif // QT_H + +#ifndef QT_NO_STYLE +#ifndef QT_NO_COMPONENT + +class QStyle; + +// {FC1B6EBE-053C-49c1-A483-C377739AB9A5} +#ifndef IID_QStyleFactory +#define IID_QStyleFactory QUuid(0xfc1b6ebe, 0x53c, 0x49c1, 0xa4, 0x83, 0xc3, 0x77, 0x73, 0x9a, 0xb9, 0xa5) +#endif + +struct Q_EXPORT QStyleFactoryInterface : public QFeatureListInterface +{ + virtual QStyle* create( const QString& style ) = 0; +}; + +#endif //QT_NO_COMPONENT +#endif //QT_NO_STYLE + +#endif //QSTYLEINTERFACE_H diff --git a/qmake/include/private/qsvgdevice_p.h b/qmake/include/private/qsvgdevice_p.h new file mode 100644 index 0000000..c1cc389 --- a/dev/null +++ b/qmake/include/private/qsvgdevice_p.h @@ -0,0 +1,134 @@ +/**************************************************************************** +** $Id$ +** +** Definition of the QSvgDevice class +** +** Created : 20001024 +** +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. +** +** This file is part of the xml module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition licenses may use this +** file in accordance with the Qt Commercial License Agreement provided +** with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +*****************************************************************************/ + +#ifndef QSVGDEVICE_H +#define QSVGDEVICE_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of the QPicture class. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#include "qpaintdevice.h" +#include "qrect.h" +#include "qdom.h" +#endif // QT_H + +#if !defined(QT_MODULE_XML) || defined( QT_LICENSE_PROFESSIONAL ) || defined( QT_INTERNAL_XML ) +#define QM_EXPORT_SVG +#else +#define QM_EXPORT_SVG Q_EXPORT +#endif + +#ifndef QT_NO_SVG + +class QPainter; +class QDomNode; +class QDomNamedNodeMap; +struct QSvgDeviceState; +class QSvgDevicePrivate; + +class QM_EXPORT_SVG QSvgDevice : public QPaintDevice +{ +public: + QSvgDevice(); + ~QSvgDevice(); + + bool play( QPainter *p ); + + QString toString() const; + + bool load( QIODevice *dev ); + bool save( QIODevice *dev ); + bool save( const QString &fileName ); + + QRect boundingRect() const; + void setBoundingRect( const QRect &r ); + +protected: + virtual bool cmd ( int, QPainter*, QPDevCmdParam* ); + virtual int metric( int ) const; + +private: + // reading + bool play( const QDomNode &node ); + void saveAttributes(); + void restoreAttributes(); + QColor parseColor( const QString &col ); + double parseLen( const QString &str, bool *ok=0, bool horiz=TRUE ) const; + int lenToInt( const QDomNamedNodeMap &map, const QString &attr, + int def=0 ) const; + void setStyleProperty( const QString &prop, const QString &val, + QPen *pen, QFont *font, int *talign ); + void setStyle( const QString &s ); + void setTransform( const QString &tr ); + void drawPath( const QString &data ); + + // writing + void applyStyle( QDomElement *e, int c ) const; + void applyTransform( QDomElement *e ) const; + + // reading + QRect brect; // bounding rectangle + QDomDocument doc; // document tree + QDomNode current; + QPoint curPt; + QSvgDeviceState *curr; + QPainter *pt; // used by play() et al + + // writing + bool dirtyTransform, dirtyStyle; + + QSvgDevicePrivate *d; +}; + +inline QRect QSvgDevice::boundingRect() const +{ + return brect; +} + +#endif // QT_NO_SVG + +#endif // QSVGDEVICE_H diff --git a/qmake/include/private/qtextcodecinterface_p.h b/qmake/include/private/qtextcodecinterface_p.h new file mode 100644 index 0000000..d2a2cb9 --- a/dev/null +++ b/qmake/include/private/qtextcodecinterface_p.h @@ -0,0 +1,79 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QTextCodecFactoryInterface interface +** +** Copyright (C) 2001-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QTEXTCODECINTERFACE_P_H +#define QTEXTCODECINTERFACE_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qpsprinter.cpp and qprinter_x11.cpp. +// This header file may change from version to version without notice, +// or even be removed. +// +// We mean it. +// +// + + +#ifndef QT_H +#include <private/qcom_p.h> +#endif // QT_H + +#ifndef QT_NO_TEXTCODEC +#ifndef QT_NO_COMPONENT + +class QTextCodec; + + +// {F55BFA60-F695-11D4-823E-009027DC0F37} +#ifndef IID_QTextCodecFactory +#define IID_QTextCodecFactory QUuid( 0xf55bfa60, 0xf695, 0x11d4, 0x82, 0x3e, 0x00, 0x90, 0x27, 0xdc, 0x0f, 0x37) +#endif + + +struct Q_EXPORT QTextCodecFactoryInterface : public QFeatureListInterface +{ + virtual QTextCodec *createForMib( int mib ) = 0; + virtual QTextCodec *createForName( const QString &name ) = 0; +}; + +#endif // QT_NO_COMPONENT +#endif // QT_NO_TEXTCODEC + +#endif // QTEXTCODECINTERFACE_P_H diff --git a/qmake/include/private/qtitlebar_p.h b/qmake/include/private/qtitlebar_p.h new file mode 100644 index 0000000..dabb6bf --- a/dev/null +++ b/qmake/include/private/qtitlebar_p.h @@ -0,0 +1,136 @@ +/**************************************************************************** +** $Id$ +** +** Definition of some Qt private functions. +** +** Created : 2000-01-01 +** +** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. +** +** This file is part of the widgets module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QTITLEBAR_P_H +#define QTITLEBAR_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qworkspace.cpp and qdockwindow.cpp. This header file may change +// from version to version without notice, or even be removed. +// +// We mean it. +// +// + + +#ifndef QT_H +#include "qbutton.h" +#include "qlabel.h" +#endif // QT_H + +#if !defined(QT_NO_TITLEBAR) + +class QToolTip; +class QTitleBarPrivate; +class QPixmap; + +class Q_EXPORT QTitleBar : public QWidget +{ + Q_OBJECT + Q_PROPERTY( bool autoRaise READ autoRaise WRITE setAutoRaise ) + Q_PROPERTY( bool movable READ isMovable WRITE setMovable ) + +public: + QTitleBar (QWidget* w, QWidget* parent, const char* name=0); + ~QTitleBar(); + + bool isActive() const; + bool usesActiveColor() const; + virtual QString visibleText() const; + + bool isMovable() const; + void setMovable(bool); + + bool autoRaise() const; + void setAutoRaise(bool); + + QWidget *window() const; + + QSize sizeHint() const; + +#ifdef QT_NO_WIDGET_TOPEXTRA + // We provide one, since titlebar is useless otherwise. + QString caption() const; +#endif + +public slots: + void setActive( bool ); + void setCaption( const QString& title ); + void setIcon( const QPixmap& icon ); + +signals: + void doActivate(); + void doNormal(); + void doClose(); + void doMaximize(); + void doMinimize(); + void doShade(); + void showOperationMenu(); + void popupOperationMenu( const QPoint& ); + void doubleClicked(); + +protected: + bool event( QEvent *); + void resizeEvent( QResizeEvent *); + void contextMenuEvent( QContextMenuEvent * ); + void mousePressEvent( QMouseEvent * ); + void mouseDoubleClickEvent( QMouseEvent * ); + void mouseReleaseEvent( QMouseEvent * ); + void mouseMoveEvent( QMouseEvent * ); + void enterEvent( QEvent *e ); + void leaveEvent( QEvent *e ); + void paintEvent( QPaintEvent *p ); + + virtual void cutText(); + +private: + void readColors(); + + QTitleBarPrivate *d; +#if defined(Q_DISABLE_COPY) // Disabled copy constructor and operator= + QTitleBar( const QTitleBar & ); + QTitleBar &operator=( const QTitleBar & ); +#endif +}; + +#endif +#endif //QTITLEBAR_P_H diff --git a/qmake/include/private/qucom_p.h b/qmake/include/private/qucom_p.h new file mode 100644 index 0000000..d2ff48e --- a/dev/null +++ b/qmake/include/private/qucom_p.h @@ -0,0 +1,499 @@ +/**************************************************************************** +** $Id$ +** +** Definition of the QUcom interfaces +** +** Created : 990101 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QUCOM_H +#define QUCOM_H + +#ifndef QT_H +#include <qstring.h> +#include "quuid.h" +#endif // QT_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifdef check +#undef check +#endif + +struct QUObject; +struct QUInterfaceDescription; +struct QUnknownInterface; +struct QDispatchInterface; + + +struct Q_EXPORT QUBuffer +{ + virtual long read( char *data, ulong maxlen ) = 0; + virtual long write( const char *data, ulong len ) = 0; +}; + + +// A type for a QUObject +struct Q_EXPORT QUType +{ + virtual const QUuid *uuid() const = 0; + virtual const char *desc() const = 0; + + + virtual bool canConvertFrom( QUObject *, QUType * ) = 0; + // virtual private, only called by canConvertFrom + virtual bool canConvertTo( QUObject *, QUType * ) = 0; + + + virtual bool convertFrom( QUObject *, QUType * ) = 0; + // virtual private, only called by convertFrom + virtual bool convertTo( QUObject *, QUType * ) = 0; + + virtual void clear( QUObject * ) = 0; + + virtual int serializeTo( QUObject *, QUBuffer * ) = 0; + virtual int serializeFrom( QUObject *, QUBuffer * ) = 0; + + static bool isEqual( const QUType *t1, const QUType *t2 ); + static bool check( QUObject* o, QUType* t ); +}; + + +// {DE56510E-4E9F-4b76-A3C2-D1E2EF42F1AC} +extern Q_EXPORT const QUuid TID_QUType_Null; +struct Q_EXPORT QUType_Null : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ); + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_Null static_QUType_Null; + + +// The magic QUObject +struct Q_EXPORT QUObject +{ +public: // scary MSVC bug makes this necessary + QUObject() : type( &static_QUType_Null ) {} + ~QUObject() { type->clear( this ); } + + QUType *type; + + // the unavoidable union + union + { + bool b; + + char c; + short s; + int i; + long l; + + unsigned char uc; + unsigned short us; + unsigned int ui; + unsigned long ul; + + float f; + double d; + + char byte[16]; + + struct { + char* data; + unsigned long size; + } bytearray; + + void* ptr; + + struct { + void *ptr; + bool owner; + } voidstar; + + struct { + char *ptr; + bool owner; + } charstar; + + struct { + char *ptr; + bool owner; + } utf8; + + struct { + char *ptr; + bool owner; + } local8bit; + + QUnknownInterface* iface; + QDispatchInterface* idisp; + + } payload; + +}; + + +// A parameter description describes one method parameters. A +// parameter has a name, a type and a flag describing whether it's an +// in parameter, an out parameter, or both ways +struct Q_EXPORT QUParameter +{ + const char* name; + QUType *type; + const void* typeExtra; //Usually 0, UEnum* for QUType_enum, const char* for QUType_ptr, int* for QUType_varptr + enum { In = 1, Out = 2, InOut = In | Out }; + int inOut; +}; + +// A method description describes one method. A method has a name and +// an array of parameters. +struct Q_EXPORT QUMethod +{ + const char* name; + int count; + const QUParameter* parameters; +}; + +// A Property description. Not used yet in the example. +struct Q_EXPORT QUProperty +{ + const char* name; + QUType* type; + const void* typeExtra; //type dependend. Usually 0, but UEnum for QUTypeenum or const char* for QUTypeptr + + int set; // -1 undefined + int get; // -1 undefined + + int designable; // -1 FALSE, -2 TRUE, else method + int stored; // -1 FALSE, -2 TRUE, else method +}; + +// An interface description describes one interface, that is all its +// methods and properties. +struct Q_EXPORT QUInterfaceDescription +{ + int methodCount; + const QUMethod* methods; + int propertyCount; + const QUProperty* properties; +}; + + +// A component description describe one component, that is its name, +// vendor, release, info, its component uuid and all its interface +// uuids. +struct Q_EXPORT QUComponentDescription +{ + const char* name; + const char* vendor; + const char* release; + const char* info; + QUuid cid; + int count; + const QUuid* interfaces; +}; + + +// A component server description describe one component server, that +// is its name, vendor, release, info and the descriptions of all +// components it can instantiate. +struct Q_EXPORT QUComponentServerDescription +{ + const char* name; + const char* vendor; + const char* release; + const char* info; + int count; + const QUComponentDescription* components; +}; + + + +struct Q_EXPORT QUEnumItem // - a name/value pair +{ + const char *key; + int value; +}; + +struct Q_EXPORT QUEnum +{ + const char *name; // - enumerator name + unsigned int count; // - number of values + const QUEnumItem *items; // - the name/value pairs + bool set; // whether enum has to be treated as a set +}; + +inline bool QUType::isEqual( const QUType *t1, const QUType *t2 ) { + return t1 == t2 || t1->uuid() == t2->uuid() || + *(t1->uuid()) == *(t2->uuid()); +} + +inline bool QUType::check( QUObject* o, QUType* t ) { + return isEqual( o->type, t ) || t->convertFrom( o, o->type ); +} + + + +// {7EE17B08-5419-47e2-9776-8EEA112DCAEC} +extern Q_EXPORT const QUuid TID_QUType_enum; +struct Q_EXPORT QUType_enum : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, int ); + int &get( QUObject * o ) { return o->payload.i; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_enum static_QUType_enum; + + +// {8AC26448-5AB4-49eb-968C-8F30AB13D732} +extern Q_EXPORT const QUuid TID_QUType_ptr; +struct Q_EXPORT QUType_ptr : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, const void* ); + void* &get( QUObject * o ) { return o->payload.ptr; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_ptr static_QUType_ptr; + +// {97A2594D-6496-4402-A11E-55AEF2D4D25C} +extern Q_EXPORT const QUuid TID_QUType_iface; +struct Q_EXPORT QUType_iface : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, QUnknownInterface* ); + QUnknownInterface* &get( QUObject *o ){ return o->payload.iface; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_iface static_QUType_iface; + +// {2F358164-E28F-4bf4-9FA9-4E0CDCABA50B} +extern Q_EXPORT const QUuid TID_QUType_idisp; +struct Q_EXPORT QUType_idisp : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, QDispatchInterface* ); + QDispatchInterface* &get( QUObject *o ){ return o->payload.idisp; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_idisp static_QUType_idisp; + +// {CA42115D-13D0-456c-82B5-FC10187F313E} +extern Q_EXPORT const QUuid TID_QUType_bool; +struct Q_EXPORT QUType_bool : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, bool ); + bool &get( QUObject *o ) { return o->payload.b; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_bool static_QUType_bool; + +// {53C1F3BE-73C3-4c7d-9E05-CCF09EB676B5} +extern Q_EXPORT const QUuid TID_QUType_int; +struct Q_EXPORT QUType_int : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, int ); + int &get( QUObject *o ) { return o->payload.i; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_int static_QUType_int; + +// {5938712A-C496-11D5-8CB2-00C0F03BC0F3} +extern Q_EXPORT const QUuid TID_QUType_uint; +struct Q_EXPORT QUType_uint : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, uint ); + uint &get( QUObject *o ) { return o->payload.ui; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_uint static_QUType_uint; + +// {2D0974E5-0BA6-4ec2-8837-C198972CB48C} +extern Q_EXPORT const QUuid TID_QUType_double; +struct Q_EXPORT QUType_double : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, double ); + double &get( QUObject *o ) { return o->payload.d; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_double static_QUType_double; + +// {544C5175-6993-4486-B04D-CEC4D21BF4B9 } +extern Q_EXPORT const QUuid TID_QUType_float; +struct Q_EXPORT QUType_float : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, float ); + float &get( QUObject *o ) { return o->payload.f; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_float static_QUType_float; + +// {EFCDD1D4-77A3-4b8e-8D46-DC14B8D393E9} +extern Q_EXPORT const QUuid TID_QUType_charstar; +struct Q_EXPORT QUType_charstar : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, const char*, bool take = FALSE ); + char* get( QUObject *o ){ return o->payload.charstar.ptr; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ); + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); + +}; +extern Q_EXPORT QUType_charstar static_QUType_charstar; + +// {44C2A547-01E7-4e56-8559-35AF9D2F42B7} +extern const QUuid TID_QUType_QString; + +struct Q_EXPORT QUType_QString : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, const QString & ); + QString &get( QUObject * o ) { return *(QString*)o->payload.ptr; } + + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ); + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); + +}; +extern Q_EXPORT QUType_QString static_QUType_QString; + + +#endif // QUCOM_H diff --git a/qmake/include/private/qucomextra_p.h b/qmake/include/private/qucomextra_p.h new file mode 100644 index 0000000..3de6104 --- a/dev/null +++ b/qmake/include/private/qucomextra_p.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** $Id$ +** +** Definition of extra QUcom classes +** +** Created : 990101 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QUCOMEXTRA_H +#define QUCOMEXTRA_H + +#ifndef QT_H +#include <private/qucom_p.h> +#endif // QT_H + + +class QVariant; + +#ifndef QT_NO_VARIANT +// 6dc75d58-a1d9-4417-b591-d45c63a3a4ea +extern const QUuid TID_QUType_QVariant; + +struct Q_EXPORT QUType_QVariant : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, const QVariant & ); + QVariant &get( QUObject * o ); + + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ); + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_QVariant static_QUType_QVariant; +#endif //QT_NO_VARIANT + + +// {0x8d48b3a8, 0xbd7f, 0x11d5, 0x8d, 0x74, 0x00, 0xc0, 0xf0, 0x3b, 0xc0, 0xf3 } +extern Q_EXPORT const QUuid TID_QUType_varptr; +struct Q_EXPORT QUType_varptr : public QUType +{ + const QUuid *uuid() const; + const char *desc() const; + + void set( QUObject *, const void* ); + void* &get( QUObject * o ) { return o->payload.ptr; } + bool canConvertFrom( QUObject *, QUType * ); + bool canConvertTo( QUObject *, QUType * ); + bool convertFrom( QUObject *, QUType * ); + bool convertTo( QUObject *, QUType * ); + void clear( QUObject * ) {} + int serializeTo( QUObject *, QUBuffer * ); + int serializeFrom( QUObject *, QUBuffer * ); +}; +extern Q_EXPORT QUType_varptr static_QUType_varptr; + + +#endif // QUCOMEXTRA_H + diff --git a/qmake/include/private/qwidget_p.h b/qmake/include/private/qwidget_p.h new file mode 100644 index 0000000..80368d0 --- a/dev/null +++ b/qmake/include/private/qwidget_p.h @@ -0,0 +1,61 @@ +/**************************************************************************** +** $Id$ +** +** Definition of some Qt private functions. +** +** Created : 000903 +** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QWIDGET_P_H +#define QWIDGET_P_H + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// +// + +#ifndef QT_H +#endif // QT_H + +#if defined (Q_WS_X11) || defined (Q_WS_QWS) +extern int qt_widget_tlw_gravity; +#endif + +#endif diff --git a/qmake/include/private/qwidgetinterface_p.h b/qmake/include/private/qwidgetinterface_p.h new file mode 100644 index 0000000..5b5776b --- a/dev/null +++ b/qmake/include/private/qwidgetinterface_p.h @@ -0,0 +1,111 @@ + /********************************************************************** +** Copyright (C) 2000-2001 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QWIDGETINTERFACE_H +#define QWIDGETINTERFACE_H + + +#ifndef QT_H +#include <private/qcom_p.h> +#include <qiconset.h> +#endif // QT_H + +#ifndef QT_NO_WIDGETPLUGIN + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of a number of Qt sources files. This header file may change from +// version to version without notice, or even be removed. +// +// We mean it. +// +// + +class QWidget; + +// {55184143-f18f-42c0-a8eb-71c01516019a} +#ifndef IID_QWidgetFactory +#define IID_QWidgetFactory QUuid( 0x55184143, 0xf18f, 0x42c0, 0xa8, 0xeb, 0x71, 0xc0, 0x15, 0x16, 0x1, 0x9a ) +#endif + +/*! To add custom widgets to the Qt Designer, implement that interface + in your custom widget plugin. + + You also have to implement the function featureList() (\sa + QFeatureListInterface) and return there all widgets (names of it) + which this interface provides. +*/ + +struct QWidgetFactoryInterface : public QFeatureListInterface +{ +public: + + /*! In the implementation create and return the widget \a widget + here, use \a parent and \a name when creating the widget */ + virtual QWidget* create( const QString &widget, QWidget* parent = 0, const char* name = 0 ) = 0; + + /*! In the implementation return the name of the group of the + widget \a widget */ + virtual QString group( const QString &widget ) const = 0; + + /*! In the implementation return the iconset, which should be used + in the Qt Designer menubar and toolbar to represent the widget + \a widget */ + virtual QIconSet iconSet( const QString &widget ) const = 0; + + /*! In the implementation return the include file which is needed + for the widget \a widget in the generated code which uic + generates. */ + virtual QString includeFile( const QString &widget ) const = 0; + + /*! In the implementation return the text which should be + displayed as tooltip for the widget \a widget */ + virtual QString toolTip( const QString &widget ) const = 0; + + /*! In the implementation return the text which should be used for + what's this help for the widget \a widget. */ + virtual QString whatsThis( const QString &widget ) const = 0; + + /*! In the implementation return TRUE here, of the \a widget + should be able to contain other widget in the Qt Designer, else + FALSE. */ + virtual bool isContainer( const QString &widget ) const = 0; +}; + +#if CONTAINER_CUSTOM_WIDGETS +// {15976628-e3c3-47f4-b525-d124a3caf30e} +#ifndef IID_QWidgetContainer +#define IID_QWidgetContainer QUuid( 0x15976628, 0xe3c3, 0x47f4, 0xb5, 0x25, 0xd1, 0x24, 0xa3, 0xca, 0xf3, 0x0e ) +#endif + +struct QWidgetContainerInterfacePrivate : public QUnknownInterface +{ +public: + virtual QWidget *containerOfWidget( QWidget *widget ) const = 0; + virtual QWidgetList containersOf( QWidget *widget ) const = 0; + virtual bool isPassiveInteractor( QWidget *widget ) const = 0; +}; +#endif + +#endif // QT_NO_WIDGETPLUGIN +#endif // QWIDGETINTERFACE_H diff --git a/qmake/include/private/qwidgetresizehandler_p.h b/qmake/include/private/qwidgetresizehandler_p.h new file mode 100644 index 0000000..ca229db --- a/dev/null +++ b/qmake/include/private/qwidgetresizehandler_p.h @@ -0,0 +1,113 @@ +/**************************************************************************** +** $Id$ +** +** Definition of the QWidgetResizeHandler class +** +** Created : 001010 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the workspace module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition licenses may use this +** file in accordance with the Qt Commercial License Agreement provided +** with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QWIDGETRESIZEHANDLER_H +#define QWIDGETRESIZEHANDLER_H + +#ifndef QT_H +#include "qobject.h" +#endif // QT_H +#ifndef QT_NO_RESIZEHANDLER +class QMouseEvent; +class QKeyEvent; + +class Q_EXPORT QWidgetResizeHandler : public QObject +{ + Q_OBJECT + +public: + QWidgetResizeHandler( QWidget *parent, QWidget *cw = 0, const char *name = 0 ); + void setActive( bool b ) { active = b; if ( !active ) setMouseCursor( Nowhere ); } + bool isActive() const { return active; } + void setMovingEnabled( bool b ) { moving = b; } + bool isMovingEnabled() const { return moving; } + + bool isButtonDown() const { return buttonDown; } + + void setExtraHeight( int h ) { extrahei = h; } + void setSizeProtection( bool b ) { sizeprotect = b; } + + void doResize(); + void doMove(); + +signals: + void activate(); + +protected: + bool eventFilter( QObject *o, QEvent *e ); + void mouseMoveEvent( QMouseEvent *e ); + void keyPressEvent( QKeyEvent *e ); + +private: + enum MousePosition { + Nowhere, + TopLeft, BottomRight, BottomLeft, TopRight, + Top, Bottom, Left, Right, + Center + }; + + QWidget *widget; + QWidget *childWidget; + QPoint moveOffset; + QPoint invertedMoveOffset; + MousePosition mode; + int extrahei; + int range; + uint buttonDown :1; + uint moveResizeMode :1; + uint active :1; + uint sizeprotect :1; + uint moving :1; + + void setMouseCursor( MousePosition m ); + bool isMove() const { + return moveResizeMode && mode == Center; + } + bool isResize() const { + return moveResizeMode && !isMove(); + } + +private: // Disabled copy constructor and operator= +#if defined(Q_DISABLE_COPY) + QWidgetResizeHandler( const QWidgetResizeHandler & ); + QWidgetResizeHandler& operator=( const QWidgetResizeHandler & ); +#endif + +}; + +#endif //QT_NO_RESIZEHANDLER +#endif diff --git a/qmake/include/qasciidict.h b/qmake/include/qasciidict.h new file mode 100644 index 0000000..8f344cd --- a/dev/null +++ b/qmake/include/qasciidict.h @@ -0,0 +1,118 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QAsciiDict template class +** +** Created : 920821 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QASCIIDICT_H +#define QASCIIDICT_H + +#ifndef QT_H +#include "qgdict.h" +#endif // QT_H + +template<class type> +class QAsciiDict +#ifdef Q_QDOC + : public QPtrCollection +#else + : public QGDict +#endif +{ +public: + QAsciiDict(int size=17, bool caseSensitive=TRUE, bool copyKeys=TRUE ) + : QGDict(size,AsciiKey,caseSensitive,copyKeys) {} + QAsciiDict( const QAsciiDict<type> &d ) : QGDict(d) {} + ~QAsciiDict() { clear(); } + QAsciiDict<type> &operator=(const QAsciiDict<type> &d) + { return (QAsciiDict<type>&)QGDict::operator=(d); } + uint count() const { return QGDict::count(); } + uint size() const { return QGDict::size(); } + bool isEmpty() const { return QGDict::count() == 0; } + + void insert( const char *k, const type *d ) + { QGDict::look_ascii(k,(Item)d,1); } + void replace( const char *k, const type *d ) + { QGDict::look_ascii(k,(Item)d,2); } + bool remove( const char *k ) { return QGDict::remove_ascii(k); } + type *take( const char *k ) { return (type *)QGDict::take_ascii(k); } + type *find( const char *k ) const + { return (type *)((QGDict*)this)->QGDict::look_ascii(k,0,0); } + type *operator[]( const char *k ) const + { return (type *)((QGDict*)this)->QGDict::look_ascii(k,0,0); } + + void clear() { QGDict::clear(); } + void resize( uint n ) { QGDict::resize(n); } + void statistics() const { QGDict::statistics(); } + +#ifdef Q_QDOC +protected: + virtual QDataStream& read( QDataStream &, QPtrCollection::Item & ); + virtual QDataStream& write( QDataStream &, QPtrCollection::Item ) const; +#endif + +private: + void deleteItem( Item d ); +}; + +#if !defined(Q_BROKEN_TEMPLATE_SPECIALIZATION) +template<> inline void QAsciiDict<void>::deleteItem( QPtrCollection::Item ) +{ +} +#endif + +template<class type> inline void QAsciiDict<type>::deleteItem( QPtrCollection::Item d ) +{ + if ( del_item ) delete (type *)d; +} + +template<class type> +class QAsciiDictIterator : public QGDictIterator +{ +public: + QAsciiDictIterator(const QAsciiDict<type> &d) + : QGDictIterator((QGDict &)d) {} + ~QAsciiDictIterator() {} + uint count() const { return dict->count(); } + bool isEmpty() const { return dict->count() == 0; } + type *toFirst() { return (type *)QGDictIterator::toFirst(); } + operator type *() const { return (type *)QGDictIterator::get(); } + type *current() const { return (type *)QGDictIterator::get(); } + const char *currentKey() const { return QGDictIterator::getKeyAscii(); } + type *operator()() { return (type *)QGDictIterator::operator()(); } + type *operator++() { return (type *)QGDictIterator::operator++(); } + type *operator+=(uint j) { return (type *)QGDictIterator::operator+=(j);} +}; + +#endif // QASCIIDICT_H diff --git a/qmake/include/qbitarray.h b/qmake/include/qbitarray.h new file mode 100644 index 0000000..65c5cd3 --- a/dev/null +++ b/qmake/include/qbitarray.h @@ -0,0 +1,166 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QBitArray class +** +** Created : 940118 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QBITARRAY_H +#define QBITARRAY_H + +#ifndef QT_H +#include "qstring.h" +#endif // QT_H + + +/***************************************************************************** + QBitVal class; a context class for QBitArray::operator[] + *****************************************************************************/ + +class QBitArray; + +class Q_EXPORT QBitVal +{ +private: + QBitArray *array; + uint index; +public: + QBitVal( QBitArray *a, uint i ) : array(a), index(i) {} + operator int(); + QBitVal &operator=( const QBitVal &v ); + QBitVal &operator=( bool v ); +}; + + +/***************************************************************************** + QBitArray class + *****************************************************************************/ + +class Q_EXPORT QBitArray : public QByteArray +{ +public: + QBitArray(); + QBitArray( uint size ); + QBitArray( const QBitArray &a ) : QByteArray( a ) {} + + QBitArray &operator=( const QBitArray & ); + + uint size() const; + bool resize( uint size ); + + bool fill( bool v, int size = -1 ); + + void detach(); + QBitArray copy() const; + + bool testBit( uint index ) const; + void setBit( uint index ); + void setBit( uint index, bool value ); + void clearBit( uint index ); + bool toggleBit( uint index ); + + bool at( uint index ) const; + QBitVal operator[]( int index ); + bool operator[]( int index ) const; + + QBitArray &operator&=( const QBitArray & ); + QBitArray &operator|=( const QBitArray & ); + QBitArray &operator^=( const QBitArray & ); + QBitArray operator~() const; + +protected: + struct bitarr_data : public QGArray::array_data { + uint nbits; + }; + array_data *newData() { return new bitarr_data; } + void deleteData( array_data *d ) { delete (bitarr_data*)d; } +private: + void pad0(); +}; + + +inline QBitArray &QBitArray::operator=( const QBitArray &a ) +{ return (QBitArray&)assign( a ); } + +inline uint QBitArray::size() const +{ return ((bitarr_data*)sharedBlock())->nbits; } + +inline void QBitArray::setBit( uint index, bool value ) +{ if ( value ) setBit(index); else clearBit(index); } + +inline bool QBitArray::at( uint index ) const +{ return testBit(index); } + +inline QBitVal QBitArray::operator[]( int index ) +{ return QBitVal( (QBitArray*)this, index ); } + +inline bool QBitArray::operator[]( int index ) const +{ return testBit( index ); } + + +/***************************************************************************** + Misc. QBitArray operator functions + *****************************************************************************/ + +Q_EXPORT QBitArray operator&( const QBitArray &, const QBitArray & ); +Q_EXPORT QBitArray operator|( const QBitArray &, const QBitArray & ); +Q_EXPORT QBitArray operator^( const QBitArray &, const QBitArray & ); + + +inline QBitVal::operator int() +{ + return array->testBit( index ); +} + +inline QBitVal &QBitVal::operator=( const QBitVal &v ) +{ + array->setBit( index, v.array->testBit(v.index) ); + return *this; +} + +inline QBitVal &QBitVal::operator=( bool v ) +{ + array->setBit( index, v ); + return *this; +} + + +/***************************************************************************** + QBitArray stream functions + *****************************************************************************/ +#ifndef QT_NO_DATASTREAM +Q_EXPORT QDataStream &operator<<( QDataStream &, const QBitArray & ); +Q_EXPORT QDataStream &operator>>( QDataStream &, QBitArray & ); +#endif + +#endif // QBITARRAY_H diff --git a/qmake/include/qbuffer.h b/qmake/include/qbuffer.h new file mode 100644 index 0000000..f1b869b --- a/dev/null +++ b/qmake/include/qbuffer.h @@ -0,0 +1,100 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QBuffer class +** +** Created : 930812 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QBUFFER_H +#define QBUFFER_H + +#ifndef QT_H +#include "qiodevice.h" +#include "qstring.h" +#endif // QT_H + + +class Q_EXPORT QBuffer : public QIODevice +{ +public: + QBuffer(); + QBuffer( QByteArray ); + ~QBuffer(); + + QByteArray buffer() const; + bool setBuffer( QByteArray ); + + bool open( int ); + void close(); + void flush(); + + Offset size() const; + Offset at() const; + bool at( Offset ); + + Q_LONG readBlock( char *p, Q_ULONG ); + Q_LONG writeBlock( const char *p, Q_ULONG ); + Q_LONG writeBlock( const QByteArray& data ) + { return QIODevice::writeBlock(data); } + Q_LONG readLine( char *p, Q_ULONG ); + + int getch(); + int putch( int ); + int ungetch( int ); + +protected: + QByteArray a; + +private: + uint a_len; + uint a_inc; + +private: // Disabled copy constructor and operator= +#if defined(Q_DISABLE_COPY) + QBuffer( const QBuffer & ); + QBuffer &operator=( const QBuffer & ); +#endif +}; + + +inline QByteArray QBuffer::buffer() const +{ return a; } + +inline QIODevice::Offset QBuffer::size() const +{ return (Offset)a.size(); } + +inline QIODevice::Offset QBuffer::at() const +{ return ioIndex; } + + +#endif // QBUFFER_H diff --git a/qmake/include/qcache.h b/qmake/include/qcache.h new file mode 100644 index 0000000..94ba323 --- a/dev/null +++ b/qmake/include/qcache.h @@ -0,0 +1,118 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QCache template class +** +** Created : 950209 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QCACHE_H +#define QCACHE_H + +#ifndef QT_H +#include "qgcache.h" +#endif // QT_H + +template<class type> +class QCache +#ifdef Q_QDOC + : public QPtrCollection +#else + : public QGCache +#endif +{ +public: + QCache( const QCache<type> &c ) : QGCache(c) {} + QCache( int maxCost=100, int size=17, bool caseSensitive=TRUE ) + : QGCache( maxCost, size, StringKey, caseSensitive, FALSE ) {} + ~QCache() { clear(); } + QCache<type> &operator=( const QCache<type> &c ) + { return (QCache<type>&)QGCache::operator=(c); } + int maxCost() const { return QGCache::maxCost(); } + int totalCost() const { return QGCache::totalCost(); } + void setMaxCost( int m ) { QGCache::setMaxCost(m); } + uint count() const { return QGCache::count(); } + uint size() const { return QGCache::size(); } + bool isEmpty() const { return QGCache::count() == 0; } + void clear() { QGCache::clear(); } + bool insert( const QString &k, const type *d, int c=1, int p=0 ) + { return QGCache::insert_string(k,(Item)d,c,p);} + bool remove( const QString &k ) + { return QGCache::remove_string(k); } + type *take( const QString &k ) + { return (type *)QGCache::take_string(k); } + type *find( const QString &k, bool ref=TRUE ) const + { return (type *)QGCache::find_string(k,ref);} + type *operator[]( const QString &k ) const + { return (type *)QGCache::find_string(k);} + void statistics() const { QGCache::statistics(); } +private: + void deleteItem( Item d ); +}; + +#if !defined(Q_BROKEN_TEMPLATE_SPECIALIZATION) +template<> inline void QCache<void>::deleteItem( QPtrCollection::Item ) +{ +} +#endif + +template<class type> inline void QCache<type>::deleteItem( QPtrCollection::Item d ) +{ + if ( del_item ) delete (type *)d; +} + +template<class type> +class QCacheIterator : public QGCacheIterator +{ +public: + QCacheIterator( const QCache<type> &c ):QGCacheIterator((QGCache &)c) {} + QCacheIterator( const QCacheIterator<type> &ci) + : QGCacheIterator( (QGCacheIterator &)ci ) {} + QCacheIterator<type> &operator=(const QCacheIterator<type>&ci) + { return ( QCacheIterator<type>&)QGCacheIterator::operator=( ci ); } + uint count() const { return QGCacheIterator::count(); } + bool isEmpty() const { return QGCacheIterator::count() == 0; } + bool atFirst() const { return QGCacheIterator::atFirst(); } + bool atLast() const { return QGCacheIterator::atLast(); } + type *toFirst() { return (type *)QGCacheIterator::toFirst(); } + type *toLast() { return (type *)QGCacheIterator::toLast(); } + operator type *() const { return (type *)QGCacheIterator::get(); } + type *current() const { return (type *)QGCacheIterator::get(); } + QString currentKey() const{ return QGCacheIterator::getKeyString(); } + type *operator()() { return (type *)QGCacheIterator::operator()();} + type *operator++() { return (type *)QGCacheIterator::operator++(); } + type *operator+=(uint j) { return (type *)QGCacheIterator::operator+=(j);} + type *operator--() { return (type *)QGCacheIterator::operator--(); } + type *operator-=(uint j) { return (type *)QGCacheIterator::operator-=(j);} +}; + +#endif // QCACHE_H diff --git a/qmake/include/qcleanuphandler.h b/qmake/include/qcleanuphandler.h new file mode 100644 index 0000000..471dc7b --- a/dev/null +++ b/qmake/include/qcleanuphandler.h @@ -0,0 +1,127 @@ +/**************************************************************************** +** $Id$ +** +** ... +** +** Copyright (C) 2001-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QCLEANUPHANDLER_H +#define QCLEANUPHANDLER_H + +#ifndef QT_H +#include <qptrlist.h> +#endif // QT_H + +template<class Type> +class QCleanupHandler +{ +public: + QCleanupHandler() : cleanupObjects( 0 ) {} + ~QCleanupHandler() { clear(); } + + Type* add( Type **object ) { + if ( !cleanupObjects ) + cleanupObjects = new QPtrList<Type*>; + cleanupObjects->insert( 0, object ); + return *object; + } + + void remove( Type **object ) { + if ( !cleanupObjects ) + return; + if ( cleanupObjects->findRef( object ) >= 0 ) + (void) cleanupObjects->take(); + } + + bool isEmpty() const { + return cleanupObjects ? cleanupObjects->isEmpty() : TRUE; + } + + void clear() { + if ( !cleanupObjects ) + return; + QPtrListIterator<Type*> it( *cleanupObjects ); + Type **object; + while ( ( object = it.current() ) ) { + delete *object; + *object = 0; + cleanupObjects->remove( object ); + } + delete cleanupObjects; + cleanupObjects = 0; + } + +private: + QPtrList<Type*> *cleanupObjects; +}; + +template<class Type> +class QSingleCleanupHandler +{ +public: + QSingleCleanupHandler() : object( 0 ) {} + ~QSingleCleanupHandler() { + if ( object ) { + delete *object; + *object = 0; + } + } + Type* set( Type **o ) { + object = o; + return *object; + } + void reset() { object = 0; } +private: + Type **object; +}; + +template<class Type> +class QSharedCleanupHandler +{ +public: + QSharedCleanupHandler() : object( 0 ) {} + ~QSharedCleanupHandler() { + if ( object ) { + if ( (*object)->deref() ) + delete *object; + *object = 0; + } + } + Type* set( Type **o ) { + object = o; + return *object; + } + void reset() { object = 0; } +private: + Type **object; +}; + +#endif //QCLEANUPHANDLER_H diff --git a/qmake/include/qcstring.h b/qmake/include/qcstring.h new file mode 100644 index 0000000..004bb3b --- a/dev/null +++ b/qmake/include/qcstring.h @@ -0,0 +1,391 @@ +/**************************************************************************** +** $Id$ +** +** Definition of the extended char array operations, +** and QByteArray and QCString classes +** +** Created : 920609 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QCSTRING_H +#define QCSTRING_H + +#ifndef QT_H +#include "qmemarray.h" +#endif // QT_H + +#include <string.h> + + +/***************************************************************************** + Safe and portable C string functions; extensions to standard string.h + *****************************************************************************/ + +Q_EXPORT void *qmemmove( void *dst, const void *src, uint len ); + +Q_EXPORT char *qstrdup( const char * ); + +Q_EXPORT inline uint qstrlen( const char *str ) +{ return str ? (uint)strlen(str) : 0; } + +Q_EXPORT inline char *qstrcpy( char *dst, const char *src ) +{ return src ? strcpy(dst, src) : 0; } + +Q_EXPORT char *qstrncpy( char *dst, const char *src, uint len ); + +Q_EXPORT inline int qstrcmp( const char *str1, const char *str2 ) +{ + return ( str1 && str2 ) ? strcmp( str1, str2 ) + : ( str1 ? 1 : ( str2 ? -1 : 0 ) ); +} + +Q_EXPORT inline int qstrncmp( const char *str1, const char *str2, uint len ) +{ + return ( str1 && str2 ) ? strncmp( str1, str2, len ) + : ( str1 ? 1 : ( str2 ? -1 : 0 ) ); +} + +Q_EXPORT int qstricmp( const char *, const char * ); + +Q_EXPORT int qstrnicmp( const char *, const char *, uint len ); + +#ifndef QT_CLEAN_NAMESPACE +Q_EXPORT inline uint cstrlen( const char *str ) +{ return (uint)strlen(str); } + +Q_EXPORT inline char *cstrcpy( char *dst, const char *src ) +{ return strcpy(dst,src); } + +Q_EXPORT inline int cstrcmp( const char *str1, const char *str2 ) +{ return strcmp(str1,str2); } + +Q_EXPORT inline int cstrncmp( const char *str1, const char *str2, uint len ) +{ return strncmp(str1,str2,len); } +#endif + + +// qChecksum: Internet checksum + +Q_EXPORT Q_UINT16 qChecksum( const char *s, uint len ); + +/***************************************************************************** + QByteArray class + *****************************************************************************/ + +#if defined(Q_TEMPLATEDLL) +Q_TEMPLATE_EXTERN template class Q_EXPORT QMemArray<char>; +#endif + +#if defined(Q_QDOC) +/* + We want qdoc to document QByteArray as a real class that inherits + QMemArray<char> and that is inherited by QBitArray. +*/ +class QByteArray : public QMemArray<char> +{ +public: + QByteArray(); + QByteArray( int size ); +}; +#else +typedef QMemArray<char> QByteArray; +#endif + +#ifndef QT_NO_COMPRESS +Q_EXPORT QByteArray qCompress( const uchar* data, int nbytes ); +Q_EXPORT QByteArray qUncompress( const uchar* data, int nbytes ); +Q_EXPORT inline QByteArray qCompress( const QByteArray& data) +{ return qCompress( (const uchar*)data.data(), data.size() ); } +Q_EXPORT inline QByteArray qUncompress( const QByteArray& data ) +{ return qUncompress( (const uchar*)data.data(), data.size() ); } +#endif + +/***************************************************************************** + QByteArray stream functions + *****************************************************************************/ +#ifndef QT_NO_DATASTREAM +Q_EXPORT QDataStream &operator<<( QDataStream &, const QByteArray & ); +Q_EXPORT QDataStream &operator>>( QDataStream &, QByteArray & ); +#endif + +/***************************************************************************** + QCString class + *****************************************************************************/ + +class QRegExp; + +class Q_EXPORT QCString : public QByteArray // C string class +{ +public: + QCString() {} // make null string + QCString( int size ); // allocate size incl. \0 + QCString( const QCString &s ) : QByteArray( s ) {} + QCString( const char *str ); // deep copy + QCString( const char *str, uint maxlen ); // deep copy, max length + ~QCString(); + + QCString &operator=( const QCString &s );// shallow copy + QCString &operator=( const char *str ); // deep copy + + bool isNull() const; + bool isEmpty() const; + uint length() const; + bool resize( uint newlen ); + bool truncate( uint pos ); + bool fill( char c, int len = -1 ); + + QCString copy() const; + + QCString &sprintf( const char *format, ... ); + + int find( char c, int index=0, bool cs=TRUE ) const; + int find( const char *str, int index=0, bool cs=TRUE ) const; +#ifndef QT_NO_REGEXP + int find( const QRegExp &, int index=0 ) const; +#endif + int findRev( char c, int index=-1, bool cs=TRUE) const; + int findRev( const char *str, int index=-1, bool cs=TRUE) const; +#ifndef QT_NO_REGEXP_CAPTURE + int findRev( const QRegExp &, int index=-1 ) const; +#endif + int contains( char c, bool cs=TRUE ) const; + int contains( const char *str, bool cs=TRUE ) const; +#ifndef QT_NO_REGEXP + int contains( const QRegExp & ) const; +#endif + QCString left( uint len ) const; + QCString right( uint len ) const; + QCString mid( uint index, uint len=0xffffffff) const; + + QCString leftJustify( uint width, char fill=' ', bool trunc=FALSE)const; + QCString rightJustify( uint width, char fill=' ',bool trunc=FALSE)const; + + QCString lower() const; + QCString upper() const; + + QCString stripWhiteSpace() const; + QCString simplifyWhiteSpace() const; + + QCString &insert( uint index, const char * ); + QCString &insert( uint index, char ); + QCString &append( const char * ); + QCString &prepend( const char * ); + QCString &remove( uint index, uint len ); + QCString &replace( uint index, uint len, const char * ); +#ifndef QT_NO_REGEXP + QCString &replace( const QRegExp &, const char * ); +#endif + QCString &replace( char c, const char *after ); + QCString &replace( const char *, const char * ); + QCString &replace( char, char ); + + short toShort( bool *ok=0 ) const; + ushort toUShort( bool *ok=0 ) const; + int toInt( bool *ok=0 ) const; + uint toUInt( bool *ok=0 ) const; + long toLong( bool *ok=0 ) const; + ulong toULong( bool *ok=0 ) const; + float toFloat( bool *ok=0 ) const; + double toDouble( bool *ok=0 ) const; + + QCString &setStr( const char *s ); + QCString &setNum( short ); + QCString &setNum( ushort ); + QCString &setNum( int ); + QCString &setNum( uint ); + QCString &setNum( long ); + QCString &setNum( ulong ); + QCString &setNum( float, char f='g', int prec=6 ); + QCString &setNum( double, char f='g', int prec=6 ); + + bool setExpand( uint index, char c ); + + operator const char *() const; + QCString &operator+=( const char *str ); + QCString &operator+=( char c ); +}; + + +/***************************************************************************** + QCString stream functions + *****************************************************************************/ +#ifndef QT_NO_DATASTREAM +Q_EXPORT QDataStream &operator<<( QDataStream &, const QCString & ); +Q_EXPORT QDataStream &operator>>( QDataStream &, QCString & ); +#endif + +/***************************************************************************** + QCString inline functions + *****************************************************************************/ + +inline QCString &QCString::operator=( const QCString &s ) +{ return (QCString&)assign( s ); } + +inline QCString &QCString::operator=( const char *str ) +{ return (QCString&)duplicate( str, qstrlen(str)+1 ); } + +inline bool QCString::isNull() const +{ return data() == 0; } + +inline bool QCString::isEmpty() const +{ return data() == 0 || *data() == '\0'; } + +inline uint QCString::length() const +{ return qstrlen( data() ); } + +inline bool QCString::truncate( uint pos ) +{ return resize(pos+1); } + +inline QCString QCString::copy() const +{ return QCString( data() ); } + +inline QCString &QCString::prepend( const char *s ) +{ return insert(0,s); } + +inline QCString &QCString::append( const char *s ) +{ return operator+=(s); } + +inline QCString &QCString::setNum( short n ) +{ return setNum((long)n); } + +inline QCString &QCString::setNum( ushort n ) +{ return setNum((ulong)n); } + +inline QCString &QCString::setNum( int n ) +{ return setNum((long)n); } + +inline QCString &QCString::setNum( uint n ) +{ return setNum((ulong)n); } + +inline QCString &QCString::setNum( float n, char f, int prec ) +{ return setNum((double)n,f,prec); } + +inline QCString::operator const char *() const +{ return (const char *)data(); } + + +/***************************************************************************** + QCString non-member operators + *****************************************************************************/ + +Q_EXPORT inline bool operator==( const QCString &s1, const QCString &s2 ) +{ return qstrcmp( s1.data(), s2.data() ) == 0; } + +Q_EXPORT inline bool operator==( const QCString &s1, const char *s2 ) +{ return qstrcmp( s1.data(), s2 ) == 0; } + +Q_EXPORT inline bool operator==( const char *s1, const QCString &s2 ) +{ return qstrcmp( s1, s2.data() ) == 0; } + +Q_EXPORT inline bool operator!=( const QCString &s1, const QCString &s2 ) +{ return qstrcmp( s1.data(), s2.data() ) != 0; } + +Q_EXPORT inline bool operator!=( const QCString &s1, const char *s2 ) +{ return qstrcmp( s1.data(), s2 ) != 0; } + +Q_EXPORT inline bool operator!=( const char *s1, const QCString &s2 ) +{ return qstrcmp( s1, s2.data() ) != 0; } + +Q_EXPORT inline bool operator<( const QCString &s1, const QCString& s2 ) +{ return qstrcmp( s1.data(), s2.data() ) < 0; } + +Q_EXPORT inline bool operator<( const QCString &s1, const char *s2 ) +{ return qstrcmp( s1.data(), s2 ) < 0; } + +Q_EXPORT inline bool operator<( const char *s1, const QCString &s2 ) +{ return qstrcmp( s1, s2.data() ) < 0; } + +Q_EXPORT inline bool operator<=( const QCString &s1, const QCString &s2 ) +{ return qstrcmp( s1.data(), s2.data() ) <= 0; } + +Q_EXPORT inline bool operator<=( const QCString &s1, const char *s2 ) +{ return qstrcmp( s1.data(), s2 ) <= 0; } + +Q_EXPORT inline bool operator<=( const char *s1, const QCString &s2 ) +{ return qstrcmp( s1, s2.data() ) <= 0; } + +Q_EXPORT inline bool operator>( const QCString &s1, const QCString &s2 ) +{ return qstrcmp( s1.data(), s2.data() ) > 0; } + +Q_EXPORT inline bool operator>( const QCString &s1, const char *s2 ) +{ return qstrcmp( s1.data(), s2 ) > 0; } + +Q_EXPORT inline bool operator>( const char *s1, const QCString &s2 ) +{ return qstrcmp( s1, s2.data() ) > 0; } + +Q_EXPORT inline bool operator>=( const QCString &s1, const QCString& s2 ) +{ return qstrcmp( s1.data(), s2.data() ) >= 0; } + +Q_EXPORT inline bool operator>=( const QCString &s1, const char *s2 ) +{ return qstrcmp( s1.data(), s2 ) >= 0; } + +Q_EXPORT inline bool operator>=( const char *s1, const QCString &s2 ) +{ return qstrcmp( s1, s2.data() ) >= 0; } + +Q_EXPORT inline const QCString operator+( const QCString &s1, + const QCString &s2 ) +{ + QCString tmp( s1.data() ); + tmp += s2; + return tmp; +} + +Q_EXPORT inline const QCString operator+( const QCString &s1, const char *s2 ) +{ + QCString tmp( s1.data() ); + tmp += s2; + return tmp; +} + +Q_EXPORT inline const QCString operator+( const char *s1, const QCString &s2 ) +{ + QCString tmp( s1 ); + tmp += s2; + return tmp; +} + +Q_EXPORT inline const QCString operator+( const QCString &s1, char c2 ) +{ + QCString tmp( s1.data() ); + tmp += c2; + return tmp; +} + +Q_EXPORT inline const QCString operator+( char c1, const QCString &s2 ) +{ + QCString tmp; + tmp += c1; + tmp += s2; + return tmp; +} + +#endif // QCSTRING_H diff --git a/qmake/include/qdatastream.h b/qmake/include/qdatastream.h new file mode 100644 index 0000000..09d7bef --- a/dev/null +++ b/qmake/include/qdatastream.h @@ -0,0 +1,173 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QDataStream class +** +** Created : 930831 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QDATASTREAM_H +#define QDATASTREAM_H + +#ifndef QT_H +#include "qiodevice.h" +#include "qstring.h" +#endif // QT_H + +#ifndef QT_NO_DATASTREAM +class Q_EXPORT QDataStream // data stream class +{ +public: + QDataStream(); + QDataStream( QIODevice * ); + QDataStream( QByteArray, int mode ); + virtual ~QDataStream(); + + QIODevice *device() const; + void setDevice( QIODevice * ); + void unsetDevice(); + + bool atEnd() const; + bool eof() const; + + enum ByteOrder { BigEndian, LittleEndian }; + int byteOrder() const; + void setByteOrder( int ); + + bool isPrintableData() const; + void setPrintableData( bool ); + + int version() const; + void setVersion( int ); + + QDataStream &operator>>( Q_INT8 &i ); + QDataStream &operator>>( Q_UINT8 &i ); + QDataStream &operator>>( Q_INT16 &i ); + QDataStream &operator>>( Q_UINT16 &i ); + QDataStream &operator>>( Q_INT32 &i ); + QDataStream &operator>>( Q_UINT32 &i ); + QDataStream &operator>>( Q_LONG &i ); + QDataStream &operator>>( Q_ULONG &i ); + + QDataStream &operator>>( float &f ); + QDataStream &operator>>( double &f ); + QDataStream &operator>>( char *&str ); + + QDataStream &operator<<( Q_INT8 i ); + QDataStream &operator<<( Q_UINT8 i ); + QDataStream &operator<<( Q_INT16 i ); + QDataStream &operator<<( Q_UINT16 i ); + QDataStream &operator<<( Q_INT32 i ); + QDataStream &operator<<( Q_UINT32 i ); + QDataStream &operator<<( Q_LONG i ); + QDataStream &operator<<( Q_ULONG i ); + QDataStream &operator<<( float f ); + QDataStream &operator<<( double f ); + QDataStream &operator<<( const char *str ); + + QDataStream &readBytes( char *&, uint &len ); + QDataStream &readRawBytes( char *, uint len ); + + QDataStream &writeBytes( const char *, uint len ); + QDataStream &writeRawBytes( const char *, uint len ); + +private: + QIODevice *dev; + bool owndev; + int byteorder; + bool printable; + bool noswap; + int ver; + +private: // Disabled copy constructor and operator= +#if defined(Q_DISABLE_COPY) + QDataStream( const QDataStream & ); + QDataStream &operator=( const QDataStream & ); +#endif +}; + + +/***************************************************************************** + QDataStream inline functions + *****************************************************************************/ + +inline QIODevice *QDataStream::device() const +{ return dev; } + +inline bool QDataStream::atEnd() const +{ return dev ? dev->atEnd() : TRUE; } + +inline bool QDataStream::eof() const +{ return atEnd(); } + +inline int QDataStream::byteOrder() const +{ return byteorder; } + +inline bool QDataStream::isPrintableData() const +{ return printable; } + +inline void QDataStream::setPrintableData( bool p ) +{ printable = p; } + +inline int QDataStream::version() const +{ return ver; } + +inline void QDataStream::setVersion( int v ) +{ ver = v; } + +inline QDataStream &QDataStream::operator>>( Q_UINT8 &i ) +{ return *this >> (Q_INT8&)i; } + +inline QDataStream &QDataStream::operator>>( Q_UINT16 &i ) +{ return *this >> (Q_INT16&)i; } + +inline QDataStream &QDataStream::operator>>( Q_UINT32 &i ) +{ return *this >> (Q_INT32&)i; } + +inline QDataStream &QDataStream::operator>>( Q_ULONG &i ) +{ return *this >> (Q_LONG&)i; } + +inline QDataStream &QDataStream::operator<<( Q_UINT8 i ) +{ return *this << (Q_INT8)i; } + +inline QDataStream &QDataStream::operator<<( Q_UINT16 i ) +{ return *this << (Q_INT16)i; } + +inline QDataStream &QDataStream::operator<<( Q_UINT32 i ) +{ return *this << (Q_INT32)i; } + +inline QDataStream &QDataStream::operator<<( Q_ULONG i ) +{ return *this << (Q_LONG)i; } + + +#endif // QT_NO_DATASTREAM +#endif // QDATASTREAM_H diff --git a/qmake/include/qdatetime.h b/qmake/include/qdatetime.h new file mode 100644 index 0000000..4f01760 --- a/dev/null +++ b/qmake/include/qdatetime.h @@ -0,0 +1,250 @@ +/************************************************************************* +** $Id$ +** +** Definition of date and time classes +** +** Created : 940124 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QDATETIME_H +#define QDATETIME_H + +#ifndef QT_H +#include "qstring.h" +#include "qnamespace.h" +#endif // QT_H + + +/***************************************************************************** + QDate class + *****************************************************************************/ + +class Q_EXPORT QDate +{ +public: + QDate() { jd = 0; } + QDate( int y, int m, int d ); + + bool isNull() const { return jd == 0; } + bool isValid() const; + + int year() const; + int month() const; + int day() const; + int dayOfWeek() const; + int dayOfYear() const; + int daysInMonth() const; + int daysInYear() const; + int weekNumber( int *yearNum = 0 ) const; + +#ifndef QT_NO_TEXTDATE +#ifndef QT_NO_COMPAT + static QString monthName( int month ) { return shortMonthName( month ); } + static QString dayName( int weekday ) { return shortDayName( weekday ); } +#endif + static QString shortMonthName( int month ); + static QString shortDayName( int weekday ); + static QString longMonthName( int month ); + static QString longDayName( int weekday ); +#endif //QT_NO_TEXTDATE +#ifndef QT_NO_TEXTSTRING +#if !defined(QT_NO_SPRINTF) + QString toString( Qt::DateFormat f = Qt::TextDate ) const; +#endif + QString toString( const QString& format ) const; +#endif + bool setYMD( int y, int m, int d ); + + QDate addDays( int days ) const; + QDate addMonths( int months ) const; + QDate addYears( int years ) const; + int daysTo( const QDate & ) const; + + bool operator==( const QDate &d ) const { return jd == d.jd; } + bool operator!=( const QDate &d ) const { return jd != d.jd; } + bool operator<( const QDate &d ) const { return jd < d.jd; } + bool operator<=( const QDate &d ) const { return jd <= d.jd; } + bool operator>( const QDate &d ) const { return jd > d.jd; } + bool operator>=( const QDate &d ) const { return jd >= d.jd; } + + static QDate currentDate(); + static QDate currentDate( Qt::TimeSpec ); +#ifndef QT_NO_DATESTRING + static QDate fromString( const QString& s, Qt::DateFormat f = Qt::TextDate ); +#endif + static bool isValid( int y, int m, int d ); + static bool leapYear( int year ); + + static uint gregorianToJulian( int y, int m, int d ); + static void julianToGregorian( uint jd, int &y, int &m, int &d ); +private: + uint jd; + friend class QDateTime; +#ifndef QT_NO_DATASTREAM + friend Q_EXPORT QDataStream &operator<<( QDataStream &, const QDate & ); + friend Q_EXPORT QDataStream &operator>>( QDataStream &, QDate & ); +#endif +}; + + +/***************************************************************************** + QTime class + *****************************************************************************/ + +class Q_EXPORT QTime +{ +public: + QTime() { ds=0; } // set null time + QTime( int h, int m, int s=0, int ms=0 ); // set time + + bool isNull() const { return ds == 0; } + bool isValid() const; // valid time + + int hour() const; // 0..23 + int minute() const; // 0..59 + int second() const; // 0..59 + int msec() const; // 0..999 +#ifndef QT_NO_DATESTRING +#ifndef QT_NO_SPRINTF + QString toString( Qt::DateFormat f = Qt::TextDate ) const; +#endif + QString toString( const QString& format ) const; +#endif + bool setHMS( int h, int m, int s, int ms=0 ); + + QTime addSecs( int secs ) const; + int secsTo( const QTime & ) const; + QTime addMSecs( int ms ) const; + int msecsTo( const QTime & ) const; + + bool operator==( const QTime &d ) const { return ds == d.ds; } + bool operator!=( const QTime &d ) const { return ds != d.ds; } + bool operator<( const QTime &d ) const { return ds < d.ds; } + bool operator<=( const QTime &d ) const { return ds <= d.ds; } + bool operator>( const QTime &d ) const { return ds > d.ds; } + bool operator>=( const QTime &d ) const { return ds >= d.ds; } + + static QTime currentTime(); + static QTime currentTime( Qt::TimeSpec ); +#ifndef QT_NO_DATESTRING + static QTime fromString( const QString& s, Qt::DateFormat f = Qt::TextDate ); +#endif + static bool isValid( int h, int m, int s, int ms=0 ); + + void start(); + int restart(); + int elapsed() const; + +private: + static bool currentTime( QTime * ); + static bool currentTime( QTime *, Qt::TimeSpec ); + + uint ds; + friend class QDateTime; +#ifndef QT_NO_DATASTREAM + friend Q_EXPORT QDataStream &operator<<( QDataStream &, const QTime & ); + friend Q_EXPORT QDataStream &operator>>( QDataStream &, QTime & ); +#endif +}; + + +/***************************************************************************** + QDateTime class + *****************************************************************************/ + +class Q_EXPORT QDateTime +{ +public: + QDateTime() {} // set null date and null time + QDateTime( const QDate & ); + QDateTime( const QDate &, const QTime & ); + + bool isNull() const { return d.isNull() && t.isNull(); } + bool isValid() const { return d.isValid() && t.isValid(); } + + QDate date() const { return d; } + QTime time() const { return t; } + uint toTime_t() const; + void setDate( const QDate &date ) { d = date; } + void setTime( const QTime &time ) { t = time; } + void setTime_t( uint secsSince1Jan1970UTC ); + void setTime_t( uint secsSince1Jan1970UTC, Qt::TimeSpec ); +#ifndef QT_NO_DATESTRING +#ifndef QT_NO_SPRINTF + QString toString( Qt::DateFormat f = Qt::TextDate ) const; +#endif + QString toString( const QString& format ) const; +#endif + QDateTime addDays( int days ) const; + QDateTime addMonths( int months ) const; + QDateTime addYears( int years ) const; + QDateTime addSecs( int secs ) const; + int daysTo( const QDateTime & ) const; + int secsTo( const QDateTime & ) const; + + bool operator==( const QDateTime &dt ) const; + bool operator!=( const QDateTime &dt ) const; + bool operator<( const QDateTime &dt ) const; + bool operator<=( const QDateTime &dt ) const; + bool operator>( const QDateTime &dt ) const; + bool operator>=( const QDateTime &dt ) const; + + static QDateTime currentDateTime(); + static QDateTime currentDateTime( Qt::TimeSpec ); +#ifndef QT_NO_DATESTRING + static QDateTime fromString( const QString& s, Qt::DateFormat f = Qt::TextDate ); +#endif +private: + QDate d; + QTime t; +#ifndef QT_NO_DATASTREAM + friend Q_EXPORT QDataStream &operator<<( QDataStream &, const QDateTime &); + friend Q_EXPORT QDataStream &operator>>( QDataStream &, QDateTime & ); +#endif +}; + + +/***************************************************************************** + Date and time stream functions + *****************************************************************************/ + +#ifndef QT_NO_DATASTREAM +Q_EXPORT QDataStream &operator<<( QDataStream &, const QDate & ); +Q_EXPORT QDataStream &operator>>( QDataStream &, QDate & ); +Q_EXPORT QDataStream &operator<<( QDataStream &, const QTime & ); +Q_EXPORT QDataStream &operator>>( QDataStream &, QTime & ); +Q_EXPORT QDataStream &operator<<( QDataStream &, const QDateTime & ); +Q_EXPORT QDataStream &operator>>( QDataStream &, QDateTime & ); +#endif // QT_NO_DATASTREAM + +#endif // QDATETIME_H + diff --git a/qmake/include/qdict.h b/qmake/include/qdict.h new file mode 100644 index 0000000..04ae7bf --- a/dev/null +++ b/qmake/include/qdict.h @@ -0,0 +1,118 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QDict template class +** +** Created : 920821 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QDICT_H +#define QDICT_H + +#ifndef QT_H +#include "qgdict.h" +#endif // QT_H + +template<class type> +class QDict +#ifdef Q_QDOC + : public QPtrCollection +#else + : public QGDict +#endif +{ +public: + QDict( int size = 17, bool caseSensitive = TRUE ) + : QGDict( size, StringKey, caseSensitive, FALSE ) { } + QDict( const QDict<type> &d ) : QGDict( d ) { } + ~QDict() { clear(); } + QDict<type> &operator=(const QDict<type> &d) + { return (QDict<type>&)QGDict::operator=(d); } + uint count() const { return QGDict::count(); } + uint size() const { return QGDict::size(); } + bool isEmpty() const { return QGDict::count() == 0; } + + void insert( const QString &k, const type *d ) + { QGDict::look_string(k,(Item)d,1); } + void replace( const QString &k, const type *d ) + { QGDict::look_string(k,(Item)d,2); } + bool remove( const QString &k ) { return QGDict::remove_string(k); } + type *take( const QString &k ) { return (type *)QGDict::take_string(k); } + type *find( const QString &k ) const + { return (type *)((QGDict*)this)->QGDict::look_string(k,0,0); } + type *operator[]( const QString &k ) const + { return (type *)((QGDict*)this)->QGDict::look_string(k,0,0); } + + void clear() { QGDict::clear(); } + void resize( uint n ) { QGDict::resize(n); } + void statistics() const { QGDict::statistics(); } + +#ifdef Q_QDOC +protected: + virtual QDataStream& read( QDataStream &, QPtrCollection::Item & ); + virtual QDataStream& write( QDataStream &, QPtrCollection::Item ) const; +#endif + +private: + void deleteItem( Item d ); +}; + +#if !defined(Q_BROKEN_TEMPLATE_SPECIALIZATION) +template<> inline void QDict<void>::deleteItem( Item ) +{ +} +#endif + +template<class type> inline void QDict<type>::deleteItem( QPtrCollection::Item d ) +{ + if ( del_item ) delete (type *)d; +} + +template<class type> +class QDictIterator : public QGDictIterator +{ +public: + QDictIterator(const QDict<type> &d) : QGDictIterator((QGDict &)d) { } + ~QDictIterator() {} + uint count() const { return dict->count(); } + bool isEmpty() const { return dict->count() == 0; } + type *toFirst() { return (type *)QGDictIterator::toFirst(); } + operator type *() const { return (type *)QGDictIterator::get(); } + type *operator*() { return (type *)QGDictIterator::get(); } + type *current() const { return (type *)QGDictIterator::get(); } + QString currentKey() const{ return QGDictIterator::getKeyString(); } + type *operator()() { return (type *)QGDictIterator::operator()(); } + type *operator++() { return (type *)QGDictIterator::operator++(); } + type *operator+=(uint j) { return (type *)QGDictIterator::operator+=(j); } +}; + +#endif // QDICT_H diff --git a/qmake/include/qdir.h b/qmake/include/qdir.h new file mode 100644 index 0000000..6e9f1ab --- a/dev/null +++ b/qmake/include/qdir.h @@ -0,0 +1,241 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QDir class +** +** Created : 950427 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QDIR_H +#define QDIR_H + +#ifndef QT_H +#include "qglobal.h" +#include "qstrlist.h" +#include "qfileinfo.h" +#endif // QT_H + + +#ifndef QT_NO_DIR +typedef QPtrList<QFileInfo> QFileInfoList; +typedef QPtrListIterator<QFileInfo> QFileInfoListIterator; +class QStringList; + + +class Q_EXPORT QDir +{ +public: + enum FilterSpec { Dirs = 0x001, + Files = 0x002, + Drives = 0x004, + NoSymLinks = 0x008, + All = 0x007, + TypeMask = 0x00F, + + Readable = 0x010, + Writable = 0x020, + Executable = 0x040, + RWEMask = 0x070, + + Modified = 0x080, + Hidden = 0x100, + System = 0x200, + AccessMask = 0x3F0, + + DefaultFilter = -1 }; + + enum SortSpec { Name = 0x00, + Time = 0x01, + Size = 0x02, + Unsorted = 0x03, + SortByMask = 0x03, + + DirsFirst = 0x04, + Reversed = 0x08, + IgnoreCase = 0x10, + DefaultSort = -1 }; + + QDir(); + QDir( const QString &path, const QString &nameFilter = QString::null, + int sortSpec = Name | IgnoreCase, int filterSpec = All ); + QDir( const QDir & ); + + virtual ~QDir(); + + QDir &operator=( const QDir & ); + QDir &operator=( const QString &path ); + + virtual void setPath( const QString &path ); + virtual QString path() const; + virtual QString absPath() const; + virtual QString canonicalPath() const; + + virtual QString dirName() const; + virtual QString filePath( const QString &fileName, + bool acceptAbsPath = TRUE ) const; + virtual QString absFilePath( const QString &fileName, + bool acceptAbsPath = TRUE ) const; + + static QString convertSeparators( const QString &pathName ); + + virtual bool cd( const QString &dirName, bool acceptAbsPath = TRUE ); + virtual bool cdUp(); + + QString nameFilter() const; + virtual void setNameFilter( const QString &nameFilter ); + FilterSpec filter() const; + virtual void setFilter( int filterSpec ); + SortSpec sorting() const; + virtual void setSorting( int sortSpec ); + + bool matchAllDirs() const; + virtual void setMatchAllDirs( bool ); + + uint count() const; + QString operator[]( int ) const; + + virtual QStrList encodedEntryList( int filterSpec = DefaultFilter, + int sortSpec = DefaultSort ) const; + virtual QStrList encodedEntryList( const QString &nameFilter, + int filterSpec = DefaultFilter, + int sortSpec = DefaultSort ) const; + virtual QStringList entryList( int filterSpec = DefaultFilter, + int sortSpec = DefaultSort ) const; + virtual QStringList entryList( const QString &nameFilter, + int filterSpec = DefaultFilter, + int sortSpec = DefaultSort ) const; + + virtual const QFileInfoList *entryInfoList( int filterSpec = DefaultFilter, + int sortSpec = DefaultSort ) const; + virtual const QFileInfoList *entryInfoList( const QString &nameFilter, + int filterSpec = DefaultFilter, + int sortSpec = DefaultSort ) const; + + static const QFileInfoList *drives(); + + virtual bool mkdir( const QString &dirName, + bool acceptAbsPath = TRUE ) const; + virtual bool rmdir( const QString &dirName, + bool acceptAbsPath = TRUE ) const; + + virtual bool isReadable() const; + virtual bool exists() const; + virtual bool isRoot() const; + + virtual bool isRelative() const; + virtual void convertToAbs(); + + virtual bool operator==( const QDir & ) const; + virtual bool operator!=( const QDir & ) const; + + virtual bool remove( const QString &fileName, + bool acceptAbsPath = TRUE ); + virtual bool rename( const QString &name, const QString &newName, + bool acceptAbsPaths = TRUE ); + virtual bool exists( const QString &name, + bool acceptAbsPath = TRUE ); + + static char separator(); + + static bool setCurrent( const QString &path ); + static QDir current(); + static QDir home(); + static QDir root(); + static QString currentDirPath(); + static QString homeDirPath(); + static QString rootDirPath(); + + static bool match( const QStringList &filters, const QString &fileName ); + static bool match( const QString &filter, const QString &fileName ); + static QString cleanDirPath( const QString &dirPath ); + static bool isRelativePath( const QString &path ); + +private: +#ifdef Q_OS_MAC + typedef struct FSSpec FSSpec; + static FSSpec *make_spec(const QString &); +#endif + void init(); + virtual bool readDirEntries( const QString &nameFilter, + int FilterSpec, int SortSpec ); + + static void slashify ( QString &); + + QString dPath; + QStringList *fList; + QFileInfoList *fiList; + QString nameFilt; + FilterSpec filtS; + SortSpec sortS; + uint dirty : 1; + uint allDirs : 1; +}; + + +inline QString QDir::path() const +{ + return dPath; +} + +inline QString QDir::nameFilter() const +{ + return nameFilt; +} + +inline QDir::FilterSpec QDir::filter() const +{ + return filtS; +} + +inline QDir::SortSpec QDir::sorting() const +{ + return sortS; +} + +inline bool QDir::matchAllDirs() const +{ + return allDirs; +} + +inline bool QDir::operator!=( const QDir &d ) const +{ + return !(*this == d); +} + + +struct QDirSortItem { + QString filename_cache; + QFileInfo* item; +}; + +#endif // QT_NO_DIR +#endif // QDIR_H diff --git a/qmake/include/qfeatures.h b/qmake/include/qfeatures.h new file mode 100644 index 0000000..57502f9 --- a/dev/null +++ b/qmake/include/qfeatures.h @@ -0,0 +1,959 @@ +// All feature and their dependencies +// +// This list is generated from $QTDIR/src/tools/qfeatures.txt +// +// Asynchronous I/O +//#define QT_NO_ASYNC_IO + +// Bezier curves +//#define QT_NO_BEZIER + +// Buttons +//#define QT_NO_BUTTON + +// Named colors +//#define QT_NO_COLORNAMES + +// Cursors +//#define QT_NO_CURSOR + +// QDataStream +//#define QT_NO_DATASTREAM + +// QDate/QTime/QDateTime toString() and fromString() +//#define QT_NO_DATESTRING + +// Dialogs +//#define QT_NO_DIALOG + +// QDirectPainter +//#define QT_NO_DIRECTPAINTER + +// Special widget effects (fading, scrolling) +//#define QT_NO_EFFECTS + +// Freetype font engine +//#define QT_NO_FREETYPE + +// Dither QImage to 1-bit image +//#define QT_NO_IMAGE_DITHER_TO_1 + +// QImage::createHeuristicMask() +//#define QT_NO_IMAGE_HEURISTIC_MASK + +// QImage mirroring +//#define QT_NO_IMAGE_MIRROR + +// Smooth QImage scaling +//#define QT_NO_IMAGE_SMOOTHSCALE + +// TrueColor QImage +//#define QT_NO_IMAGE_TRUECOLOR + +// Automatic widget layout +//#define QT_NO_LAYOUT + +// Networking +//#define QT_NO_NETWORK + +// Palettes +//#define QT_NO_PALETTE + +// Alpha-blended cursor +//#define QT_NO_QWS_ALPHA_CURSOR + +// 1-bit monochrome +//#define QT_NO_QWS_DEPTH_1 + +// 15 or 16-bit color +//#define QT_NO_QWS_DEPTH_16 + +// 24-bit color +//#define QT_NO_QWS_DEPTH_24 + +// 32-bit color +//#define QT_NO_QWS_DEPTH_32 + +// 4-bit greyscale +//#define QT_NO_QWS_DEPTH_4 + +// 8-bit color +//#define QT_NO_QWS_DEPTH_8 + +// 8-bit grayscale +//#define QT_NO_QWS_DEPTH_8GRAYSCALE + +// Favour code size over graphics speed +//#define QT_NO_QWS_GFX_SPEED + +// Console keyboard +//#define QT_NO_QWS_KEYBOARD + +// Linux framebuffer +//#define QT_NO_QWS_LINUXFB + +// Mach64 acceleration +//#define QT_NO_QWS_MACH64 + +// Window Manager +//#define QT_NO_QWS_MANAGER + +// Matrox MGA acceleration +//#define QT_NO_QWS_MATROX + +// Autodetecting mouse driver +//#define QT_NO_QWS_MOUSE_AUTO + +// Non-autodetecting mouse driver +//#define QT_NO_QWS_MOUSE_MANUAL + +// Qt/Embedded window system properties. +//#define QT_NO_QWS_PROPERTIES + +// Repeater display +//#define QT_NO_QWS_REPEATER + +// Saving of fonts +//#define QT_NO_QWS_SAVEFONTS + +// Shadow frame buffer +//#define QT_NO_QWS_SHADOWFB + +// Virtual frame buffer +//#define QT_NO_QWS_VFB + +// 4-bit VGA +//#define QT_NO_QWS_VGA_16 + +// Voodoo3 acceleration +//#define QT_NO_QWS_VOODOO3 + +// Range-control widgets +//#define QT_NO_RANGECONTROL + +// Regular expression capture +//#define QT_NO_REGEXP + +// QSignalMapper +//#define QT_NO_SIGNALMAPPER + +// Playing sounds +//#define QT_NO_SOUND + +// Standard template library compatiblity +//#define QT_NO_STL + +// QStringList +//#define QT_NO_STRINGLIST + +// Character set conversions +//#define QT_NO_TEXTCODEC + +// QTextStream +//#define QT_NO_TEXTSTREAM + +// Unicode property tables +//#define QT_NO_UNICODETABLES + +// Input validators +//#define QT_NO_VALIDATOR + +// QVariant +//#define QT_NO_VARIANT + +// Wheel-mouse events +//#define QT_NO_WHEELEVENT + +// QWMatrix +//#define QT_NO_WMATRIX + +// Non-Unicode text conversions +#if !defined(QT_NO_CODECS) && (defined(QT_NO_TEXTCODEC)) +#define QT_NO_CODECS +#endif + +// QCop IPC +#if !defined(QT_NO_COP) && (defined(QT_NO_DATASTREAM)) +#define QT_NO_COP +#endif + +// QFontDatabase +#if !defined(QT_NO_FONTDATABASE) && (defined(QT_NO_STRINGLIST)) +#define QT_NO_FONTDATABASE +#endif + +// Image formats +#if !defined(QT_NO_IMAGEIO) && (defined(QT_NO_REGEXP)) +#define QT_NO_IMAGEIO +#endif + +// 16-bit QImage +#if !defined(QT_NO_IMAGE_16_BIT) && (defined(QT_NO_IMAGE_TRUECOLOR)) +#define QT_NO_IMAGE_16_BIT +#endif + +// Image file text strings +#if !defined(QT_NO_IMAGE_TEXT) && (defined(QT_NO_STRINGLIST)) +#define QT_NO_IMAGE_TEXT +#endif + +// Shared library wrapper +#if !defined(QT_NO_LIBRARY) && (defined(QT_NO_REGEXP)) +#define QT_NO_LIBRARY +#endif + +// Pixmap transformations +#if !defined(QT_NO_PIXMAP_TRANSFORMATION) && (defined(QT_NO_WMATRIX)) +#define QT_NO_PIXMAP_TRANSFORMATION +#endif + +// Convert UUID to/from string +#if !defined(QT_NO_QUUID_STRING) && (defined(QT_NO_STRINGLIST)) +#define QT_NO_QUUID_STRING +#endif + +// The "BeOS" style +#if !defined(QT_NO_QWS_BEOS_WM_STYLE) && (defined(QT_NO_QWS_MANAGER)) +#define QT_NO_QWS_BEOS_WM_STYLE +#endif + +// Visible cursor +#if !defined(QT_NO_QWS_CURSOR) && (defined(QT_NO_CURSOR)) +#define QT_NO_QWS_CURSOR +#endif + +// 32-bit color, BGR order +#if !defined(QT_NO_QWS_DEPTH_32_BGR) && (defined(QT_NO_QWS_DEPTH_32)) +#define QT_NO_QWS_DEPTH_32_BGR +#endif + +// The "Hydro" style +#if !defined(QT_NO_QWS_HYDRO_WM_STYLE) && (defined(QT_NO_QWS_MANAGER)) +#define QT_NO_QWS_HYDRO_WM_STYLE +#endif + +// The "KDE2" style +#if !defined(QT_NO_QWS_KDE2_WM_STYLE) && (defined(QT_NO_QWS_MANAGER)) +#define QT_NO_QWS_KDE2_WM_STYLE +#endif + +// The "KDE" style +#if !defined(QT_NO_QWS_KDE_WM_STYLE) && (defined(QT_NO_QWS_MANAGER)) +#define QT_NO_QWS_KDE_WM_STYLE +#endif + +// Multi-process architecture +#if !defined(QT_NO_QWS_MULTIPROCESS) && (defined(QT_NO_NETWORK)) +#define QT_NO_QWS_MULTIPROCESS +#endif + +// Transformed frame buffer +#if !defined(QT_NO_QWS_TRANSFORMED) && (defined(QT_NO_QWS_LINUXFB)) +#define QT_NO_QWS_TRANSFORMED +#endif + +// Remote frame buffer (VNC) +#if !defined(QT_NO_QWS_VNC) && (defined(QT_NO_NETWORK)) +#define QT_NO_QWS_VNC +#endif + +// The "Windows" style +#if !defined(QT_NO_QWS_WINDOWS_WM_STYLE) && (defined(QT_NO_QWS_MANAGER)) +#define QT_NO_QWS_WINDOWS_WM_STYLE +#endif + +// Regular expression anchors +#if !defined(QT_NO_REGEXP_ANCHOR_ALT) && (defined(QT_NO_REGEXP)) +#define QT_NO_REGEXP_ANCHOR_ALT +#endif + +// Regular expression back-reference +#if !defined(QT_NO_REGEXP_BACKREF) && (defined(QT_NO_REGEXP)) +#define QT_NO_REGEXP_BACKREF +#endif + +// Regular expression character-class +#if !defined(QT_NO_REGEXP_CCLASS) && (defined(QT_NO_REGEXP)) +#define QT_NO_REGEXP_CCLASS +#endif + +// Regular expression escape +#if !defined(QT_NO_REGEXP_ESCAPE) && (defined(QT_NO_REGEXP)) +#define QT_NO_REGEXP_ESCAPE +#endif + +// Regular expression interval +#if !defined(QT_NO_REGEXP_INTERVAL) && (defined(QT_NO_REGEXP)) +#define QT_NO_REGEXP_INTERVAL +#endif + +// Regular expression lookahead +#if !defined(QT_NO_REGEXP_LOOKAHEAD) && (defined(QT_NO_REGEXP)) +#define QT_NO_REGEXP_LOOKAHEAD +#endif + +// Regular expression optimization +#if !defined(QT_NO_REGEXP_OPTIM) && (defined(QT_NO_REGEXP)) +#define QT_NO_REGEXP_OPTIM +#endif + +// Regular expression wildcard +#if !defined(QT_NO_REGEXP_WILDCARD) && (defined(QT_NO_REGEXP)) +#define QT_NO_REGEXP_WILDCARD +#endif + +// Semi-modal dialogs +#if !defined(QT_NO_SEMIMODAL) && (defined(QT_NO_DIALOG)) +#define QT_NO_SEMIMODAL +#endif + +// Session management +#if !defined(QT_NO_SESSIONMANAGER) && (defined(QT_NO_STRINGLIST)) +#define QT_NO_SESSIONMANAGER +#endif + +// QString::sprintf() +#if !defined(QT_NO_SPRINTF) && (defined(QT_NO_REGEXP)) +#define QT_NO_SPRINTF +#endif + +// Scaling and rotation +#if !defined(QT_NO_TRANSFORMATIONS) && (defined(QT_NO_WMATRIX)) +#define QT_NO_TRANSFORMATIONS +#endif + +// Translations via QObject::tr() +#if !defined(QT_NO_TRANSLATION) && (defined(QT_NO_DATASTREAM)) +#define QT_NO_TRANSLATION +#endif + +// Window icon and caption +#if !defined(QT_NO_WIDGET_TOPEXTRA) && (defined(QT_NO_IMAGE_HEURISTIC_MASK)) +#define QT_NO_WIDGET_TOPEXTRA +#endif + +// Keyboard accelerators and shortcuts +#if !defined(QT_NO_ACCEL) && (defined(QT_NO_SPRINTF)) +#define QT_NO_ACCEL +#endif + +// Asynchronous image I/O +#if !defined(QT_NO_ASYNC_IMAGE_IO) && (defined(QT_NO_IMAGEIO)) +#define QT_NO_ASYNC_IMAGE_IO +#endif + +// BDF font files +#if !defined(QT_NO_BDF) && (defined(QT_NO_TEXTSTREAM) || defined(QT_NO_STRINGLIST)) +#define QT_NO_BDF +#endif + +// QDir +#if !defined(QT_NO_DIR) && (defined(QT_NO_STRINGLIST) || defined(QT_NO_REGEXP)) +#define QT_NO_DIR +#endif + +// JPEG image I/O +#if !defined(QT_NO_IMAGEIO_JPEG) && (defined(QT_NO_IMAGEIO)) +#define QT_NO_IMAGEIO_JPEG +#endif + +// MNG image I/O +#if !defined(QT_NO_IMAGEIO_MNG) && (defined(QT_NO_IMAGEIO)) +#define QT_NO_IMAGEIO_MNG +#endif + +// PNG image I/O +#if !defined(QT_NO_IMAGEIO_PNG) && (defined(QT_NO_IMAGEIO)) +#define QT_NO_IMAGEIO_PNG +#endif + +// PPM image I/O +#if !defined(QT_NO_IMAGEIO_PPM) && (defined(QT_NO_IMAGEIO)) +#define QT_NO_IMAGEIO_PPM +#endif + +// XBM image I/O +#if !defined(QT_NO_IMAGEIO_XBM) && (defined(QT_NO_IMAGEIO)) +#define QT_NO_IMAGEIO_XBM +#endif + +// Image transformations +#if !defined(QT_NO_IMAGE_TRANSFORMATION) && (defined(QT_NO_PIXMAP_TRANSFORMATION)) +#define QT_NO_IMAGE_TRANSFORMATION +#endif + +// External process invocation. +#if !defined(QT_NO_PROCESS) && (defined(QT_NO_STRINGLIST) || defined(QT_NO_REGEXP)) +#define QT_NO_PROCESS +#endif + +// Regular expression capture +#if !defined(QT_NO_REGEXP_CAPTURE) && (defined(QT_NO_REGEXP) || defined(QT_NO_STRINGLIST)) +#define QT_NO_REGEXP_CAPTURE +#endif + +// Template classes in QVariant +#if !defined(QT_NO_TEMPLATE_VARIANT) && (defined(QT_NO_VARIANT) || defined(QT_NO_STRINGLIST)) +#define QT_NO_TEMPLATE_VARIANT +#endif + +// Month and day names in dates +#if !defined(QT_NO_TEXTDATE) && (defined(QT_NO_STRINGLIST) || defined(QT_NO_DATESTRING)) +#define QT_NO_TEXTDATE +#endif + +// Drawing utility functions +#if !defined(QT_NO_DRAWUTIL) && (defined(QT_NO_SPRINTF) || defined(QT_NO_PALETTE)) +#define QT_NO_DRAWUTIL +#endif + +// BMP image I/O +#if !defined(QT_NO_IMAGEIO_BMP) && (defined(QT_NO_IMAGEIO) || defined(QT_NO_DATASTREAM)) +#define QT_NO_IMAGEIO_BMP +#endif + +// QPicture +#if !defined(QT_NO_PICTURE) && (defined(QT_NO_DATASTREAM) || defined(QT_NO_IMAGEIO)) +#define QT_NO_PICTURE +#endif + +// Translations via QObject::trUtf8() +#if !defined(QT_NO_TRANSLATION_UTF8) && (defined(QT_NO_TRANSLATION) || defined(QT_NO_TEXTCODEC)) +#define QT_NO_TRANSLATION_UTF8 +#endif + +// URL parser +#if !defined(QT_NO_URL) && (defined(QT_NO_DIR)) +#define QT_NO_URL +#endif + +// Animated images +#if !defined(QT_NO_MOVIE) && (defined(QT_NO_ASYNC_IO) || defined(QT_NO_ASYNC_IMAGE_IO)) +#define QT_NO_MOVIE +#endif + +// Persistent application settings +#if !defined(QT_NO_SETTINGS) && (defined(QT_NO_DIR) || defined(QT_NO_TEXTSTREAM)) +#define QT_NO_SETTINGS +#endif + +// QStyle +#if !defined(QT_NO_STYLE) && (defined(QT_NO_DRAWUTIL)) +#define QT_NO_STYLE +#endif + +// DNS +#if !defined(QT_NO_DNS) && (defined(QT_NO_NETWORK) || defined(QT_NO_STRINGLIST) || defined(QT_NO_TEXTSTREAM) || defined(QT_NO_SPRINTF)) +#define QT_NO_DNS +#endif + +// Framed widgets +#if !defined(QT_NO_FRAME) && (defined(QT_NO_STYLE)) +#define QT_NO_FRAME +#endif + +// QIconSet +#if !defined(QT_NO_ICONSET) && (defined(QT_NO_IMAGEIO) || defined(QT_NO_IMAGE_SMOOTHSCALE) || defined(QT_NO_PALETTE) || defined(QT_NO_IMAGE_HEURISTIC_MASK)) +#define QT_NO_ICONSET +#endif + +// XPM image I/O +#if !defined(QT_NO_IMAGEIO_XPM) && (defined(QT_NO_IMAGEIO) || defined(QT_NO_SPRINTF) || defined(QT_NO_TEXTSTREAM)) +#define QT_NO_IMAGEIO_XPM +#endif + +// QSizeGrip +#if !defined(QT_NO_SIZEGRIP) && (defined(QT_NO_STYLE)) +#define QT_NO_SIZEGRIP +#endif + +// Motif style +#if !defined(QT_NO_STYLE_MOTIF) && (defined(QT_NO_STYLE)) +#define QT_NO_STYLE_MOTIF +#endif + +// Windows style +#if !defined(QT_NO_STYLE_WINDOWS) && (defined(QT_NO_STYLE)) +#define QT_NO_STYLE_WINDOWS +#endif + +// Internal titlebar widget +#if !defined(QT_NO_TITLEBAR) && (defined(QT_NO_STYLE)) +#define QT_NO_TITLEBAR +#endif + +// XML +#if !defined(QT_NO_XML) && (defined(QT_NO_TEXTSTREAM) || defined(QT_NO_TEXTCODEC) || defined(QT_NO_REGEXP_CAPTURE)) +#define QT_NO_XML +#endif + +// Check-boxes +#if !defined(QT_NO_CHECKBOX) && (defined(QT_NO_BUTTON) || defined(QT_NO_STYLE)) +#define QT_NO_CHECKBOX +#endif + +// Dials +#if !defined(QT_NO_DIAL) && (defined(QT_NO_RANGECONTROL) || defined(QT_NO_STYLE)) +#define QT_NO_DIAL +#endif + +// QLabel +#if !defined(QT_NO_LABEL) && (defined(QT_NO_FRAME)) +#define QT_NO_LABEL +#endif + +// QLCDNumber +#if !defined(QT_NO_LCDNUMBER) && (defined(QT_NO_FRAME)) +#define QT_NO_LCDNUMBER +#endif + +// MIME +#if !defined(QT_NO_MIME) && (defined(QT_NO_DIR) || defined(QT_NO_IMAGEIO) || defined(QT_NO_TEXTCODEC)) +#define QT_NO_MIME +#endif + +// Printing +#if !defined(QT_NO_PRINTER) && (defined(QT_NO_TEXTSTREAM) || defined(QT_NO_SPRINTF) || defined(QT_NO_FONTDATABASE) || defined(QT_NO_DATESTRING)) +#define QT_NO_PRINTER +#endif + +// Progress bars +#if !defined(QT_NO_PROGRESSBAR) && (defined(QT_NO_FRAME)) +#define QT_NO_PROGRESSBAR +#endif + +// Radio-buttons +#if !defined(QT_NO_RADIOBUTTON) && (defined(QT_NO_BUTTON) || defined(QT_NO_STYLE)) +#define QT_NO_RADIOBUTTON +#endif + +// Internal resize handler +#if !defined(QT_NO_RESIZEHANDLER) && (defined(QT_NO_FRAME)) +#define QT_NO_RESIZEHANDLER +#endif + +// Scroll bars +#if !defined(QT_NO_SCROLLBAR) && (defined(QT_NO_RANGECONTROL) || defined(QT_NO_STYLE)) +#define QT_NO_SCROLLBAR +#endif + +// Sliders +#if !defined(QT_NO_SLIDER) && (defined(QT_NO_RANGECONTROL) || defined(QT_NO_STYLE)) +#define QT_NO_SLIDER +#endif + +// Spinbox control widget +#if !defined(QT_NO_SPINWIDGET) && (defined(QT_NO_FRAME)) +#define QT_NO_SPINWIDGET +#endif + +// Status bars +#if !defined(QT_NO_STATUSBAR) && (defined(QT_NO_LAYOUT) || defined(QT_NO_STYLE)) +#define QT_NO_STATUSBAR +#endif + +// Compact Windows style +#if !defined(QT_NO_STYLE_COMPACT) && (defined(QT_NO_STYLE_WINDOWS)) +#define QT_NO_STYLE_COMPACT +#endif + +// Interlace-friendly style +#if !defined(QT_NO_STYLE_INTERLACE) && (defined(QT_NO_STYLE_MOTIF)) +#define QT_NO_STYLE_INTERLACE +#endif + +// Platinum style +#if !defined(QT_NO_STYLE_PLATINUM) && (defined(QT_NO_STYLE_WINDOWS)) +#define QT_NO_STYLE_PLATINUM +#endif + +// Widget stacks +#if !defined(QT_NO_WIDGETSTACK) && (defined(QT_NO_FRAME)) +#define QT_NO_WIDGETSTACK +#endif + +// Grid layout widgets +#if !defined(QT_NO_GRID) && (defined(QT_NO_LAYOUT) || defined(QT_NO_FRAME)) +#define QT_NO_GRID +#endif + +// Group boxes +#if !defined(QT_NO_GROUPBOX) && (defined(QT_NO_FRAME) || defined(QT_NO_LAYOUT)) +#define QT_NO_GROUPBOX +#endif + +// Horizonal box layout widgets +#if !defined(QT_NO_HBOX) && (defined(QT_NO_LAYOUT) || defined(QT_NO_FRAME)) +#define QT_NO_HBOX +#endif + +// Menu-oriented widgets +#if !defined(QT_NO_MENUDATA) && (defined(QT_NO_ICONSET) || defined(QT_NO_VARIANT)) +#define QT_NO_MENUDATA +#endif + +// RichText (HTML) display +#if !defined(QT_NO_RICHTEXT) && (defined(QT_NO_DRAWUTIL) || defined(QT_NO_LAYOUT) || defined(QT_NO_STRINGLIST) || defined(QT_NO_TEXTSTREAM)) +#define QT_NO_RICHTEXT +#endif + +// Splitters +#if !defined(QT_NO_SPLITTER) && (defined(QT_NO_FRAME) || defined(QT_NO_LAYOUT)) +#define QT_NO_SPLITTER +#endif + +// Table-like widgets +#if !defined(QT_NO_TABLEVIEW) && (defined(QT_NO_SCROLLBAR)) +#define QT_NO_TABLEVIEW +#endif + +// Tool tips +#if !defined(QT_NO_TOOLTIP) && (defined(QT_NO_LABEL)) +#define QT_NO_TOOLTIP +#endif + +// Cut and paste +#if !defined(QT_NO_CLIPBOARD) && (defined(QT_NO_QWS_PROPERTIES) || defined(QT_NO_MIME)) +#define QT_NO_CLIPBOARD +#endif + +// Complex scripts (eg. BiDi) +#if !defined(QT_NO_COMPLEXTEXT) && (defined(QT_NO_RICHTEXT)) +#define QT_NO_COMPLEXTEXT +#endif + +// Horizontal group boxes +#if !defined(QT_NO_HGROUPBOX) && (defined(QT_NO_GROUPBOX)) +#define QT_NO_HGROUPBOX +#endif + +// Network file access +#if !defined(QT_NO_NETWORKPROTOCOL) && (defined(QT_NO_DIR) || defined(QT_NO_TEXTCODEC) || defined(QT_NO_URL)) +#define QT_NO_NETWORKPROTOCOL +#endif + +// Properties +#if !defined(QT_NO_PROPERTIES) && (defined(QT_NO_VARIANT) || defined(QT_NO_STRINGLIST) || defined(QT_NO_ICONSET)) +#define QT_NO_PROPERTIES +#endif + +// CDE style +#if !defined(QT_NO_STYLE_CDE) && (defined(QT_NO_STYLE_MOTIF) || defined(QT_NO_TRANSFORMATIONS)) +#define QT_NO_STYLE_CDE +#endif + +// Motif-plus style +#if !defined(QT_NO_STYLE_MOTIFPLUS) && (defined(QT_NO_STYLE_MOTIF) || defined(QT_NO_TRANSFORMATIONS)) +#define QT_NO_STYLE_MOTIFPLUS +#endif + +// SGI style +#if !defined(QT_NO_STYLE_SGI) && (defined(QT_NO_STYLE_MOTIF) || defined(QT_NO_TRANSFORMATIONS)) +#define QT_NO_STYLE_SGI +#endif + +// Vertical box layout widgets +#if !defined(QT_NO_VBOX) && (defined(QT_NO_HBOX)) +#define QT_NO_VBOX +#endif + +// Button groups +#if !defined(QT_NO_BUTTONGROUP) && (defined(QT_NO_GROUPBOX) || defined(QT_NO_BUTTON)) +#define QT_NO_BUTTONGROUP +#endif + +// Cut and paste non-text +#if !defined(QT_NO_MIMECLIPBOARD) && (defined(QT_NO_CLIPBOARD)) +#define QT_NO_MIMECLIPBOARD +#endif + +// Aqua style +#if !defined(QT_NO_STYLE_AQUA) && (defined(QT_NO_STYLE_WINDOWS) || defined(QT_NO_IMAGE_TRANSFORMATION)) +#define QT_NO_STYLE_AQUA +#endif + +// Vertical group boxes +#if !defined(QT_NO_VGROUPBOX) && (defined(QT_NO_HGROUPBOX)) +#define QT_NO_VGROUPBOX +#endif + +// Horizontal button groups +#if !defined(QT_NO_HBUTTONGROUP) && (defined(QT_NO_BUTTONGROUP)) +#define QT_NO_HBUTTONGROUP +#endif + +// Server to play sound +#if !defined(QT_NO_QWS_SOUNDSERVER) && (defined(QT_NO_SOUND) || defined(QT_NO_DIR) || defined(QT_NO_DNS)) +#define QT_NO_QWS_SOUNDSERVER +#endif + +// Hebrew Codec +#if !defined(QT_NO_CODEC_HEBREW) && (defined(QT_NO_CODECS) || defined(QT_NO_COMPLEXTEXT)) +#define QT_NO_CODEC_HEBREW +#endif + +// Dynamic module linking +#if !defined(QT_NO_COMPONENT) && (defined(QT_NO_QUUID_STRING) || defined(QT_NO_SETTINGS) || defined(QT_NO_SPRINTF) || defined(QT_NO_LIBRARY)) +#define QT_NO_COMPONENT +#endif + +// QHeader +#if !defined(QT_NO_HEADER) && (defined(QT_NO_STYLE) || defined(QT_NO_ICONSET)) +#define QT_NO_HEADER +#endif + +// Vertical button groups +#if !defined(QT_NO_VBUTTONGROUP) && (defined(QT_NO_HBUTTONGROUP)) +#define QT_NO_VBUTTONGROUP +#endif + +// Big Codecs (eg. CJK) +#if !defined(QT_NO_BIG_CODECS) && (defined(QT_NO_CODEC_HEBREW)) +#define QT_NO_BIG_CODECS +#endif + +// Tool-buttons +#if !defined(QT_NO_TOOLBUTTON) && (defined(QT_NO_BUTTON) || defined(QT_NO_ICONSET) || defined(QT_NO_STYLE)) +#define QT_NO_TOOLBUTTON +#endif + +// Document Object Model +#if !defined(QT_NO_DOM) && (defined(QT_NO_XML) || defined(QT_NO_MIME)) +#define QT_NO_DOM +#endif + +// Scrollable view widgets +#if !defined(QT_NO_SCROLLVIEW) && (defined(QT_NO_SCROLLBAR) || defined(QT_NO_FRAME)) +#define QT_NO_SCROLLVIEW +#endif + +// Tab-bars +#if !defined(QT_NO_TABBAR) && (defined(QT_NO_TOOLBUTTON)) +#define QT_NO_TABBAR +#endif + +// QTextCodecPlugin +#if !defined(QT_NO_TEXTCODECPLUGIN) && (defined(QT_NO_COMPONENT) || defined(QT_NO_TEXTCODEC)) +#define QT_NO_TEXTCODECPLUGIN +#endif + +// Drag and drop +#if !defined(QT_NO_DRAGANDDROP) && (defined(QT_NO_MIME) || defined(QT_NO_QWS_PROPERTIES) || defined(QT_NO_IMAGEIO_XPM)) +#define QT_NO_DRAGANDDROP +#endif + +// QGridView +#if !defined(QT_NO_GRIDVIEW) && (defined(QT_NO_SCROLLVIEW)) +#define QT_NO_GRIDVIEW +#endif + +// QImageFormatPlugin +#if !defined(QT_NO_IMAGEFORMATPLUGIN) && (defined(QT_NO_COMPONENT) || defined(QT_NO_IMAGEIO)) +#define QT_NO_IMAGEFORMATPLUGIN +#endif + +// Single-line edits +#if !defined(QT_NO_LINEEDIT) && (defined(QT_NO_FRAME) || defined(QT_NO_RICHTEXT)) +#define QT_NO_LINEEDIT +#endif + +// Popup-menus +#if !defined(QT_NO_POPUPMENU) && (defined(QT_NO_MENUDATA) || defined(QT_NO_FRAME)) +#define QT_NO_POPUPMENU +#endif + +// QCanvas +#if !defined(QT_NO_CANVAS) && (defined(QT_NO_SCROLLVIEW) || defined(QT_NO_BEZIER)) +#define QT_NO_CANVAS +#endif + +// QListBox +#if !defined(QT_NO_LISTBOX) && (defined(QT_NO_SCROLLVIEW) || defined(QT_NO_STRINGLIST)) +#define QT_NO_LISTBOX +#endif + +// Menu bars +#if !defined(QT_NO_MENUBAR) && (defined(QT_NO_POPUPMENU)) +#define QT_NO_MENUBAR +#endif + +// HTTP file access +#if !defined(QT_NO_NETWORKPROTOCOL_HTTP) && (defined(QT_NO_NETWORKPROTOCOL) || defined(QT_NO_DNS)) +#define QT_NO_NETWORKPROTOCOL_HTTP +#endif + +// RichText (HTML) tables and images +#if !defined(QT_NO_TEXTCUSTOMITEM) && (defined(QT_NO_RICHTEXT) || defined(QT_NO_MIME)) +#define QT_NO_TEXTCUSTOMITEM +#endif + +// QDateTimeEdit +#if !defined(QT_NO_DATETIMEEDIT) && (defined(QT_NO_RICHTEXT) || defined(QT_NO_SPINWIDGET) || defined(QT_NO_DATESTRING)) +#define QT_NO_DATETIMEEDIT +#endif + +// Push-buttons +#if !defined(QT_NO_PUSHBUTTON) && (defined(QT_NO_BUTTON) || defined(QT_NO_POPUPMENU)) +#define QT_NO_PUSHBUTTON +#endif + +// FTP file access +#if !defined(QT_NO_NETWORKPROTOCOL_FTP) && (defined(QT_NO_NETWORKPROTOCOL) || defined(QT_NO_DNS) || defined(QT_NO_TEXTDATE)) +#define QT_NO_NETWORKPROTOCOL_FTP +#endif + +// Scalable Vector Graphics (SVG) +#if !defined(QT_NO_SVG) && (defined(QT_NO_DOM) || defined(QT_NO_TRANSFORMATIONS) || defined(QT_NO_SPRINTF)) +#define QT_NO_SVG +#endif + +// QWidgetPlugin +#if !defined(QT_NO_WIDGETPLUGIN) && (defined(QT_NO_COMPONENT) || defined(QT_NO_ICONSET)) +#define QT_NO_WIDGETPLUGIN +#endif + +// QIconView +#if !defined(QT_NO_ICONVIEW) && (defined(QT_NO_SCROLLVIEW) || defined(QT_NO_IMAGEIO_XPM) || defined(QT_NO_IMAGE_HEURISTIC_MASK)) +#define QT_NO_ICONVIEW +#endif + +// Tab widgets +#if !defined(QT_NO_TABWIDGET) && (defined(QT_NO_TABBAR) || defined(QT_NO_WIDGETSTACK)) +#define QT_NO_TABWIDGET +#endif + +// "What's this" help +#if !defined(QT_NO_WHATSTHIS) && (defined(QT_NO_TOOLTIP) || defined(QT_NO_TOOLBUTTON)) +#define QT_NO_WHATSTHIS +#endif + +// Rich text edit +#if !defined(QT_NO_TEXTEDIT) && (defined(QT_NO_RICHTEXT) || defined(QT_NO_SCROLLVIEW)) +#define QT_NO_TEXTEDIT +#endif + +// Multi-line edits +#if !defined(QT_NO_MULTILINEEDIT) && (defined(QT_NO_TEXTEDIT)) +#define QT_NO_MULTILINEEDIT +#endif + +// QTextView +#if !defined(QT_NO_TEXTVIEW) && (defined(QT_NO_TEXTEDIT)) +#define QT_NO_TEXTVIEW +#endif + +// Spin boxes +#if !defined(QT_NO_SPINBOX) && (defined(QT_NO_RANGECONTROL) || defined(QT_NO_SPINWIDGET) || defined(QT_NO_LINEEDIT) || defined(QT_NO_VALIDATOR)) +#define QT_NO_SPINBOX +#endif + +// QMessageBox +#if !defined(QT_NO_MESSAGEBOX) && (defined(QT_NO_DIALOG) || defined(QT_NO_PUSHBUTTON) || defined(QT_NO_LABEL)) +#define QT_NO_MESSAGEBOX +#endif + +// SQL classes +#if !defined(QT_NO_SQL) && (defined(QT_NO_MESSAGEBOX)) +#define QT_NO_SQL +#endif + +// QTextBrowser +#if !defined(QT_NO_TEXTBROWSER) && (defined(QT_NO_TEXTVIEW) || defined(QT_NO_MIME)) +#define QT_NO_TEXTBROWSER +#endif + +// QProgressDialog +#if !defined(QT_NO_PROGRESSDIALOG) && (defined(QT_NO_SEMIMODAL) || defined(QT_NO_LABEL) || defined(QT_NO_PUSHBUTTON) || defined(QT_NO_PROGRESSBAR)) +#define QT_NO_PROGRESSDIALOG +#endif + +// QWizard +#if !defined(QT_NO_WIZARD) && (defined(QT_NO_DIALOG) || defined(QT_NO_WIDGETSTACK) || defined(QT_NO_PUSHBUTTON) || defined(QT_NO_LAYOUT) || defined(QT_NO_LABEL)) +#define QT_NO_WIZARD +#endif + +// QSqlForm +#if !defined(QT_NO_SQL_FORM) && (defined(QT_NO_SQL) || defined(QT_NO_PROPERTIES)) +#define QT_NO_SQL_FORM +#endif + +// QListView +#if !defined(QT_NO_LISTVIEW) && (defined(QT_NO_SCROLLVIEW) || defined(QT_NO_HEADER) || defined(QT_NO_LINEEDIT)) +#define QT_NO_LISTVIEW +#endif + +// QTabDialog +#if !defined(QT_NO_TABDIALOG) && (defined(QT_NO_DIALOG) || defined(QT_NO_PUSHBUTTON) || defined(QT_NO_LAYOUT) || defined(QT_NO_TABWIDGET)) +#define QT_NO_TABDIALOG +#endif + +// QComboBox +#if !defined(QT_NO_COMBOBOX) && (defined(QT_NO_LISTBOX) || defined(QT_NO_LINEEDIT) || defined(QT_NO_POPUPMENU)) +#define QT_NO_COMBOBOX +#endif + +// Main-windows +#if !defined(QT_NO_MAINWINDOW) && (defined(QT_NO_STRINGLIST) || defined(QT_NO_POPUPMENU) || defined(QT_NO_TITLEBAR) || defined(QT_NO_RESIZEHANDLER) || defined(QT_NO_TOOLBUTTON) || defined(QT_NO_STATUSBAR)) +#define QT_NO_MAINWINDOW +#endif + +// Toolbars +#if !defined(QT_NO_TOOLBAR) && (defined(QT_NO_MAINWINDOW)) +#define QT_NO_TOOLBAR +#endif + +// QColorDialog +#if !defined(QT_NO_COLORDIALOG) && (defined(QT_NO_DIALOG) || defined(QT_NO_LABEL) || defined(QT_NO_PUSHBUTTON) || defined(QT_NO_LINEEDIT) || defined(QT_NO_VALIDATOR) || defined(QT_NO_GRIDVIEW)) +#define QT_NO_COLORDIALOG +#endif + +// QErrorMessage +#if !defined(QT_NO_ERRORMESSAGE) && (defined(QT_NO_DIALOG) || defined(QT_NO_PUSHBUTTON) || defined(QT_NO_LABEL) || defined(QT_NO_CHECKBOX) || defined(QT_NO_TEXTVIEW)) +#define QT_NO_ERRORMESSAGE +#endif + +// QAction +#if !defined(QT_NO_ACTION) && (defined(QT_NO_TOOLBUTTON) || defined(QT_NO_COMBOBOX)) +#define QT_NO_ACTION +#endif + +// QWorkSpace +#if !defined(QT_NO_WORKSPACE) && (defined(QT_NO_SCROLLBAR) || defined(QT_NO_VBOX) || defined(QT_NO_TITLEBAR) || defined(QT_NO_RESIZEHANDLER) || defined(QT_NO_POPUPMENU) || defined(QT_NO_LABEL) || defined(QT_NO_TOOLBUTTON)) +#define QT_NO_WORKSPACE +#endif + +// QTable +#if !defined(QT_NO_TABLE) && (defined(QT_NO_COMBOBOX) || defined(QT_NO_HEADER) || defined(QT_NO_CHECKBOX)) +#define QT_NO_TABLE +#endif + +// QFontDialog +#if !defined(QT_NO_FONTDIALOG) && (defined(QT_NO_DIALOG) || defined(QT_NO_FONTDATABASE) || defined(QT_NO_COMBOBOX) || defined(QT_NO_LABEL) || defined(QT_NO_CHECKBOX) || defined(QT_NO_PUSHBUTTON) || defined(QT_NO_VGROUPBOX)) +#define QT_NO_FONTDIALOG +#endif + +// QInputDialog +#if !defined(QT_NO_INPUTDIALOG) && (defined(QT_NO_DIALOG) || defined(QT_NO_COMBOBOX) || defined(QT_NO_LABEL) || defined(QT_NO_PUSHBUTTON) || defined(QT_NO_SPINBOX) || defined(QT_NO_WIDGETSTACK)) +#define QT_NO_INPUTDIALOG +#endif + +// SQL value editor widgets +#if !defined(QT_NO_SQL_EDIT_WIDGETS) && (defined(QT_NO_SQL) || defined(QT_NO_SPINBOX) || defined(QT_NO_COMBOBOX) || defined(QT_NO_CHECKBOX) || defined(QT_NO_DATETIMEEDIT)) +#define QT_NO_SQL_EDIT_WIDGETS +#endif + +// QPrintDialog +#if !defined(QT_NO_PRINTDIALOG) && (defined(QT_NO_DIALOG) || defined(QT_NO_LISTVIEW) || defined(QT_NO_PRINTER) || defined(QT_NO_COMBOBOX) || defined(QT_NO_LABEL) || defined(QT_NO_BUTTONGROUP) || defined(QT_NO_SPINBOX) || defined(QT_NO_RADIOBUTTON) || defined(QT_NO_PUSHBUTTON)) +#define QT_NO_PRINTDIALOG +#endif + +// QFileDialog +#if !defined(QT_NO_FILEDIALOG) && (defined(QT_NO_MESSAGEBOX) || defined(QT_NO_LISTVIEW) || defined(QT_NO_NETWORKPROTOCOL) || defined(QT_NO_COMBOBOX) || defined(QT_NO_SEMIMODAL) || defined(QT_NO_REGEXP_CAPTURE) || defined(QT_NO_TOOLBUTTON) || defined(QT_NO_BUTTONGROUP) || defined(QT_NO_VBOX) || defined(QT_NO_SPLITTER) || defined(QT_NO_PROGRESSBAR) || defined(QT_NO_WIDGETSTACK) || defined(QT_NO_DATESTRING)) +#define QT_NO_FILEDIALOG +#endif + +// SQL table widgets +#if !defined(QT_NO_SQL_VIEW_WIDGETS) && (defined(QT_NO_SQL_FORM) || defined(QT_NO_SQL_EDIT_WIDGETS) || defined(QT_NO_TABLE)) +#define QT_NO_SQL_VIEW_WIDGETS +#endif + diff --git a/qmake/include/qfile.h b/qmake/include/qfile.h new file mode 100644 index 0000000..14a917b --- a/dev/null +++ b/qmake/include/qfile.h @@ -0,0 +1,124 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QFile class +** +** Created : 930831 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QFILE_H +#define QFILE_H + +#ifndef QT_H +#include "qiodevice.h" +#include "qstring.h" +#include <stdio.h> +#endif // QT_H + +class QDir; + + +class Q_EXPORT QFile : public QIODevice // file I/O device class +{ +public: + QFile(); + QFile( const QString &name ); + ~QFile(); + + QString name() const; + void setName( const QString &name ); + + typedef QCString (*EncoderFn)( const QString &fileName ); + typedef QString (*DecoderFn)( const QCString &localfileName ); + static QCString encodeName( const QString &fileName ); + static QString decodeName( const QCString &localFileName ); + static void setEncodingFunction( EncoderFn ); + static void setDecodingFunction( DecoderFn ); + + bool exists() const; + static bool exists( const QString &fileName ); + + bool remove(); + static bool remove( const QString &fileName ); + + bool open( int ); + bool open( int, FILE * ); + bool open( int, int ); + void close(); + void flush(); + + Offset size() const; + Offset at() const; + bool at( Offset ); + bool atEnd() const; + + Q_LONG readBlock( char *data, Q_ULONG len ); + Q_LONG writeBlock( const char *data, Q_ULONG len ); + Q_LONG writeBlock( const QByteArray& data ) + { return QIODevice::writeBlock(data); } + Q_LONG readLine( char *data, Q_ULONG maxlen ); + Q_LONG readLine( QString &, Q_ULONG maxlen ); + + int getch(); + int putch( int ); + int ungetch( int ); + + int handle() const; + +protected: + QString fn; + FILE *fh; + int fd; + Offset length; + bool ext_f; + void * d; + +private: + void init(); + QCString ungetchBuffer; + +private: // Disabled copy constructor and operator= +#if defined(Q_DISABLE_COPY) + QFile( const QFile & ); + QFile &operator=( const QFile & ); +#endif +}; + + +inline QString QFile::name() const +{ return fn; } + +inline QIODevice::Offset QFile::at() const +{ return ioIndex; } + + +#endif // QFILE_H diff --git a/qmake/include/qfileinfo.h b/qmake/include/qfileinfo.h new file mode 100644 index 0000000..d6605b6 --- a/dev/null +++ b/qmake/include/qfileinfo.h @@ -0,0 +1,150 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QFileInfo class +** +** Created : 950628 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QFILEINFO_H +#define QFILEINFO_H + +#ifndef QT_H +#include "qfile.h" +#include "qdatetime.h" +#endif // QT_H + + +class QDir; +struct QFileInfoCache; + + +class Q_EXPORT QFileInfo +{ +public: + enum PermissionSpec { + ReadUser = 0400, WriteUser = 0200, ExeUser = 0100, + ReadGroup = 0040, WriteGroup = 0020, ExeGroup = 0010, + ReadOther = 0004, WriteOther = 0002, ExeOther = 0001 }; + + QFileInfo(); + QFileInfo( const QString &file ); + QFileInfo( const QFile & ); +#ifndef QT_NO_DIR + QFileInfo( const QDir &, const QString &fileName ); +#endif + QFileInfo( const QFileInfo & ); + ~QFileInfo(); + + QFileInfo &operator=( const QFileInfo & ); + + void setFile( const QString &file ); + void setFile( const QFile & ); +#ifndef QT_NO_DIR + void setFile( const QDir &, const QString &fileName ); +#endif + bool exists() const; + void refresh() const; + bool caching() const; + void setCaching( bool ); + + QString filePath() const; + QString fileName() const; +#ifndef QT_NO_DIR //### + QString absFilePath() const; +#endif + QString baseName( bool complete = FALSE ) const; + QString extension( bool complete = TRUE ) const; + +#ifndef QT_NO_DIR //### + QString dirPath( bool absPath = FALSE ) const; +#endif +#ifndef QT_NO_DIR + QDir dir( bool absPath = FALSE ) const; +#endif + bool isReadable() const; + bool isWritable() const; + bool isExecutable() const; + bool isHidden() const; + +#ifndef QT_NO_DIR //### + bool isRelative() const; + bool convertToAbs(); +#endif + + bool isFile() const; + bool isDir() const; + bool isSymLink() const; + + QString readLink() const; + + QString owner() const; + uint ownerId() const; + QString group() const; + uint groupId() const; + + bool permission( int permissionSpec ) const; + +#if (QT_VERSION-0 >= 0x040000) +#error "QFileInfo::size() should return QIODevice::Offset instead of uint" +#elif defined(QT_ABI_QT4) + QIODevice::Offset size() const; +#else + uint size() const; +#endif + + QDateTime created() const; + QDateTime lastModified() const; + QDateTime lastRead() const; + +private: + void doStat() const; + static void slashify( QString & ); + static void makeAbs( QString & ); + + QString fn; + QFileInfoCache *fic; + bool cache; +#if defined(Q_OS_UNIX) + bool symLink; +#endif + +}; + + +inline bool QFileInfo::caching() const +{ + return cache; +} + + +#endif // QFILEINFO_H diff --git a/qmake/include/qgarray.h b/qmake/include/qgarray.h new file mode 100644 index 0000000..12edea6 --- a/dev/null +++ b/qmake/include/qgarray.h @@ -0,0 +1,121 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QGArray class +** +** Created : 930906 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QGARRAY_H +#define QGARRAY_H + +#ifndef QT_H +#include "qshared.h" +#endif // QT_H + + +class Q_EXPORT QGArray // generic array +{ +friend class QBuffer; +public: + //### DO NOT USE THIS. IT IS PUBLIC BUT DO NOT USE IT IN NEW CODE. + struct array_data : public QShared { // shared array + array_data() { data=0; len=0; } + char *data; // actual array data + uint len; + }; + QGArray(); +protected: + QGArray( int, int ); // dummy; does not alloc + QGArray( int size ); // allocate 'size' bytes + QGArray( const QGArray &a ); // shallow copy + virtual ~QGArray(); + + QGArray &operator=( const QGArray &a ) { return assign( a ); } + + virtual void detach() { duplicate(*this); } + + // ### Qt 4.0: maybe provide two versions of data(), at(), etc. + char *data() const { return shd->data; } + uint nrefs() const { return shd->count; } + uint size() const { return shd->len; } + bool isEqual( const QGArray &a ) const; + + bool resize( uint newsize ); + + bool fill( const char *d, int len, uint sz ); + + QGArray &assign( const QGArray &a ); + QGArray &assign( const char *d, uint len ); + QGArray &duplicate( const QGArray &a ); + QGArray &duplicate( const char *d, uint len ); + void store( const char *d, uint len ); + + array_data *sharedBlock() const { return shd; } + void setSharedBlock( array_data *p ) { shd=(array_data*)p; } + + QGArray &setRawData( const char *d, uint len ); + void resetRawData( const char *d, uint len ); + + int find( const char *d, uint index, uint sz ) const; + int contains( const char *d, uint sz ) const; + + void sort( uint sz ); + int bsearch( const char *d, uint sz ) const; + + char *at( uint index ) const; + + bool setExpand( uint index, const char *d, uint sz ); + +protected: + virtual array_data *newData(); + virtual void deleteData( array_data *p ); + +private: + static void msg_index( uint ); + array_data *shd; +}; + + +inline char *QGArray::at( uint index ) const +{ +#if defined(QT_CHECK_RANGE) + if ( index >= size() ) { + msg_index( index ); + index = 0; + } +#endif + return &shd->data[index]; +} + + +#endif // QGARRAY_H diff --git a/qmake/include/qgcache.h b/qmake/include/qgcache.h new file mode 100644 index 0000000..093f7a7 --- a/dev/null +++ b/qmake/include/qgcache.h @@ -0,0 +1,128 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QGCache and QGCacheIterator classes +** +** Created : 950208 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QGCACHE_H +#define QGCACHE_H + +#ifndef QT_H +#include "qptrcollection.h" +#include "qglist.h" +#include "qgdict.h" +#endif // QT_H + + +class QCList; // internal classes +class QCListIt; +class QCDict; + + +class Q_EXPORT QGCache : public QPtrCollection // generic LRU cache +{ +friend class QGCacheIterator; +protected: + enum KeyType { StringKey, AsciiKey, IntKey, PtrKey }; + // identical to QGDict's, but PtrKey is not used at the moment + + QGCache( int maxCost, uint size, KeyType kt, bool caseSensitive, + bool copyKeys ); + QGCache( const QGCache & ); // not allowed, calls fatal() + ~QGCache(); + QGCache &operator=( const QGCache & ); // not allowed, calls fatal() + + uint count() const; + uint size() const; + int maxCost() const { return mCost; } + int totalCost() const { return tCost; } + void setMaxCost( int maxCost ); + void clear(); + + bool insert_string( const QString &key, QPtrCollection::Item, + int cost, int priority ); + bool insert_other( const char *key, QPtrCollection::Item, + int cost, int priority ); + bool remove_string( const QString &key ); + bool remove_other( const char *key ); + QPtrCollection::Item take_string( const QString &key ); + QPtrCollection::Item take_other( const char *key ); + + QPtrCollection::Item find_string( const QString &key, bool ref=TRUE ) const; + QPtrCollection::Item find_other( const char *key, bool ref=TRUE ) const; + + void statistics() const; + +private: + bool makeRoomFor( int cost, int priority = -1 ); + KeyType keytype; + QCList *lruList; + QCDict *dict; + int mCost; + int tCost; + bool copyk; +}; + + +class Q_EXPORT QGCacheIterator // generic cache iterator +{ +protected: + QGCacheIterator( const QGCache & ); + QGCacheIterator( const QGCacheIterator & ); + ~QGCacheIterator(); + QGCacheIterator &operator=( const QGCacheIterator & ); + + uint count() const; + bool atFirst() const; + bool atLast() const; + QPtrCollection::Item toFirst(); + QPtrCollection::Item toLast(); + + QPtrCollection::Item get() const; + QString getKeyString() const; + const char *getKeyAscii() const; + long getKeyInt() const; + + QPtrCollection::Item operator()(); + QPtrCollection::Item operator++(); + QPtrCollection::Item operator+=( uint ); + QPtrCollection::Item operator--(); + QPtrCollection::Item operator-=( uint ); + +protected: + QCListIt *it; // iterator on cache list +}; + + +#endif // QGCACHE_H diff --git a/qmake/include/qgdict.h b/qmake/include/qgdict.h new file mode 100644 index 0000000..40b4568 --- a/dev/null +++ b/qmake/include/qgdict.h @@ -0,0 +1,222 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QGDict and QGDictIterator classes +** +** Created : 920529 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QGDICT_H +#define QGDICT_H + +#ifndef QT_H +#include "qptrcollection.h" +#include "qstring.h" +#endif // QT_H + +class QGDictIterator; +class QGDItList; + + +class QBaseBucket // internal dict node +{ +public: + QPtrCollection::Item getData() { return data; } + QPtrCollection::Item setData( QPtrCollection::Item d ) { return data = d; } + QBaseBucket *getNext() { return next; } + void setNext( QBaseBucket *n) { next = n; } +protected: + QBaseBucket( QPtrCollection::Item d, QBaseBucket *n ) : data(d), next(n) {} + QPtrCollection::Item data; + QBaseBucket *next; +}; + +class QStringBucket : public QBaseBucket +{ +public: + QStringBucket( const QString &k, QPtrCollection::Item d, QBaseBucket *n ) + : QBaseBucket(d,n), key(k) {} + const QString &getKey() const { return key; } +private: + QString key; +}; + +class QAsciiBucket : public QBaseBucket +{ +public: + QAsciiBucket( const char *k, QPtrCollection::Item d, QBaseBucket *n ) + : QBaseBucket(d,n), key(k) {} + const char *getKey() const { return key; } +private: + const char *key; +}; + +class QIntBucket : public QBaseBucket +{ +public: + QIntBucket( long k, QPtrCollection::Item d, QBaseBucket *n ) + : QBaseBucket(d,n), key(k) {} + long getKey() const { return key; } +private: + long key; +}; + +class QPtrBucket : public QBaseBucket +{ +public: + QPtrBucket( void *k, QPtrCollection::Item d, QBaseBucket *n ) + : QBaseBucket(d,n), key(k) {} + void *getKey() const { return key; } +private: + void *key; +}; + + +class Q_EXPORT QGDict : public QPtrCollection // generic dictionary class +{ +public: + uint count() const { return numItems; } + uint size() const { return vlen; } + QPtrCollection::Item look_string( const QString& key, QPtrCollection::Item, + int ); + QPtrCollection::Item look_ascii( const char *key, QPtrCollection::Item, int ); + QPtrCollection::Item look_int( long key, QPtrCollection::Item, int ); + QPtrCollection::Item look_ptr( void *key, QPtrCollection::Item, int ); +#ifndef QT_NO_DATASTREAM + QDataStream &read( QDataStream & ); + QDataStream &write( QDataStream & ) const; +#endif +protected: + enum KeyType { StringKey, AsciiKey, IntKey, PtrKey }; + + QGDict( uint len, KeyType kt, bool cs, bool ck ); + QGDict( const QGDict & ); + ~QGDict(); + + QGDict &operator=( const QGDict & ); + + bool remove_string( const QString &key, QPtrCollection::Item item=0 ); + bool remove_ascii( const char *key, QPtrCollection::Item item=0 ); + bool remove_int( long key, QPtrCollection::Item item=0 ); + bool remove_ptr( void *key, QPtrCollection::Item item=0 ); + QPtrCollection::Item take_string( const QString &key ); + QPtrCollection::Item take_ascii( const char *key ); + QPtrCollection::Item take_int( long key ); + QPtrCollection::Item take_ptr( void *key ); + + void clear(); + void resize( uint ); + + int hashKeyString( const QString & ); + int hashKeyAscii( const char * ); + + void statistics() const; + +#ifndef QT_NO_DATASTREAM + virtual QDataStream &read( QDataStream &, QPtrCollection::Item & ); + virtual QDataStream &write( QDataStream &, QPtrCollection::Item ) const; +#endif +private: + QBaseBucket **vec; + uint vlen; + uint numItems; + uint keytype : 2; + uint cases : 1; + uint copyk : 1; + QGDItList *iterators; + void unlink_common( int, QBaseBucket *, QBaseBucket * ); + QStringBucket *unlink_string( const QString &, + QPtrCollection::Item item = 0 ); + QAsciiBucket *unlink_ascii( const char *, QPtrCollection::Item item = 0 ); + QIntBucket *unlink_int( long, QPtrCollection::Item item = 0 ); + QPtrBucket *unlink_ptr( void *, QPtrCollection::Item item = 0 ); + void init( uint, KeyType, bool, bool ); + friend class QGDictIterator; +}; + + +class Q_EXPORT QGDictIterator // generic dictionary iterator +{ +friend class QGDict; +public: + QGDictIterator( const QGDict & ); + QGDictIterator( const QGDictIterator & ); + QGDictIterator &operator=( const QGDictIterator & ); + ~QGDictIterator(); + + QPtrCollection::Item toFirst(); + + QPtrCollection::Item get() const; + QString getKeyString() const; + const char *getKeyAscii() const; + long getKeyInt() const; + void *getKeyPtr() const; + + QPtrCollection::Item operator()(); + QPtrCollection::Item operator++(); + QPtrCollection::Item operator+=(uint); + +protected: + QGDict *dict; + +private: + QBaseBucket *curNode; + uint curIndex; +}; + +inline QPtrCollection::Item QGDictIterator::get() const +{ + return curNode ? curNode->getData() : 0; +} + +inline QString QGDictIterator::getKeyString() const +{ + return curNode ? ((QStringBucket*)curNode)->getKey() : QString::null; +} + +inline const char *QGDictIterator::getKeyAscii() const +{ + return curNode ? ((QAsciiBucket*)curNode)->getKey() : 0; +} + +inline long QGDictIterator::getKeyInt() const +{ + return curNode ? ((QIntBucket*)curNode)->getKey() : 0; +} + +inline void *QGDictIterator::getKeyPtr() const +{ + return curNode ? ((QPtrBucket*)curNode)->getKey() : 0; +} + + +#endif // QGDICT_H diff --git a/qmake/include/qglist.h b/qmake/include/qglist.h new file mode 100644 index 0000000..d6db3ed --- a/dev/null +++ b/qmake/include/qglist.h @@ -0,0 +1,252 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QGList and QGListIterator classes +** +** Created : 920624 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QGLIST_H +#define QGLIST_H + +#ifndef QT_H +#include "qptrcollection.h" +#endif // QT_H + +class Q_EXPORT QLNode +{ +friend class QGList; +friend class QGListIterator; +public: + QPtrCollection::Item getData() { return data; } +private: + QPtrCollection::Item data; + QLNode *prev; + QLNode *next; + QLNode( QPtrCollection::Item d ) { data = d; } +}; + +class QGListIteratorList; // internal helper class + +class Q_EXPORT QGList : public QPtrCollection // doubly linked generic list +{ +friend class QGListIterator; +friend class QGListIteratorList; +friend class QGVector; // needed by QGVector::toList +public: + uint count() const; // return number of nodes + +#ifndef QT_NO_DATASTREAM + QDataStream &read( QDataStream & ); // read list from stream + QDataStream &write( QDataStream & ) const; // write list to stream +#endif +protected: + QGList(); // create empty list + QGList( const QGList & ); // make copy of other list + virtual ~QGList(); + + QGList &operator=( const QGList & ); // assign from other list + bool operator==( const QGList& ) const; + + void inSort( QPtrCollection::Item ); // add item sorted in list + void append( QPtrCollection::Item ); // add item at end of list + bool insertAt( uint index, QPtrCollection::Item ); // add item at i'th position + void relinkNode( QLNode * ); // relink as first item + bool removeNode( QLNode * ); // remove node + bool remove( QPtrCollection::Item = 0 ); // remove item (0=current) + bool removeRef( QPtrCollection::Item = 0 ); // remove item (0=current) + bool removeFirst(); // remove first item + bool removeLast(); // remove last item + bool removeAt( uint ); // remove item at i'th position + bool replaceAt( uint, QPtrCollection::Item ); // replace item at position i with item + QPtrCollection::Item takeNode( QLNode * ); // take out node + QPtrCollection::Item take(); // take out current item + QPtrCollection::Item takeAt( uint index ); // take out item at i'th pos + QPtrCollection::Item takeFirst(); // take out first item + QPtrCollection::Item takeLast(); // take out last item + + void sort(); // sort all items; + void clear(); // remove all items + + int findRef( QPtrCollection::Item, bool = TRUE ); // find exact item in list + int find( QPtrCollection::Item, bool = TRUE ); // find equal item in list + + uint containsRef( QPtrCollection::Item ) const; // get number of exact matches + uint contains( QPtrCollection::Item ) const; // get number of equal matches + + QPtrCollection::Item at( uint index ); // access item at i'th pos + int at() const; // get current index + QLNode *currentNode() const; // get current node + + QPtrCollection::Item get() const; // get current item + + QPtrCollection::Item cfirst() const; // get ptr to first list item + QPtrCollection::Item clast() const; // get ptr to last list item + QPtrCollection::Item first(); // set first item in list curr + QPtrCollection::Item last(); // set last item in list curr + QPtrCollection::Item next(); // set next item in list curr + QPtrCollection::Item prev(); // set prev item in list curr + + void toVector( QGVector * ) const; // put items in vector + + virtual int compareItems( QPtrCollection::Item, QPtrCollection::Item ); + +#ifndef QT_NO_DATASTREAM + virtual QDataStream &read( QDataStream &, QPtrCollection::Item & ); + virtual QDataStream &write( QDataStream &, QPtrCollection::Item ) const; +#endif +private: + void prepend( QPtrCollection::Item ); // add item at start of list + + void heapSortPushDown( QPtrCollection::Item* heap, int first, int last ); + + QLNode *firstNode; // first node + QLNode *lastNode; // last node + QLNode *curNode; // current node + int curIndex; // current index + uint numNodes; // number of nodes + QGListIteratorList *iterators; // list of iterators + + QLNode *locate( uint ); // get node at i'th pos + QLNode *unlink(); // unlink node +}; + + +inline uint QGList::count() const +{ + return numNodes; +} + +inline bool QGList::removeFirst() +{ + first(); + return remove(); +} + +inline bool QGList::removeLast() +{ + last(); + return remove(); +} + +inline int QGList::at() const +{ + return curIndex; +} + +inline QPtrCollection::Item QGList::at( uint index ) +{ + QLNode *n = locate( index ); + return n ? n->data : 0; +} + +inline QLNode *QGList::currentNode() const +{ + return curNode; +} + +inline QPtrCollection::Item QGList::get() const +{ + return curNode ? curNode->data : 0; +} + +inline QPtrCollection::Item QGList::cfirst() const +{ + return firstNode ? firstNode->data : 0; +} + +inline QPtrCollection::Item QGList::clast() const +{ + return lastNode ? lastNode->data : 0; +} + + +/***************************************************************************** + QGList stream functions + *****************************************************************************/ + +#ifndef QT_NO_DATASTREAM +Q_EXPORT QDataStream &operator>>( QDataStream &, QGList & ); +Q_EXPORT QDataStream &operator<<( QDataStream &, const QGList & ); +#endif + +/***************************************************************************** + QGListIterator class + *****************************************************************************/ + +class Q_EXPORT QGListIterator // QGList iterator +{ +friend class QGList; +friend class QGListIteratorList; +protected: + QGListIterator( const QGList & ); + QGListIterator( const QGListIterator & ); + QGListIterator &operator=( const QGListIterator & ); + ~QGListIterator(); + + bool atFirst() const; // test if at first item + bool atLast() const; // test if at last item + QPtrCollection::Item toFirst(); // move to first item + QPtrCollection::Item toLast(); // move to last item + + QPtrCollection::Item get() const; // get current item + QPtrCollection::Item operator()(); // get current and move to next + QPtrCollection::Item operator++(); // move to next item (prefix) + QPtrCollection::Item operator+=(uint); // move n positions forward + QPtrCollection::Item operator--(); // move to prev item (prefix) + QPtrCollection::Item operator-=(uint); // move n positions backward + +protected: + QGList *list; // reference to list + +private: + QLNode *curNode; // current node in list +}; + + +inline bool QGListIterator::atFirst() const +{ + return curNode == list->firstNode; +} + +inline bool QGListIterator::atLast() const +{ + return curNode == list->lastNode; +} + +inline QPtrCollection::Item QGListIterator::get() const +{ + return curNode ? curNode->data : 0; +} + + +#endif // QGLIST_H 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 @@ +/**************************************************************************** +** $Id$ +** +** Global type declarations and definitions +** +** Created : 920529 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QGLOBAL_H +#define QGLOBAL_H + +#define QT_VERSION_STR "3.1.0-b2" +/* + QT_VERSION is (major << 16) + (minor << 8) + patch. + */ +#define QT_VERSION 0x030100 + +/* + The operating system, must be one of: (Q_OS_x) + + MACX - Mac OS X + MAC9 - Mac OS 9 + MSDOS - MS-DOS and Windows + OS2 - OS/2 + OS2EMX - XFree86 on OS/2 (not PM) + WIN32 - Win32 (Windows 95/98/ME and Windows NT/2000/XP) + CYGWIN - Cygwin + SOLARIS - Sun Solaris + HPUX - HP-UX + ULTRIX - DEC Ultrix + LINUX - Linux + FREEBSD - FreeBSD + NETBSD - NetBSD + OPENBSD - OpenBSD + BSDI - BSD/OS + IRIX - SGI Irix + OSF - HP Tru64 UNIX + SCO - SCO OpenServer 5 + UNIXWARE - UnixWare 7, Open UNIX 8 + AIX - AIX + HURD - GNU Hurd + DGUX - DG/UX + RELIANT - Reliant UNIX + DYNIX - DYNIX/ptx + QNX - QNX + QNX6 - QNX RTP 6.1 + LYNX - LynxOS + BSD4 - Any BSD 4.4 system + UNIX - Any UNIX BSD/SYSV system +*/ + +#if defined(__APPLE__) && defined(__GNUC__) +# define Q_OS_MACX +#elif defined(__MACOSX__) +# define Q_OS_MACX +#elif defined(macintosh) +# define Q_OS_MAC9 +#elif defined(__CYGWIN__) +# define Q_OS_CYGWIN +#elif defined(MSDOS) || defined(_MSDOS) +# define Q_OS_MSDOS +#elif defined(__OS2__) +# if defined(__EMX__) +# define Q_OS_OS2EMX +# else +# define Q_OS_OS2 +# endif +#elif !defined(SAG_COM) && (defined(WIN64) || defined(_WIN64) || defined(__WIN64__)) +# define Q_OS_WIN32 +# define Q_OS_WIN64 +#elif !defined(SAG_COM) && (defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)) +# define Q_OS_WIN32 +#elif defined(__MWERKS__) && defined(__INTEL__) +# define Q_OS_WIN32 +#elif defined(__sun) || defined(sun) +# define Q_OS_SOLARIS +#elif defined(hpux) || defined(__hpux) +# define Q_OS_HPUX +#elif defined(__ultrix) || defined(ultrix) +# define Q_OS_ULTRIX +#elif defined(sinix) +# define Q_OS_RELIANT +#elif defined(__linux__) || defined(__linux) +# define Q_OS_LINUX +#elif defined(__FreeBSD__) +# define Q_OS_FREEBSD +# define Q_OS_BSD4 +#elif defined(__NetBSD__) +# define Q_OS_NETBSD +# define Q_OS_BSD4 +#elif defined(__OpenBSD__) +# define Q_OS_OPENBSD +# define Q_OS_BSD4 +#elif defined(__bsdi__) +# define Q_OS_BSDI +# define Q_OS_BSD4 +#elif defined(__sgi) +# define Q_OS_IRIX +#elif defined(__osf__) +# define Q_OS_OSF +#elif defined(_AIX) +# define Q_OS_AIX +#elif defined(__Lynx__) +# define Q_OS_LYNX +#elif defined(__GNU_HURD__) +# define Q_OS_HURD +#elif defined(__DGUX__) +# define Q_OS_DGUX +#elif defined(__QNXNTO__) +# define Q_OS_QNX6 +#elif defined(__QNX__) +# define Q_OS_QNX +#elif defined(_SEQUENT_) +# define Q_OS_DYNIX +#elif defined(_SCO_DS) /* SCO OpenServer 5 */ +# define Q_OS_SCO +#elif defined(__UNIXWARE__) /* UnixWare 7 + GCC, Open UNIX 8 + GCC */ +# define Q_OS_UNIXWARE +# define Q_OS_UNIXWARE7 +#elif defined(__USLC__) /* UnixWare 7 + UDK, Open UNIX 8 + OUDK */ +# define Q_OS_UNIXWARE +# define Q_OS_UNIXWARE7 +#else +# error "Qt has not been ported to this OS - talk to qt-bugs@trolltech.com" +#endif + +#if defined(Q_OS_MAC9) || defined(Q_OS_MACX) +# define Q_OS_MAC +#endif + +#if defined(Q_OS_MAC9) || defined(Q_OS_MSDOS) || defined(Q_OS_OS2) || defined(Q_OS_WIN32) || defined(Q_OS_WIN64) +# undef Q_OS_UNIX +#elif !defined(Q_OS_UNIX) +# define Q_OS_UNIX +#endif + + +/* + The compiler, must be one of: (Q_CC_x) + + SYM - Symantec C++ for both PC and Macintosh + MPW - MPW C++ + MWERKS - Metrowerks CodeWarrior + MSVC - Microsoft Visual C/C++ + BOR - Borland/Turbo C++ + WAT - Watcom C++ + GNU - GNU C++ + COMEAU - Comeau C++ + EDG - Edison Design Group C++ + OC - CenterLine C++ + SUN - Sun WorkShop, Forte Developer, or Sun ONE Studio C++ + MIPS - MIPSpro C++ + DEC - DEC C++ + HP - HPUX C++ + HPACC - HPUX ANSI C++ + USLC - SCO OUDK, UDK, and UnixWare 2.X C++ + CDS - Reliant C++ + KAI - KAI C++ + INTEL - Intel C++ + HIGHC - MetaWare High C/C++ + PGI - Portland Group C++ + GHS - Green Hills Optimizing C++ Compilers + + Should be sorted most to least authoritative. +*/ + +/* Symantec C++ is now Digital Mars */ +#if defined(__DMC__) || defined(__SC__) +# define Q_CC_SYM +/* "explicit" semantics implemented in 8.1e but keyword recognized since 7.5 */ +# if defined(__SC__) && __SC__ < 0x750 +# define Q_NO_EXPLICIT_KEYWORD +# endif +# define Q_NO_USING_KEYWORD +# if !defined(_CPPUNWIND) +# define Q_NO_EXCEPTIONS +# endif + +#elif defined(applec) +# define Q_CC_MPW +# define Q_NO_BOOL_TYPE +# define Q_NO_EXPLICIT_KEYWORD +# define Q_NO_USING_KEYWORD + +#elif defined(__MWERKS__) +# define Q_CC_MWERKS +/* "explicit" recognized since 4.0d1 */ +# define QMAC_PASCAL pascal +# define Q_NO_USING_KEYWORD /* ### check "using" status */ + +#elif defined(_MSC_VER) +# define Q_CC_MSVC +/* proper support of bool for _MSC_VER >= 1100 */ +# define Q_CANNOT_DELETE_CONSTANT +# define Q_INLINE_TEMPLATES inline +/* Visual C++.Net issues for _MSC_VER >= 1300 */ +# if _MSC_VER >= 1300 +# define Q_CC_MSVC_NET +# define Q_TYPENAME +# endif +# define Q_NO_USING_KEYWORD /* ### check "using" status */ + +#elif defined(__BORLANDC__) || defined(__TURBOC__) +# define Q_CC_BOR +# if __BORLANDC__ < 0x502 +# define Q_NO_BOOL_TYPE +# define Q_NO_EXPLICIT_KEYWORD +# endif +# define Q_NO_USING_KEYWORD /* ### check "using" status */ + +#elif defined(__WATCOMC__) +# define Q_CC_WAT +# if defined(Q_OS_QNX4) +/* compiler flags */ +# define Q_TYPENAME +# define Q_NO_BOOL_TYPE +# define Q_CANNOT_DELETE_CONSTANT +# define mutable +/* ??? */ +# define Q_BROKEN_TEMPLATE_SPECIALIZATION +/* no template classes in QVariant */ +# define QT_NO_TEMPLATE_VARIANT +/* Wcc does not fill in functions needed by valuelists, maps, and + valuestacks implicitly */ +# define Q_FULL_TEMPLATE_INSTANTIATION +/* can we just compare the structures? */ +# define Q_FULL_TEMPLATE_INSTANTIATION_MEMCMP +/* these are not useful to our customers */ +# define QT_QWS_NO_SHM +# define QT_NO_QWS_MULTIPROCESS +# define QT_NO_SQL +# define QT_NO_QWS_CURSOR +# endif + +#elif defined(__GNUC__) +# define Q_CC_GNU +# define Q_C_CALLBACKS +# if __GNUC__ == 2 && __GNUC_MINOR__ <= 7 +# define Q_FULL_TEMPLATE_INSTANTIATION +# endif +/* GCC 2.95 knows "using" but does not support it correctly */ +# if __GNUC__ == 2 && __GNUC_MINOR__ <= 95 +# define Q_NO_USING_KEYWORD +# endif +# if (defined(__arm__) || defined(__ARMEL__)) && !defined(QT_MOC_CPP) +# define Q_PACKED __attribute__ ((packed)) +# endif +# if !defined(__EXCEPTIONS) +# define Q_NO_EXCEPTIONS +# endif + +/* IBM compiler versions are a bit messy. There are actually two products: + the C product, and the C++ product. The C++ compiler is always packaged + with the latest version of the C compiler. Version numbers do not always + match. This little table (I'm not sure it's accurate) should be helpful: + + C++ product C product + + C Set 3.1 C Compiler 3.0 + ... ... + C++ Compiler 3.6.6 C Compiler 4.3 + ... ... + Visual Age C++ 4.0 ... + ... ... + Visual Age C++ 5.0 C Compiler 5.0 + + Now: + __xlC__ is the version of the C compiler in hexadecimal notation + is only an approximation of the C++ compiler version + __IBMCPP__ is the version of the C++ compiler in decimal notation + but it is not defined on older compilers like C Set 3.1 */ +#elif defined(__xlC__) +# define Q_CC_XLC +# define Q_FULL_TEMPLATE_INSTANTIATION +# if __xlC__ < 0x400 +# define Q_NO_BOOL_TYPE +# define Q_NO_EXPLICIT_KEYWORD +# define Q_NO_USING_KEYWORD +# define Q_TYPENAME +# define Q_INLINE_TEMPLATES inline +# define Q_BROKEN_TEMPLATE_SPECIALIZATION +# define Q_CANNOT_DELETE_CONSTANT +# endif + +/* Older versions of DEC C++ do not define __EDG__ or __EDG - observed + on DEC C++ V5.5-004. New versions do define __EDG__ - observed on + Compaq C++ V6.3-002. + This compiler is different enough from other EDG compilers to handle + it separately anyway. */ +#elif defined(__DECCXX) +# define Q_CC_DEC +/* Compaq C++ V6 compilers are EDG-based but I'm not sure about older + DEC C++ V5 compilers. */ +# if defined(__EDG__) +# define Q_CC_EDG +# endif +/* Compaq have disabled EDG's _BOOL macro and use _BOOL_EXISTS instead + - observed on Compaq C++ V6.3-002. + In any case versions prior to Compaq C++ V6.0-005 do not have bool. */ +# if !defined(_BOOL_EXISTS) +# define Q_NO_BOOL_TYPE +# endif +/* Spurious (?) error messages observed on Compaq C++ V6.5-014. */ +# define Q_NO_USING_KEYWORD +/* Apply to all versions prior to Compaq C++ V6.0-000 - observed on + DEC C++ V5.5-004. */ +# if __DECCXX_VER < 60060000 +# define Q_TYPENAME +# define Q_BROKEN_TEMPLATE_SPECIALIZATION +# define Q_CANNOT_DELETE_CONSTANT +# endif +/* avoid undefined symbol problems with out-of-line template members */ +# define Q_INLINE_TEMPLATES inline + +/* Compilers with EDG front end are similar. To detect them we test: + __EDG documented by SGI, observed on MIPSpro 7.3.1.1 and KAI C++ 4.0b + __EDG__ documented in EDG online docs, observed on Compaq C++ V6.3-002 */ +#elif defined(__EDG) || defined(__EDG__) +# define Q_CC_EDG +/* From the EDG documentation (does not seem to apply to Compaq C++): + _BOOL + Defined in C++ mode when bool is a keyword. The name of this + predefined macro is specified by a configuration flag. _BOOL + is the default. + __BOOL_DEFINED + Defined in Microsoft C++ mode when bool is a keyword. */ +# if !defined(_BOOL) && !defined(__BOOL_DEFINED) +# define Q_NO_BOOL_TYPE +# endif + +/* The Portland Group compiler is based on EDG and does define __EDG__ */ +# if defined(__COMO__) +# define Q_CC_COMEAU +# define Q_C_CALLBACKS + +/* Using the `using' keyword avoids KAI C++ warnings */ +# elif defined(__KCC) +# define Q_CC_KAI +# if !defined(_EXCEPTIONS) +# define Q_NO_EXCEPTIONS +# endif + +/* Using the `using' keyword avoids Intel C++ warnings */ +# elif defined(__INTEL_COMPILER) +# define Q_CC_INTEL +# if !defined(__EXCEPTIONS) +# define Q_NO_EXCEPTIONS +# endif + +/* The Portland Group compiler is based on EDG and does define __EDG__ */ +# elif defined(__PGI) +# define Q_CC_PGI +# if !defined(__EXCEPTIONS) +# define Q_NO_EXCEPTIONS +# endif + +/* Never tested! */ +# elif defined(__ghs) +# define Q_CC_GHS + +/* The UnixWare 7 UDK compiler is based on EDG and does define __EDG__ */ +# elif defined(__USLC__) && defined(__SCO_VERSION__) +# define Q_CC_USLC +# define Q_NO_USING_KEYWORD /* ### check "using" status */ + +/* Never tested! */ +# elif defined(CENTERLINE_CLPP) || defined(OBJECTCENTER) +# define Q_CC_OC +# define Q_NO_USING_KEYWORD + +/* CDS++ is not documented to define __EDG__ or __EDG in the Reliant + documentation but we suppose it does, in any case it does follow + conventions like _BOOL */ +# elif defined(sinix) +# define Q_CC_CDS +# define Q_NO_USING_KEYWORD +# if defined(__cplusplus) && (__cplusplus < 2) /* Cfront C++ mode */ +# define Q_NO_EXCEPTIONS +# endif + +/* The MIPSpro compiler in o32 mode is based on EDG but disables features + such as template specialization nevertheless */ +# elif defined(__sgi) +# define Q_CC_MIPS +# if defined(_MIPS_SIM) && (_MIPS_SIM == _ABIO32) /* o32 ABI */ +# define Q_TYPENAME +# define Q_BROKEN_TEMPLATE_SPECIALIZATION +# define Q_STRICT_INLINING_RULES +# elif defined(_COMPILER_VERSION) && (_COMPILER_VERSION < 730) /* 7.2 */ +# define Q_TYPENAME +# define Q_BROKEN_TEMPLATE_SPECIALIZATION +# endif +# define Q_NO_USING_KEYWORD /* ### check "using" status */ +# endif + +/* The older UnixWare 2.X compiler? */ +#elif defined(__USLC__) && !defined(__SCO_VERSION__) +# define Q_CC_USLC +# define Q_NO_BOOL_TYPE +# define Q_NO_EXPLICIT_KEYWORD +# define Q_NO_USING_KEYWORD + +/* Never tested! */ +#elif defined(__HIGHC__) +# define Q_CC_HIGHC + +#elif defined(__SUNPRO_CC) +# define Q_CC_SUN +/* 5.0 compiler or better + 'bool' is enabled by default but can be disabled using -features=nobool + in which case _BOOL is not defined + this is the default in 4.2 compatibility mode triggered by -compat=4 */ +# if __SUNPRO_CC >= 0x500 +# if !defined(_BOOL) +# define Q_NO_BOOL_TYPE +# endif +# if defined(__SUNPRO_CC_COMPAT) && (__SUNPRO_CC_COMPAT <= 4) +# define Q_NO_USING_KEYWORD +# endif +# define Q_C_CALLBACKS +/* 4.2 compiler or older */ +# else +# define Q_NO_BOOL_TYPE +# define Q_NO_EXPLICIT_KEYWORD +# define Q_NO_USING_KEYWORD +# endif + +#elif defined(Q_OS_HPUX) +/* __HP_aCC was not defined in first aCC releases */ +# if defined(__HP_aCC) || __cplusplus >= 199707L +# define Q_CC_HPACC +# else +# define Q_CC_HP +# define Q_NO_BOOL_TYPE +# define Q_FULL_TEMPLATE_INSTANTIATION +# define Q_BROKEN_TEMPLATE_SPECIALIZATION +# define Q_NO_EXPLICIT_KEYWORD +# endif +# define Q_NO_USING_KEYWORD /* ### check "using" status */ + +#else +# error "Qt has not been tested with this compiler - talk to qt-bugs@trolltech.com" +#endif + +#ifndef Q_PACKED +# define Q_PACKED +#endif + + +/* + The window system, must be one of: (Q_WS_x) + + MACX - Mac OS X + MAC9 - Mac OS 9 + QWS - Qt/Embedded + WIN32 - Windows + X11 - X Window System + PM - unsupported + WIN16 - unsupported +*/ + +#if defined(Q_OS_MAC9) +# define Q_WS_MAC9 +#elif defined(Q_OS_MSDOS) +# define Q_WS_WIN16 +# error "Qt requires Win32 and does not work with Windows 3.x" +#elif defined(_WIN32_X11_) +# define Q_WS_X11 +#elif defined(Q_OS_WIN32) +# define Q_WS_WIN32 +# if defined(Q_OS_WIN64) +# define Q_WS_WIN64 +# endif +#elif defined(Q_OS_OS2) +# define Q_WS_PM +# error "Qt does not work with OS/2 Presentation Manager or Workplace Shell" +#elif defined(Q_OS_UNIX) +# if defined(QWS) +# define Q_WS_QWS +# elif defined(Q_OS_MACX) +# define Q_WS_MACX +# else +# define Q_WS_X11 +# endif +#endif +#if defined(Q_OS_MAC) && !defined(QMAC_PASCAL) +# define QMAC_PASCAL +#endif + +#if defined(Q_WS_WIN16) || defined(Q_WS_WIN32) +# define Q_WS_WIN +#endif + +#if (defined(Q_WS_MAC9) || defined(Q_WS_MACX)) && !defined(Q_WS_QWS) && !defined(Q_WS_X11) +# define Q_WS_MAC +#endif + + +/* + Some classes do not permit copies to be made of an object. + These classes contains a private copy constructor and operator= + to disable copying (the compiler gives an error message). + Undefine Q_DISABLE_COPY to turn off this checking. +*/ + +#define Q_DISABLE_COPY + +#if defined(__cplusplus) + + +// +// Useful type definitions for Qt +// + +#if defined(Q_NO_BOOL_TYPE) +#if defined(Q_CC_HP) +// bool is an unsupported reserved keyword in later versions +#define bool int +#else +typedef int bool; +#endif +#endif + +typedef unsigned char uchar; +typedef unsigned short ushort; +typedef unsigned uint; +typedef unsigned long ulong; +typedef char *pchar; +typedef uchar *puchar; +typedef const char *pcchar; + + +// +// Constant bool values +// + +#ifndef TRUE +const bool FALSE = 0; +const bool TRUE = !0; +#endif +#if defined(__WATCOMC__) +# if defined(Q_OS_QNX4) +const bool false = FALSE; +const bool true = TRUE; +# endif +#endif + + +// +// Use the "explicit" keyword on platforms that support it. +// + +#if !defined(Q_NO_EXPLICIT_KEYWORD) +# define Q_EXPLICIT explicit +#else +# define Q_EXPLICIT +#endif + + +// +// Workaround for static const members on MSVC++. +// + +#if defined(Q_CC_MSVC) +# define QT_STATIC_CONST static +# define QT_STATIC_CONST_IMPL +#else +# define QT_STATIC_CONST static const +# define QT_STATIC_CONST_IMPL const +#endif + + +// +// Utility macros and inline functions +// + +#define QMAX(a, b) ((b) < (a) ? (a) : (b)) +#define QMIN(a, b) ((a) < (b) ? (a) : (b)) +#define QABS(a) ((a) >= 0 ? (a) : -(a)) + +inline int qRound( double d ) +{ + return d >= 0.0 ? int(d + 0.5) : int( d - ((int)d-1) + 0.5 ) + ((int)d-1); +} + + +// +// Size-dependent types (architechture-dependent byte order) +// + +#if !defined(QT_CLEAN_NAMESPACE) +// source compatibility with Qt 1.x +typedef signed char INT8; // 8 bit signed +typedef unsigned char UINT8; // 8 bit unsigned +typedef short INT16; // 16 bit signed +typedef unsigned short UINT16; // 16 bit unsigned +typedef int INT32; // 32 bit signed +typedef unsigned int UINT32; // 32 bit unsigned +#endif + +typedef signed char Q_INT8; // 8 bit signed +typedef unsigned char Q_UINT8; // 8 bit unsigned +typedef short Q_INT16; // 16 bit signed +typedef unsigned short Q_UINT16; // 16 bit unsigned +typedef int Q_INT32; // 32 bit signed +typedef unsigned int Q_UINT32; // 32 bit unsigned +#if defined(Q_OS_WIN64) +// LLP64 64-bit model on Windows +typedef __int64 Q_LONG; // word up to 64 bit signed +typedef unsigned __int64 Q_ULONG; // word up to 64 bit unsigned +#else +// LP64 64-bit model on Linux +typedef long Q_LONG; +typedef unsigned long Q_ULONG; +#endif + +#if !defined(QT_CLEAN_NAMESPACE) +// mininum size of 64 bits is not guaranteed +#define Q_INT64 Q_LONG +#define Q_UINT64 Q_ULONG +#endif + +#if defined(Q_OS_MACX) && !defined(QT_LARGEFILE_SUPPORT) +# define QT_LARGEFILE_SUPPORT 64 +#endif +#if defined(QT_LARGEFILE_SUPPORT) + typedef unsigned long long QtOffset; +#else + typedef Q_ULONG QtOffset; +#endif + + +// +// Data stream functions is provided by many classes (defined in qdatastream.h) +// + +class QDataStream; + + +// +// Feature subsetting +// +// Note that disabling some features will produce a libqt that is not +// compatible with other libqt builds. Such modifications are only +// supported on Qt/Embedded where reducing the library size is important +// and where the application-suite is often a fixed set. +// + +#if !defined(QT_MOC) +#if defined(QCONFIG_LOCAL) +#include <qconfig-local.h> +#elif defined(QCONFIG_MINIMAL) +#include <qconfig-minimal.h> +#elif defined(QCONFIG_SMALL) +#include <qconfig-small.h> +#elif defined(QCONFIG_MEDIUM) +#include <qconfig-medium.h> +#elif defined(QCONFIG_LARGE) +#include <qconfig-large.h> +#else // everything... +#include <qconfig.h> +#endif +#endif + + +#ifndef QT_BUILD_KEY +#define QT_BUILD_KEY "unspecified" +#endif + +// prune to local config +#include "qmodules.h" +#ifndef QT_MODULE_ICONVIEW +# define QT_NO_ICONVIEW +#endif +#ifndef QT_MODULE_WORKSPACE +# define QT_NO_WORKSPACE +#endif +#ifndef QT_MODULE_NETWORK +#define QT_NO_NETWORK +#endif +#ifndef QT_MODULE_CANVAS +# define QT_NO_CANVAS +#endif +#ifndef QT_MODULE_TABLE +#define QT_NO_TABLE +#endif +#ifndef QT_MODULE_XML +# define QT_NO_XML +#endif +#ifndef QT_MODULE_OPENGL +# define QT_NO_OPENGL +#endif +#if !defined(QT_MODULE_SQL) +# define QT_NO_SQL +#endif + +#if defined(Q_WS_MAC9) +//No need for menu merging +# ifndef QMAC_QMENUBAR_NO_MERGE +# define QMAC_QMENUBAR_NO_MERGE +# endif +//Mac9 does not use quartz +# ifndef QMAC_NO_QUARTZ +# define QMAC_NO_QUARTZ +# endif +# ifndef QMAC_QMENUBAR_NO_EVENT +# define QMAC_QMENUBAR_NO_EVENT +# endif +#endif +#if defined(Q_WS_MACX) //for no nobody uses quartz, just putting in first level hooks +# ifndef QMAC_NO_QUARTZ +# define QMAC_NO_QUARTZ +# endif +# ifndef QMAC_QMENUBAR_NO_EVENT +# define QMAC_QMENUBAR_NO_EVENT +# endif +#endif + +#ifndef QT_H +#include <qfeatures.h> +#endif // QT_H + + +// +// Create Qt DLL if QT_DLL is defined (Windows only) +// + +#if defined(Q_OS_WIN32) || defined(Q_OS_WIN64) +# if defined(QT_NODLL) +# undef QT_MAKEDLL +# undef QT_DLL +# elif defined(QT_MAKEDLL) /* create a Qt DLL library */ +# if defined(QT_DLL) +# undef QT_DLL +# endif +# define Q_EXPORT __declspec(dllexport) +# define Q_TEMPLATEDLL +# define Q_TEMPLATE_EXTERN +# undef Q_DISABLE_COPY /* avoid unresolved externals */ +# elif defined(QT_DLL) /* use a Qt DLL library */ +# define Q_EXPORT __declspec(dllimport) +# define Q_TEMPLATEDLL +# ifndef Q_TEMPLATE_EXTERN +# if defined(Q_CC_MSVC) +# define Q_TEMPLATE_EXTERN /*extern*/ //### too many warnings, even though disabled +# else +# define Q_TEMPLATE_EXTERN +# endif +# endif +# undef Q_DISABLE_COPY /* avoid unresolved externals */ +# endif +#else +# undef QT_MAKEDLL /* ignore these for other platforms */ +# undef QT_DLL +#endif + +#ifndef Q_EXPORT +# define Q_EXPORT +#endif + + +// +// Some platform specific stuff +// + +#if defined(Q_WS_WIN) +extern Q_EXPORT bool qt_winunicode; +#endif + + +// +// System information +// + +Q_EXPORT const char *qVersion(); +Q_EXPORT bool qSysInfo( int *wordSize, bool *bigEndian ); +#if defined(Q_WS_WIN) +Q_EXPORT int qWinVersion(); +#if defined(UNICODE) +#define QT_WA( uni, ansi ) if ( qt_winunicode ) { uni } else { ansi } +#define QT_WA_INLINE( uni, ansi ) ( qt_winunicode ? uni : ansi ) +#else +#define QT_WA( uni, ansi ) ansi +#define QT_WA_INLINE( uni, ansi ) ansi +#endif +#endif + +#ifdef Q_OS_TEMP +#ifdef QT_WA +#undef QT_WA +#undef QT_WA_INLINE +#endif +#define QT_WA( uni, ansi ) uni +#define QT_WA_INLINE( uni, ansi ) ( uni ) +#endif + +#ifndef Q_INLINE_TEMPLATES +# define Q_INLINE_TEMPLATES +#endif + +#ifndef Q_TYPENAME +# define Q_TYPENAME typename +#endif + +// +// Use to avoid "unused parameter" warnings +// + +#define Q_UNUSED(x) (void)x; + +// +// Debugging and error handling +// + +#if !defined(QT_NO_CHECK) +# define QT_CHECK_STATE // check state of objects etc. +# define QT_CHECK_RANGE // check range of indexes etc. +# define QT_CHECK_NULL // check null pointers +# define QT_CHECK_MATH // check math functions +#endif + +#if !defined(QT_NO_DEBUG) && !defined(QT_DEBUG) +# define QT_DEBUG // display debug messages +# if !defined(QT_NO_COMPAT) // compatibility with Qt 2 +# if !defined(NO_DEBUG) && !defined(DEBUG) +# if !defined(Q_OS_MACX) // clash with MacOS X headers +# define DEBUG +# endif +# endif +# endif +#endif + + +Q_EXPORT void qDebug( const char *, ... ) // print debug message +#if defined(Q_CC_GNU) && !defined(__INSURE__) + __attribute__ ((format (printf, 1, 2))) +#endif +; + +Q_EXPORT void qWarning( const char *, ... ) // print warning message +#if defined(Q_CC_GNU) && !defined(__INSURE__) + __attribute__ ((format (printf, 1, 2))) +#endif +; + +Q_EXPORT void qFatal( const char *, ... ) // print fatal message and exit +#if defined(Q_CC_GNU) + __attribute__ ((format (printf, 1, 2))) +#endif +; + +Q_EXPORT void qSystemWarning( const char *, int code = -1 ); + +#if !defined(QT_CLEAN_NAMESPACE) // compatibility with Qt 1 + +Q_EXPORT void debug( const char *, ... ) // print debug message +#if defined(Q_CC_GNU) && !defined(__INSURE__) + __attribute__ ((format (printf, 1, 2))) +#endif +; + +Q_EXPORT void warning( const char *, ... ) // print warning message +#if defined(Q_CC_GNU) && !defined(__INSURE__) + __attribute__ ((format (printf, 1, 2))) +#endif +; + +Q_EXPORT void fatal( const char *, ... ) // print fatal message and exit +#if defined(Q_CC_GNU) && !defined(__INSURE__) + __attribute__ ((format (printf, 1, 2))) +#endif +; + +#endif // QT_CLEAN_NAMESPACE + + +#if !defined(Q_ASSERT) +# if defined(QT_CHECK_STATE) +# if defined(QT_FATAL_ASSERT) +# define Q_ASSERT(x) ((x) ? (void)0 : qFatal("ASSERT: \"%s\" in %s (%d)",#x,__FILE__,__LINE__)) +# else +# define Q_ASSERT(x) ((x) ? (void)0 : qWarning("ASSERT: \"%s\" in %s (%d)",#x,__FILE__,__LINE__)) +# endif +# else +# define Q_ASSERT(x) +# endif +#endif + +#if !defined(QT_NO_COMPAT) // compatibility with Qt 2 +# if !defined(ASSERT) +# if !defined(Q_OS_TEMP) +# define ASSERT(x) Q_ASSERT(x) +# endif +# endif +#endif // QT_NO_COMPAT + + +Q_EXPORT bool qt_check_pointer( bool c, const char *, int ); + +#if defined(QT_CHECK_NULL) +# define Q_CHECK_PTR(p) (qt_check_pointer((p)==0,__FILE__,__LINE__)) +#else +# define Q_CHECK_PTR(p) +#endif + +#if !defined(QT_NO_COMPAT) // compatibility with Qt 2 +# if !defined(CHECK_PTR) +# define CHECK_PTR(x) Q_CHECK_PTR(x) +# endif +#endif // QT_NO_COMPAT + +enum QtMsgType { QtDebugMsg, QtWarningMsg, QtFatalMsg }; + +typedef void (*QtMsgHandler)(QtMsgType, const char *); +Q_EXPORT QtMsgHandler qInstallMsgHandler( QtMsgHandler ); + +#if !defined(QT_NO_COMPAT) // compatibility with Qt 2 +typedef QtMsgHandler msg_handler; +#endif // QT_NO_COMPAT + +Q_EXPORT void qSuppressObsoleteWarnings( bool = TRUE ); + +Q_EXPORT void qObsolete( const char *obj, const char *oldfunc, + const char *newfunc ); +Q_EXPORT void qObsolete( const char *obj, const char *oldfunc ); +Q_EXPORT void qObsolete( const char *message ); + + +// +// Install paths from configure +// + +Q_EXPORT const char *qInstallPath(); +Q_EXPORT const char *qInstallPathDocs(); +Q_EXPORT const char *qInstallPathHeaders(); +Q_EXPORT const char *qInstallPathLibs(); +Q_EXPORT const char *qInstallPathBins(); +Q_EXPORT const char *qInstallPathPlugins(); +Q_EXPORT const char *qInstallPathData(); + +#endif // __cplusplus + +#endif // QGLOBAL_H + +// +// Avoid some particularly useless warnings from some stupid compilers. +// To get ALL C++ compiler warnings, define QT_CC_WARNINGS or comment out +// the line "#define QT_NO_WARNINGS" +// + +#if !defined(QT_CC_WARNINGS) +# define QT_NO_WARNINGS +#endif +#if defined(QT_NO_WARNINGS) +# if defined(Q_CC_MSVC) +# pragma warning(disable: 4244) // 'conversion' conversion from 'type1' to 'type2', possible loss of data +# pragma warning(disable: 4275) // non - DLL-interface classkey 'identifier' used as base for DLL-interface classkey 'identifier' +# pragma warning(disable: 4514) // unreferenced inline/local function has been removed +# pragma warning(disable: 4800) // 'type' : forcing value to bool 'true' or 'false' (performance warning) +# pragma warning(disable: 4097) // typedef-name 'identifier1' used as synonym for class-name 'identifier2' +# pragma warning(disable: 4706) // assignment within conditional expression +# pragma warning(disable: 4786) // truncating debug info after 255 characters +# pragma warning(disable: 4660) // template-class specialization 'identifier' is already instantiated +# pragma warning(disable: 4355) // 'this' : used in base member initializer list +# pragma warning(disable: 4231) // nonstandard extension used : 'extern' before template explicit instantiation +# elif defined(Q_CC_BOR) +# pragma option -w-inl +# pragma option -w-aus +# pragma warn -inl +# pragma warn -pia +# pragma warn -ccc +# pragma warn -rch +# pragma warn -sig +# elif defined(Q_CC_MWERKS) +# pragma warn_possunwant off +# endif +#endif diff --git a/qmake/include/qgvector.h b/qmake/include/qgvector.h new file mode 100644 index 0000000..6e8bdfc --- a/dev/null +++ b/qmake/include/qgvector.h @@ -0,0 +1,121 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QGVector class +** +** Created : 930907 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QGVECTOR_H +#define QGVECTOR_H + +#ifndef QT_H +#include "qptrcollection.h" +#endif // QT_H + + +class Q_EXPORT QGVector : public QPtrCollection // generic vector +{ +friend class QGList; // needed by QGList::toVector +public: +#ifndef QT_NO_DATASTREAM + QDataStream &read( QDataStream & ); // read vector from stream + QDataStream &write( QDataStream & ) const; // write vector to stream +#endif + virtual int compareItems( Item, Item ); + +protected: + QGVector(); // create empty vector + QGVector( uint size ); // create vector with nullptrs + QGVector( const QGVector &v ); // make copy of other vector + ~QGVector(); + + QGVector &operator=( const QGVector &v ); // assign from other vector + bool operator==( const QGVector &v ) const; + + Item *data() const { return vec; } + uint size() const { return len; } + uint count() const { return numItems; } + + bool insert( uint index, Item ); // insert item at index + bool remove( uint index ); // remove item + Item take( uint index ); // take out item + + void clear(); // clear vector + bool resize( uint newsize ); // resize vector + + bool fill( Item, int flen ); // resize and fill vector + + void sort(); // sort vector + int bsearch( Item ) const; // binary search (when sorted) + + int findRef( Item, uint index ) const; // find exact item in vector + int find( Item, uint index ) const; // find equal item in vector + uint containsRef( Item ) const; // get number of exact matches + uint contains( Item ) const; // get number of equal matches + + Item at( uint index ) const // return indexed item + { +#if defined(QT_CHECK_RANGE) + if ( index >= len ) + warningIndexRange( index ); +#endif + return vec[index]; + } + + bool insertExpand( uint index, Item ); // insert, expand if necessary + + void toList( QGList * ) const; // put items in list + +#ifndef QT_NO_DATASTREAM + virtual QDataStream &read( QDataStream &, Item & ); + virtual QDataStream &write( QDataStream &, Item ) const; +#endif +private: + Item *vec; + uint len; + uint numItems; + + static void warningIndexRange( uint ); +}; + + +/***************************************************************************** + QGVector stream functions + *****************************************************************************/ + +#ifndef QT_NO_DATASTREAM +Q_EXPORT QDataStream &operator>>( QDataStream &, QGVector & ); +Q_EXPORT QDataStream &operator<<( QDataStream &, const QGVector & ); +#endif + +#endif // QGVECTOR_H diff --git a/qmake/include/qintdict.h b/qmake/include/qintdict.h new file mode 100644 index 0000000..b4cb223 --- a/dev/null +++ b/qmake/include/qintdict.h @@ -0,0 +1,114 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QIntDict template class +** +** Created : 940624 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QINTDICT_H +#define QINTDICT_H + +#ifndef QT_H +#include "qgdict.h" +#endif // QT_H + +template<class type> +class QIntDict +#ifdef Q_QDOC + : public QPtrCollection +#else + : public QGDict +#endif +{ +public: + QIntDict(int size=17) : QGDict(size,IntKey,0,0) {} + QIntDict( const QIntDict<type> &d ) : QGDict(d) {} + ~QIntDict() { clear(); } + QIntDict<type> &operator=(const QIntDict<type> &d) + { return (QIntDict<type>&)QGDict::operator=(d); } + uint count() const { return QGDict::count(); } + uint size() const { return QGDict::size(); } + bool isEmpty() const { return QGDict::count() == 0; } + void insert( long k, const type *d ) + { QGDict::look_int(k,(Item)d,1); } + void replace( long k, const type *d ) + { QGDict::look_int(k,(Item)d,2); } + bool remove( long k ) { return QGDict::remove_int(k); } + type *take( long k ) { return (type*)QGDict::take_int(k); } + type *find( long k ) const + { return (type *)((QGDict*)this)->QGDict::look_int(k,0,0); } + type *operator[]( long k ) const + { return (type *)((QGDict*)this)->QGDict::look_int(k,0,0); } + void clear() { QGDict::clear(); } + void resize( uint n ) { QGDict::resize(n); } + void statistics() const { QGDict::statistics(); } + +#ifdef Q_QDOC +protected: + virtual QDataStream& read( QDataStream &, QPtrCollection::Item & ); + virtual QDataStream& write( QDataStream &, QPtrCollection::Item ) const; +#endif + +private: + void deleteItem( Item d ); +}; + +#if !defined(Q_BROKEN_TEMPLATE_SPECIALIZATION) +template<> inline void QIntDict<void>::deleteItem( QPtrCollection::Item ) +{ +} +#endif + +template<class type> inline void QIntDict<type>::deleteItem( QPtrCollection::Item d ) +{ + if ( del_item ) delete (type*)d; +} + +template<class type> +class QIntDictIterator : public QGDictIterator +{ +public: + QIntDictIterator(const QIntDict<type> &d) :QGDictIterator((QGDict &)d) {} + ~QIntDictIterator() {} + uint count() const { return dict->count(); } + bool isEmpty() const { return dict->count() == 0; } + type *toFirst() { return (type *)QGDictIterator::toFirst(); } + operator type *() const { return (type *)QGDictIterator::get(); } + type *current() const { return (type *)QGDictIterator::get(); } + long currentKey() const { return QGDictIterator::getKeyInt(); } + type *operator()() { return (type *)QGDictIterator::operator()(); } + type *operator++() { return (type *)QGDictIterator::operator++(); } + type *operator+=(uint j) { return (type *)QGDictIterator::operator+=(j);} +}; + +#endif // QINTDICT_H diff --git a/qmake/include/qiodevice.h b/qmake/include/qiodevice.h new file mode 100644 index 0000000..cb83463 --- a/dev/null +++ b/qmake/include/qiodevice.h @@ -0,0 +1,161 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QIODevice class +** +** Created : 940913 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QIODEVICE_H +#define QIODEVICE_H + +#ifndef QT_H +#include "qglobal.h" +#include "qcstring.h" +#endif // QT_H + + +// IO device access types + +#define IO_Direct 0x0100 // direct access device +#define IO_Sequential 0x0200 // sequential access device +#define IO_Combined 0x0300 // combined direct/sequential +#define IO_TypeMask 0x0f00 + +// IO handling modes + +#define IO_Raw 0x0040 // raw access (not buffered) +#define IO_Async 0x0080 // asynchronous mode + +// IO device open modes + +#define IO_ReadOnly 0x0001 // readable device +#define IO_WriteOnly 0x0002 // writable device +#define IO_ReadWrite 0x0003 // read+write device +#define IO_Append 0x0004 // append +#define IO_Truncate 0x0008 // truncate device +#define IO_Translate 0x0010 // translate CR+LF +#define IO_ModeMask 0x00ff + +// IO device state + +#define IO_Open 0x1000 // device is open +#define IO_StateMask 0xf000 + +// IO device status + +#define IO_Ok 0 +#define IO_ReadError 1 // read error +#define IO_WriteError 2 // write error +#define IO_FatalError 3 // fatal unrecoverable error +#define IO_ResourceError 4 // resource limitation +#define IO_OpenError 5 // cannot open device +#define IO_ConnectError 5 // cannot connect to device +#define IO_AbortError 6 // abort error +#define IO_TimeOutError 7 // time out +#define IO_UnspecifiedError 8 // unspecified error + + +class Q_EXPORT QIODevice +{ +public: +#if defined(QT_ABI_64BITOFFSET) + typedef QtOffset Offset; +#else + typedef Q_ULONG Offset; +#endif + + QIODevice(); + virtual ~QIODevice(); + + int flags() const { return ioMode; } + int mode() const { return ioMode & IO_ModeMask; } + int state() const { return ioMode & IO_StateMask; } + + bool isDirectAccess() const { return ((ioMode & IO_Direct) == IO_Direct); } + bool isSequentialAccess() const { return ((ioMode & IO_Sequential) == IO_Sequential); } + bool isCombinedAccess() const { return ((ioMode & IO_Combined) == IO_Combined); } + bool isBuffered() const { return ((ioMode & IO_Raw) != IO_Raw); } + bool isRaw() const { return ((ioMode & IO_Raw) == IO_Raw); } + bool isSynchronous() const { return ((ioMode & IO_Async) != IO_Async); } + bool isAsynchronous() const { return ((ioMode & IO_Async) == IO_Async); } + bool isTranslated() const { return ((ioMode & IO_Translate) == IO_Translate); } + bool isReadable() const { return ((ioMode & IO_ReadOnly) == IO_ReadOnly); } + bool isWritable() const { return ((ioMode & IO_WriteOnly) == IO_WriteOnly); } + bool isReadWrite() const { return ((ioMode & IO_ReadWrite) == IO_ReadWrite); } + bool isInactive() const { return state() == 0; } + bool isOpen() const { return state() == IO_Open; } + + int status() const { return ioSt; } + void resetStatus() { ioSt = IO_Ok; } + + virtual bool open( int mode ) = 0; + virtual void close() = 0; + virtual void flush() = 0; + + virtual Offset size() const = 0; + virtual Offset at() const; + virtual bool at( Offset ); + virtual bool atEnd() const; + bool reset() { return at(0); } + + virtual Q_LONG readBlock( char *data, Q_ULONG maxlen ) = 0; + virtual Q_LONG writeBlock( const char *data, Q_ULONG len ) = 0; + virtual Q_LONG readLine( char *data, Q_ULONG maxlen ); + Q_LONG writeBlock( const QByteArray& data ); + virtual QByteArray readAll(); + + virtual int getch() = 0; + virtual int putch( int ) = 0; + virtual int ungetch( int ) = 0; + +protected: + void setFlags( int f ) { ioMode = f; } + void setType( int ); + void setMode( int ); + void setState( int ); + void setStatus( int ); + Offset ioIndex; + +private: + int ioMode; + int ioSt; + +private: // Disabled copy constructor and operator= +#if defined(Q_DISABLE_COPY) + QIODevice( const QIODevice & ); + QIODevice &operator=( const QIODevice & ); +#endif +}; + + +#endif // QIODEVICE_H diff --git a/qmake/include/qmap.h b/qmake/include/qmap.h new file mode 100644 index 0000000..269bd6b --- a/dev/null +++ b/qmake/include/qmap.h @@ -0,0 +1,883 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QMap class +** +** Created : 990406 +** +** Copyright (C) 1992-2002 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QMAP_H +#define QMAP_H + +#ifndef QT_H +#include "qglobal.h" +#include "qshared.h" +#include "qdatastream.h" +#include "qpair.h" +#include "qvaluelist.h" +#endif // QT_H + +#ifndef QT_NO_STL +#include <iterator> +#include <map> +#endif + +//#define QT_CHECK_MAP_RANGE + +struct Q_EXPORT QMapNodeBase +{ + enum Color { Red, Black }; + + QMapNodeBase* left; + QMapNodeBase* right; + QMapNodeBase* parent; + + Color color; + + QMapNodeBase* minimum() { + QMapNodeBase* x = this; + while ( x->left ) + x = x->left; + return x; + } + + QMapNodeBase* maximum() { + QMapNodeBase* x = this; + while ( x->right ) + x = x->right; + return x; + } +}; + + +template <class K, class T> +struct QMapNode : public QMapNodeBase +{ + QMapNode( const K& _key, const T& _data ) { data = _data; key = _key; } + QMapNode( const K& _key ) { key = _key; } + QMapNode( const QMapNode<K,T>& _n ) { key = _n.key; data = _n.data; } + QMapNode() { } + T data; + K key; +}; + + +template<class K, class T> +class QMapIterator +{ + public: + /** + * Typedefs + */ + typedef QMapNode< K, T >* NodePtr; +#ifndef QT_NO_STL + typedef std::bidirectional_iterator_tag iterator_category; +#endif + typedef T value_type; +#ifndef QT_NO_STL + typedef ptrdiff_t difference_type; +#else + typedef int difference_type; +#endif + typedef T* pointer; + typedef T& reference; + + /** + * Variables + */ + QMapNode<K,T>* node; + + /** + * Functions + */ + QMapIterator() : node( 0 ) {} + QMapIterator( QMapNode<K,T>* p ) : node( p ) {} + QMapIterator( const QMapIterator<K,T>& it ) : node( it.node ) {} + + bool operator==( const QMapIterator<K,T>& it ) const { return node == it.node; } + bool operator!=( const QMapIterator<K,T>& it ) const { return node != it.node; } + T& operator*() { return node->data; } + const T& operator*() const { return node->data; } + // UDT for T = x* + // T* operator->() const { return &node->data; } + + const K& key() const { return node->key; } + T& data() { return node->data; } + const T& data() const { return node->data; } + +private: + int inc(); + int dec(); + +public: + QMapIterator<K,T>& operator++() { + inc(); + return *this; + } + + QMapIterator<K,T> operator++(int) { + QMapIterator<K,T> tmp = *this; + inc(); + return tmp; + } + + QMapIterator<K,T>& operator--() { + dec(); + return *this; + } + + QMapIterator<K,T> operator--(int) { + QMapIterator<K,T> tmp = *this; + dec(); + return tmp; + } +}; + +template <class K, class T> +Q_INLINE_TEMPLATES int QMapIterator<K,T>::inc() +{ + QMapNodeBase* tmp = node; + if ( tmp->right ) { + tmp = tmp->right; + while ( tmp->left ) + tmp = tmp->left; + } else { + QMapNodeBase* y = tmp->parent; + while (tmp == y->right) { + tmp = y; + y = y->parent; + } + if (tmp->right != y) + tmp = y; + } + node = (NodePtr)tmp; + return 0; +} + +template <class K, class T> +Q_INLINE_TEMPLATES int QMapIterator<K,T>::dec() +{ + QMapNodeBase* tmp = node; + if (tmp->color == QMapNodeBase::Red && + tmp->parent->parent == tmp ) { + tmp = tmp->right; + } else if (tmp->left != 0) { + QMapNodeBase* y = tmp->left; + while ( y->right ) + y = y->right; + tmp = y; + } else { + QMapNodeBase* y = tmp->parent; + while (tmp == y->left) { + tmp = y; + y = y->parent; + } + tmp = y; + } + node = (NodePtr)tmp; + return 0; +} + +template<class K, class T> +class QMapConstIterator +{ + public: + /** + * Typedefs + */ + typedef QMapNode< K, T >* NodePtr; +#ifndef QT_NO_STL + typedef std::bidirectional_iterator_tag iterator_category; +#endif + typedef T value_type; +#ifndef QT_NO_STL + typedef ptrdiff_t difference_type; +#else + typedef int difference_type; +#endif + typedef const T* pointer; + typedef const T& reference; + + + /** + * Variables + */ + QMapNode<K,T>* node; + + /** + * Functions + */ + QMapConstIterator() : node( 0 ) {} + QMapConstIterator( QMapNode<K,T>* p ) : node( p ) {} + QMapConstIterator( const QMapConstIterator<K,T>& it ) : node( it.node ) {} + QMapConstIterator( const QMapIterator<K,T>& it ) : node( it.node ) {} + + bool operator==( const QMapConstIterator<K,T>& it ) const { return node == it.node; } + bool operator!=( const QMapConstIterator<K,T>& it ) const { return node != it.node; } + const T& operator*() const { return node->data; } + // UDT for T = x* + // const T* operator->() const { return &node->data; } + + const K& key() const { return node->key; } + const T& data() const { return node->data; } + +private: + int inc(); + int dec(); + +public: + QMapConstIterator<K,T>& operator++() { + inc(); + return *this; + } + + QMapConstIterator<K,T> operator++(int) { + QMapConstIterator<K,T> tmp = *this; + inc(); + return tmp; + } + + QMapConstIterator<K,T>& operator--() { + dec(); + return *this; + } + + QMapConstIterator<K,T> operator--(int) { + QMapConstIterator<K,T> tmp = *this; + dec(); + return tmp; + } +}; + +template <class K, class T> +Q_INLINE_TEMPLATES int QMapConstIterator<K,T>::inc() +{ + QMapNodeBase* tmp = node; + if ( tmp->right ) { + tmp = tmp->right; + while ( tmp->left ) + tmp = tmp->left; + } else { + QMapNodeBase* y = tmp->parent; + while (tmp == y->right) { + tmp = y; + y = y->parent; + } + if (tmp->right != y) + tmp = y; + } + node = (NodePtr)tmp; + return 0; +} + +template <class K, class T> +Q_INLINE_TEMPLATES int QMapConstIterator<K,T>::dec() +{ + QMapNodeBase* tmp = node; + if (tmp->color == QMapNodeBase::Red && + tmp->parent->parent == tmp ) { + tmp = tmp->right; + } else if (tmp->left != 0) { + QMapNodeBase* y = tmp->left; + while ( y->right ) + y = y->right; + tmp = y; + } else { + QMapNodeBase* y = tmp->parent; + while (tmp == y->left) { + tmp = y; + y = y->parent; + } + tmp = y; + } + node = (NodePtr)tmp; + return 0; +} + +class Q_EXPORT QMapPrivateBase : public QShared +{ +public: + QMapPrivateBase() { + node_count = 0; + } + QMapPrivateBase( const QMapPrivateBase* _map) { + node_count = _map->node_count; + } + + /** + * Implementations of basic tree algorithms + */ + void rotateLeft( QMapNodeBase* x, QMapNodeBase*& root); + void rotateRight( QMapNodeBase* x, QMapNodeBase*& root ); + void rebalance( QMapNodeBase* x, QMapNodeBase*& root ); + QMapNodeBase* removeAndRebalance( QMapNodeBase* z, QMapNodeBase*& root, + QMapNodeBase*& leftmost, + QMapNodeBase*& rightmost ); + + /** + * Variables + */ + int node_count; +}; + + +template <class Key, class T> +class QMapPrivate : public QMapPrivateBase +{ +public: + /** + * Typedefs + */ + typedef QMapIterator< Key, T > Iterator; + typedef QMapConstIterator< Key, T > ConstIterator; + typedef QMapNode< Key, T > Node; + typedef QMapNode< Key, T >* NodePtr; + + /** + * Functions + */ + QMapPrivate(); + QMapPrivate( const QMapPrivate< Key, T >* _map ); + ~QMapPrivate() { clear(); delete header; } + + NodePtr copy( NodePtr p ); + void clear(); + void clear( NodePtr p ); + + Iterator begin() { return Iterator( (NodePtr)(header->left ) ); } + Iterator end() { return Iterator( header ); } + ConstIterator begin() const { return ConstIterator( (NodePtr)(header->left ) ); } + ConstIterator end() const { return ConstIterator( header ); } + + ConstIterator find(const Key& k) const; + + void remove( Iterator it ) { + NodePtr del = (NodePtr) removeAndRebalance( it.node, header->parent, header->left, header->right ); + delete del; + --node_count; + } + +#ifdef QT_QMAP_DEBUG + void inorder( QMapNodeBase* x = 0, int level = 0 ){ + if ( !x ) + x = header->parent; + if ( x->left ) + inorder( x->left, level + 1 ); + //cout << level << " Key=" << key(x) << " Value=" << ((NodePtr)x)->data << endl; + if ( x->right ) + inorder( x->right, level + 1 ); + } +#endif + +#if 0 + Iterator insertMulti(const Key& v){ + QMapNodeBase* y = header; + QMapNodeBase* x = header->parent; + while (x != 0){ + y = x; + x = ( v < key(x) ) ? x->left : x->right; + } + return insert(x, y, v); + } +#endif + + Iterator insertSingle( const Key& k ); + Iterator insert( QMapNodeBase* x, QMapNodeBase* y, const Key& k ); + +protected: + /** + * Helpers + */ + const Key& key( QMapNodeBase* b ) const { return ((NodePtr)b)->key; } + + /** + * Variables + */ + NodePtr header; +}; + + +template <class Key, class T> +Q_INLINE_TEMPLATES QMapPrivate<Key,T>::QMapPrivate() { + header = new Node; + header->color = QMapNodeBase::Red; // Mark the header + header->parent = 0; + header->left = header->right = header; +} +template <class Key, class T> +Q_INLINE_TEMPLATES QMapPrivate<Key,T>::QMapPrivate( const QMapPrivate< Key, T >* _map ) : QMapPrivateBase( _map ) { + header = new Node; + header->color = QMapNodeBase::Red; // Mark the header + if ( _map->header->parent == 0 ) { + header->parent = 0; + header->left = header->right = header; + } else { + header->parent = copy( (NodePtr)(_map->header->parent) ); + header->parent->parent = header; + header->left = header->parent->minimum(); + header->right = header->parent->maximum(); + } +} + +template <class Key, class T> +Q_INLINE_TEMPLATES Q_TYPENAME QMapPrivate<Key,T>::NodePtr QMapPrivate<Key,T>::copy( Q_TYPENAME QMapPrivate<Key,T>::NodePtr p ) +{ + if ( !p ) + return 0; + NodePtr n = new Node( *p ); + n->color = p->color; + if ( p->left ) { + n->left = copy( (NodePtr)(p->left) ); + n->left->parent = n; + } else { + n->left = 0; + } + if ( p->right ) { + n->right = copy( (NodePtr)(p->right) ); + n->right->parent = n; + } else { + n->right = 0; + } + return n; +} + +template <class Key, class T> +Q_INLINE_TEMPLATES void QMapPrivate<Key,T>::clear() +{ + clear( (NodePtr)(header->parent) ); + header->color = QMapNodeBase::Red; + header->parent = 0; + header->left = header->right = header; + node_count = 0; +} + +template <class Key, class T> +Q_INLINE_TEMPLATES void QMapPrivate<Key,T>::clear( Q_TYPENAME QMapPrivate<Key,T>::NodePtr p ) +{ + while ( p != 0 ) { + clear( (NodePtr)p->right ); + NodePtr y = (NodePtr)p->left; + delete p; + p = y; + } +} + +template <class Key, class T> +Q_INLINE_TEMPLATES Q_TYPENAME QMapPrivate<Key,T>::ConstIterator QMapPrivate<Key,T>::find(const Key& k) const +{ + QMapNodeBase* y = header; // Last node + QMapNodeBase* x = header->parent; // Root node. + + while ( x != 0 ) { + // If as k <= key(x) go left + if ( !( key(x) < k ) ) { + y = x; + x = x->left; + } else { + x = x->right; + } + } + + // Was k bigger/smaller then the biggest/smallest + // element of the tree ? Return end() + if ( y == header || k < key(y) ) + return ConstIterator( header ); + return ConstIterator( (NodePtr)y ); +} + +template <class Key, class T> +Q_INLINE_TEMPLATES Q_TYPENAME QMapPrivate<Key,T>::Iterator QMapPrivate<Key,T>::insertSingle( const Key& k ) +{ + // Search correct position in the tree + QMapNodeBase* y = header; + QMapNodeBase* x = header->parent; + bool result = TRUE; + while ( x != 0 ) { + result = ( k < key(x) ); + y = x; + x = result ? x->left : x->right; + } + // Get iterator on the last not empty one + Iterator j( (NodePtr)y ); + if ( result ) { + // Smaller then the leftmost one ? + if ( j == begin() ) { + return insert(x, y, k ); + } else { + // Perhaps daddy is the right one ? + --j; + } + } + // Really bigger ? + if ( (j.node->key) < k ) + return insert(x, y, k ); + // We are going to replace a node + return j; +} + + +template <class Key, class T> +Q_INLINE_TEMPLATES Q_TYPENAME QMapPrivate<Key,T>::Iterator QMapPrivate<Key,T>::insert( QMapNodeBase* x, QMapNodeBase* y, const Key& k ) +{ + NodePtr z = new Node( k ); + if (y == header || x != 0 || k < key(y) ) { + y->left = z; // also makes leftmost = z when y == header + if ( y == header ) { + header->parent = z; + header->right = z; + } else if ( y == header->left ) + header->left = z; // maintain leftmost pointing to min node + } else { + y->right = z; + if ( y == header->right ) + header->right = z; // maintain rightmost pointing to max node + } + z->parent = y; + z->left = 0; + z->right = 0; + rebalance( z, header->parent ); + ++node_count; + return Iterator(z); +} + + +#ifdef QT_CHECK_RANGE +# if !defined( QT_NO_DEBUG ) && defined( QT_CHECK_MAP_RANGE ) +# define QT_CHECK_INVALID_MAP_ELEMENT if ( empty() ) qWarning( "QMap: Warning invalid element" ) +# define QT_CHECK_INVALID_MAP_ELEMENT_FATAL Q_ASSERT( !empty() ); +# else +# define QT_CHECK_INVALID_MAP_ELEMENT +# define QT_CHECK_INVALID_MAP_ELEMENT_FATAL +# endif +#else +# define QT_CHECK_INVALID_MAP_ELEMENT +# define QT_CHECK_INVALID_MAP_ELEMENT_FATAL +#endif + +template <class T> class QDeepCopy; + +template<class Key, class T> +class QMap +{ +public: + /** + * Typedefs + */ + typedef Key key_type; + typedef T mapped_type; + typedef QPair<const key_type, mapped_type> value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; +#ifndef QT_NO_STL + typedef ptrdiff_t difference_type; +#else + typedef int difference_type; +#endif + typedef size_t size_type; + typedef QMapIterator<Key,T> iterator; + typedef QMapConstIterator<Key,T> const_iterator; + typedef QPair<iterator,bool> insert_pair; + + typedef QMapIterator< Key, T > Iterator; + typedef QMapConstIterator< Key, T > ConstIterator; + typedef T ValueType; + typedef QMapPrivate< Key, T > Priv; + + /** + * API + */ + QMap() + { + sh = new QMapPrivate< Key, T >; + } + QMap( const QMap<Key,T>& m ) + { + sh = m.sh; sh->ref(); + } + +#ifndef QT_NO_STL +# ifdef Q_CC_HPACC // HP-UX aCC does require typename in some place +# undef Q_TYPENAME // but not accept them at others. +# define Q_TYPENAME // also doesn't like re-defines ... +# endif + QMap( const Q_TYPENAME std::map<Key,T>& m ) + { + sh = new QMapPrivate<Key,T>; +#if defined(Q_OS_WIN32) + std::map<Key,T>::const_iterator it = m.begin(); +#else + QMapConstIterator<Key,T> it = m.begin(); +#endif + for ( ; it != m.end(); ++it ) { + value_type p( (*it).first, (*it).second ); + insert( p ); + } + } +#endif + ~QMap() + { + if ( sh->deref() ) + delete sh; + } + QMap<Key,T>& operator= ( const QMap<Key,T>& m ); +#ifndef QT_NO_STL + QMap<Key,T>& operator= ( const Q_TYPENAME std::map<Key,T>& m ) + { + clear(); +#if defined(Q_OS_WIN32) + std::map<Key,T>::const_iterator it = m.begin(); +#else + QMapConstIterator<Key,T> it = m.begin(); +#endif + for ( ; it != m.end(); ++it ) { + value_type p( (*it).first, (*it).second ); + insert( p ); + } + return *this; + } +# ifdef Q_CC_HPACC // undo the HP-UX aCC hackery done above +# undef Q_TYPENAME +# define Q_TYPENAME typename +# endif +#endif + + iterator begin() { detach(); return sh->begin(); } + iterator end() { detach(); return sh->end(); } + const_iterator begin() const { return ((const Priv*)sh)->begin(); } + const_iterator end() const { return ((const Priv*)sh)->end(); } + iterator replace( const Key& k, const T& v ) + { + remove( k ); + return insert( k, v ); + } + + size_type size() const + { + return sh->node_count; + } + bool empty() const + { + return sh->node_count == 0; + } + QPair<iterator,bool> insert( const value_type& x ); + + void erase( iterator it ) + { + detach(); + sh->remove( it ); + } + void erase( const key_type& k ); + size_type count( const key_type& k ) const; + T& operator[] ( const Key& k ); + void clear(); + + iterator find ( const Key& k ) + { + detach(); + return iterator( sh->find( k ).node ); + } + const_iterator find ( const Key& k ) const { return sh->find( k ); } + + const T& operator[] ( const Key& k ) const + { QT_CHECK_INVALID_MAP_ELEMENT; return sh->find( k ).data(); } + bool contains ( const Key& k ) const + { return find( k ) != end(); } + //{ return sh->find( k ) != ((const Priv*)sh)->end(); } + + size_type count() const { return sh->node_count; } + + QValueList<Key> keys() const { + QValueList<Key> r; + for (const_iterator i=begin(); i!=end(); ++i) + r.append(i.key()); + return r; + } + + QValueList<T> values() const { + QValueList<T> r; + for (const_iterator i=begin(); i!=end(); ++i) + r.append(*i); + return r; + } + + bool isEmpty() const { return sh->node_count == 0; } + + iterator insert( const Key& key, const T& value, bool overwrite = TRUE ); + void remove( iterator it ) { detach(); sh->remove( it ); } + void remove( const Key& k ); + +#if defined(Q_FULL_TEMPLATE_INSTANTIATION) + bool operator==( const QMap<Key,T>& ) const { return FALSE; } +#ifndef QT_NO_STL + bool operator==( const Q_TYPENAME std::map<Key,T>& ) const { return FALSE; } +#endif +#endif + +protected: + /** + * Helpers + */ + void detach() { if ( sh->count > 1 ) detachInternal(); } + + Priv* sh; +private: + void detachInternal(); + + friend class QDeepCopy< QMap<Key,T> >; +}; + +template<class Key, class T> +Q_INLINE_TEMPLATES QMap<Key,T>& QMap<Key,T>::operator= ( const QMap<Key,T>& m ) +{ + m.sh->ref(); + if ( sh->deref() ) + delete sh; + sh = m.sh; + return *this; +} + +template<class Key, class T> +Q_INLINE_TEMPLATES Q_TYPENAME QMap<Key,T>::insert_pair QMap<Key,T>::insert( const Q_TYPENAME QMap<Key,T>::value_type& x ) +{ + detach(); + size_type n = size(); + iterator it = sh->insertSingle( x.first ); + bool inserted = FALSE; + if ( n < size() ) { + inserted = TRUE; + it.data() = x.second; + } + return QPair<iterator,bool>( it, inserted ); +} + +template<class Key, class T> +Q_INLINE_TEMPLATES void QMap<Key,T>::erase( const Key& k ) +{ + detach(); + iterator it( sh->find( k ).node ); + if ( it != end() ) + sh->remove( it ); +} + +template<class Key, class T> +Q_INLINE_TEMPLATES Q_TYPENAME QMap<Key,T>::size_type QMap<Key,T>::count( const Key& k ) const +{ + const_iterator it( sh->find( k ).node ); + if ( it != end() ) { + size_type c = 0; + while ( it != end() ) { + ++it; + ++c; + } + return c; + } + return 0; +} + +template<class Key, class T> +Q_INLINE_TEMPLATES T& QMap<Key,T>::operator[] ( const Key& k ) +{ + detach(); + QMapNode<Key,T>* p = sh->find( k ).node; + if ( p != sh->end().node ) + return p->data; + return insert( k, T() ).data(); +} + +template<class Key, class T> +Q_INLINE_TEMPLATES void QMap<Key,T>::clear() +{ + if ( sh->count == 1 ) + sh->clear(); + else { + sh->deref(); + sh = new QMapPrivate<Key,T>; + } +} + +template<class Key, class T> +Q_INLINE_TEMPLATES Q_TYPENAME QMap<Key,T>::iterator QMap<Key,T>::insert( const Key& key, const T& value, bool overwrite ) +{ + detach(); + size_type n = size(); + iterator it = sh->insertSingle( key ); + if ( overwrite || n < size() ) + it.data() = value; + return it; +} + +template<class Key, class T> +Q_INLINE_TEMPLATES void QMap<Key,T>::remove( const Key& k ) +{ + detach(); + iterator it( sh->find( k ).node ); + if ( it != end() ) + sh->remove( it ); +} + +template<class Key, class T> +Q_INLINE_TEMPLATES void QMap<Key,T>::detachInternal() +{ + sh->deref(); sh = new QMapPrivate<Key,T>( sh ); +} + + +#ifndef QT_NO_DATASTREAM +template<class Key, class T> +Q_INLINE_TEMPLATES QDataStream& operator>>( QDataStream& s, QMap<Key,T>& m ) { + m.clear(); + Q_UINT32 c; + s >> c; + for( Q_UINT32 i = 0; i < c; ++i ) { + Key k; T t; + s >> k >> t; + m.insert( k, t ); + if ( s.atEnd() ) + break; + } + return s; +} + + +template<class Key, class T> +Q_INLINE_TEMPLATES QDataStream& operator<<( QDataStream& s, const QMap<Key,T>& m ) { + s << (Q_UINT32)m.size(); + QMapConstIterator<Key,T> it = m.begin(); + for( ; it != m.end(); ++it ) + s << it.key() << it.data(); + return s; +} +#endif + +#endif // QMAP_H diff --git a/qmake/include/qmemarray.h b/qmake/include/qmemarray.h new file mode 100644 index 0000000..a5baf99 --- a/dev/null +++ b/qmake/include/qmemarray.h @@ -0,0 +1,122 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QMemArray template/macro class +** +** Created : 930906 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QMEMARRAY_H +#define QMEMARRAY_H + +#ifndef QT_H +#include "qgarray.h" +#endif // QT_H + + +template<class type> +class QMemArray : public QGArray +{ +public: + typedef type* Iterator; + typedef const type* ConstIterator; + typedef type ValueType; + +protected: + QMemArray( int, int ) : QGArray( 0, 0 ) {} + +public: + QMemArray() {} + QMemArray( int size ) : QGArray(size*sizeof(type)) {} + QMemArray( const QMemArray<type> &a ) : QGArray(a) {} + ~QMemArray() {} + QMemArray<type> &operator=(const QMemArray<type> &a) + { return (QMemArray<type>&)QGArray::assign(a); } + type *data() const { return (type *)QGArray::data(); } + uint nrefs() const { return QGArray::nrefs(); } + uint size() const { return QGArray::size()/sizeof(type); } + uint count() const { return size(); } + bool isEmpty() const { return QGArray::size() == 0; } + bool isNull() const { return QGArray::data() == 0; } + bool resize( uint size ) { return QGArray::resize(size*sizeof(type)); } + bool truncate( uint pos ) { return QGArray::resize(pos*sizeof(type)); } + bool fill( const type &d, int size = -1 ) + { return QGArray::fill((char*)&d,size,sizeof(type) ); } + void detach() { QGArray::detach(); } + QMemArray<type> copy() const + { QMemArray<type> tmp; return tmp.duplicate(*this); } + QMemArray<type>& assign( const QMemArray<type>& a ) + { return (QMemArray<type>&)QGArray::assign(a); } + QMemArray<type>& assign( const type *a, uint n ) + { return (QMemArray<type>&)QGArray::assign((char*)a,n*sizeof(type)); } + QMemArray<type>& duplicate( const QMemArray<type>& a ) + { return (QMemArray<type>&)QGArray::duplicate(a); } + QMemArray<type>& duplicate( const type *a, uint n ) + { return (QMemArray<type>&)QGArray::duplicate((char*)a,n*sizeof(type)); } + QMemArray<type>& setRawData( const type *a, uint n ) + { return (QMemArray<type>&)QGArray::setRawData((char*)a, + n*sizeof(type)); } + void resetRawData( const type *a, uint n ) + { QGArray::resetRawData((char*)a,n*sizeof(type)); } + int find( const type &d, uint i=0 ) const + { return QGArray::find((char*)&d,i,sizeof(type)); } + int contains( const type &d ) const + { return QGArray::contains((char*)&d,sizeof(type)); } + void sort() { QGArray::sort(sizeof(type)); } + int bsearch( const type &d ) const + { return QGArray::bsearch((const char*)&d,sizeof(type)); } + // ### Qt 4.0: maybe provide uint overload as work-around for MSVC bug + type& operator[]( int i ) const + { return (type &)(*(type *)QGArray::at(i*sizeof(type))); } + type& at( uint i ) const + { return (type &)(*(type *)QGArray::at(i*sizeof(type))); } + operator const type*() const { return (const type *)QGArray::data(); } + bool operator==( const QMemArray<type> &a ) const { return isEqual(a); } + bool operator!=( const QMemArray<type> &a ) const { return !isEqual(a); } + Iterator begin() { return data(); } + Iterator end() { return data() + size(); } + ConstIterator begin() const { return data(); } + ConstIterator end() const { return data() + size(); } +}; + +#if defined(Q_TEMPLATEDLL) +// MOC_SKIP_BEGIN +Q_TEMPLATE_EXTERN template class Q_EXPORT QMemArray<int>; +Q_TEMPLATE_EXTERN template class Q_EXPORT QMemArray<bool>; +// MOC_SKIP_END +#endif + +#ifndef QT_NO_COMPAT +#define QArray QMemArray +#endif + +#endif // QARRAY_H diff --git a/qmake/include/qnamespace.h b/qmake/include/qnamespace.h new file mode 100644 index 0000000..58b485f --- a/dev/null +++ b/qmake/include/qnamespace.h @@ -0,0 +1,843 @@ +/**************************************************************************** +** $Id$ +** +** Definition of Qt namespace (as class for compiler compatibility) +** +** Created : 980927 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the kernel module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QNAMESPACE_H +#define QNAMESPACE_H + +#ifndef QT_H +#include "qglobal.h" +#endif // QT_H + + +class QColor; +class QCursor; + + +class Q_EXPORT Qt { +public: + QT_STATIC_CONST QColor & color0; + QT_STATIC_CONST QColor & color1; + QT_STATIC_CONST QColor & black; + QT_STATIC_CONST QColor & white; + QT_STATIC_CONST QColor & darkGray; + QT_STATIC_CONST QColor & gray; + QT_STATIC_CONST QColor & lightGray; + QT_STATIC_CONST QColor & red; + QT_STATIC_CONST QColor & green; + QT_STATIC_CONST QColor & blue; + QT_STATIC_CONST QColor & cyan; + QT_STATIC_CONST QColor & magenta; + QT_STATIC_CONST QColor & yellow; + QT_STATIC_CONST QColor & darkRed; + QT_STATIC_CONST QColor & darkGreen; + QT_STATIC_CONST QColor & darkBlue; + QT_STATIC_CONST QColor & darkCyan; + QT_STATIC_CONST QColor & darkMagenta; + QT_STATIC_CONST QColor & darkYellow; + + // documented in qevent.cpp + enum ButtonState { // mouse/keyboard state values + NoButton = 0x0000, + LeftButton = 0x0001, + RightButton = 0x0002, + MidButton = 0x0004, + MouseButtonMask = 0x0007, + ShiftButton = 0x0100, + ControlButton = 0x0200, + AltButton = 0x0400, + MetaButton = 0x0800, + KeyButtonMask = 0x0f00, + Keypad = 0x4000 + }; + + // documented in qobject.cpp + // ideally would start at 1, as in QSizePolicy, but that breaks other things + enum Orientation { + Horizontal = 0, + Vertical + }; + + // Text formatting flags for QPainter::drawText and QLabel + // the following four enums can be combined to one integer which + // is passed as textflag to drawText and qt_format_text. + + // documented in qpainter.cpp + enum AlignmentFlags { + AlignAuto = 0x0000, // text alignment + AlignLeft = 0x0001, + AlignRight = 0x0002, + AlignHCenter = 0x0004, + AlignJustify = 0x0008, + AlignHorizontal_Mask = AlignLeft | AlignRight | AlignHCenter | AlignJustify, + AlignTop = 0x0010, + AlignBottom = 0x0020, + AlignVCenter = 0x0040, + AlignVertical_Mask = AlignTop | AlignBottom | AlignVCenter, + AlignCenter = AlignVCenter | AlignHCenter + }; + + // documented in qpainter.cpp + enum TextFlags { + SingleLine = 0x0080, // misc. flags + DontClip = 0x0100, + ExpandTabs = 0x0200, + ShowPrefix = 0x0400, + WordBreak = 0x0800, + BreakAnywhere = 0x1000, + DontPrint = 0x2000, // internal + NoAccel = 0x4000 + }; + + // Widget flags; documented in qwidget.cpp + typedef uint WState; + + // QWidget state flags (internal, barely documented in qwidget.cpp) + enum WidgetState { + WState_Created = 0x00000001, + WState_Disabled = 0x00000002, + WState_Visible = 0x00000004, + WState_ForceHide = 0x00000008, + WState_OwnCursor = 0x00000010, + WState_MouseTracking = 0x00000020, + WState_CompressKeys = 0x00000040, + WState_BlockUpdates = 0x00000080, + WState_InPaintEvent = 0x00000100, + WState_Reparented = 0x00000200, + WState_ConfigPending = 0x00000400, + WState_Resized = 0x00000800, + WState_AutoMask = 0x00001000, + WState_Polished = 0x00002000, + WState_DND = 0x00004000, + WState_Reserved0 = 0x00008000, + WState_Reserved1 = 0x00010000, + WState_Reserved2 = 0x00020000, + WState_CreatedHidden = 0x00040000, + WState_Maximized = 0x00080000, + WState_Minimized = 0x00100000, + WState_ForceDisabled = 0x00200000, + WState_Exposed = 0x00400000, + WState_HasMouse = 0x00800000 + }; + + // Widget flags2; documented in qwidget.cpp + typedef uint WFlags; + + // documented in qwidget.cpp + enum WidgetFlags { + WType_TopLevel = 0x00000001, // widget type flags + WType_Dialog = 0x00000002, + WType_Popup = 0x00000004, + WType_Desktop = 0x00000008, + WType_Mask = 0x0000000f, + + WStyle_Customize = 0x00000010, // window style flags + WStyle_NormalBorder = 0x00000020, + WStyle_DialogBorder = 0x00000040, // MS-Windows only + WStyle_NoBorder = 0x00002000, + WStyle_Title = 0x00000080, + WStyle_SysMenu = 0x00000100, + WStyle_Minimize = 0x00000200, + WStyle_Maximize = 0x00000400, + WStyle_MinMax = WStyle_Minimize | WStyle_Maximize, + WStyle_Tool = 0x00000800, + WStyle_StaysOnTop = 0x00001000, + WStyle_ContextHelp = 0x00004000, + WStyle_Reserved = 0x00008000, + WStyle_Mask = 0x0000fff0, + + WDestructiveClose = 0x00010000, // misc flags + WPaintDesktop = 0x00020000, + WPaintUnclipped = 0x00040000, + WPaintClever = 0x00080000, + WResizeNoErase = 0x00100000, + WMouseNoMask = 0x00200000, + WStaticContents = 0x00400000, + WRepaintNoErase = 0x00800000, +#ifdef Q_WS_X11 + WX11BypassWM = 0x01000000, + WWinOwnDC = 0x00000000, +#else + WX11BypassWM = 0x00000000, + WWinOwnDC = 0x01000000, +#endif + WGroupLeader = 0x02000000, + WShowModal = 0x04000000, + WNoMousePropagation = 0x08000000, + WSubWindow = 0x10000000 +#ifndef QT_NO_COMPAT + , + WNorthWestGravity = WStaticContents, + WType_Modal = WType_Dialog | WShowModal, + WStyle_Dialog = WType_Dialog, + WStyle_NoBorderEx = WStyle_NoBorder +#endif + }; + + // Image conversion flags. The unusual ordering is caused by + // compatibility and default requirements. + // Documented in qimage.cpp + + enum ImageConversionFlags { + ColorMode_Mask = 0x00000003, + AutoColor = 0x00000000, + ColorOnly = 0x00000003, + MonoOnly = 0x00000002, + // Reserved = 0x00000001, + + AlphaDither_Mask = 0x0000000c, + ThresholdAlphaDither = 0x00000000, + OrderedAlphaDither = 0x00000004, + DiffuseAlphaDither = 0x00000008, + NoAlpha = 0x0000000c, // Not supported + + Dither_Mask = 0x00000030, + DiffuseDither = 0x00000000, + OrderedDither = 0x00000010, + ThresholdDither = 0x00000020, + // ReservedDither= 0x00000030, + + DitherMode_Mask = 0x000000c0, + AutoDither = 0x00000000, + PreferDither = 0x00000040, + AvoidDither = 0x00000080 + }; + + // documented in qpainter.cpp + enum BGMode { // background mode + TransparentMode, + OpaqueMode + }; + +#ifndef QT_NO_COMPAT + // documented in qpainter.cpp + enum PaintUnit { // paint unit + PixelUnit, + LoMetricUnit, // OBSOLETE + HiMetricUnit, // OBSOLETE + LoEnglishUnit, // OBSOLETE + HiEnglishUnit, // OBSOLETE + TwipsUnit // OBSOLETE + }; +#endif + + // documented in qstyle.cpp +#ifdef QT_NO_COMPAT + enum GUIStyle { + WindowsStyle = 1, // ### Qt 4.0: either remove the obsolete enums or clean up compat vs. + MotifStyle = 4 // ### QT_NO_COMPAT by reordering or combination into one enum. + }; +#else + enum GUIStyle { + MacStyle, // OBSOLETE + WindowsStyle, + Win3Style, // OBSOLETE + PMStyle, // OBSOLETE + MotifStyle + }; +#endif + + // documented in qkeysequence.cpp + enum SequenceMatch { + NoMatch, + PartialMatch, + Identical + }; + + // documented in qevent.cpp + enum Modifier { // accelerator modifiers + META = 0x00100000, + SHIFT = 0x00200000, + CTRL = 0x00400000, + ALT = 0x00800000, + MODIFIER_MASK = 0x00f00000, + UNICODE_ACCEL = 0x10000000, + + ASCII_ACCEL = UNICODE_ACCEL // 1.x compat + }; + + // documented in qevent.cpp + enum Key { + Key_Escape = 0x1000, // misc keys + Key_Tab = 0x1001, + Key_Backtab = 0x1002, Key_BackTab = Key_Backtab, + Key_Backspace = 0x1003, Key_BackSpace = Key_Backspace, + Key_Return = 0x1004, + Key_Enter = 0x1005, + Key_Insert = 0x1006, + Key_Delete = 0x1007, + Key_Pause = 0x1008, + Key_Print = 0x1009, + Key_SysReq = 0x100a, + Key_Clear = 0x100b, + Key_Home = 0x1010, // cursor movement + Key_End = 0x1011, + Key_Left = 0x1012, + Key_Up = 0x1013, + Key_Right = 0x1014, + Key_Down = 0x1015, + Key_Prior = 0x1016, Key_PageUp = Key_Prior, + Key_Next = 0x1017, Key_PageDown = Key_Next, + Key_Shift = 0x1020, // modifiers + Key_Control = 0x1021, + Key_Meta = 0x1022, + Key_Alt = 0x1023, + Key_CapsLock = 0x1024, + Key_NumLock = 0x1025, + Key_ScrollLock = 0x1026, + Key_F1 = 0x1030, // function keys + Key_F2 = 0x1031, + Key_F3 = 0x1032, + Key_F4 = 0x1033, + Key_F5 = 0x1034, + Key_F6 = 0x1035, + Key_F7 = 0x1036, + Key_F8 = 0x1037, + Key_F9 = 0x1038, + Key_F10 = 0x1039, + Key_F11 = 0x103a, + Key_F12 = 0x103b, + Key_F13 = 0x103c, + Key_F14 = 0x103d, + Key_F15 = 0x103e, + Key_F16 = 0x103f, + Key_F17 = 0x1040, + Key_F18 = 0x1041, + Key_F19 = 0x1042, + Key_F20 = 0x1043, + Key_F21 = 0x1044, + Key_F22 = 0x1045, + Key_F23 = 0x1046, + Key_F24 = 0x1047, + Key_F25 = 0x1048, // F25 .. F35 only on X11 + Key_F26 = 0x1049, + Key_F27 = 0x104a, + Key_F28 = 0x104b, + Key_F29 = 0x104c, + Key_F30 = 0x104d, + Key_F31 = 0x104e, + Key_F32 = 0x104f, + Key_F33 = 0x1050, + Key_F34 = 0x1051, + Key_F35 = 0x1052, + Key_Super_L = 0x1053, // extra keys + Key_Super_R = 0x1054, + Key_Menu = 0x1055, + Key_Hyper_L = 0x1056, + Key_Hyper_R = 0x1057, + Key_Help = 0x1058, + Key_Direction_L = 0x1059, + Key_Direction_R = 0x1060, + Key_Space = 0x20, // 7 bit printable ASCII + Key_Any = Key_Space, + Key_Exclam = 0x21, + Key_QuoteDbl = 0x22, + Key_NumberSign = 0x23, + Key_Dollar = 0x24, + Key_Percent = 0x25, + Key_Ampersand = 0x26, + Key_Apostrophe = 0x27, + Key_ParenLeft = 0x28, + Key_ParenRight = 0x29, + Key_Asterisk = 0x2a, + Key_Plus = 0x2b, + Key_Comma = 0x2c, + Key_Minus = 0x2d, + Key_Period = 0x2e, + Key_Slash = 0x2f, + Key_0 = 0x30, + Key_1 = 0x31, + Key_2 = 0x32, + Key_3 = 0x33, + Key_4 = 0x34, + Key_5 = 0x35, + Key_6 = 0x36, + Key_7 = 0x37, + Key_8 = 0x38, + Key_9 = 0x39, + Key_Colon = 0x3a, + Key_Semicolon = 0x3b, + Key_Less = 0x3c, + Key_Equal = 0x3d, + Key_Greater = 0x3e, + Key_Question = 0x3f, + Key_At = 0x40, + Key_A = 0x41, + Key_B = 0x42, + Key_C = 0x43, + Key_D = 0x44, + Key_E = 0x45, + Key_F = 0x46, + Key_G = 0x47, + Key_H = 0x48, + Key_I = 0x49, + Key_J = 0x4a, + Key_K = 0x4b, + Key_L = 0x4c, + Key_M = 0x4d, + Key_N = 0x4e, + Key_O = 0x4f, + Key_P = 0x50, + Key_Q = 0x51, + Key_R = 0x52, + Key_S = 0x53, + Key_T = 0x54, + Key_U = 0x55, + Key_V = 0x56, + Key_W = 0x57, + Key_X = 0x58, + Key_Y = 0x59, + Key_Z = 0x5a, + Key_BracketLeft = 0x5b, + Key_Backslash = 0x5c, + Key_BracketRight = 0x5d, + Key_AsciiCircum = 0x5e, + Key_Underscore = 0x5f, + Key_QuoteLeft = 0x60, + Key_BraceLeft = 0x7b, + Key_Bar = 0x7c, + Key_BraceRight = 0x7d, + Key_AsciiTilde = 0x7e, + + // Latin 1 codes adapted from X: keysymdef.h,v 1.21 94/08/28 16:17:06 + + Key_nobreakspace = 0x0a0, + Key_exclamdown = 0x0a1, + Key_cent = 0x0a2, + Key_sterling = 0x0a3, + Key_currency = 0x0a4, + Key_yen = 0x0a5, + Key_brokenbar = 0x0a6, + Key_section = 0x0a7, + Key_diaeresis = 0x0a8, + Key_copyright = 0x0a9, + Key_ordfeminine = 0x0aa, + Key_guillemotleft = 0x0ab, // left angle quotation mark + Key_notsign = 0x0ac, + Key_hyphen = 0x0ad, + Key_registered = 0x0ae, + Key_macron = 0x0af, + Key_degree = 0x0b0, + Key_plusminus = 0x0b1, + Key_twosuperior = 0x0b2, + Key_threesuperior = 0x0b3, + Key_acute = 0x0b4, + Key_mu = 0x0b5, + Key_paragraph = 0x0b6, + Key_periodcentered = 0x0b7, + Key_cedilla = 0x0b8, + Key_onesuperior = 0x0b9, + Key_masculine = 0x0ba, + Key_guillemotright = 0x0bb, // right angle quotation mark + Key_onequarter = 0x0bc, + Key_onehalf = 0x0bd, + Key_threequarters = 0x0be, + Key_questiondown = 0x0bf, + Key_Agrave = 0x0c0, + Key_Aacute = 0x0c1, + Key_Acircumflex = 0x0c2, + Key_Atilde = 0x0c3, + Key_Adiaeresis = 0x0c4, + Key_Aring = 0x0c5, + Key_AE = 0x0c6, + Key_Ccedilla = 0x0c7, + Key_Egrave = 0x0c8, + Key_Eacute = 0x0c9, + Key_Ecircumflex = 0x0ca, + Key_Ediaeresis = 0x0cb, + Key_Igrave = 0x0cc, + Key_Iacute = 0x0cd, + Key_Icircumflex = 0x0ce, + Key_Idiaeresis = 0x0cf, + Key_ETH = 0x0d0, + Key_Ntilde = 0x0d1, + Key_Ograve = 0x0d2, + Key_Oacute = 0x0d3, + Key_Ocircumflex = 0x0d4, + Key_Otilde = 0x0d5, + Key_Odiaeresis = 0x0d6, + Key_multiply = 0x0d7, + Key_Ooblique = 0x0d8, + Key_Ugrave = 0x0d9, + Key_Uacute = 0x0da, + Key_Ucircumflex = 0x0db, + Key_Udiaeresis = 0x0dc, + Key_Yacute = 0x0dd, + Key_THORN = 0x0de, + Key_ssharp = 0x0df, + Key_agrave = 0x0e0, + Key_aacute = 0x0e1, + Key_acircumflex = 0x0e2, + Key_atilde = 0x0e3, + Key_adiaeresis = 0x0e4, + Key_aring = 0x0e5, + Key_ae = 0x0e6, + Key_ccedilla = 0x0e7, + Key_egrave = 0x0e8, + Key_eacute = 0x0e9, + Key_ecircumflex = 0x0ea, + Key_ediaeresis = 0x0eb, + Key_igrave = 0x0ec, + Key_iacute = 0x0ed, + Key_icircumflex = 0x0ee, + Key_idiaeresis = 0x0ef, + Key_eth = 0x0f0, + Key_ntilde = 0x0f1, + Key_ograve = 0x0f2, + Key_oacute = 0x0f3, + Key_ocircumflex = 0x0f4, + Key_otilde = 0x0f5, + Key_odiaeresis = 0x0f6, + Key_division = 0x0f7, + Key_oslash = 0x0f8, + Key_ugrave = 0x0f9, + Key_uacute = 0x0fa, + Key_ucircumflex = 0x0fb, + Key_udiaeresis = 0x0fc, + Key_yacute = 0x0fd, + Key_thorn = 0x0fe, + Key_ydiaeresis = 0x0ff, + + // multimedia/internet keys - ignored by default - see QKeyEvent c'tor + + Key_Back = 0x1061, + Key_Forward = 0x1062, + Key_Stop = 0x1063, + Key_Refresh = 0x1064, + + Key_VolumeDown = 0x1070, + Key_VolumeMute = 0x1071, + Key_VolumeUp = 0x1072, + Key_BassBoost = 0x1073, + Key_BassUp = 0x1074, + Key_BassDown = 0x1075, + Key_TrebleUp = 0x1076, + Key_TrebleDown = 0x1077, + + Key_MediaPlay = 0x1080, + Key_MediaStop = 0x1081, + Key_MediaPrev = 0x1082, + Key_MediaNext = 0x1083, + Key_MediaRecord = 0x1084, + + Key_HomePage = 0x1090, + Key_Favorites = 0x1091, + Key_Search = 0x1092, + Key_Standby = 0x1093, + Key_OpenUrl = 0x1094, + + Key_LaunchMail = 0x10a0, + Key_LaunchMedia = 0x10a1, + Key_Launch0 = 0x10a2, + Key_Launch1 = 0x10a3, + Key_Launch2 = 0x10a4, + Key_Launch3 = 0x10a5, + Key_Launch4 = 0x10a6, + Key_Launch5 = 0x10a7, + Key_Launch6 = 0x10a8, + Key_Launch7 = 0x10a9, + Key_Launch8 = 0x10aa, + Key_Launch9 = 0x10ab, + Key_LaunchA = 0x10ac, + Key_LaunchB = 0x10ad, + Key_LaunchC = 0x10ae, + Key_LaunchD = 0x10af, + Key_LaunchE = 0x10b0, + Key_LaunchF = 0x10b1, + + Key_MediaLast = 0x1fff, + + Key_unknown = 0xffff + }; + + // documented in qcommonstyle.cpp + enum ArrowType { + UpArrow, + DownArrow, + LeftArrow, + RightArrow + }; + + // documented in qpainter.cpp + enum RasterOp { // raster op mode + CopyROP, + OrROP, + XorROP, + NotAndROP, EraseROP=NotAndROP, + NotCopyROP, + NotOrROP, + NotXorROP, + AndROP, NotEraseROP=AndROP, + NotROP, + ClearROP, + SetROP, + NopROP, + AndNotROP, + OrNotROP, + NandROP, + NorROP, LastROP=NorROP + }; + + // documented in qpainter.cpp + enum PenStyle { // pen style + NoPen, + SolidLine, + DashLine, + DotLine, + DashDotLine, + DashDotDotLine, + MPenStyle = 0x0f + }; + + // documented in qpainter.cpp + enum PenCapStyle { // line endcap style + FlatCap = 0x00, + SquareCap = 0x10, + RoundCap = 0x20, + MPenCapStyle = 0x30 + }; + + // documented in qpainter.cpp + enum PenJoinStyle { // line join style + MiterJoin = 0x00, + BevelJoin = 0x40, + RoundJoin = 0x80, + MPenJoinStyle = 0xc0 + }; + + // documented in qpainter.cpp + enum BrushStyle { // brush style + NoBrush, + SolidPattern, + Dense1Pattern, + Dense2Pattern, + Dense3Pattern, + Dense4Pattern, + Dense5Pattern, + Dense6Pattern, + Dense7Pattern, + HorPattern, + VerPattern, + CrossPattern, + BDiagPattern, + FDiagPattern, + DiagCrossPattern, + CustomPattern=24 + }; + + // documented in qapplication_win.cpp + enum WindowsVersion { + WV_32s = 0x0001, + WV_95 = 0x0002, + WV_98 = 0x0003, + WV_Me = 0x0004, + WV_DOS_based = 0x000f, + + WV_NT = 0x0010, + WV_2000 = 0x0020, + WV_XP = 0x0030, + WV_NT_based = 0x00f0 + }; + + // documented in qstyle.cpp + enum UIEffect { + UI_General, + UI_AnimateMenu, + UI_FadeMenu, + UI_AnimateCombo, + UI_AnimateTooltip, + UI_FadeTooltip + }; + + // documented in qcursor.cpp + enum CursorShape { + ArrowCursor, + UpArrowCursor, + CrossCursor, + WaitCursor, + IbeamCursor, + SizeVerCursor, + SizeHorCursor, + SizeBDiagCursor, + SizeFDiagCursor, + SizeAllCursor, + BlankCursor, + SplitVCursor, + SplitHCursor, + PointingHandCursor, + ForbiddenCursor, + WhatsThisCursor, + LastCursor = WhatsThisCursor, + BitmapCursor = 24 + }; + + // Global cursors + + QT_STATIC_CONST QCursor & arrowCursor; // standard arrow cursor + QT_STATIC_CONST QCursor & upArrowCursor; // upwards arrow + QT_STATIC_CONST QCursor & crossCursor; // crosshair + QT_STATIC_CONST QCursor & waitCursor; // hourglass/watch + QT_STATIC_CONST QCursor & ibeamCursor; // ibeam/text entry + QT_STATIC_CONST QCursor & sizeVerCursor; // vertical resize + QT_STATIC_CONST QCursor & sizeHorCursor; // horizontal resize + QT_STATIC_CONST QCursor & sizeBDiagCursor; // diagonal resize (/) + QT_STATIC_CONST QCursor & sizeFDiagCursor; // diagonal resize (\) + QT_STATIC_CONST QCursor & sizeAllCursor; // all directions resize + QT_STATIC_CONST QCursor & blankCursor; // blank/invisible cursor + QT_STATIC_CONST QCursor & splitVCursor; // vertical bar with left-right + // arrows + QT_STATIC_CONST QCursor & splitHCursor; // horizontal bar with up-down + // arrows + QT_STATIC_CONST QCursor & pointingHandCursor; // pointing hand + QT_STATIC_CONST QCursor & forbiddenCursor; // forbidden cursor (slashed circle) + QT_STATIC_CONST QCursor & whatsThisCursor; // arrow with a question mark + + + enum TextFormat { + PlainText, + RichText, + AutoText, + LogText + }; + + // Documented in qtextedit.cpp + enum AnchorAttribute { + AnchorName, + AnchorHref + }; + + // Documented in qmainwindow.cpp + enum Dock { + DockUnmanaged, + DockTornOff, + DockTop, + DockBottom, + DockRight, + DockLeft, + DockMinimized +#ifndef QT_NO_COMPAT + , + Unmanaged = DockUnmanaged, + TornOff = DockTornOff, + Top = DockTop, + Bottom = DockBottom, + Right = DockRight, + Left = DockLeft, + Minimized = DockMinimized +#endif + }; + // compatibility + typedef Dock ToolBarDock; + + // documented in qdatetime.cpp + enum DateFormat { + TextDate, // default Qt + ISODate, // ISO 8601 + LocalDate // locale dependant + }; + + // documented in qdatetime.cpp + enum TimeSpec { + LocalTime, + UTC + }; + + // documented in qwidget.cpp + enum BackgroundMode { + FixedColor, + FixedPixmap, + NoBackground, + PaletteForeground, + PaletteButton, + PaletteLight, + PaletteMidlight, + PaletteDark, + PaletteMid, + PaletteText, + PaletteBrightText, + PaletteBase, + PaletteBackground, + PaletteShadow, + PaletteHighlight, + PaletteHighlightedText, + PaletteButtonText, + PaletteLink, + PaletteLinkVisited, + X11ParentRelative + }; + + typedef uint ComparisonFlags; + + // Documented in qstring.cpp + enum StringComparisonMode { + CaseSensitive = 0x00001, // 0 0001 + BeginsWith = 0x00002, // 0 0010 + EndsWith = 0x00004, // 0 0100 + Contains = 0x00008, // 0 1000 + ExactMatch = 0x00010 // 1 0000 + }; + + // "handle" type for system objects. Documented as \internal in + // qapplication.cpp +#if defined(Q_WS_MAC) + typedef void * HANDLE; +#elif defined(Q_WS_WIN) + typedef void *HANDLE; +#elif defined(Q_WS_X11) + typedef unsigned long HANDLE; +#elif defined(Q_WS_QWS) + typedef void * HANDLE; +#endif +}; + + +class Q_EXPORT QInternal { +public: + enum PaintDeviceFlags { + UndefinedDevice = 0x00, + Widget = 0x01, + Pixmap = 0x02, + Printer = 0x03, + Picture = 0x04, + System = 0x05, + DeviceTypeMask = 0x0f, + ExternalDevice = 0x10, + // used to emulate some of the behaviour different between Qt2 and Qt3 (mainly for printing) + CompatibilityMode = 0x20 + }; +}; + +#endif // QNAMESPACE_H diff --git a/qmake/include/qpair.h b/qmake/include/qpair.h new file mode 100644 index 0000000..e7cd70e --- a/dev/null +++ b/qmake/include/qpair.h @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Definition of QPair class +** +** +** Copyright (C) 1992-2001 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QPAIR_H +#define QPAIR_H + +#ifndef QT_H +#include "qglobal.h" +#include "qdatastream.h" +#endif // QT_H + +template <class T1, class T2> +struct QPair +{ + typedef T1 first_type; + typedef T2 second_type; + + QPair() + : first( T1() ), second( T2() ) + {} + QPair( const T1& t1, const T2& t2 ) + : first( t1 ), second( t2 ) + {} + + T1 first; + T2 second; +}; + +template <class T1, class T2> +Q_INLINE_TEMPLATES bool operator==( const QPair<T1, T2>& x, const QPair<T1, T2>& y ) +{ + return x.first == y.first && x.second == y.second; +} + +template <class T1, class T2> +Q_INLINE_TEMPLATES bool operator<( const QPair<T1, T2>& x, const QPair<T1, T2>& y ) +{ + return x.first < y.first || + ( !( y.first < x.first ) && x.second < y.second ); +} + +template <class T1, class T2> +Q_INLINE_TEMPLATES QPair<T1, T2> qMakePair( const T1& x, const T2& y ) +{ + return QPair<T1, T2>( x, y ); +} + +#ifndef QT_NO_DATASTREAM +template <class T1, class T2> +inline QDataStream& operator>>( QDataStream& s, QPair<T1, T2>& p ) +{ + s >> p.first >> p.second; + return s; +} + +template <class T1, class T2> +inline QDataStream& operator<<( QDataStream& s, const QPair<T1, T2>& p ) +{ + s << p.first << p.second; + return s; +} +#endif + +#endif diff --git a/qmake/include/qptrcollection.h b/qmake/include/qptrcollection.h new file mode 100644 index 0000000..4f121fa --- a/dev/null +++ b/qmake/include/qptrcollection.h @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Definition of base class for all pointer based collection classes +** +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QPTRCOLLECTION_H +#define QPTRCOLLECTION_H + +#ifndef QT_H +#include "qglobal.h" +#endif // QT_H + + +class QGVector; +class QGList; +class QGDict; + + +class Q_EXPORT QPtrCollection // inherited by all collections +{ +public: + bool autoDelete() const { return del_item; } + void setAutoDelete( bool enable ) { del_item = enable; } + + virtual uint count() const = 0; + virtual void clear() = 0; // delete all objects + + typedef void *Item; // generic collection item + +protected: + QPtrCollection() { del_item = FALSE; } // no deletion of objects + QPtrCollection(const QPtrCollection &) { del_item = FALSE; } + virtual ~QPtrCollection() {} + + bool del_item; // default FALSE + + virtual Item newItem( Item ); // create object + virtual void deleteItem( Item ) = 0; // delete object +}; + + +#ifndef QT_NO_COMPAT +#define QCollection QPtrCollection +#endif + +#endif // QPTRCOLLECTION_H diff --git a/qmake/include/qptrlist.h b/qmake/include/qptrlist.h new file mode 100644 index 0000000..53fb605 --- a/dev/null +++ b/qmake/include/qptrlist.h @@ -0,0 +1,160 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QPtrList template/macro class +** +** Created : +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QPTRLIST_H +#define QPTRLIST_H + +#ifndef QT_H +#include "qglist.h" +#endif // QT_H + + +template<class type> +class QPtrList +#ifdef Q_QDOC + : public QPtrCollection +#else + : public QGList +#endif +{ +public: + QPtrList() {} + QPtrList( const QPtrList<type> &l ) : QGList(l) {} + ~QPtrList() { clear(); } + QPtrList<type> &operator=(const QPtrList<type> &l) + { return (QPtrList<type>&)QGList::operator=(l); } + bool operator==( const QPtrList<type> &list ) const + { return QGList::operator==( list ); } + bool operator!=( const QPtrList<type> &list ) const + { return !QGList::operator==( list ); } + uint count() const { return QGList::count(); } + bool isEmpty() const { return QGList::count() == 0; } + bool insert( uint i, const type *d){ return QGList::insertAt(i,(QPtrCollection::Item)d); } + void inSort( const type *d ) { QGList::inSort((QPtrCollection::Item)d); } + void prepend( const type *d ) { QGList::insertAt(0,(QPtrCollection::Item)d); } + void append( const type *d ) { QGList::append((QPtrCollection::Item)d); } + bool remove( uint i ) { return QGList::removeAt(i); } + bool remove() { return QGList::remove((QPtrCollection::Item)0); } + bool remove( const type *d ) { return QGList::remove((QPtrCollection::Item)d); } + bool removeRef( const type *d ) { return QGList::removeRef((QPtrCollection::Item)d); } + void removeNode( QLNode *n ) { QGList::removeNode(n); } + bool removeFirst() { return QGList::removeFirst(); } + bool removeLast() { return QGList::removeLast(); } + type *take( uint i ) { return (type *)QGList::takeAt(i); } + type *take() { return (type *)QGList::take(); } + type *takeNode( QLNode *n ) { return (type *)QGList::takeNode(n); } + void clear() { QGList::clear(); } + void sort() { QGList::sort(); } + int find( const type *d ) { return QGList::find((QPtrCollection::Item)d); } + int findNext( const type *d ) { return QGList::find((QPtrCollection::Item)d,FALSE); } + int findRef( const type *d ) { return QGList::findRef((QPtrCollection::Item)d); } + int findNextRef( const type *d ){ return QGList::findRef((QPtrCollection::Item)d,FALSE);} + uint contains( const type *d ) const { return QGList::contains((QPtrCollection::Item)d); } + uint containsRef( const type *d ) const + { return QGList::containsRef((QPtrCollection::Item)d); } + bool replace( uint i, const type *d ) { return QGList::replaceAt( i, (QPtrCollection::Item)d ); } + type *at( uint i ) { return (type *)QGList::at(i); } + int at() const { return QGList::at(); } + type *current() const { return (type *)QGList::get(); } + QLNode *currentNode() const { return QGList::currentNode(); } + type *getFirst() const { return (type *)QGList::cfirst(); } + type *getLast() const { return (type *)QGList::clast(); } + type *first() { return (type *)QGList::first(); } + type *last() { return (type *)QGList::last(); } + type *next() { return (type *)QGList::next(); } + type *prev() { return (type *)QGList::prev(); } + void toVector( QGVector *vec )const{ QGList::toVector(vec); } + +#ifdef Q_QDOC +protected: + virtual int compareItems( QPtrCollection::Item, QPtrCollection::Item ); + virtual QDataStream& read( QDataStream&, QPtrCollection::Item& ); + virtual QDataStream& write( QDataStream&, QPtrCollection::Item ) const; +#endif + +private: + void deleteItem( Item d ); +}; + +#if !defined(Q_BROKEN_TEMPLATE_SPECIALIZATION) +template<> inline void QPtrList<void>::deleteItem( QPtrCollection::Item ) +{ +} +#endif + +template<class type> inline void QPtrList<type>::deleteItem( QPtrCollection::Item d ) +{ + if ( del_item ) delete (type *)d; +} + +template<class type> +class QPtrListIterator : public QGListIterator +{ +public: + QPtrListIterator(const QPtrList<type> &l) :QGListIterator((QGList &)l) {} + ~QPtrListIterator() {} + uint count() const { return list->count(); } + bool isEmpty() const { return list->count() == 0; } + bool atFirst() const { return QGListIterator::atFirst(); } + bool atLast() const { return QGListIterator::atLast(); } + type *toFirst() { return (type *)QGListIterator::toFirst(); } + type *toLast() { return (type *)QGListIterator::toLast(); } + operator type *() const { return (type *)QGListIterator::get(); } + type *operator*() { return (type *)QGListIterator::get(); } + + // No good, since QPtrList<char> (ie. QStrList fails... + // + // MSVC++ gives warning + // Sunpro C++ 4.1 gives error + // type *operator->() { return (type *)QGListIterator::get(); } + + type *current() const { return (type *)QGListIterator::get(); } + type *operator()() { return (type *)QGListIterator::operator()();} + type *operator++() { return (type *)QGListIterator::operator++(); } + type *operator+=(uint j) { return (type *)QGListIterator::operator+=(j);} + type *operator--() { return (type *)QGListIterator::operator--(); } + type *operator-=(uint j) { return (type *)QGListIterator::operator-=(j);} + QPtrListIterator<type>& operator=(const QPtrListIterator<type>&it) + { QGListIterator::operator=(it); return *this; } +}; + +#ifndef QT_NO_COMPAT +#define QList QPtrList +#define QListIterator QPtrListIterator +#endif + +#endif // QPTRLIST_H diff --git a/qmake/include/qptrvector.h b/qmake/include/qptrvector.h new file mode 100644 index 0000000..f6d9623 --- a/dev/null +++ b/qmake/include/qptrvector.h @@ -0,0 +1,113 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QPtrVector pointer based template class +** +** Created : 930907 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QPTRVECTOR_H +#define QPTRVECTOR_H + +#ifndef QT_H +#include "qgvector.h" +#endif // QT_H + +template<class type> +class QPtrVector +#ifdef Q_QDOC + : public QPtrCollection +#else + : public QGVector +#endif +{ +public: + QPtrVector() { } + QPtrVector( uint size ) : QGVector(size) { } + QPtrVector( const QPtrVector<type> &v ) : QGVector( v ) { } + ~QPtrVector() { clear(); } + QPtrVector<type> &operator=(const QPtrVector<type> &v) + { return (QPtrVector<type>&)QGVector::operator=(v); } + bool operator==( const QPtrVector<type> &v ) const { return QGVector::operator==(v); } + type **data() const { return (type **)QGVector::data(); } + uint size() const { return QGVector::size(); } + uint count() const { return QGVector::count(); } + bool isEmpty() const { return QGVector::count() == 0; } + bool isNull() const { return QGVector::size() == 0; } + bool resize( uint size ) { return QGVector::resize(size); } + bool insert( uint i, const type *d){ return QGVector::insert(i,(Item)d); } + bool remove( uint i ) { return QGVector::remove(i); } + type *take( uint i ) { return (type *)QGVector::take(i); } + void clear() { QGVector::clear(); } + bool fill( const type *d, int size=-1 ) + { return QGVector::fill((Item)d,size);} + void sort() { QGVector::sort(); } + int bsearch( const type *d ) const{ return QGVector::bsearch((Item)d); } + int findRef( const type *d, uint i=0 ) const + { return QGVector::findRef((Item)d,i);} + int find( const type *d, uint i= 0 ) const + { return QGVector::find((Item)d,i); } + uint containsRef( const type *d ) const + { return QGVector::containsRef((Item)d); } + uint contains( const type *d ) const + { return QGVector::contains((Item)d); } + type *operator[]( int i ) const { return (type *)QGVector::at(i); } + type *at( uint i ) const { return (type *)QGVector::at(i); } + void toList( QGList *list ) const { QGVector::toList(list); } + +#ifdef Q_QDOC +protected: + virtual int compareItems( QPtrCollection::Item d1, QPtrCollection::Item d2 ); + virtual QDataStream& read( QDataStream &s, QPtrCollection::Item &d ); + virtual QDataStream& write( QDataStream &s, QPtrCollection::Item d ) const; +#endif + +private: + void deleteItem( Item d ); +}; + +#if !defined(Q_BROKEN_TEMPLATE_SPECIALIZATION) +template<> inline void QPtrVector<void>::deleteItem( QPtrCollection::Item ) +{ +} +#endif + +template<class type> inline void QPtrVector<type>::deleteItem( QPtrCollection::Item d ) +{ + if ( del_item ) delete (type *)d; +} + +#ifndef QT_NO_COMPAT +#define QVector QPtrVector +#endif + +#endif // QVECTOR_H diff --git a/qmake/include/qregexp.h b/qmake/include/qregexp.h new file mode 100644 index 0000000..7bb777a --- a/dev/null +++ b/qmake/include/qregexp.h @@ -0,0 +1,115 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QRegExp class +** +** Created : 950126 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QREGEXP_H +#define QREGEXP_H + +#ifndef QT_H +#include "qstringlist.h" +#endif // QT_H + +#ifndef QT_NO_REGEXP +class QRegExpEngine; +struct QRegExpPrivate; + +class Q_EXPORT QRegExp +{ +public: + enum CaretMode { CaretAtZero, CaretAtOffset, CaretWontMatch }; + + QRegExp(); + QRegExp( const QString& pattern, bool caseSensitive = TRUE, + bool wildcard = FALSE ); + QRegExp( const QRegExp& rx ); + ~QRegExp(); + QRegExp& operator=( const QRegExp& rx ); + + bool operator==( const QRegExp& rx ) const; + bool operator!=( const QRegExp& rx ) const { return !operator==( rx ); } + + bool isEmpty() const; + bool isValid() const; + QString pattern() const; + void setPattern( const QString& pattern ); + bool caseSensitive() const; + void setCaseSensitive( bool sensitive ); +#ifndef QT_NO_REGEXP_WILDCARD + bool wildcard() const; + void setWildcard( bool wildcard ); +#endif + bool minimal() const; + void setMinimal( bool minimal ); + + bool exactMatch( const QString& str ) const; +#ifndef QT_NO_COMPAT + int match( const QString& str, int index = 0, int *len = 0, + bool indexIsStart = TRUE ) const; +#endif + +#if defined(qdoc) + int search( const QString& str, int offset = 0, + CaretMode caretMode = CaretAtZero ) const; + int searchRev( const QString& str, int offset = -1, + CaretMode caretMode = CaretAtZero ) const; +#else + // ### Qt 4.0: reduce these four to two functions + int search( const QString& str, int offset = 0 ) const; + int search( const QString& str, int offset, CaretMode caretMode ) const; + int searchRev( const QString& str, int offset = -1 ) const; + int searchRev( const QString& str, int offset, CaretMode caretMode ) const; +#endif + int matchedLength() const; +#ifndef QT_NO_REGEXP_CAPTURE + int numCaptures() const; + QStringList capturedTexts(); + QString cap( int nth = 0 ); + int pos( int nth = 0 ); + QString errorString(); +#endif + + static QString escape( const QString& str ); + +private: + void compile( bool caseSensitive ); + + static int caretIndex( int offset, CaretMode caretMode ); + + QRegExpEngine *eng; + QRegExpPrivate *priv; +}; +#endif // QT_NO_REGEXP +#endif // QREGEXP_H diff --git a/qmake/include/qshared.h b/qmake/include/qshared.h new file mode 100644 index 0000000..3c2f97f --- a/dev/null +++ b/qmake/include/qshared.h @@ -0,0 +1,55 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QShared struct +** +** Created : 940112 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QSHARED_H +#define QSHARED_H + +#ifndef QT_H +#include "qglobal.h" +#endif // QT_H + + +struct Q_EXPORT QShared +{ + QShared() : count( 1 ) { } + void ref() { count++; } + bool deref() { return !--count; } + uint count; +}; + + +#endif // QSHARED_H diff --git a/qmake/include/qstring.h b/qmake/include/qstring.h new file mode 100644 index 0000000..2a87a5a --- a/dev/null +++ b/qmake/include/qstring.h @@ -0,0 +1,950 @@ +/**************************************************************************** +** $Id$ +** +** Definition of the QString class, and related Unicode +** functions. +** +** Created : 920609 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QSTRING_H +#define QSTRING_H + +#ifndef QT_H +#include "qcstring.h" +#endif // QT_H + + +/***************************************************************************** + QString class + *****************************************************************************/ + +class QRegExp; +class QString; +class QCharRef; +template <class T> class QDeepCopy; + +class Q_EXPORT QChar { +public: + QChar(); + QChar( char c ); + QChar( uchar c ); + QChar( uchar c, uchar r ); + QChar( const QChar& c ); + QChar( ushort rc ); + QChar( short rc ); + QChar( uint rc ); + QChar( int rc ); + + QT_STATIC_CONST QChar null; // 0000 + QT_STATIC_CONST QChar replacement; // FFFD + QT_STATIC_CONST QChar byteOrderMark; // FEFF + QT_STATIC_CONST QChar byteOrderSwapped; // FFFE + QT_STATIC_CONST QChar nbsp; // 00A0 + + // Unicode information + + enum Category + { + NoCategory, + + Mark_NonSpacing, // Mn + Mark_SpacingCombining, // Mc + Mark_Enclosing, // Me + + Number_DecimalDigit, // Nd + Number_Letter, // Nl + Number_Other, // No + + Separator_Space, // Zs + Separator_Line, // Zl + Separator_Paragraph, // Zp + + Other_Control, // Cc + Other_Format, // Cf + Other_Surrogate, // Cs + Other_PrivateUse, // Co + Other_NotAssigned, // Cn + + Letter_Uppercase, // Lu + Letter_Lowercase, // Ll + Letter_Titlecase, // Lt + Letter_Modifier, // Lm + Letter_Other, // Lo + + Punctuation_Connector, // Pc + Punctuation_Dash, // Pd + Punctuation_Dask = Punctuation_Dash, // oops + Punctuation_Open, // Ps + Punctuation_Close, // Pe + Punctuation_InitialQuote, // Pi + Punctuation_FinalQuote, // Pf + Punctuation_Other, // Po + + Symbol_Math, // Sm + Symbol_Currency, // Sc + Symbol_Modifier, // Sk + Symbol_Other // So + }; + + enum Direction + { + DirL, DirR, DirEN, DirES, DirET, DirAN, DirCS, DirB, DirS, DirWS, DirON, + DirLRE, DirLRO, DirAL, DirRLE, DirRLO, DirPDF, DirNSM, DirBN + }; + + enum Decomposition + { + Single, Canonical, Font, NoBreak, Initial, Medial, + Final, Isolated, Circle, Super, Sub, Vertical, + Wide, Narrow, Small, Square, Compat, Fraction + }; + + enum Joining + { + OtherJoining, Dual, Right, Center + }; + + enum CombiningClass + { + Combining_BelowLeftAttached = 200, + Combining_BelowAttached = 202, + Combining_BelowRightAttached = 204, + Combining_LeftAttached = 208, + Combining_RightAttached = 210, + Combining_AboveLeftAttached = 212, + Combining_AboveAttached = 214, + Combining_AboveRightAttached = 216, + + Combining_BelowLeft = 218, + Combining_Below = 220, + Combining_BelowRight = 222, + Combining_Left = 224, + Combining_Right = 226, + Combining_AboveLeft = 228, + Combining_Above = 230, + Combining_AboveRight = 232, + + Combining_DoubleBelow = 233, + Combining_DoubleAbove = 234, + Combining_IotaSubscript = 240 + }; + + // ****** WHEN ADDING FUNCTIONS, CONSIDER ADDING TO QCharRef TOO + + int digitValue() const; + QChar lower() const; + QChar upper() const; + + Category category() const; + Direction direction() const; + Joining joining() const; + bool mirrored() const; + QChar mirroredChar() const; + const QString &decomposition() const; // ### return just QString in 4.0 + Decomposition decompositionTag() const; + unsigned char combiningClass() const; + + char latin1() const { return ucs > 0xff ? 0 : (char) ucs; } + ushort unicode() const { return ucs; } + ushort &unicode() { return ucs; } +#ifndef QT_NO_CAST_ASCII + // like all ifdef'd code this is undocumented + operator char() const { return latin1(); } +#endif + + bool isNull() const { return unicode()==0; } + bool isPrint() const; + bool isPunct() const; + bool isSpace() const; + bool isMark() const; + bool isLetter() const; + bool isNumber() const; + bool isLetterOrNumber() const; + bool isDigit() const; + bool isSymbol() const; + + uchar cell() const { return ((uchar) ucs & 0xff); } + uchar row() const { return ((uchar) (ucs>>8)&0xff); } + void setCell( uchar cell ) { ucs = (ucs & 0xff00) + cell; } + void setRow( uchar row ) { ucs = (((ushort) row)<<8) + (ucs&0xff); } + + static bool networkOrdered() { + int wordSize; + bool bigEndian = FALSE; + qSysInfo( &wordSize, &bigEndian ); + return bigEndian; + } + + friend inline bool operator==( char ch, QChar c ); + friend inline bool operator==( QChar c, char ch ); + friend inline bool operator==( QChar c1, QChar c2 ); + friend inline bool operator!=( QChar c1, QChar c2 ); + friend inline bool operator!=( char ch, QChar c ); + friend inline bool operator!=( QChar c, char ch ); + friend inline bool operator<=( QChar c, char ch ); + friend inline bool operator<=( char ch, QChar c ); + friend inline bool operator<=( QChar c1, QChar c2 ); + +private: + ushort ucs; +#if defined(QT_QSTRING_UCS_4) + ushort grp; +#endif +} Q_PACKED; + +inline QChar::QChar() : ucs( 0 ) +#ifdef QT_QSTRING_UCS_4 + , grp( 0 ) +#endif +{ +} +inline QChar::QChar( char c ) : ucs( (uchar)c ) +#ifdef QT_QSTRING_UCS_4 + , grp( 0 ) +#endif +{ +} +inline QChar::QChar( uchar c ) : ucs( c ) +#ifdef QT_QSTRING_UCS_4 + , grp( 0 ) +#endif +{ +} +inline QChar::QChar( uchar c, uchar r ) : ucs( (r << 8) | c ) +#ifdef QT_QSTRING_UCS_4 + , grp( 0 ) +#endif +{ +} +inline QChar::QChar( const QChar& c ) : ucs( c.ucs ) +#ifdef QT_QSTRING_UCS_4 + , grp( c.grp ) +#endif +{ +} + +inline QChar::QChar( ushort rc ) : ucs( rc ) +#ifdef QT_QSTRING_UCS_4 + , grp( 0 ) +#endif +{ +} +inline QChar::QChar( short rc ) : ucs( (ushort) rc ) +#ifdef QT_QSTRING_UCS_4 + , grp( 0 ) +#endif +{ +} +inline QChar::QChar( uint rc ) : ucs( (ushort ) (rc & 0xffff) ) +#ifdef QT_QSTRING_UCS_4 + , grp( (ushort) ((rc >> 16) & 0xffff) ) +#endif +{ +} +inline QChar::QChar( int rc ) : ucs( (ushort) (rc & 0xffff) ) +#ifdef QT_QSTRING_UCS_4 + , grp( (ushort) ((rc >> 16) & 0xffff) ) +#endif +{ +} + +inline bool operator==( char ch, QChar c ) +{ + return ((uchar) ch) == c.ucs; +} + +inline bool operator==( QChar c, char ch ) +{ + return ((uchar) ch) == c.ucs; +} + +inline bool operator==( QChar c1, QChar c2 ) +{ + return c1.ucs == c2.ucs; +} + +inline bool operator!=( QChar c1, QChar c2 ) +{ + return c1.ucs != c2.ucs; +} + +inline bool operator!=( char ch, QChar c ) +{ + return ((uchar)ch) != c.ucs; +} + +inline bool operator!=( QChar c, char ch ) +{ + return ((uchar) ch) != c.ucs; +} + +inline bool operator<=( QChar c, char ch ) +{ + return c.ucs <= ((uchar) ch); +} + +inline bool operator<=( char ch, QChar c ) +{ + return ((uchar) ch) <= c.ucs; +} + +inline bool operator<=( QChar c1, QChar c2 ) +{ + return c1.ucs <= c2.ucs; +} + +inline bool operator>=( QChar c, char ch ) { return ch <= c; } +inline bool operator>=( char ch, QChar c ) { return c <= ch; } +inline bool operator>=( QChar c1, QChar c2 ) { return c2 <= c1; } +inline bool operator<( QChar c, char ch ) { return !(ch<=c); } +inline bool operator<( char ch, QChar c ) { return !(c<=ch); } +inline bool operator<( QChar c1, QChar c2 ) { return !(c2<=c1); } +inline bool operator>( QChar c, char ch ) { return !(ch>=c); } +inline bool operator>( char ch, QChar c ) { return !(c>=ch); } +inline bool operator>( QChar c1, QChar c2 ) { return !(c2>=c1); } + +// internal +struct Q_EXPORT QStringData : public QShared { + QStringData() : + QShared(), unicode(0), ascii(0), len(0), simpletext(1), maxl(0), dirty(0) { ref(); } + QStringData(QChar *u, uint l, uint m) : + QShared(), unicode(u), ascii(0), len(l), simpletext(1), maxl(m), dirty(1) { } + ~QStringData() { if ( unicode ) delete[] ((char*)unicode); + if ( ascii ) delete[] ascii; } + + void deleteSelf(); + QChar *unicode; + char *ascii; + void setDirty() { + if ( ascii ) { + delete [] ascii; + ascii = 0; + } + dirty = 1; + } +#ifdef Q_OS_MAC9 + uint len; +#else + uint len : 30; +#endif + uint simpletext : 1; +#ifdef Q_OS_MAC9 + uint maxl; +#else + uint maxl : 30; +#endif + uint dirty : 1; + +private: +#if defined(Q_DISABLE_COPY) + QStringData( const QStringData& ); + QStringData& operator=( const QStringData& ); +#endif +}; + + +class Q_EXPORT QString +{ +public: + QString(); // make null string + QString( QChar ); // one-char string + QString( const QString & ); // impl-shared copy + QString( const QByteArray& ); // deep copy + QString( const QChar* unicode, uint length ); // deep copy +#ifndef QT_NO_CAST_ASCII + QString( const char *str ); // deep copy +#endif + ~QString(); + + QString &operator=( const QString & ); // impl-shared copy +#ifndef QT_NO_CAST_ASCII + QString &operator=( const char * ); // deep copy +#endif + QString &operator=( const QCString& ); // deep copy + QString &operator=( QChar c ); + QString &operator=( char c ); + + QT_STATIC_CONST QString null; + + bool isNull() const; + bool isEmpty() const; + uint length() const; + void truncate( uint pos ); + + QString & fill( QChar c, int len = -1 ); + + QString copy() const; + + QString arg( long a, int fieldwidth=0, int base=10 ) const; + QString arg( ulong a, int fieldwidth=0, int base=10 ) const; + QString arg( int a, int fieldwidth=0, int base=10 ) const; + QString arg( uint a, int fieldwidth=0, int base=10 ) const; + QString arg( short a, int fieldwidth=0, int base=10 ) const; + QString arg( ushort a, int fieldwidth=0, int base=10 ) const; + QString arg( char a, int fieldwidth=0 ) const; + QString arg( QChar a, int fieldwidth=0 ) const; + QString arg( const QString& a, int fieldwidth=0 ) const; + QString arg( double a, int fieldwidth=0, char fmt='g', int prec=-1 ) const; + +#ifndef QT_NO_SPRINTF + QString &sprintf( const char* format, ... ) +#if defined(Q_CC_GNU) && !defined(__INSURE__) + __attribute__ ((format (printf, 2, 3))) +#endif + ; +#endif + + int find( QChar c, int index=0, bool cs=TRUE ) const; + int find( char c, int index=0, bool cs=TRUE ) const; + int find( const QString &str, int index=0, bool cs=TRUE ) const; +#ifndef QT_NO_REGEXP + int find( const QRegExp &, int index=0 ) const; +#endif +#ifndef QT_NO_CAST_ASCII + int find( const char* str, int index=0 ) const; +#endif + int findRev( QChar c, int index=-1, bool cs=TRUE) const; + int findRev( char c, int index=-1, bool cs=TRUE) const; + int findRev( const QString &str, int index=-1, bool cs=TRUE) const; +#ifndef QT_NO_REGEXP + int findRev( const QRegExp &, int index=-1 ) const; +#endif +#ifndef QT_NO_CAST_ASCII + int findRev( const char* str, int index=-1 ) const; +#endif + int contains( QChar c, bool cs=TRUE ) const; + int contains( char c, bool cs=TRUE ) const + { return contains(QChar(c), cs); } +#ifndef QT_NO_CAST_ASCII + int contains( const char* str, bool cs=TRUE ) const; +#endif + int contains( const QString &str, bool cs=TRUE ) const; +#ifndef QT_NO_REGEXP + int contains( const QRegExp & ) const; +#endif + + enum SectionFlags { + SectionDefault = 0x00, + SectionSkipEmpty = 0x01, + SectionIncludeLeadingSep = 0x02, + SectionIncludeTrailingSep = 0x04, + SectionCaseInsensitiveSeps = 0x08 + }; + QString section( QChar sep, int start, int end = 0xffffffff, int flags = SectionDefault ) const; + QString section( char sep, int start, int end = 0xffffffff, int flags = SectionDefault ) const; +#ifndef QT_NO_CAST_ASCII + QString section( const char *in_sep, int start, int end = 0xffffffff, int flags = SectionDefault ) const; +#endif + QString section( const QString &in_sep, int start, int end = 0xffffffff, int flags = SectionDefault ) const; +#ifndef QT_NO_REGEXP + QString section( const QRegExp ®, int start, int end = 0xffffffff, int flags = SectionDefault ) const; +#endif + + QString left( uint len ) const; + QString right( uint len ) const; + QString mid( uint index, uint len=0xffffffff) const; + + QString leftJustify( uint width, QChar fill=' ', bool trunc=FALSE)const; + QString rightJustify( uint width, QChar fill=' ',bool trunc=FALSE)const; + + QString lower() const; + QString upper() const; + + QString stripWhiteSpace() const; + QString simplifyWhiteSpace() const; + + QString &insert( uint index, const QString & ); + QString &insert( uint index, const QChar*, uint len ); + QString &insert( uint index, QChar ); + QString &insert( uint index, char c ) { return insert(index,QChar(c)); } + QString &append( char ); + QString &append( QChar ); + QString &append( const QString & ); +#ifndef QT_NO_CAST_ASCII + QString &append( const QByteArray & ); + QString &append( const char * ); +#endif + QString &prepend( char ); + QString &prepend( QChar ); + QString &prepend( const QString & ); +#ifndef QT_NO_CAST_ASCII + QString &prepend( const QByteArray & ); + QString &prepend( const char * ); +#endif + QString &remove( uint index, uint len ); + QString &remove( QChar c ); + QString &remove( char c ) { return remove( QChar(c) ); } + QString &remove( const QString & ); +#ifndef QT_NO_REGEXP + QString &remove( const QRegExp & ); +#endif +#ifndef QT_NO_CAST_ASCII + QString &remove( const char * ); +#endif + QString &replace( uint index, uint len, const QString & ); + QString &replace( uint index, uint len, const QChar*, uint clen ); + QString &replace( uint index, uint len, QChar ); + QString &replace( uint index, uint len, char c ) + { return replace( index, len, QChar(c) ); } + QString &replace( QChar c, const QString & ); + QString &replace( char c, const QString & after ) + { return replace( QChar(c), after ); } + QString &replace( const QString &, const QString & ); +#ifndef QT_NO_REGEXP_CAPTURE + QString &replace( const QRegExp &, const QString & ); +#endif + QString &replace( QChar, QChar ); + + short toShort( bool *ok=0, int base=10 ) const; + ushort toUShort( bool *ok=0, int base=10 ) const; + int toInt( bool *ok=0, int base=10 ) const; + uint toUInt( bool *ok=0, int base=10 ) const; + long toLong( bool *ok=0, int base=10 ) const; + ulong toULong( bool *ok=0, int base=10 ) const; + float toFloat( bool *ok=0 ) const; + double toDouble( bool *ok=0 ) const; + + QString &setNum( short, int base=10 ); + QString &setNum( ushort, int base=10 ); + QString &setNum( int, int base=10 ); + QString &setNum( uint, int base=10 ); + QString &setNum( long, int base=10 ); + QString &setNum( ulong, int base=10 ); + QString &setNum( float, char f='g', int prec=6 ); + QString &setNum( double, char f='g', int prec=6 ); + + static QString number( long, int base=10 ); + static QString number( ulong, int base=10); + static QString number( int, int base=10 ); + static QString number( uint, int base=10); + static QString number( double, char f='g', int prec=6 ); + + void setExpand( uint index, QChar c ); + + QString &operator+=( const QString &str ); +#ifndef QT_NO_CAST_ASCII + QString &operator+=( const QByteArray &str ); + QString &operator+=( const char *str ); +#endif + QString &operator+=( QChar c ); + QString &operator+=( char c ); + + QChar at( uint i ) const + { return i < d->len ? d->unicode[i] : QChar::null; } + QChar operator[]( int i ) const { return at((uint)i); } + QCharRef at( uint i ); + QCharRef operator[]( int i ); + + QChar constref(uint i) const + { return at(i); } + QChar& ref(uint i) + { // Optimized for easy-inlining by simple compilers. + if ( d->count != 1 || i >= d->len ) + subat( i ); + d->setDirty(); + return d->unicode[i]; + } + + const QChar* unicode() const { return d->unicode; } + const char* ascii() const { return latin1(); } + const char* latin1() const; + static QString fromLatin1(const char*, int len=-1); + QCString utf8() const; + static QString fromUtf8(const char*, int len=-1); + QCString local8Bit() const; + static QString fromLocal8Bit(const char*, int len=-1); + bool operator!() const; +#ifndef QT_NO_ASCII_CAST + operator const char *() const { return latin1(); } +#endif + static QString fromUcs2( const unsigned short *ucs2 ); + const unsigned short *ucs2() const; + + QString &setUnicode( const QChar* unicode, uint len ); + QString &setUnicodeCodes( const ushort* unicode_as_ushorts, uint len ); + QString &setLatin1( const char*, int len=-1 ); + + int compare( const QString& s ) const; + static int compare( const QString& s1, const QString& s2 ) + { return s1.compare( s2 ); } + + int localeAwareCompare( const QString& s ) const; + static int localeAwareCompare( const QString& s1, const QString& s2 ) + { return s1.localeAwareCompare( s2 ); } + +#ifndef QT_NO_DATASTREAM + friend Q_EXPORT QDataStream &operator>>( QDataStream &, QString & ); +#endif + + void compose(); + +#ifndef QT_NO_COMPAT + const char* data() const { return latin1(); } +#endif + + bool startsWith( const QString& ) const; + bool endsWith( const QString& ) const; + + void setLength( uint newLength ); + + bool simpleText() const { if ( d->dirty ) checkSimpleText(); return (bool)d->simpletext; } + bool isRightToLeft() const; + + +private: + QString( int size, bool /* dummy */ ); // allocate size incl. \0 + + void deref(); + void real_detach(); + void subat( uint ); + bool findArg(int& pos, int& len) const; + + void checkSimpleText() const; + + static QChar* asciiToUnicode( const char*, uint * len, uint maxlen=(uint)-1 ); + static QChar* asciiToUnicode( const QByteArray&, uint * len ); + static char* unicodeToAscii( const QChar*, uint len ); + + QStringData *d; + static QStringData* shared_null; + static QStringData* makeSharedNull(); + + friend class QConstString; + friend class QTextStream; + QString( QStringData* dd, bool /* dummy */ ) : d(dd) { } + + // needed for QDeepCopy + void detach(); + friend class QDeepCopy<QString>; +}; + +class Q_EXPORT QCharRef { + friend class QString; + QString& s; + uint p; + QCharRef(QString* str, uint pos) : s(*str), p(pos) { } + +public: + // most QChar operations repeated here... + + // all this is not documented: We just say "like QChar" and let it be. +#ifndef Q_QDOC + ushort unicode() const { return s.constref(p).unicode(); } + char latin1() const { return s.constref(p).latin1(); } + + // An operator= for each QChar cast constructor... + QCharRef operator=(char c ) { s.ref(p)=c; return *this; } + QCharRef operator=(uchar c ) { s.ref(p)=c; return *this; } + QCharRef operator=(QChar c ) { s.ref(p)=c; return *this; } + QCharRef operator=(const QCharRef& c ) { s.ref(p)=c.unicode(); return *this; } + QCharRef operator=(ushort rc ) { s.ref(p)=rc; return *this; } + QCharRef operator=(short rc ) { s.ref(p)=rc; return *this; } + QCharRef operator=(uint rc ) { s.ref(p)=rc; return *this; } + QCharRef operator=(int rc ) { s.ref(p)=rc; return *this; } + + operator QChar () const { return s.constref(p); } + + // each function... + bool isNull() const { return unicode()==0; } + bool isPrint() const { return s.constref(p).isPrint(); } + bool isPunct() const { return s.constref(p).isPunct(); } + bool isSpace() const { return s.constref(p).isSpace(); } + bool isMark() const { return s.constref(p).isMark(); } + bool isLetter() const { return s.constref(p).isLetter(); } + bool isNumber() const { return s.constref(p).isNumber(); } + bool isLetterOrNumber() { return s.constref(p).isLetterOrNumber(); } + bool isDigit() const { return s.constref(p).isDigit(); } + + int digitValue() const { return s.constref(p).digitValue(); } + QChar lower() const { return s.constref(p).lower(); } + QChar upper() const { return s.constref(p).upper(); } + + QChar::Category category() const { return s.constref(p).category(); } + QChar::Direction direction() const { return s.constref(p).direction(); } + QChar::Joining joining() const { return s.constref(p).joining(); } + bool mirrored() const { return s.constref(p).mirrored(); } + QChar mirroredChar() const { return s.constref(p).mirroredChar(); } + const QString &decomposition() const { return s.constref(p).decomposition(); } + QChar::Decomposition decompositionTag() const { return s.constref(p).decompositionTag(); } + unsigned char combiningClass() const { return s.constref(p).combiningClass(); } + + // Not the non-const ones of these. + uchar cell() const { return s.constref(p).cell(); } + uchar row() const { return s.constref(p).row(); } +#endif +}; + +inline QCharRef QString::at( uint i ) { return QCharRef(this,i); } +inline QCharRef QString::operator[]( int i ) { return at((uint)i); } + + +class Q_EXPORT QConstString : private QString { +public: + QConstString( const QChar* unicode, uint length ); + ~QConstString(); + const QString& string() const { return *this; } +}; + + +/***************************************************************************** + QString stream functions + *****************************************************************************/ +#ifndef QT_NO_DATASTREAM +Q_EXPORT QDataStream &operator<<( QDataStream &, const QString & ); +Q_EXPORT QDataStream &operator>>( QDataStream &, QString & ); +#endif + +/***************************************************************************** + QString inline functions + *****************************************************************************/ + +// These two move code into makeSharedNull() and deletesData() +// to improve cache-coherence (and reduce code bloat), while +// keeping the common cases fast. +// +// No safe way to pre-init shared_null on ALL compilers/linkers. +inline QString::QString() : + d(shared_null ? shared_null : makeSharedNull()) +{ + d->ref(); +} +// +inline QString::~QString() +{ + if ( d->deref() ) { + if ( d != shared_null ) + d->deleteSelf(); + } +} + +// needed for QDeepCopy +inline void QString::detach() +{ real_detach(); } + +inline QString QString::section( QChar sep, int start, int end, int flags ) const +{ return section(QString(sep), start, end, flags); } + +inline QString QString::section( char sep, int start, int end, int flags ) const +{ return section(QChar(sep), start, end, flags); } + +#ifndef QT_NO_CAST_ASCII +inline QString QString::section( const char *in_sep, int start, int end, int flags ) const +{ return section(QString(in_sep), start, end, flags); } +#endif + +inline QString &QString::operator=( QChar c ) +{ *this = QString(c); return *this; } + +inline QString &QString::operator=( char c ) +{ *this = QString(QChar(c)); return *this; } + +inline bool QString::isNull() const +{ return unicode() == 0; } + +inline bool QString::operator!() const +{ return isNull(); } + +inline uint QString::length() const +{ return d->len; } + +inline bool QString::isEmpty() const +{ return length() == 0; } + +inline QString QString::copy() const +{ return QString( *this ); } + +inline QString &QString::prepend( const QString & s ) +{ return insert(0,s); } + +inline QString &QString::prepend( QChar c ) +{ return insert(0,c); } + +inline QString &QString::prepend( char c ) +{ return insert(0,c); } + +#ifndef QT_NO_CAST_ASCII +inline QString &QString::prepend( const QByteArray & s ) +{ return insert(0,s.data()); } +#endif + +inline QString &QString::append( const QString & s ) +{ return operator+=(s); } + +#ifndef QT_NO_CAST_ASCII +inline QString &QString::append( const QByteArray &s ) +{ return operator+=(s.data()); } + +inline QString &QString::append( const char * s ) +{ return operator+=(s); } +#endif + +inline QString &QString::append( QChar c ) +{ return operator+=(c); } + +inline QString &QString::append( char c ) +{ return operator+=(c); } + +#ifndef QT_NO_CAST_ASCII +inline QString &QString::operator+=( const QByteArray &s ) +{ return operator+=(s.data()); } +#endif + +inline QString &QString::setNum( short n, int base ) +{ return setNum((long)n, base); } + +inline QString &QString::setNum( ushort n, int base ) +{ return setNum((ulong)n, base); } + +inline QString &QString::setNum( int n, int base ) +{ return setNum((long)n, base); } + +inline QString &QString::setNum( uint n, int base ) +{ return setNum((ulong)n, base); } + +inline QString &QString::setNum( float n, char f, int prec ) +{ return setNum((double)n,f,prec); } + +inline QString QString::arg(int a, int fieldwidth, int base) const +{ return arg((long)a, fieldwidth, base); } + +inline QString QString::arg(uint a, int fieldwidth, int base) const +{ return arg((ulong)a, fieldwidth, base); } + +inline QString QString::arg(short a, int fieldwidth, int base) const +{ return arg((long)a, fieldwidth, base); } + +inline QString QString::arg(ushort a, int fieldwidth, int base) const +{ return arg((ulong)a, fieldwidth, base); } + +inline int QString::find( char c, int index, bool cs ) const +{ return find(QChar(c), index, cs); } + +inline int QString::findRev( char c, int index, bool cs) const +{ return findRev( QChar(c), index, cs ); } + +#ifndef QT_NO_CAST_ASCII +inline int QString::find( const char* str, int index ) const +{ return find(QString::fromLatin1(str), index); } + +inline int QString::findRev( const char* str, int index ) const +{ return findRev(QString::fromLatin1(str), index); } +#endif + + +/***************************************************************************** + QString non-member operators + *****************************************************************************/ + +Q_EXPORT bool operator!=( const QString &s1, const QString &s2 ); +Q_EXPORT bool operator<( const QString &s1, const QString &s2 ); +Q_EXPORT bool operator<=( const QString &s1, const QString &s2 ); +Q_EXPORT bool operator==( const QString &s1, const QString &s2 ); +Q_EXPORT bool operator>( const QString &s1, const QString &s2 ); +Q_EXPORT bool operator>=( const QString &s1, const QString &s2 ); +#ifndef QT_NO_CAST_ASCII +Q_EXPORT bool operator!=( const QString &s1, const char *s2 ); +Q_EXPORT bool operator<( const QString &s1, const char *s2 ); +Q_EXPORT bool operator<=( const QString &s1, const char *s2 ); +Q_EXPORT bool operator==( const QString &s1, const char *s2 ); +Q_EXPORT bool operator>( const QString &s1, const char *s2 ); +Q_EXPORT bool operator>=( const QString &s1, const char *s2 ); +Q_EXPORT bool operator!=( const char *s1, const QString &s2 ); +Q_EXPORT bool operator<( const char *s1, const QString &s2 ); +Q_EXPORT bool operator<=( const char *s1, const QString &s2 ); +Q_EXPORT bool operator==( const char *s1, const QString &s2 ); +//Q_EXPORT bool operator>( const char *s1, const QString &s2 ); // MSVC++ +Q_EXPORT bool operator>=( const char *s1, const QString &s2 ); +#endif + +Q_EXPORT inline const QString operator+( const QString &s1, const QString &s2 ) +{ + QString tmp( s1 ); + tmp += s2; + return tmp; +} + +#ifndef QT_NO_CAST_ASCII +Q_EXPORT inline const QString operator+( const QString &s1, const char *s2 ) +{ + QString tmp( s1 ); + tmp += QString::fromLatin1(s2); + return tmp; +} + +Q_EXPORT inline const QString operator+( const char *s1, const QString &s2 ) +{ + QString tmp = QString::fromLatin1( s1 ); + tmp += s2; + return tmp; +} +#endif + +Q_EXPORT inline const QString operator+( const QString &s1, QChar c2 ) +{ + QString tmp( s1 ); + tmp += c2; + return tmp; +} + +Q_EXPORT inline const QString operator+( const QString &s1, char c2 ) +{ + QString tmp( s1 ); + tmp += c2; + return tmp; +} + +Q_EXPORT inline const QString operator+( QChar c1, const QString &s2 ) +{ + QString tmp; + tmp += c1; + tmp += s2; + return tmp; +} + +Q_EXPORT inline const QString operator+( char c1, const QString &s2 ) +{ + QString tmp; + tmp += c1; + tmp += s2; + return tmp; +} + +#if defined(Q_OS_WIN32) +extern Q_EXPORT QString qt_winQString(void*); +extern Q_EXPORT const void* qt_winTchar(const QString& str, bool addnul); +extern Q_EXPORT void* qt_winTchar_new(const QString& str); +extern Q_EXPORT QCString qt_winQString2MB( const QString& s, int len=-1 ); +extern Q_EXPORT QString qt_winMB2QString( const char* mb, int len=-1 ); +#endif + +#endif // QSTRING_H diff --git a/qmake/include/qstringlist.h b/qmake/include/qstringlist.h new file mode 100644 index 0000000..be9d6ae --- a/dev/null +++ b/qmake/include/qstringlist.h @@ -0,0 +1,86 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QStringList class +** +** Created : 990406 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QSTRINGLIST_H +#define QSTRINGLIST_H + +#ifndef QT_H +#include "qvaluelist.h" +#include "qstring.h" +#include "qstrlist.h" +#endif // QT_H + +#ifndef QT_NO_STRINGLIST + +class QRegExp; + +class Q_EXPORT QStringList : public QValueList<QString> +{ +public: + QStringList() { } + QStringList( const QStringList& l ) : QValueList<QString>(l) { } + QStringList( const QValueList<QString>& l ) : QValueList<QString>(l) { } + QStringList( const QString& i ) { append(i); } +#ifndef QT_NO_CAST_ASCII + QStringList( const char* i ) { append(i); } +#endif + + static QStringList fromStrList(const QStrList&); + + void sort(); + + static QStringList split( const QString &sep, const QString &str, bool allowEmptyEntries = FALSE ); + static QStringList split( const QChar &sep, const QString &str, bool allowEmptyEntries = FALSE ); +#ifndef QT_NO_REGEXP + static QStringList split( const QRegExp &sep, const QString &str, bool allowEmptyEntries = FALSE ); +#endif + QString join( const QString &sep ) const; + + QStringList grep( const QString &str, bool cs = TRUE ) const; +#ifndef QT_NO_REGEXP + QStringList grep( const QRegExp &expr ) const; +#endif +}; + +#ifndef QT_NO_DATASTREAM +class QDataStream; +extern Q_EXPORT QDataStream &operator>>( QDataStream &, QStringList& ); +extern Q_EXPORT QDataStream &operator<<( QDataStream &, const QStringList& ); +#endif + +#endif // QT_NO_STRINGLIST +#endif // QSTRINGLIST_H diff --git a/qmake/include/qstrlist.h b/qmake/include/qstrlist.h new file mode 100644 index 0000000..86de328 --- a/dev/null +++ b/qmake/include/qstrlist.h @@ -0,0 +1,112 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QStrList, QStrIList and QStrListIterator classes +** +** Created : 920730 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QSTRLIST_H +#define QSTRLIST_H + +#ifndef QT_H +#include "qstring.h" +#include "qptrlist.h" +#include "qdatastream.h" +#endif // QT_H + + +#if defined(Q_TEMPLATEDLL) +Q_TEMPLATE_EXTERN template class Q_EXPORT QPtrList<char>; +Q_TEMPLATE_EXTERN template class Q_EXPORT QPtrListIterator<char>; +#endif + +#if defined(Q_QDOC) +class QStrListIterator : public QPtrListIterator<char> +{ +}; +#else +typedef QPtrListIterator<char> QStrListIterator; +#endif + +class Q_EXPORT QStrList : public QPtrList<char> +{ +public: + QStrList( bool deepCopies=TRUE ) { dc = deepCopies; del_item = deepCopies; } + QStrList( const QStrList & ); + ~QStrList() { clear(); } + QStrList& operator=( const QStrList & ); + +private: + QPtrCollection::Item newItem( QPtrCollection::Item d ) { return dc ? qstrdup( (const char*)d ) : d; } + void deleteItem( QPtrCollection::Item d ) { if ( del_item ) delete[] (char*)d; } + int compareItems( QPtrCollection::Item s1, QPtrCollection::Item s2 ) { return qstrcmp((const char*)s1, + (const char*)s2); } +#ifndef QT_NO_DATASTREAM + QDataStream &read( QDataStream &s, QPtrCollection::Item &d ) + { s >> (char *&)d; return s; } + QDataStream &write( QDataStream &s, QPtrCollection::Item d ) const + { return s << (const char *)d; } +#endif + bool dc; +}; + + +class Q_EXPORT QStrIList : public QStrList // case insensitive string list +{ +public: + QStrIList( bool deepCopies=TRUE ) : QStrList( deepCopies ) {} + ~QStrIList() { clear(); } +private: + int compareItems( QPtrCollection::Item s1, QPtrCollection::Item s2 ) + { return qstricmp((const char*)s1, + (const char*)s2); } +}; + + +inline QStrList & QStrList::operator=( const QStrList &strList ) +{ + clear(); + dc = strList.dc; + del_item = dc; + QPtrList<char>::operator=( strList ); + return *this; +} + +inline QStrList::QStrList( const QStrList &strList ) + : QPtrList<char>( strList ) +{ + dc = FALSE; + operator=( strList ); +} + +#endif // QSTRLIST_H diff --git a/qmake/include/qtextcodec.h b/qmake/include/qtextcodec.h new file mode 100644 index 0000000..149b5cb --- a/dev/null +++ b/qmake/include/qtextcodec.h @@ -0,0 +1,114 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QTextCodec class +** +** Created : 981015 +** +** Copyright (C) 1998-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QTEXTCODEC_H +#define QTEXTCODEC_H + +#ifndef QT_H +#include "qstring.h" +#endif // QT_H + +#ifndef QT_NO_TEXTCODEC + +class QTextCodec; +class QIODevice; +class QFont; + +class Q_EXPORT QTextEncoder { +public: + virtual ~QTextEncoder(); + virtual QCString fromUnicode(const QString& uc, int& lenInOut) = 0; +}; + +class Q_EXPORT QTextDecoder { +public: + virtual ~QTextDecoder(); + virtual QString toUnicode(const char* chars, int len) = 0; +}; + +class Q_EXPORT QTextCodec { +public: + virtual ~QTextCodec(); + +#ifndef QT_NO_CODECS + static QTextCodec* loadCharmap(QIODevice*); + static QTextCodec* loadCharmapFile(QString filename); +#endif //QT_NO_CODECS + static QTextCodec* codecForMib(int mib); + static QTextCodec* codecForName(const char* hint, int accuracy=0); + static QTextCodec* codecForContent(const char* chars, int len); + static QTextCodec* codecForIndex(int i); + static QTextCodec* codecForLocale(); + static void setCodecForLocale(QTextCodec *c); + + static void deleteAllCodecs(); + + static const char* locale(); + + virtual const char* name() const = 0; + virtual const char* mimeName() const; + virtual int mibEnum() const = 0; + + virtual QTextDecoder* makeDecoder() const; + virtual QTextEncoder* makeEncoder() const; + + virtual QString toUnicode(const char* chars, int len) const; + virtual QCString fromUnicode(const QString& uc, int& lenInOut) const; + + QCString fromUnicode(const QString& uc) const; + QString toUnicode(const QByteArray&, int len) const; + QString toUnicode(const QByteArray&) const; + QString toUnicode(const QCString&, int len) const; + QString toUnicode(const QCString&) const; + QString toUnicode(const char* chars) const; + virtual bool canEncode( QChar ) const; + virtual bool canEncode( const QString& ) const; + + virtual int heuristicContentMatch(const char* chars, int len) const = 0; + virtual int heuristicNameMatch(const char* hint) const; + + virtual QByteArray fromUnicode(const QString& uc, int from, int len) const; + virtual unsigned short characterFromUnicode(const QString &str, int pos) const; + +protected: + QTextCodec(); + static int simpleHeuristicNameMatch(const char* name, const char* hint); + + friend class QFont; +}; +#endif // QT_NO_TEXTCODEC +#endif // QTEXTCODEC_H diff --git a/qmake/include/qtextstream.h b/qmake/include/qtextstream.h new file mode 100644 index 0000000..6979ed7 --- a/dev/null +++ b/qmake/include/qtextstream.h @@ -0,0 +1,335 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QTextStream class +** +** Created : 940922 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QTEXTSTREAM_H +#define QTEXTSTREAM_H + +#ifndef QT_H +#include "qiodevice.h" +#include "qstring.h" +#include <stdio.h> +#endif // QT_H + +#ifndef QT_NO_TEXTSTREAM +class QTextCodec; +class QTextDecoder; + +class QTextStreamPrivate; + +class Q_EXPORT QTextStream // text stream class +{ +public: + enum Encoding { Locale, Latin1, Unicode, UnicodeNetworkOrder, + UnicodeReverse, RawUnicode, UnicodeUTF8 }; + + void setEncoding( Encoding ); +#ifndef QT_NO_TEXTCODEC + void setCodec( QTextCodec* ); + QTextCodec *codec(); +#endif + + QTextStream(); + QTextStream( QIODevice * ); + QTextStream( QString*, int mode ); + QTextStream( QString&, int mode ); // obsolete + QTextStream( QByteArray, int mode ); + QTextStream( FILE *, int mode ); + virtual ~QTextStream(); + + QIODevice *device() const; + void setDevice( QIODevice * ); + void unsetDevice(); + + bool atEnd() const; + bool eof() const; + + QTextStream &operator>>( QChar & ); + QTextStream &operator>>( char & ); + QTextStream &operator>>( signed short & ); + QTextStream &operator>>( unsigned short & ); + QTextStream &operator>>( signed int & ); + QTextStream &operator>>( unsigned int & ); + QTextStream &operator>>( signed long & ); + QTextStream &operator>>( unsigned long & ); + QTextStream &operator>>( float & ); + QTextStream &operator>>( double & ); + QTextStream &operator>>( char * ); + QTextStream &operator>>( QString & ); + QTextStream &operator>>( QCString & ); + + QTextStream &operator<<( QChar ); + QTextStream &operator<<( char ); + QTextStream &operator<<( signed short ); + QTextStream &operator<<( unsigned short ); + QTextStream &operator<<( signed int ); + QTextStream &operator<<( unsigned int ); + QTextStream &operator<<( signed long ); + QTextStream &operator<<( unsigned long ); + QTextStream &operator<<( float ); + QTextStream &operator<<( double ); + QTextStream &operator<<( const char* ); + QTextStream &operator<<( const QString & ); + QTextStream &operator<<( const QCString & ); + QTextStream &operator<<( void * ); // any pointer + + QTextStream &readRawBytes( char *, uint len ); + QTextStream &writeRawBytes( const char* , uint len ); + + QString readLine(); + QString read(); + void skipWhiteSpace(); + + enum { + skipws = 0x0001, // skip whitespace on input + left = 0x0002, // left-adjust output + right = 0x0004, // right-adjust output + internal = 0x0008, // pad after sign + bin = 0x0010, // binary format integer + oct = 0x0020, // octal format integer + dec = 0x0040, // decimal format integer + hex = 0x0080, // hex format integer + showbase = 0x0100, // show base indicator + showpoint = 0x0200, // force decimal point (float) + uppercase = 0x0400, // upper-case hex output + showpos = 0x0800, // add '+' to positive integers + scientific= 0x1000, // scientific float output + fixed = 0x2000 // fixed float output + }; + + static const int basefield; // bin | oct | dec | hex + static const int adjustfield; // left | right | internal + static const int floatfield; // scientific | fixed + + int flags() const; + int flags( int f ); + int setf( int bits ); + int setf( int bits, int mask ); + int unsetf( int bits ); + + void reset(); + + int width() const; + int width( int ); + int fill() const; + int fill( int ); + int precision() const; + int precision( int ); + +private: + long input_int(); + void init(); + QTextStream &output_int( int, ulong, bool ); + QIODevice *dev; + + int fflags; + int fwidth; + int fillchar; + int fprec; + bool doUnicodeHeader; + bool owndev; + QTextCodec *mapper; + QTextStreamPrivate * d; + QChar unused1; // ### remove in Qt 4.0 + bool latin1; + bool internalOrder; + bool networkOrder; + void *unused2; // ### remove in Qt 4.0 + + QChar eat_ws(); + uint ts_getline( QChar* ); + void ts_ungetc( QChar ); + QChar ts_getc(); + uint ts_getbuf( QChar*, uint ); + void ts_putc(int); + void ts_putc(QChar); + bool ts_isspace(QChar); + bool ts_isdigit(QChar); + ulong input_bin(); + ulong input_oct(); + ulong input_dec(); + ulong input_hex(); + double input_double(); + QTextStream &writeBlock( const char* p, uint len ); + QTextStream &writeBlock( const QChar* p, uint len ); + +private: // Disabled copy constructor and operator= +#if defined(Q_DISABLE_COPY) + QTextStream( const QTextStream & ); + QTextStream &operator=( const QTextStream & ); +#endif +}; + +typedef QTextStream QTS; + +class Q_EXPORT QTextIStream : public QTextStream { +public: + QTextIStream( const QString* s ) : + QTextStream((QString*)s,IO_ReadOnly) { } + QTextIStream( QByteArray ba ) : + QTextStream(ba,IO_ReadOnly) { } + QTextIStream( FILE *f ) : + QTextStream(f,IO_ReadOnly) { } + +private: // Disabled copy constructor and operator= +#if defined(Q_DISABLE_COPY) + QTextIStream( const QTextIStream & ); + QTextIStream &operator=( const QTextIStream & ); +#endif +}; + +class Q_EXPORT QTextOStream : public QTextStream { +public: + QTextOStream( QString* s ) : + QTextStream(s,IO_WriteOnly) { } + QTextOStream( QByteArray ba ) : + QTextStream(ba,IO_WriteOnly) { } + QTextOStream( FILE *f ) : + QTextStream(f,IO_WriteOnly) { } + +private: // Disabled copy constructor and operator= +#if defined(Q_DISABLE_COPY) + QTextOStream( const QTextOStream & ); + QTextOStream &operator=( const QTextOStream & ); +#endif +}; + +/***************************************************************************** + QTextStream inline functions + *****************************************************************************/ + +inline QIODevice *QTextStream::device() const +{ return dev; } + +inline bool QTextStream::atEnd() const +{ return dev ? dev->atEnd() : FALSE; } + +inline bool QTextStream::eof() const +{ return atEnd(); } + +inline int QTextStream::flags() const +{ return fflags; } + +inline int QTextStream::flags( int f ) +{ int oldf = fflags; fflags = f; return oldf; } + +inline int QTextStream::setf( int bits ) +{ int oldf = fflags; fflags |= bits; return oldf; } + +inline int QTextStream::setf( int bits, int mask ) +{ int oldf = fflags; fflags = (fflags & ~mask) | (bits & mask); return oldf; } + +inline int QTextStream::unsetf( int bits ) +{ int oldf = fflags; fflags &= ~bits; return oldf; } + +inline int QTextStream::width() const +{ return fwidth; } + +inline int QTextStream::width( int w ) +{ int oldw = fwidth; fwidth = w; return oldw; } + +inline int QTextStream::fill() const +{ return fillchar; } + +inline int QTextStream::fill( int f ) +{ int oldc = fillchar; fillchar = f; return oldc; } + +inline int QTextStream::precision() const +{ return fprec; } + +inline int QTextStream::precision( int p ) +{ int oldp = fprec; fprec = p; return oldp; } + +/*! + Returns one character from the stream, or EOF. +*/ +inline QChar QTextStream::ts_getc() +{ QChar r; return ( ts_getbuf( &r,1 ) == 1 ? r : QChar((ushort)0xffff) ); } + +/***************************************************************************** + QTextStream manipulators + *****************************************************************************/ + +typedef QTextStream & (*QTSFUNC)(QTextStream &);// manipulator function +typedef int (QTextStream::*QTSMFI)(int); // manipulator w/int argument + +class Q_EXPORT QTSManip { // text stream manipulator +public: + QTSManip( QTSMFI m, int a ) { mf=m; arg=a; } + void exec( QTextStream &s ) { (s.*mf)(arg); } +private: + QTSMFI mf; // QTextStream member function + int arg; // member function argument +}; + +Q_EXPORT inline QTextStream &operator>>( QTextStream &s, QTSFUNC f ) +{ return (*f)( s ); } + +Q_EXPORT inline QTextStream &operator<<( QTextStream &s, QTSFUNC f ) +{ return (*f)( s ); } + +Q_EXPORT inline QTextStream &operator<<( QTextStream &s, QTSManip m ) +{ m.exec(s); return s; } + +Q_EXPORT QTextStream &bin( QTextStream &s ); // set bin notation +Q_EXPORT QTextStream &oct( QTextStream &s ); // set oct notation +Q_EXPORT QTextStream &dec( QTextStream &s ); // set dec notation +Q_EXPORT QTextStream &hex( QTextStream &s ); // set hex notation +Q_EXPORT QTextStream &endl( QTextStream &s ); // insert EOL ('\n') +Q_EXPORT QTextStream &flush( QTextStream &s ); // flush output +Q_EXPORT QTextStream &ws( QTextStream &s ); // eat whitespace on input +Q_EXPORT QTextStream &reset( QTextStream &s ); // set default flags + +Q_EXPORT inline QTSManip qSetW( int w ) +{ + QTSMFI func = &QTextStream::width; + return QTSManip(func,w); +} + +Q_EXPORT inline QTSManip qSetFill( int f ) +{ + QTSMFI func = &QTextStream::fill; + return QTSManip(func,f); +} + +Q_EXPORT inline QTSManip qSetPrecision( int p ) +{ + QTSMFI func = &QTextStream::precision; + return QTSManip(func,p); +} + +#endif // QT_NO_TEXTSTREAM +#endif // QTEXTSTREAM_H diff --git a/qmake/include/qtl.h b/qmake/include/qtl.h new file mode 100644 index 0000000..346cecc --- a/dev/null +++ b/qmake/include/qtl.h @@ -0,0 +1,321 @@ +/**************************************************************************** +** $Id$ +** +** Definition of Qt template library classes +** +** Created : 990128 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QTL_H +#define QTL_H + +#ifndef QT_H +#include "qglobal.h" +#include "qtextstream.h" +#include "qstring.h" +#endif // QT_H + +#ifndef QT_NO_TEXTSTREAM +template <class T> +class QTextOStreamIterator +{ +protected: + QTextOStream& stream; + QString separator; + +public: + QTextOStreamIterator( QTextOStream& s) : stream( s ) {} + QTextOStreamIterator( QTextOStream& s, const QString& sep ) + : stream( s ), separator( sep ) {} + QTextOStreamIterator<T>& operator= ( const T& x ) { + stream << x; + if ( !separator.isEmpty() ) + stream << separator; + return *this; + } + QTextOStreamIterator<T>& operator*() { return *this; } + QTextOStreamIterator<T>& operator++() { return *this; } + QTextOStreamIterator<T>& operator++(int) { return *this; } +}; +#endif //QT_NO_TEXTSTREAM + +template <class InputIterator, class OutputIterator> +inline OutputIterator qCopy( InputIterator _begin, InputIterator _end, + OutputIterator _dest ) +{ + while( _begin != _end ) + *_dest++ = *_begin++; + return _dest; +} + +template <class BiIterator, class BiOutputIterator> +inline BiOutputIterator qCopyBackward( BiIterator _begin, BiIterator _end, + BiOutputIterator _dest ) +{ + while ( _begin != _end ) + *--_dest = *--_end; + return _dest; +} + +template <class InputIterator1, class InputIterator2> +inline bool qEqual( InputIterator1 first1, InputIterator1 last1, InputIterator2 first2 ) +{ + for ( ; first1 != last1; ++first1, ++first2 ) + if ( *first1 != *first2 ) + return FALSE; + return TRUE; +} + +template <class ForwardIterator, class T> +inline void qFill( ForwardIterator first, ForwardIterator last, const T& val ) +{ + for ( ; first != last; ++first ) + *first = val; +} + +#if 0 +template <class BiIterator, class OutputIterator> +inline OutputIterator qReverseCopy( BiIterator _begin, BiIterator _end, + OutputIterator _dest ) +{ + while ( _begin != _end ) { + --_end; + *_dest = *_end; + ++_dest; + } + return _dest; +} +#endif + + +template <class InputIterator, class T> +inline InputIterator qFind( InputIterator first, InputIterator last, + const T& val ) +{ + while ( first != last && *first != val ) + ++first; + return first; +} + +template <class InputIterator, class T, class Size> +inline void qCount( InputIterator first, InputIterator last, const T& value, + Size& n ) +{ + for ( ; first != last; ++first ) + if ( *first == value ) + ++n; +} + +template <class T> +inline void qSwap( T& _value1, T& _value2 ) +{ + T tmp = _value1; + _value1 = _value2; + _value2 = tmp; +} + + +template <class InputIterator> +Q_INLINE_TEMPLATES void qBubbleSort( InputIterator b, InputIterator e ) +{ + // Goto last element; + InputIterator last = e; + --last; + // only one element or no elements ? + if ( last == b ) + return; + + // So we have at least two elements in here + while( b != last ) { + bool swapped = FALSE; + InputIterator swap_pos = b; + InputIterator x = e; + InputIterator y = x; + y--; + do { + --x; + --y; + if ( *x < *y ) { + swapped = TRUE; + qSwap( *x, *y ); + swap_pos = y; + } + } while( y != b ); + if ( !swapped ) + return; + b = swap_pos; + b++; + } +} + + +template <class Container> +inline void qBubbleSort( Container &c ) +{ + qBubbleSort( c.begin(), c.end() ); +} + + +template <class Value> +Q_INLINE_TEMPLATES void qHeapSortPushDown( Value* heap, int first, int last ) +{ + int r = first; + while ( r <= last / 2 ) { + if ( last == 2 * r ) { + // node r has only one child + if ( heap[2 * r] < heap[r] ) + qSwap( heap[r], heap[2 * r] ); + r = last; + } else { + // node r has two children + if ( heap[2 * r] < heap[r] && !(heap[2 * r + 1] < heap[2 * r]) ) { + // swap with left child + qSwap( heap[r], heap[2 * r] ); + r *= 2; + } else if ( heap[2 * r + 1] < heap[r] + && heap[2 * r + 1] < heap[2 * r] ) { + // swap with right child + qSwap( heap[r], heap[2 * r + 1] ); + r = 2 * r + 1; + } else { + r = last; + } + } + } +} + + +template <class InputIterator, class Value> +Q_INLINE_TEMPLATES void qHeapSortHelper( InputIterator b, InputIterator e, Value, uint n ) +{ + // Create the heap + InputIterator insert = b; + Value* realheap = new Value[n]; + // Wow, what a fake. But I want the heap to be indexed as 1...n + Value* heap = realheap - 1; + int size = 0; + for( ; insert != e; ++insert ) { + heap[++size] = *insert; + int i = size; + while( i > 1 && heap[i] < heap[i / 2] ) { + qSwap( heap[i], heap[i / 2] ); + i /= 2; + } + } + + // Now do the sorting + for( uint i = n; i > 0; i-- ) { + *b++ = heap[1]; + if ( i > 1 ) { + heap[1] = heap[i]; + qHeapSortPushDown( heap, 1, (int)i - 1 ); + } + } + + delete[] realheap; +} + + +template <class InputIterator> +Q_INLINE_TEMPLATES void qHeapSort( InputIterator b, InputIterator e ) +{ + // Empty ? + if ( b == e ) + return; + + // How many entries have to be sorted ? + InputIterator it = b; + uint n = 0; + while ( it != e ) { + ++n; + ++it; + } + + // The second last parameter is a hack to retrieve the value type + // Do the real sorting here + qHeapSortHelper( b, e, *b, n ); +} + + +template <class Container> +Q_INLINE_TEMPLATES void qHeapSort( Container &c ) +{ + if ( c.begin() == c.end() ) + return; + + // The second last parameter is a hack to retrieve the value type + // Do the real sorting here + qHeapSortHelper( c.begin(), c.end(), *(c.begin()), (uint)c.count() ); +} + +template <class Container> +class QBackInsertIterator +{ +public: + Q_EXPLICIT QBackInsertIterator( Container &c ) + : container( &c ) + { + } + + QBackInsertIterator<Container>& + operator=( const Q_TYPENAME Container::value_type &value ) + { + container->push_back( value ); + return *this; + } + + QBackInsertIterator<Container>& operator*() + { + return *this; + } + + QBackInsertIterator<Container>& operator++() + { + return *this; + } + + QBackInsertIterator<Container>& operator++(int) + { + return *this; + } + +protected: + Container *container; +}; + +template <class Container> +inline QBackInsertIterator<Container> qBackInserter( Container &c ) +{ + return QBackInsertIterator<Container>( c ); +} + +#endif diff --git a/qmake/include/quuid.h b/qmake/include/quuid.h new file mode 100644 index 0000000..591d2f1 --- a/dev/null +++ b/qmake/include/quuid.h @@ -0,0 +1,168 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QUuid class +** +** Created: 010523 +** +** Copyright (C) 1992-2001 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QUUID_H +#define QUUID_H + +#ifndef QT_H +#include <qstring.h> +#endif // QT_H + +#include <string.h> + +#if defined(Q_OS_WIN32) +#ifndef GUID_DEFINED +#define GUID_DEFINED +typedef struct _GUID +{ + ulong Data1; + ushort Data2; + ushort Data3; + uchar Data4[ 8 ]; +} GUID; +#endif +#endif + +struct Q_EXPORT QUuid +{ + QUuid() + { + memset( this, 0, sizeof(QUuid) ); + } + QUuid( uint l, ushort w1, ushort w2, uchar b1, uchar b2, uchar b3, uchar b4, uchar b5, uchar b6, uchar b7, uchar b8 ) + { + data1 = l; + data2 = w1; + data3 = w2; + data4[0] = b1; + data4[1] = b2; + data4[2] = b3; + data4[3] = b4; + data4[4] = b5; + data4[5] = b6; + data4[6] = b7; + data4[7] = b8; + } + QUuid( const QUuid &uuid ) + { + memcpy( this, &uuid, sizeof(QUuid) ); + } +#ifndef QT_NO_QUUID_STRING + QUuid( const QString & ); + QUuid( const char * ); + QString toString() const; + operator QString() const { return toString(); } +#endif + bool isNull() const; + + QUuid &operator=(const QUuid &orig ) + { + memcpy( this, &orig, sizeof(QUuid) ); + return *this; + } + + bool operator==(const QUuid &orig ) const + { + uint i; + if ( data1 != orig.data1 || data2 != orig.data2 || + data3 != orig.data3 ) + return FALSE; + + for( i = 0; i < 8; i++ ) + if ( data4[i] != orig.data4[i] ) + return FALSE; + + return TRUE; + } + + bool operator!=(const QUuid &orig ) const + { + return !( *this == orig ); + } + +#if defined(Q_OS_WIN32) + // On Windows we have a type GUID that is used by the platform API, so we + // provide convenience operators to cast from and to this type. + QUuid( const GUID &guid ) + { + memcpy( this, &guid, sizeof(GUID) ); + } + + QUuid &operator=(const GUID &orig ) + { + memcpy( this, &orig, sizeof(QUuid) ); + return *this; + } + + operator GUID() const + { + GUID guid = { data1, data2, data3, { data4[0], data4[1], data4[2], data4[3], data4[4], data4[5], data4[6], data4[7] } }; + return guid; + } + + bool operator==( const GUID &guid ) const + { + uint i; + if ( data1 != guid.Data1 || data2 != guid.Data2 || + data3 != guid.Data3 ) + return FALSE; + + for( i = 0; i < 8; i++ ) + if ( data4[i] != guid.Data4[i] ) + return FALSE; + + return TRUE; + } + + bool operator!=( const GUID &guid ) const + { + return !( *this == guid ); + } +#endif + + uint data1; + ushort data2; + ushort data3; + uchar data4[ 8 ]; +}; + +#ifndef QT_NO_DATASTREAM +Q_EXPORT QDataStream &operator<<( QDataStream &, const QUuid & ); +Q_EXPORT QDataStream &operator>>( QDataStream &, QUuid & ); +#endif + +#endif //QUUID_H diff --git a/qmake/include/qvaluelist.h b/qmake/include/qvaluelist.h new file mode 100644 index 0000000..54f7aec --- a/dev/null +++ b/qmake/include/qvaluelist.h @@ -0,0 +1,665 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QValueList class +** +** Created : 990406 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QVALUELIST_H +#define QVALUELIST_H + +#ifndef QT_H +#include "qtl.h" +#include "qshared.h" +#include "qdatastream.h" +#endif // QT_H + +#ifndef QT_NO_STL +#include <iterator> +#include <list> +#endif + +//#define QT_CHECK_VALUELIST_RANGE + +#if defined(Q_CC_MSVC) +#pragma warning(disable:4284) // "return type for operator -> is not a UDT" +#endif + +template <class T> +class QValueListNode +{ +public: + QValueListNode( const T& t ) : data( t ) { } + QValueListNode() { } +#if defined(Q_TEMPLATEDLL) + // Workaround MS bug in memory de/allocation in DLL vs. EXE + virtual ~QValueListNode() { } +#endif + + QValueListNode<T>* next; + QValueListNode<T>* prev; + T data; +}; + +template<class T> +class QValueListIterator +{ + public: + /** + * Typedefs + */ + typedef QValueListNode<T>* NodePtr; +#ifndef QT_NO_STL + typedef std::bidirectional_iterator_tag iterator_category; +#endif + typedef T value_type; + typedef size_t size_type; +#ifndef QT_NO_STL + typedef ptrdiff_t difference_type; +#else + typedef int difference_type; +#endif + typedef T* pointer; + typedef T& reference; + + /** + * Variables + */ + NodePtr node; + + /** + * Functions + */ + QValueListIterator() : node( 0 ) {} + QValueListIterator( NodePtr p ) : node( p ) {} + QValueListIterator( const QValueListIterator<T>& it ) : node( it.node ) {} + + bool operator==( const QValueListIterator<T>& it ) const { return node == it.node; } + bool operator!=( const QValueListIterator<T>& it ) const { return node != it.node; } + const T& operator*() const { return node->data; } + T& operator*() { return node->data; } + // UDT for T = x* + // T* operator->() const { return &node->data; } + + QValueListIterator<T>& operator++() { + node = node->next; + return *this; + } + + QValueListIterator<T> operator++(int) { + QValueListIterator<T> tmp = *this; + node = node->next; + return tmp; + } + + QValueListIterator<T>& operator--() { + node = node->prev; + return *this; + } + + QValueListIterator<T> operator--(int) { + QValueListIterator<T> tmp = *this; + node = node->prev; + return tmp; + } + + QValueListIterator<T>& operator+=( int j ) { + while ( j-- ) + node = node->next; + return *this; + } + + QValueListIterator<T>& operator-=( int j ) { + while ( j-- ) + node = node->prev; + return *this; + } + +}; + +template<class T> +class QValueListConstIterator +{ + public: + /** + * Typedefs + */ + typedef QValueListNode<T>* NodePtr; +#ifndef QT_NO_STL + typedef std::bidirectional_iterator_tag iterator_category; +#endif + typedef T value_type; + typedef size_t size_type; +#ifndef QT_NO_STL + typedef ptrdiff_t difference_type; +#else + typedef int difference_type; +#endif + typedef const T* pointer; + typedef const T& reference; + + /** + * Variables + */ + NodePtr node; + + /** + * Functions + */ + QValueListConstIterator() : node( 0 ) {} + QValueListConstIterator( NodePtr p ) : node( p ) {} + QValueListConstIterator( const QValueListConstIterator<T>& it ) : node( it.node ) {} + QValueListConstIterator( const QValueListIterator<T>& it ) : node( it.node ) {} + + bool operator==( const QValueListConstIterator<T>& it ) const { return node == it.node; } + bool operator!=( const QValueListConstIterator<T>& it ) const { return node != it.node; } + const T& operator*() const { return node->data; } + // UDT for T = x* + // const T* operator->() const { return &node->data; } + + QValueListConstIterator<T>& operator++() { + node = node->next; + return *this; + } + + QValueListConstIterator<T> operator++(int) { + QValueListConstIterator<T> tmp = *this; + node = node->next; + return tmp; + } + + QValueListConstIterator<T>& operator--() { + node = node->prev; + return *this; + } + + QValueListConstIterator<T> operator--(int) { + QValueListConstIterator<T> tmp = *this; + node = node->prev; + return tmp; + } +}; + +template <class T> +class QValueListPrivate : public QShared +{ +public: + /** + * Typedefs + */ + typedef QValueListIterator<T> Iterator; + typedef QValueListConstIterator<T> ConstIterator; + typedef QValueListNode<T> Node; + typedef QValueListNode<T>* NodePtr; + typedef size_t size_type; + + /** + * Functions + */ + QValueListPrivate(); + QValueListPrivate( const QValueListPrivate<T>& _p ); + + void derefAndDelete() // ### hack to get around hp-cc brain damage + { + if ( deref() ) + delete this; + } + +#if defined(Q_TEMPLATEDLL) + // Workaround MS bug in memory de/allocation in DLL vs. EXE + virtual +#endif + ~QValueListPrivate(); + + Iterator insert( Iterator it, const T& x ); + Iterator remove( Iterator it ); + NodePtr find( NodePtr start, const T& x ) const; + int findIndex( NodePtr start, const T& x ) const; + uint contains( const T& x ) const; + uint remove( const T& x ); + NodePtr at( size_type i ) const; + void clear(); + + NodePtr node; + size_type nodes; +}; + +template <class T> +Q_INLINE_TEMPLATES QValueListPrivate<T>::QValueListPrivate() +{ + node = new Node; node->next = node->prev = node; nodes = 0; +} + +template <class T> +Q_INLINE_TEMPLATES QValueListPrivate<T>::QValueListPrivate( const QValueListPrivate<T>& _p ) + : QShared() +{ + node = new Node; node->next = node->prev = node; nodes = 0; + Iterator b( _p.node->next ); + Iterator e( _p.node ); + Iterator i( node ); + while( b != e ) + insert( i, *b++ ); +} + +template <class T> +Q_INLINE_TEMPLATES QValueListPrivate<T>::~QValueListPrivate() { + NodePtr p = node->next; + while( p != node ) { + NodePtr x = p->next; + delete p; + p = x; + } + delete node; +} + +template <class T> +Q_INLINE_TEMPLATES Q_TYPENAME QValueListPrivate<T>::Iterator QValueListPrivate<T>::insert( Q_TYPENAME QValueListPrivate<T>::Iterator it, const T& x ) +{ + NodePtr p = new Node( x ); + p->next = it.node; + p->prev = it.node->prev; + it.node->prev->next = p; + it.node->prev = p; + nodes++; + return p; +} + +template <class T> +Q_INLINE_TEMPLATES Q_TYPENAME QValueListPrivate<T>::Iterator QValueListPrivate<T>::remove( Q_TYPENAME QValueListPrivate<T>::Iterator it ) +{ + Q_ASSERT ( it.node != node ); + NodePtr next = it.node->next; + NodePtr prev = it.node->prev; + prev->next = next; + next->prev = prev; + delete it.node; + nodes--; + return Iterator( next ); +} + +template <class T> +Q_INLINE_TEMPLATES Q_TYPENAME QValueListPrivate<T>::NodePtr QValueListPrivate<T>::find( Q_TYPENAME QValueListPrivate<T>::NodePtr start, const T& x ) const +{ + ConstIterator first( start ); + ConstIterator last( node ); + while( first != last) { + if ( *first == x ) + return first.node; + ++first; + } + return last.node; +} + +template <class T> +Q_INLINE_TEMPLATES int QValueListPrivate<T>::findIndex( Q_TYPENAME QValueListPrivate<T>::NodePtr start, const T& x ) const +{ + ConstIterator first( start ); + ConstIterator last( node ); + int pos = 0; + while( first != last) { + if ( *first == x ) + return pos; + ++first; + ++pos; + } + return -1; +} + +template <class T> +Q_INLINE_TEMPLATES uint QValueListPrivate<T>::contains( const T& x ) const +{ + uint result = 0; + Iterator first = Iterator( node->next ); + Iterator last = Iterator( node ); + while( first != last) { + if ( *first == x ) + ++result; + ++first; + } + return result; +} + +template <class T> +Q_INLINE_TEMPLATES uint QValueListPrivate<T>::remove( const T& x ) +{ + uint result = 0; + Iterator first = Iterator( node->next ); + Iterator last = Iterator( node ); + while( first != last) { + if ( *first == x ) { + first = remove( first ); + ++result; + } else + ++first; + } + return result; +} + +template <class T> +Q_INLINE_TEMPLATES Q_TYPENAME QValueListPrivate<T>::NodePtr QValueListPrivate<T>::at( size_type i ) const +{ + Q_ASSERT( i <= nodes ); + NodePtr p = node->next; + for( size_type x = 0; x < i; ++x ) + p = p->next; + return p; +} + +template <class T> +Q_INLINE_TEMPLATES void QValueListPrivate<T>::clear() +{ + nodes = 0; + NodePtr p = node->next; + while( p != node ) { + NodePtr next = p->next; + delete p; + p = next; + } + node->next = node->prev = node; +} + +#ifdef QT_CHECK_RANGE +# if !defined( QT_NO_DEBUG ) && defined( QT_CHECK_VALUELIST_RANGE ) +# define QT_CHECK_INVALID_LIST_ELEMENT if ( empty() ) qWarning( "QValueList: Warning invalid element" ) +# define QT_CHECK_INVALID_LIST_ELEMENT_FATAL Q_ASSERT( !empty() ); +# else +# define QT_CHECK_INVALID_LIST_ELEMENT +# define QT_CHECK_INVALID_LIST_ELEMENT_FATAL +# endif +#else +# define QT_CHECK_INVALID_LIST_ELEMENT +# define QT_CHECK_INVALID_LIST_ELEMENT_FATAL +#endif + +template <class T> class QDeepCopy; + +template <class T> +class QValueList +{ +public: + /** + * Typedefs + */ + typedef QValueListIterator<T> iterator; + typedef QValueListConstIterator<T> const_iterator; + typedef T value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef size_t size_type; +#ifndef QT_NO_STL + typedef ptrdiff_t difference_type; +#else + typedef int difference_type; +#endif + + /** + * API + */ + QValueList() { sh = new QValueListPrivate<T>; } + QValueList( const QValueList<T>& l ) { sh = l.sh; sh->ref(); } +#ifndef QT_NO_STL +# ifdef Q_CC_HPACC // HP-UX aCC does require typename in some place +# undef Q_TYPENAME // but not accept them at others. +# define Q_TYPENAME // also doesn't like re-defines ... +# endif + QValueList( const Q_TYPENAME std::list<T>& l ) + { + sh = new QValueListPrivate<T>; + qCopy( l.begin(), l.end(), std::back_inserter( *this ) ); + } +#endif + ~QValueList() { sh->derefAndDelete(); } + + QValueList<T>& operator= ( const QValueList<T>& l ) + { + l.sh->ref(); + sh->derefAndDelete(); + sh = l.sh; + return *this; + } +#ifndef QT_NO_STL + QValueList<T>& operator= ( const Q_TYPENAME std::list<T>& l ) + { + detach(); + qCopy( l.begin(), l.end(), std::back_inserter( *this ) ); + return *this; + } + bool operator== ( const Q_TYPENAME std::list<T>& l ) const + { + if ( size() != l.size() ) + return FALSE; + const_iterator it2 = begin(); +#if !defined(Q_CC_MIPS) + typename +#endif + std::list<T>::const_iterator it = l.begin(); + for ( ; it2 != end(); ++it2, ++it ) + if ( !((*it2) == (*it)) ) + return FALSE; + return TRUE; + } +# ifdef Q_CC_HPACC // undo the HP-UX aCC hackery done above +# undef Q_TYPENAME +# define Q_TYPENAME typename +# endif +#endif + bool operator== ( const QValueList<T>& l ) const; + bool operator!= ( const QValueList<T>& l ) const { return !( *this == l ); } + iterator begin() { detach(); return iterator( sh->node->next ); } + const_iterator begin() const { return const_iterator( sh->node->next ); } + iterator end() { detach(); return iterator( sh->node ); } + const_iterator end() const { return const_iterator( sh->node ); } + iterator insert( iterator it, const T& x ) { detach(); return sh->insert( it, x ); } + uint remove( const T& x ) { detach(); return sh->remove( x ); } + void clear(); + + QValueList<T>& operator<< ( const T& x ) + { + append( x ); + return *this; + } + + size_type size() const { return sh->nodes; } + bool empty() const { return sh->nodes == 0; } + void push_front( const T& x ) { detach(); sh->insert( begin(), x ); } + void push_back( const T& x ) { detach(); sh->insert( end(), x ); } + iterator erase( iterator pos ) { detach(); return sh->remove( pos ); } + iterator erase( iterator first, iterator last ); + reference front() { QT_CHECK_INVALID_LIST_ELEMENT_FATAL; return *begin(); } + const_reference front() const { QT_CHECK_INVALID_LIST_ELEMENT_FATAL; return *begin(); } + reference back() { QT_CHECK_INVALID_LIST_ELEMENT_FATAL; return *(--end()); } + const_reference back() const { QT_CHECK_INVALID_LIST_ELEMENT_FATAL; return *(--end()); } + void pop_front() { QT_CHECK_INVALID_LIST_ELEMENT; erase( begin() ); } + void pop_back() { + QT_CHECK_INVALID_LIST_ELEMENT; + iterator tmp = end(); + erase( --tmp ); + } + void insert( iterator pos, size_type n, const T& x ); + // Some compilers (incl. vc++) would instantiate this function even if + // it is not used; this would constrain QValueList to classes that provide + // an operator< + /* + void sort() + { + qHeapSort( *this ); + } + */ + + QValueList<T> operator+ ( const QValueList<T>& l ) const; + QValueList<T>& operator+= ( const QValueList<T>& l ); + + iterator fromLast() { detach(); return iterator( sh->node->prev ); } + const_iterator fromLast() const { return const_iterator( sh->node->prev ); } + + bool isEmpty() const { return ( sh->nodes == 0 ); } + + iterator append( const T& x ) { detach(); return sh->insert( end(), x ); } + iterator prepend( const T& x ) { detach(); return sh->insert( begin(), x ); } + + iterator remove( iterator it ) { detach(); return sh->remove( it ); } + + T& first() { QT_CHECK_INVALID_LIST_ELEMENT; detach(); return sh->node->next->data; } + const T& first() const { QT_CHECK_INVALID_LIST_ELEMENT; return sh->node->next->data; } + T& last() { QT_CHECK_INVALID_LIST_ELEMENT; detach(); return sh->node->prev->data; } + const T& last() const { QT_CHECK_INVALID_LIST_ELEMENT; return sh->node->prev->data; } + + T& operator[] ( size_type i ) { QT_CHECK_INVALID_LIST_ELEMENT; detach(); return sh->at(i)->data; } + const T& operator[] ( size_type i ) const { QT_CHECK_INVALID_LIST_ELEMENT; return sh->at(i)->data; } + iterator at( size_type i ) { QT_CHECK_INVALID_LIST_ELEMENT; detach(); return iterator( sh->at(i) ); } + const_iterator at( size_type i ) const { QT_CHECK_INVALID_LIST_ELEMENT; return const_iterator( sh->at(i) ); } + iterator find ( const T& x ) { detach(); return iterator( sh->find( sh->node->next, x) ); } + const_iterator find ( const T& x ) const { return const_iterator( sh->find( sh->node->next, x) ); } + iterator find ( iterator it, const T& x ) { detach(); return iterator( sh->find( it.node, x ) ); } + const_iterator find ( const_iterator it, const T& x ) const { return const_iterator( sh->find( it.node, x ) ); } + int findIndex( const T& x ) const { return sh->findIndex( sh->node->next, x) ; } + size_type contains( const T& x ) const { return sh->contains( x ); } + + size_type count() const { return sh->nodes; } + + QValueList<T>& operator+= ( const T& x ) + { + append( x ); + return *this; + } + typedef QValueListIterator<T> Iterator; + typedef QValueListConstIterator<T> ConstIterator; + typedef T ValueType; + +protected: + /** + * Helpers + */ + void detach() { if ( sh->count > 1 ) detachInternal(); } + + /** + * Variables + */ + QValueListPrivate<T>* sh; + +private: + void detachInternal(); + + friend class QDeepCopy< QValueList<T> >; +}; + +template <class T> +Q_INLINE_TEMPLATES bool QValueList<T>::operator== ( const QValueList<T>& l ) const +{ + if ( size() != l.size() ) + return FALSE; + const_iterator it2 = begin(); + const_iterator it = l.begin(); + for( ; it != l.end(); ++it, ++it2 ) + if ( !( *it == *it2 ) ) + return FALSE; + return TRUE; +} + +template <class T> +Q_INLINE_TEMPLATES void QValueList<T>::clear() +{ + if ( sh->count == 1 ) sh->clear(); else { sh->deref(); sh = new QValueListPrivate<T>; } +} + +template <class T> +Q_INLINE_TEMPLATES Q_TYPENAME QValueList<T>::iterator QValueList<T>::erase( Q_TYPENAME QValueList<T>::iterator first, Q_TYPENAME QValueList<T>::iterator last ) +{ + while ( first != last ) + erase( first++ ); + return last; +} + + +template <class T> +Q_INLINE_TEMPLATES void QValueList<T>::insert( Q_TYPENAME QValueList<T>::iterator pos, size_type n, const T& x ) +{ + for ( ; n > 0; --n ) + insert( pos, x ); +} + +template <class T> +Q_INLINE_TEMPLATES QValueList<T> QValueList<T>::operator+ ( const QValueList<T>& l ) const +{ + QValueList<T> l2( *this ); + for( const_iterator it = l.begin(); it != l.end(); ++it ) + l2.append( *it ); + return l2; +} + +template <class T> +Q_INLINE_TEMPLATES QValueList<T>& QValueList<T>::operator+= ( const QValueList<T>& l ) +{ + for( const_iterator it = l.begin(); it != l.end(); ++it ) + append( *it ); + return *this; +} + +template <class T> +Q_INLINE_TEMPLATES void QValueList<T>::detachInternal() +{ + sh->deref(); sh = new QValueListPrivate<T>( *sh ); +} + +#ifndef QT_NO_DATASTREAM +template <class T> +Q_INLINE_TEMPLATES QDataStream& operator>>( QDataStream& s, QValueList<T>& l ) +{ + l.clear(); + Q_UINT32 c; + s >> c; + for( Q_UINT32 i = 0; i < c; ++i ) + { + T t; + s >> t; + l.append( t ); + if ( s.atEnd() ) + break; + } + return s; +} + +template <class T> +Q_INLINE_TEMPLATES QDataStream& operator<<( QDataStream& s, const QValueList<T>& l ) +{ + s << (Q_UINT32)l.size(); + QValueListConstIterator<T> it = l.begin(); + for( ; it != l.end(); ++it ) + s << *it; + return s; +} +#endif // QT_NO_DATASTREAM +#endif // QVALUELIST_H diff --git a/qmake/include/qvaluestack.h b/qmake/include/qvaluestack.h new file mode 100644 index 0000000..7e9bc48 --- a/dev/null +++ b/qmake/include/qvaluestack.h @@ -0,0 +1,64 @@ +/**************************************************************************** +** $Id$ +** +** Definition of QValueStack class +** +** Created : 990925 +** +** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. +** +** This file is part of the tools module of the Qt GUI Toolkit. +** +** This file may be distributed under the terms of the Q Public License +** as defined by Trolltech AS of Norway and appearing in the file +** LICENSE.QPL included in the packaging of this file. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** See http://www.trolltech.com/qpl/ for QPL licensing information. +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef QVALUESTACK_H +#define QVALUESTACK_H + +#ifndef QT_H +#include "qvaluelist.h" +#endif // QT_H + + +template<class T> +class QValueStack : public QValueList<T> +{ +public: + QValueStack() {} + ~QValueStack() {} + void push( const T& d ) { append(d); } + T pop() + { + T elem( this->last() ); + if ( !this->isEmpty() ) + remove( this->fromLast() ); + return elem; + } + T& top() { return this->last(); } + const T& top() const { return this->last(); } +}; + +#endif |