Skip to content
Permalink
51665236fa
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
26 lines (19 sloc) 1.73 KB
dynamicbitset
=============
Simple C++ dynamic bit array. It is like ```std::bitset``` but its size can be dynamically set. The bits are stored from left-to-right order as if in an array, where the leftmost bit is the ```0```th and the rightmost bit is the ```(n-1)```th bit.
Under the hood, bits are stored in a byte array, and the rightmost ```8-(n%8)``` bits in the rightmost byte remain unused when ```n``` is not a multiple of ```8```.
The code is compiled under both ```MSVC``` and ```GCC```, and tested using Google C++ testing framework (http://code.google.com/p/googletest/).
See the ```ds.dynamicbitset.test.h``` file for usage.
Supported Operations
====================
* You can create a bit-array whose size can be set dynamically set. This is in contrast with ```std::bitset``` for which the size needs to be set in compile-time through template argument.
* You can create of empty (zero-size) bit-array which can be later initialized from any existing bit-array.
* You can get/set any bit. You can also set bits from an integer, where the higher-order bits of the supplied integer are copied to the bit-array.
* You can perform any/all/flip operations on the bit-array.
* You can perform standard bit-by-bit comparison operations between two bit-arrays. Supported comparisons are ```<, <=, >, >=, !=, ==```.
* You can extract a particular byte from the bit array.
* You can convert the bit-array into an ```std::string```, a ```const unsigned char*```, or even an ```int```. The last conversion is possible if the size of the bit-array is less than the number of bits in an ```int```.
* You can print a bit-array through an output stream like ```cout << myBitArray```.
To Do
=====
* Standard bitwise operations between two ```DynamicBitset``` objects.