Orb/Doxygen/qtools/qgarray.h
changeset 0 42188c7ea2d9
equal deleted inserted replaced
-1:000000000000 0:42188c7ea2d9
       
     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
       
    54 	uint  len;
       
    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 );
       
   104     array_data *shd;
       
   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