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