UCommon
|
A class to access bit fields in external bitmaps. More...
#include <bitmap.h>
Public Types | |
enum | bus_t { BMALLOC, B8, B16, B32, B64, BMIN = BMALLOC, BMAX = B64 } |
Specify data word size to use in accessing a bitmap. More... | |
Public Member Functions | |
bitmap (void *addr, size_t length, bus_t size=B8) | |
Create an object to reference the specified bitmap. More... | |
bitmap (size_t length) | |
Create a bitmap to manipulate locally. More... | |
void | clear (void) |
Clear (zero) all the bits in the bitmap. | |
bool | get (size_t offset) const |
Get the value of a "bit" in the bitmap. More... | |
void | set (size_t offset, bool value) |
Set an individual bit in the bitmask. More... | |
~bitmap () | |
Destroy bitmap manipulation object. More... | |
Protected Member Functions | |
unsigned | memsize (void) const |
Protected Attributes | |
addr_t | addr |
bus_t | bus |
size_t | size |
A class to access bit fields in external bitmaps.
The actual bitmap this object manipulates may not be stored in the object. Bitmaps may be referenced on special memory mapped or i/o bus based devices or other structures that have varying data word sizes which may differ from the default cpu bus size. The bitmap class can be set to the preferred memory bus size of the specific external bitmap being used. Bitmap size may also be relevant when accessing individual bits in memory mapped device registers where performing reference and manipulations may change the state of the device and hence must be aligned with the device register being effected.
This class offers only the most basic bit manipulations, getting and setting individual bits in the bitmap. More advanced bit manipulations and other operations can be created in derived classes.
Create an object to reference the specified bitmap.
addr | of the bitmap in mapped memory. |
length | of the bitmap being accessed in bits. |
size | of the memory bus or manipulation to use. |
ucommon::bitmap::bitmap | ( | size_t | length) |
Create a bitmap to manipulate locally.
This bitmap is created as part of the object itself, and uses the BMALLOC bus mode.
length | of bitmap to create in bits. |
ucommon::bitmap::~bitmap | ( | ) |
Destroy bitmap manipulation object.
If a bitmap was locally created with the alternate constructor, that bitmap will also be removed from memory.
bool ucommon::bitmap::get | ( | size_t | offset) | const |
Get the value of a "bit" in the bitmap.
offset | to bit in map to get. |
void ucommon::bitmap::set | ( | size_t | offset, |
bool | value | ||
) |
Set an individual bit in the bitmask.
offset | to bit in map to change. |
value | to change specified bit to. |