Remove all the range checking from Bitmap
This commit is contained in:
parent
99d3e85ba5
commit
1daa3df74e
1 changed files with 5 additions and 22 deletions
|
@ -43,39 +43,29 @@ struct Bitmap
|
|||
isSet(usize bit)
|
||||
const
|
||||
{
|
||||
if (isValid(bit)) {
|
||||
return (mBitmap & (1 << bit)) > 0;
|
||||
}
|
||||
return false;
|
||||
return (mBitmap & FieldType(1 << bit)) > 0;
|
||||
}
|
||||
|
||||
/** Set a single bit to 1. */
|
||||
void
|
||||
set(usize bit)
|
||||
{
|
||||
if (isValid(bit)) {
|
||||
mBitmap |= 1 << bit;
|
||||
}
|
||||
mBitmap |= FieldType(1 << bit);
|
||||
}
|
||||
|
||||
/** Set a single bit to zero. */
|
||||
void
|
||||
clear(usize bit)
|
||||
{
|
||||
if (isValid(bit)) {
|
||||
mBitmap &= ~(1 << bit);
|
||||
}
|
||||
mBitmap &= ~FieldType(1 << bit);
|
||||
}
|
||||
|
||||
/** Toggle the state of a single bit. Returns `true` if the bit was set to 1. */
|
||||
bool
|
||||
toggle(usize bit)
|
||||
{
|
||||
if (isValid(bit)) {
|
||||
mBitmap ^= 1 << bit;
|
||||
return isSet(bit);
|
||||
}
|
||||
return false;
|
||||
mBitmap ^= FieldType(1 << bit);
|
||||
return isSet(bit);
|
||||
}
|
||||
|
||||
/** Clear the entire bit field. */
|
||||
|
@ -101,13 +91,6 @@ struct Bitmap
|
|||
|
||||
private:
|
||||
FieldType mBitmap;
|
||||
|
||||
inline bool
|
||||
isValid(usize bit)
|
||||
const
|
||||
{
|
||||
return bit >= 0 && bit < Bitmap::length;
|
||||
}
|
||||
};
|
||||
|
||||
} /* namespace kstd */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue