| 
									
										
										
										
											2009-10-26 12:08:05 +01:00
										 |  |  | /**************************************************************************
 | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** This file is part of Qt Creator | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2011-01-11 16:28:15 +01:00
										 |  |  | ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies). | 
					
						
							| 
									
										
										
										
											2009-08-04 15:38:31 +02:00
										 |  |  | ** | 
					
						
							|  |  |  | ** Contact: Nokia Corporation (qt-info@nokia.com) | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2010-12-17 16:01:08 +01:00
										 |  |  | ** No Commercial Usage | 
					
						
							| 
									
										
										
										
											2009-08-04 15:38:31 +02:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2010-12-17 16:01:08 +01:00
										 |  |  | ** This file contains pre-release code and may not be distributed. | 
					
						
							|  |  |  | ** You may use this file in accordance with the terms and conditions | 
					
						
							|  |  |  | ** contained in the Technology Preview License Agreement accompanying | 
					
						
							|  |  |  | ** this package. | 
					
						
							| 
									
										
										
										
											2009-08-04 15:38:31 +02:00
										 |  |  | ** | 
					
						
							|  |  |  | ** GNU Lesser General Public License Usage | 
					
						
							| 
									
										
										
										
											2009-10-26 12:08:05 +01:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-08-04 15:38:31 +02:00
										 |  |  | ** Alternatively, this file may be used under the terms of the GNU Lesser | 
					
						
							|  |  |  | ** General Public License version 2.1 as published by the Free Software | 
					
						
							|  |  |  | ** Foundation and appearing in the file LICENSE.LGPL included in the | 
					
						
							|  |  |  | ** packaging of this file.  Please review the following information to | 
					
						
							|  |  |  | ** ensure the GNU Lesser General Public License version 2.1 requirements | 
					
						
							|  |  |  | ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
 | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2010-12-17 16:01:08 +01:00
										 |  |  | ** In addition, as a special exception, Nokia gives you certain additional | 
					
						
							|  |  |  | ** rights.  These rights are described in the Nokia Qt LGPL Exception | 
					
						
							|  |  |  | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** If you have questions regarding the use of this file, please contact | 
					
						
							|  |  |  | ** Nokia at qt-info@nokia.com. | 
					
						
							| 
									
										
										
										
											2009-08-04 15:38:31 +02:00
										 |  |  | ** | 
					
						
							| 
									
										
										
										
											2009-10-26 12:08:05 +01:00
										 |  |  | **************************************************************************/ | 
					
						
							| 
									
										
										
										
											2009-08-04 15:38:31 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | #ifndef GDBMACROS_P_H
 | 
					
						
							|  |  |  | #define GDBMACROS_P_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <QtCore/QObject>
 | 
					
						
							| 
									
										
										
										
											2009-08-26 08:56:33 +02:00
										 |  |  | #include <QtCore/QPointer>
 | 
					
						
							| 
									
										
										
										
											2009-08-04 15:38:31 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-12 17:34:22 +02:00
										 |  |  | #ifndef QT_BOOTSTRAPPED
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-07 15:28:54 +02:00
										 |  |  | #undef NS
 | 
					
						
							|  |  |  | #ifdef QT_NAMESPACE
 | 
					
						
							|  |  |  | #   define STRINGIFY0(s) #s
 | 
					
						
							|  |  |  | #   define STRINGIFY1(s) STRINGIFY0(s)
 | 
					
						
							|  |  |  | #   define NS STRINGIFY1(QT_NAMESPACE) "::"
 | 
					
						
							|  |  |  | #   define NSX "'" STRINGIFY1(QT_NAMESPACE) "::"
 | 
					
						
							|  |  |  | #   define NSY "'"
 | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | #   define NS ""
 | 
					
						
							| 
									
										
										
										
											2009-10-14 12:59:39 +02:00
										 |  |  | #   define NSX "'"
 | 
					
						
							|  |  |  | #   define NSY "'"
 | 
					
						
							| 
									
										
										
										
											2009-08-07 15:28:54 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-04 15:38:31 +02:00
										 |  |  | #if defined(QT_BEGIN_NAMESPACE)
 | 
					
						
							|  |  |  | QT_BEGIN_NAMESPACE | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct Sender { QObject *sender; int signal; int ref; }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if QT_VERSION < 0x040600
 | 
					
						
							|  |  |  | struct Connection | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     QObject *receiver; | 
					
						
							|  |  |  |     int method; | 
					
						
							|  |  |  |     uint connectionType : 3; // 0 == auto, 1 == direct, 2 == queued, 4 == blocking
 | 
					
						
							|  |  |  |     QBasicAtomicPointer<int> argumentTypes; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | typedef QList<Connection> ConnectionList; | 
					
						
							|  |  |  | typedef QList<Sender> SenderList; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static inline const Connection &connectionAt(const ConnectionList &l, int i) { return l.at(i); } | 
					
						
							|  |  |  | static inline const QObject *senderAt(const SenderList &l, int i) { return l.at(i).sender; } | 
					
						
							|  |  |  | static inline int signalAt(const SenderList &l, int i) { return l.at(i).signal; } | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | struct Connection | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     QObject *sender; | 
					
						
							|  |  |  |     QObject *receiver; | 
					
						
							|  |  |  |     int method; | 
					
						
							|  |  |  |     uint connectionType : 3; // 0 == auto, 1 == direct, 2 == queued, 4 == blocking
 | 
					
						
							|  |  |  |     QBasicAtomicPointer<int> argumentTypes; | 
					
						
							| 
									
										
										
										
											2009-08-11 10:28:24 +02:00
										 |  |  |     Connection *nextConnectionList; | 
					
						
							| 
									
										
										
										
											2009-08-04 15:38:31 +02:00
										 |  |  |     //senders linked list
 | 
					
						
							|  |  |  |     Connection *next; | 
					
						
							|  |  |  |     Connection **prev; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-11 10:28:24 +02:00
										 |  |  | struct ConnectionList | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     ConnectionList() : first(0), last(0) { } | 
					
						
							|  |  |  |     int size() const | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         int count = 0; | 
					
						
							|  |  |  |         for (Connection *c = first; c != 0; c = c->nextConnectionList) | 
					
						
							|  |  |  |             ++count; | 
					
						
							|  |  |  |         return count; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Connection *first; | 
					
						
							|  |  |  |     Connection *last; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-04 15:38:31 +02:00
										 |  |  | typedef Connection *SenderList; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-11 10:28:24 +02:00
										 |  |  | static inline const Connection &connectionAt(const ConnectionList &l, int i) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     Connection *conn = l.first; | 
					
						
							|  |  |  |     for (int cnt = 0; cnt < i; ++cnt) | 
					
						
							|  |  |  |         conn = conn->nextConnectionList; | 
					
						
							|  |  |  |     return *conn; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2009-08-04 15:38:31 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ObjectPrivate : public QObjectData | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     ObjectPrivate() {} | 
					
						
							|  |  |  |     virtual ~ObjectPrivate() {} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-05 14:05:03 +02:00
										 |  |  | #if QT_VERSION < 0x040600
 | 
					
						
							| 
									
										
										
										
											2009-08-04 15:38:31 +02:00
										 |  |  |     QList<QObject *> pendingChildInsertedEvents; | 
					
						
							|  |  |  |     void *threadData; | 
					
						
							|  |  |  |     void *currentSender; | 
					
						
							|  |  |  |     void *currentChildBeingDeleted; | 
					
						
							|  |  |  |     QList<QPointer<QObject> > eventFilters; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void *extraData; | 
					
						
							|  |  |  |     mutable quint32 connectedSignals; | 
					
						
							|  |  |  |     QString objectName; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void *connectionLists; | 
					
						
							|  |  |  |     SenderList senders; | 
					
						
							|  |  |  |     int *deleteWatch; | 
					
						
							| 
									
										
										
										
											2009-08-05 14:05:03 +02:00
										 |  |  | #else
 | 
					
						
							|  |  |  |     QString objectName; | 
					
						
							|  |  |  |     void *extraData; | 
					
						
							|  |  |  |     void *threadData; | 
					
						
							|  |  |  |     void *connectionLists; | 
					
						
							|  |  |  |     SenderList senders; | 
					
						
							|  |  |  |     void *currentSender; | 
					
						
							|  |  |  |     mutable quint32 connectedSignals[2]; | 
					
						
							|  |  |  |     QList<QObject *> pendingChildInsertedEvents; | 
					
						
							|  |  |  |     QList<QPointer<QObject> > eventFilters; | 
					
						
							|  |  |  |     void *currentChildBeingDeleted; | 
					
						
							| 
									
										
										
										
											2009-08-11 10:28:24 +02:00
										 |  |  |     QAtomicPointer<void> sharedRefcount; | 
					
						
							| 
									
										
										
										
											2009-08-05 14:05:03 +02:00
										 |  |  |     int *deleteWatch; | 
					
						
							| 
									
										
										
										
											2009-08-04 15:38:31 +02:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-12 17:34:22 +02:00
										 |  |  | #endif // QT_BOOTSTRAPPED
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-04 15:38:31 +02:00
										 |  |  | #if defined(QT_BEGIN_NAMESPACE)
 | 
					
						
							|  |  |  | QT_END_NAMESPACE | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif // GDBMACROS_P_H
 |