-rw-r--r-- | qmake/include/qgarray.h | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/qmake/include/qgarray.h b/qmake/include/qgarray.h index 12edea6..40720a6 100644 --- a/qmake/include/qgarray.h +++ b/qmake/include/qgarray.h | |||
@@ -4,118 +4,127 @@ | |||
4 | ** Definition of QGArray class | 4 | ** Definition of QGArray 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 QGARRAY_H | 38 | #ifndef QGARRAY_H |
39 | #define QGARRAY_H | 39 | #define QGARRAY_H |
40 | 40 | ||
41 | #ifndef QT_H | 41 | #ifndef QT_H |
42 | #include "qshared.h" | 42 | #include "qshared.h" |
43 | #endif // QT_H | 43 | #endif // QT_H |
44 | 44 | ||
45 | 45 | ||
46 | class Q_EXPORT QGArray // generic array | 46 | class Q_EXPORT QGArray // generic array |
47 | { | 47 | { |
48 | friend class QBuffer; | 48 | friend class QBuffer; |
49 | public: | 49 | public: |
50 | //### DO NOT USE THIS. IT IS PUBLIC BUT DO NOT USE IT IN NEW CODE. | 50 | //### DO NOT USE THIS. IT IS PUBLIC BUT DO NOT USE IT IN NEW CODE. |
51 | struct array_data : public QShared {// shared array | 51 | struct array_data : public QShared {// shared array |
52 | array_data(){ data=0; len=0; } | 52 | array_data():data(0),len(0) |
53 | #ifdef QT_QGARRAY_SPEED_OPTIM | ||
54 | ,maxl(0) | ||
55 | #endif | ||
56 | {} | ||
53 | char *data; // actual array data | 57 | char *data; // actual array data |
54 | uint len; | 58 | uint len; |
59 | #ifdef QT_QGARRAY_SPEED_OPTIM | ||
60 | uint maxl; | ||
61 | #endif | ||
55 | }; | 62 | }; |
56 | QGArray(); | 63 | QGArray(); |
64 | enum Optimization { MemOptim, SpeedOptim }; | ||
57 | protected: | 65 | protected: |
58 | QGArray( int, int ); // dummy; does not alloc | 66 | QGArray( int, int ); // dummy; does not alloc |
59 | QGArray( int size ); // allocate 'size' bytes | 67 | QGArray( int size ); // allocate 'size' bytes |
60 | QGArray( const QGArray &a ); // shallow copy | 68 | QGArray( const QGArray &a ); // shallow copy |
61 | virtual ~QGArray(); | 69 | virtual ~QGArray(); |
62 | 70 | ||
63 | QGArray &operator=( const QGArray &a ) { return assign( a ); } | 71 | QGArray &operator=( const QGArray &a ) { return assign( a ); } |
64 | 72 | ||
65 | virtual void detach(){ duplicate(*this); } | 73 | virtual void detach(){ duplicate(*this); } |
66 | 74 | ||
67 | // ### Qt 4.0: maybe provide two versions of data(), at(), etc. | 75 | // ### Qt 4.0: maybe provide two versions of data(), at(), etc. |
68 | char *data() const{ return shd->data; } | 76 | char *data() const{ return shd->data; } |
69 | uint nrefs() const{ return shd->count; } | 77 | uint nrefs() const{ return shd->count; } |
70 | uint size() const{ return shd->len; } | 78 | uint size() const{ return shd->len; } |
71 | boolisEqual( const QGArray &a ) const; | 79 | boolisEqual( const QGArray &a ) const; |
72 | 80 | ||
81 | boolresize( uint newsize, Optimization optim ); | ||
73 | boolresize( uint newsize ); | 82 | boolresize( uint newsize ); |
74 | 83 | ||
75 | boolfill( const char *d, int len, uint sz ); | 84 | boolfill( const char *d, int len, uint sz ); |
76 | 85 | ||
77 | QGArray &assign( const QGArray &a ); | 86 | QGArray &assign( const QGArray &a ); |
78 | QGArray &assign( const char *d, uint len ); | 87 | QGArray &assign( const char *d, uint len ); |
79 | QGArray &duplicate( const QGArray &a ); | 88 | QGArray &duplicate( const QGArray &a ); |
80 | QGArray &duplicate( const char *d, uint len ); | 89 | QGArray &duplicate( const char *d, uint len ); |
81 | voidstore( const char *d, uint len ); | 90 | voidstore( const char *d, uint len ); |
82 | 91 | ||
83 | array_data *sharedBlock() const { return shd; } | 92 | array_data *sharedBlock() const { return shd; } |
84 | voidsetSharedBlock( array_data *p ) { shd=(array_data*)p; } | 93 | voidsetSharedBlock( array_data *p ) { shd=(array_data*)p; } |
85 | 94 | ||
86 | QGArray &setRawData( const char *d, uint len ); | 95 | QGArray &setRawData( const char *d, uint len ); |
87 | voidresetRawData( const char *d, uint len ); | 96 | voidresetRawData( const char *d, uint len ); |
88 | 97 | ||
89 | int find( const char *d, uint index, uint sz ) const; | 98 | int find( const char *d, uint index, uint sz ) const; |
90 | int contains( const char *d, uint sz ) const; | 99 | int contains( const char *d, uint sz ) const; |
91 | 100 | ||
92 | voidsort( uint sz ); | 101 | voidsort( uint sz ); |
93 | int bsearch( const char *d, uint sz ) const; | 102 | int bsearch( const char *d, uint sz ) const; |
94 | 103 | ||
95 | char *at( uint index ) const; | 104 | char *at( uint index ) const; |
96 | 105 | ||
97 | boolsetExpand( uint index, const char *d, uint sz ); | 106 | boolsetExpand( uint index, const char *d, uint sz ); |
98 | 107 | ||
99 | protected: | 108 | protected: |
100 | virtual array_data *newData(); | 109 | virtual array_data *newData(); |
101 | virtual void deleteData( array_data *p ); | 110 | virtual void deleteData( array_data *p ); |
102 | 111 | ||
103 | private: | 112 | private: |
104 | static void msg_index( uint ); | 113 | static void msg_index( uint ); |
105 | array_data *shd; | 114 | array_data *shd; |
106 | }; | 115 | }; |
107 | 116 | ||
108 | 117 | ||
109 | inline char *QGArray::at( uint index ) const | 118 | inline char *QGArray::at( uint index ) const |
110 | { | 119 | { |
111 | #if defined(QT_CHECK_RANGE) | 120 | #if defined(QT_CHECK_RANGE) |
112 | if ( index >= size() ) { | 121 | if ( index >= size() ) { |
113 | msg_index( index ); | 122 | msg_index( index ); |
114 | index = 0; | 123 | index = 0; |
115 | } | 124 | } |
116 | #endif | 125 | #endif |
117 | return &shd->data[index]; | 126 | return &shd->data[index]; |
118 | } | 127 | } |
119 | 128 | ||
120 | 129 | ||
121 | #endif // QGARRAY_H | 130 | #endif // QGARRAY_H |