mirror of https://github.com/OpenTTD/OpenTTD
Codechange: Add AssignBit function to assign the value of a single bit
parent
81b684aa42
commit
9422a09e6b
|
@ -183,6 +183,25 @@ constexpr T ToggleBit(T &x, const uint8_t y)
|
||||||
return x = (T)(x ^ ((T)1U << y));
|
return x = (T)(x ^ ((T)1U << y));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Assigns a bit in a variable.
|
||||||
|
*
|
||||||
|
* This function assigns a single bit in a variable. The variable is
|
||||||
|
* changed and the value is also returned. Parameter y defines the bit
|
||||||
|
* to assign and starts at the LSB with 0.
|
||||||
|
*
|
||||||
|
* @param x The variable to assign the bit
|
||||||
|
* @param y The bit position to assign
|
||||||
|
* @param value The new bit value
|
||||||
|
* @pre y < sizeof(T) * 8
|
||||||
|
* @return The new value of the old value with the bit assigned
|
||||||
|
*/
|
||||||
|
template <typename T>
|
||||||
|
constexpr T AssignBit(T &x, const uint8_t y, bool value)
|
||||||
|
{
|
||||||
|
return SB<T>(x, y, 1, value ? 1 : 0);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Search the first set bit in a value.
|
* Search the first set bit in a value.
|
||||||
* When no bit is set, it returns 0.
|
* When no bit is set, it returns 0.
|
||||||
|
|
Loading…
Reference in New Issue