-rw-r--r-- | qmake/include/qmemarray.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/qmake/include/qmemarray.h b/qmake/include/qmemarray.h index a5baf99..267670d 100644 --- a/qmake/include/qmemarray.h +++ b/qmake/include/qmemarray.h | |||
@@ -1,122 +1,129 @@ | |||
1 | /**************************************************************************** | 1 | /**************************************************************************** |
2 | ** $Id$ | 2 | ** $Id$ |
3 | ** | 3 | ** |
4 | ** Definition of QMemArray template/macro class | 4 | ** Definition of QMemArray template/macro class |
5 | ** | 5 | ** |
6 | ** Created : 930906 | 6 | ** Created : 930906 |
7 | ** | 7 | ** |
8 | ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. | 8 | ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. |
9 | ** | 9 | ** |
10 | ** This file is part of the tools module of the Qt GUI Toolkit. | 10 | ** This file is part of the tools module of the Qt GUI Toolkit. |
11 | ** | 11 | ** |
12 | ** This file may be distributed under the terms of the Q Public License | 12 | ** This file may be distributed under the terms of the Q Public License |
13 | ** as defined by Trolltech AS of Norway and appearing in the file | 13 | ** as defined by Trolltech AS of Norway and appearing in the file |
14 | ** LICENSE.QPL included in the packaging of this file. | 14 | ** LICENSE.QPL included in the packaging of this file. |
15 | ** | 15 | ** |
16 | ** This file may be distributed and/or modified under the terms of the | 16 | ** This file may be distributed and/or modified under the terms of the |
17 | ** GNU General Public License version 2 as published by the Free Software | 17 | ** GNU General Public License version 2 as published by the Free Software |
18 | ** Foundation and appearing in the file LICENSE.GPL included in the | 18 | ** Foundation and appearing in the file LICENSE.GPL included in the |
19 | ** packaging of this file. | 19 | ** packaging of this file. |
20 | ** | 20 | ** |
21 | ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition | 21 | ** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition |
22 | ** licenses may use this file in accordance with the Qt Commercial License | 22 | ** licenses may use this file in accordance with the Qt Commercial License |
23 | ** Agreement provided with the Software. | 23 | ** Agreement provided with the Software. |
24 | ** | 24 | ** |
25 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 25 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
26 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 26 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
27 | ** | 27 | ** |
28 | ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for | 28 | ** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for |
29 | ** information about Qt Commercial License Agreements. | 29 | ** information about Qt Commercial License Agreements. |
30 | ** See http://www.trolltech.com/qpl/ for QPL licensing information. | 30 | ** See http://www.trolltech.com/qpl/ for QPL licensing information. |
31 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. | 31 | ** See http://www.trolltech.com/gpl/ for GPL licensing information. |
32 | ** | 32 | ** |
33 | ** Contact info@trolltech.com if any conditions of this licensing are | 33 | ** Contact info@trolltech.com if any conditions of this licensing are |
34 | ** not clear to you. | 34 | ** not clear to you. |
35 | ** | 35 | ** |
36 | **********************************************************************/ | 36 | **********************************************************************/ |
37 | 37 | ||
38 | #ifndef QMEMARRAY_H | 38 | #ifndef QMEMARRAY_H |
39 | #define QMEMARRAY_H | 39 | #define QMEMARRAY_H |
40 | 40 | ||
41 | #ifndef QT_H | 41 | #ifndef QT_H |
42 | #include "qgarray.h" | 42 | #include "qgarray.h" |
43 | #endif // QT_H | 43 | #endif // QT_H |
44 | 44 | ||
45 | 45 | ||
46 | template<class type> | 46 | template<class type> |
47 | class QMemArray : public QGArray | 47 | class QMemArray : public QGArray |
48 | { | 48 | { |
49 | public: | 49 | public: |
50 | typedef type* Iterator; | 50 | typedef type* Iterator; |
51 | typedef const type* ConstIterator; | 51 | typedef const type* ConstIterator; |
52 | typedef type ValueType; | 52 | typedef type ValueType; |
53 | 53 | ||
54 | protected: | 54 | protected: |
55 | QMemArray( int, int ) : QGArray( 0, 0 ) {} | 55 | QMemArray( int, int ) : QGArray( 0, 0 ) {} |
56 | 56 | ||
57 | public: | 57 | public: |
58 | QMemArray() {} | 58 | QMemArray() {} |
59 | QMemArray( int size ) : QGArray(size*sizeof(type)) {} | 59 | QMemArray( int size ) : QGArray(size*sizeof(type)) {} |
60 | QMemArray( const QMemArray<type> &a ) : QGArray(a) {} | 60 | QMemArray( const QMemArray<type> &a ) : QGArray(a) {} |
61 | ~QMemArray() {} | 61 | ~QMemArray() {} |
62 | QMemArray<type> &operator=(const QMemArray<type> &a) | 62 | QMemArray<type> &operator=(const QMemArray<type> &a) |
63 | { return (QMemArray<type>&)QGArray::assign(a); } | 63 | { return (QMemArray<type>&)QGArray::assign(a); } |
64 | type *data() const{ return (type *)QGArray::data(); } | 64 | type *data() const{ return (type *)QGArray::data(); } |
65 | uint nrefs() const{ return QGArray::nrefs(); } | 65 | uint nrefs() const{ return QGArray::nrefs(); } |
66 | uint size() const{ return QGArray::size()/sizeof(type); } | 66 | uint size() const{ return QGArray::size()/sizeof(type); } |
67 | uint count() const{ return size(); } | 67 | uint count() const{ return size(); } |
68 | bool isEmpty() const{ return QGArray::size() == 0; } | 68 | bool isEmpty() const{ return QGArray::size() == 0; } |
69 | bool isNull() const{ return QGArray::data() == 0; } | 69 | bool isNull() const{ return QGArray::data() == 0; } |
70 | bool resize( uint size ){ return QGArray::resize(size*sizeof(type)); } | 70 | bool resize( uint size ){ return QGArray::resize(size*sizeof(type)); } |
71 | bool resize( uint size, Optimization optim ) { return QGArray::resize(size*sizeof(type), optim); } | ||
71 | bool truncate( uint pos ){ return QGArray::resize(pos*sizeof(type)); } | 72 | bool truncate( uint pos ){ return QGArray::resize(pos*sizeof(type)); } |
72 | bool fill( const type &d, int size = -1 ) | 73 | bool fill( const type &d, int size = -1 ) |
73 | { return QGArray::fill((char*)&d,size,sizeof(type) ); } | 74 | { return QGArray::fill((char*)&d,size,sizeof(type) ); } |
74 | void detach() { QGArray::detach(); } | 75 | void detach() { QGArray::detach(); } |
75 | QMemArray<type> copy() const | 76 | QMemArray<type> copy() const |
76 | { QMemArray<type> tmp; return tmp.duplicate(*this); } | 77 | { QMemArray<type> tmp; return tmp.duplicate(*this); } |
77 | QMemArray<type>& assign( const QMemArray<type>& a ) | 78 | QMemArray<type>& assign( const QMemArray<type>& a ) |
78 | { return (QMemArray<type>&)QGArray::assign(a); } | 79 | { return (QMemArray<type>&)QGArray::assign(a); } |
79 | QMemArray<type>& assign( const type *a, uint n ) | 80 | QMemArray<type>& assign( const type *a, uint n ) |
80 | { return (QMemArray<type>&)QGArray::assign((char*)a,n*sizeof(type)); } | 81 | { return (QMemArray<type>&)QGArray::assign((char*)a,n*sizeof(type)); } |
81 | QMemArray<type>& duplicate( const QMemArray<type>& a ) | 82 | QMemArray<type>& duplicate( const QMemArray<type>& a ) |
82 | { return (QMemArray<type>&)QGArray::duplicate(a); } | 83 | { return (QMemArray<type>&)QGArray::duplicate(a); } |
83 | QMemArray<type>& duplicate( const type *a, uint n ) | 84 | QMemArray<type>& duplicate( const type *a, uint n ) |
84 | { return (QMemArray<type>&)QGArray::duplicate((char*)a,n*sizeof(type)); } | 85 | { return (QMemArray<type>&)QGArray::duplicate((char*)a,n*sizeof(type)); } |
85 | QMemArray<type>& setRawData( const type *a, uint n ) | 86 | QMemArray<type>& setRawData( const type *a, uint n ) |
86 | { return (QMemArray<type>&)QGArray::setRawData((char*)a, | 87 | { return (QMemArray<type>&)QGArray::setRawData((char*)a, |
87 | n*sizeof(type)); } | 88 | n*sizeof(type)); } |
88 | void resetRawData( const type *a, uint n ) | 89 | void resetRawData( const type *a, uint n ) |
89 | { QGArray::resetRawData((char*)a,n*sizeof(type)); } | 90 | { QGArray::resetRawData((char*)a,n*sizeof(type)); } |
90 | int find( const type &d, uint i=0 ) const | 91 | int find( const type &d, uint i=0 ) const |
91 | { return QGArray::find((char*)&d,i,sizeof(type)); } | 92 | { return QGArray::find((char*)&d,i,sizeof(type)); } |
92 | int contains( const type &d ) const | 93 | int contains( const type &d ) const |
93 | { return QGArray::contains((char*)&d,sizeof(type)); } | 94 | { return QGArray::contains((char*)&d,sizeof(type)); } |
94 | void sort() { QGArray::sort(sizeof(type)); } | 95 | void sort() { QGArray::sort(sizeof(type)); } |
95 | int bsearch( const type &d ) const | 96 | int bsearch( const type &d ) const |
96 | { return QGArray::bsearch((const char*)&d,sizeof(type)); } | 97 | { return QGArray::bsearch((const char*)&d,sizeof(type)); } |
97 | // ### Qt 4.0: maybe provide uint overload as work-around for MSVC bug | 98 | // ### Qt 4.0: maybe provide uint overload as work-around for MSVC bug |
98 | type& operator[]( int i ) const | 99 | type& operator[]( int i ) const |
99 | { return (type &)(*(type *)QGArray::at(i*sizeof(type))); } | 100 | { return (type &)(*(type *)QGArray::at(i*sizeof(type))); } |
100 | type& at( uint i ) const | 101 | type& at( uint i ) const |
101 | { return (type &)(*(type *)QGArray::at(i*sizeof(type))); } | 102 | { return (type &)(*(type *)QGArray::at(i*sizeof(type))); } |
102 | operator const type*() const { return (const type *)QGArray::data(); } | 103 | operator const type*() const { return (const type *)QGArray::data(); } |
103 | bool operator==( const QMemArray<type> &a ) const { return isEqual(a); } | 104 | bool operator==( const QMemArray<type> &a ) const { return isEqual(a); } |
104 | bool operator!=( const QMemArray<type> &a ) const { return !isEqual(a); } | 105 | bool operator!=( const QMemArray<type> &a ) const { return !isEqual(a); } |
105 | Iterator begin() { return data(); } | 106 | Iterator begin() { return data(); } |
106 | Iterator end() { return data() + size(); } | 107 | Iterator end() { return data() + size(); } |
107 | ConstIterator begin() const { return data(); } | 108 | ConstIterator begin() const { return data(); } |
108 | ConstIterator end() const { return data() + size(); } | 109 | ConstIterator end() const { return data() + size(); } |
109 | }; | 110 | }; |
110 | 111 | ||
112 | #ifndef QT_QWINEXPORT | ||
111 | #if defined(Q_TEMPLATEDLL) | 113 | #if defined(Q_TEMPLATEDLL) |
112 | // MOC_SKIP_BEGIN | 114 | // MOC_SKIP_BEGIN |
113 | Q_TEMPLATE_EXTERN template class Q_EXPORT QMemArray<int>; | 115 | Q_TEMPLATE_EXTERN template class Q_EXPORT QMemArray<int>; |
114 | Q_TEMPLATE_EXTERN template class Q_EXPORT QMemArray<bool>; | 116 | Q_TEMPLATE_EXTERN template class Q_EXPORT QMemArray<bool>; |
115 | // MOC_SKIP_END | 117 | // MOC_SKIP_END |
116 | #endif | 118 | #endif |
119 | #endif /* QT_QWINEXPORT */ | ||
117 | 120 | ||
118 | #ifndef QT_NO_COMPAT | 121 | #ifndef QT_NO_COMPAT |
119 | #define QArray QMemArray | 122 | #define QArray QMemArray |
120 | #endif | 123 | #endif |
121 | 124 | ||
125 | #ifdef QT_QWINEXPORT | ||
126 | #define Q_DEFINED_QMEMARRAY | ||
127 | #include <qwinexport.h> | ||
128 | #endif /* QT_QWINEXPORT */ | ||
122 | #endif // QARRAY_H | 129 | #endif // QARRAY_H |