diff options
| author | Mike Buland <mike@xagasoft.com> | 2013-04-15 15:28:12 -0600 |
|---|---|---|
| committer | Mike Buland <mike@xagasoft.com> | 2013-04-15 15:28:12 -0600 |
| commit | f34eb76357fdfc314d6451fd11a2e4d6fcfce434 (patch) | |
| tree | d4769ae51a1c703b0e55af0ef38a31991f9f7c3a /src/packedintarray.h | |
| download | clic-f34eb76357fdfc314d6451fd11a2e4d6fcfce434.tar.gz clic-f34eb76357fdfc314d6451fd11a2e4d6fcfce434.tar.bz2 clic-f34eb76357fdfc314d6451fd11a2e4d6fcfce434.tar.xz clic-f34eb76357fdfc314d6451fd11a2e4d6fcfce434.zip | |
Initial checkin.
This project will most likely just be stuck into libbu++, but I didn't
want to deal with building it all in windows.
Diffstat (limited to '')
| -rw-r--r-- | src/packedintarray.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/packedintarray.h b/src/packedintarray.h new file mode 100644 index 0000000..953492b --- /dev/null +++ b/src/packedintarray.h | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | #ifndef PACKED_INT_ARRAY_H | ||
| 2 | #define PACKED_INT_ARRAY_H | ||
| 3 | |||
| 4 | #include <bu/string.h> | ||
| 5 | |||
| 6 | class PackedIntArray | ||
| 7 | { | ||
| 8 | public: | ||
| 9 | typedef uint_fast8_t Unit; | ||
| 10 | PackedIntArray( Unit iBitWidth ); | ||
| 11 | PackedIntArray( Unit iBitWidth, int iCapacity ); | ||
| 12 | virtual ~PackedIntArray(); | ||
| 13 | |||
| 14 | void append( Unit i ); | ||
| 15 | Unit operator[]( int idx ) const { return get( idx ); } | ||
| 16 | Unit get( int idx ) const; | ||
| 17 | Unit set( int idx, Unit i ); | ||
| 18 | int getSize() const { return iCount; } | ||
| 19 | |||
| 20 | Bu::String toBitString() const; | ||
| 21 | Bu::String toString() const; | ||
| 22 | |||
| 23 | private: | ||
| 24 | void checkCapacity(); | ||
| 25 | |||
| 26 | private: | ||
| 27 | typedef uint_fast32_t Store; | ||
| 28 | Unit iBitWidth; | ||
| 29 | Store *aData; | ||
| 30 | int iCapacity; | ||
| 31 | int iCount; | ||
| 32 | int iMaxSpan; | ||
| 33 | Unit uMask; | ||
| 34 | }; | ||
| 35 | |||
| 36 | #endif | ||
