qbitarray.h

来自「Trolltech公司发布的图形界面操作系统。可在qt-embedded-2.3」· C头文件 代码 · 共 165 行

H
165
字号
/************************************************************************ Copyright (C) 2000-2005 Trolltech AS.  All rights reserved.**** This file is part of the Qtopia Environment.** ** This program is free software; you can redistribute it and/or modify it** under the terms of the GNU General Public License as published by the** Free Software Foundation; either version 2 of the License, or (at your** option) any later version.** ** A copy of the GNU GPL license version 2 is included in this package as ** LICENSE.GPL.**** This program is distributed in the hope that it will be useful, but** WITHOUT ANY WARRANTY; without even the implied warranty of** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ** See the GNU General Public License for more details.**** In addition, as a special exception Trolltech gives permission to link** the code of this program with Qtopia applications copyrighted, developed** and distributed by Trolltech under the terms of the Qtopia Personal Use** License Agreement. You must comply with the GNU General Public License** in all respects for all of the code used other than the applications** licensed under the Qtopia Personal Use License Agreement. If you modify** this file, you may extend this exception to your version of the file,** but you are not obligated to do so. If you do not wish to do so, delete** this exception statement from your version.** ** 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 + =
减小字号Ctrl + -
显示快捷键?