📄 qbitarray.h
字号:
/****************************************************************************** $Id: qt/src/tools/qbitarray.h 2.3.6 edited 2001-01-26 $**** Definition of QBitArray class**** Created : 940118**** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.**** This file is part of the tools module of the Qt GUI Toolkit.**** This file may be distributed under the terms of the Q Public License** as defined by Trolltech AS of Norway and appearing in the file** LICENSE.QPL included in the packaging of this file.**** This file may be distributed and/or modified under the terms of the** GNU General Public License version 2 as published by the Free Software** Foundation and appearing in the file LICENSE.GPL included in the** packaging of this file.**** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition** licenses may use this file in accordance with the Qt Commercial License** Agreement provided with the Software.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.**** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for** information about Qt Commercial License Agreements.** See http://www.trolltech.com/qpl/ for QPL licensing information.** See http://www.trolltech.com/gpl/ for GPL licensing information.**** Contact info@trolltech.com if any conditions of this licensing are** not clear to you.************************************************************************/#ifndef QBITARRAY_H#define QBITARRAY_H#ifndef QT_H#include "qstring.h"#endif // QT_H/***************************************************************************** QBitVal class; a context class for QBitArray::operator[] *****************************************************************************/class QBitArray;class Q_EXPORT QBitVal{private: QBitArray *array; uint index;public: QBitVal( QBitArray *a, uint i ) : array(a), index(i) {} operator int(); QBitVal &operator=( const QBitVal &v ); QBitVal &operator=( bool v );};/***************************************************************************** QBitArray class *****************************************************************************/class Q_EXPORT QBitArray : public QByteArray{public: QBitArray(); QBitArray( uint size ); QBitArray( const QBitArray &a ) : QByteArray( a ) {} QBitArray &operator=( const QBitArray & ); uint size() const; bool resize( uint size ); bool fill( bool v, int size = -1 ); void detach(); QBitArray copy() const; bool testBit( uint index ) const; void setBit( uint index ); void setBit( uint index, bool value ); void clearBit( uint index ); bool toggleBit( uint index ); bool at( uint index ) const; QBitVal operator[]( int index ); bool operator[]( int index ) const; QBitArray &operator&=( const QBitArray & ); QBitArray &operator|=( const QBitArray & ); QBitArray &operator^=( const QBitArray & ); QBitArray operator~() const;protected: struct bitarr_data : public QGArray::array_data { uint nbits; }; array_data *newData() { return new bitarr_data; } void deleteData( array_data *d ) { delete (bitarr_data*)d; }private: void pad0();};inline QBitArray &QBitArray::operator=( const QBitArray &a ){ return (QBitArray&)assign( a ); }inline uint QBitArray::size() const{ return ((bitarr_data*)sharedBlock())->nbits; }inline void QBitArray::setBit( uint index, bool value ){ if ( value ) setBit(index); else clearBit(index); }inline bool QBitArray::at( uint index ) const{ return testBit(index); }inline QBitVal QBitArray::operator[]( int index ){ return QBitVal( (QBitArray*)this, index ); }inline bool QBitArray::operator[]( int index ) const{ return testBit( index ); }/***************************************************************************** Misc. QBitArray operator functions *****************************************************************************/Q_EXPORT QBitArray operator&( const QBitArray &, const QBitArray & );Q_EXPORT QBitArray operator|( const QBitArray &, const QBitArray & );Q_EXPORT QBitArray operator^( const QBitArray &, const QBitArray & );inline QBitVal::operator int(){ return array->testBit( index );}inline QBitVal &QBitVal::operator=( const QBitVal &v ){ array->setBit( index, v.array->testBit(v.index) ); return *this;}inline QBitVal &QBitVal::operator=( bool v ){ array->setBit( index, v ); return *this;}/***************************************************************************** QBitArray stream functions *****************************************************************************/#ifndef QT_NO_DATASTREAMQ_EXPORT QDataStream &operator<<( QDataStream &, const QBitArray & );Q_EXPORT QDataStream &operator>>( QDataStream &, QBitArray & );#endif#endif // QBITARRAY_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -