qgarray.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 **
4 ** Definition of QGArray 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 QGARRAY_H
39 #define QGARRAY_H
40 
41 #ifndef QT_H
42 #include "qshared.h"
43 #endif // QT_H
44 
45 
46 class Q_EXPORT QGArray // generic array
47 {
48 friend class QBuffer;
49 public:
50  //### DO NOT USE THIS. IT IS PUBLIC BUT DO NOT USE IT IN NEW CODE.
51  struct array_data : public QShared { // shared array
52  array_data() { data=0; len=0; }
53  char *data; // actual array data
55  };
56  QGArray();
57 protected:
58  QGArray( int, int ); // dummy; does not alloc
59  QGArray( int size ); // allocate 'size' bytes
60  QGArray( const QGArray &a ); // shallow copy
61  virtual ~QGArray();
62 
63  QGArray &operator=( const QGArray &a ) { return assign( a ); }
64 
65  virtual void detach() { duplicate(*this); }
66 
67  char *data() const { return shd->data; }
68  uint nrefs() const { return shd->count; }
69  uint size() const { return shd->len; }
70  bool isEqual( const QGArray &a ) const;
71 
72  bool resize( uint newsize );
73 
74  bool fill( const char *d, int len, uint sz );
75 
76  QGArray &assign( const QGArray &a );
77  QGArray &assign( const char *d, uint len );
78  QGArray &duplicate( const QGArray &a );
79  QGArray &duplicate( const char *d, uint len );
80  void store( const char *d, uint len );
81 
82  array_data *sharedBlock() const { return shd; }
83  void setSharedBlock( array_data *p ) { shd=(array_data*)p; }
84 
85  QGArray &setRawData( const char *d, uint len );
86  void resetRawData( const char *d, uint len );
87 
88  int find( const char *d, uint index, uint sz ) const;
89  int contains( const char *d, uint sz ) const;
90 
91  void sort( uint sz );
92  int bsearch( const char *d, uint sz ) const;
93 
94  char *at( uint index ) const;
95 
96  bool setExpand( uint index, const char *d, uint sz );
97 
98 protected:
99  virtual array_data *newData();
100  virtual void deleteData( array_data *p );
101 
102 private:
103  static void msg_index( uint );
105 };
106 
107 
108 inline char *QGArray::at( uint index ) const
109 {
110 #if defined(CHECK_RANGE)
111  if ( index >= size() ) {
112  msg_index( index );
113  index = 0;
114  }
115 #endif
116  return &shd->data[index];
117 }
118 
119 
120 #endif // QGARRAY_H
bool isEqual(float x1, float x2)
uint nrefs() const
Definition: qgarray.h:68
char * data() const
Definition: qgarray.h:67
array_data * shd
Definition: qgarray.h:104
The QBuffer class is an I/O device that operates on a QByteArray.
Definition: qbuffer.h:47
void resize(Vector< T > &vec1, Index n1, const V &val)
decltype(auto) constexpr size(T &&obj)
ADL-aware version of std::size.
Definition: StdUtils.h:92
virtual void detach()
Definition: qgarray.h:65
const double a
char * at(uint index) const
Definition: qgarray.h:108
The QGArray class is an internal class for implementing the QArray class.
Definition: qgarray.h:46
p
Definition: test.py:223
uint size() const
Definition: qgarray.h:69
void setSharedBlock(array_data *p)
Definition: qgarray.h:83
array_data * sharedBlock() const
Definition: qgarray.h:82
def fill(s)
Definition: translator.py:93
The QShared struct is internally used for implementing shared classes.
Definition: qshared.h:46
unsigned uint
Definition: qglobal.h:351
QGArray & operator=(const QGArray &a)
Definition: qgarray.h:63
#define Q_EXPORT
Definition: qglobal.h:468