#ifndef PACKED_INT_ARRAY_H #define PACKED_INT_ARRAY_H #include class PackedIntArray { public: typedef uint_fast8_t Unit; PackedIntArray( Unit iBitWidth ); PackedIntArray( Unit iBitWidth, int iCapacity ); virtual ~PackedIntArray(); void append( Unit i ); Unit operator[]( int idx ) const { return get( idx ); } Unit get( int idx ) const; Unit set( int idx, Unit i ); int getSize() const { return iCount; } Bu::String toBitString() const; Bu::String toString() const; private: void checkCapacity(); private: typedef uint_fast32_t Store; Unit iBitWidth; Store *aData; int iCapacity; int iCount; int iMaxSpan; Unit uMask; }; #endif