mirror of https://gerrit.osmocom.org/libosmocore
bitvec: Add bitvec_tailroom_bits() function
This is similar to msgb_tailroom(): It returns the amount of space left at the end of the bit vector (compared to the current cursor). The function returns the number of bits left in the bitvec. Change-Id: I8980a6b6d1973b67a2d9ad411c878d956fb428d1
This commit is contained in:
parent
ae7966d145
commit
b0708d3e76
|
@ -93,4 +93,10 @@ static inline unsigned int bitvec_used_bytes(const struct bitvec *bv)
|
|||
return bytes;
|
||||
}
|
||||
|
||||
/*! Return the tailroom in number of unused bits remaining in the bit-vector */
|
||||
static inline unsigned int bitvec_tailroom_bits(const struct bitvec *bv)
|
||||
{
|
||||
return bv->data_len*8 - bv->cur_bit;
|
||||
}
|
||||
|
||||
/*! @} */
|
||||
|
|
|
@ -204,6 +204,24 @@ static void test_used_bytes()
|
|||
}
|
||||
}
|
||||
|
||||
static void test_tailroom()
|
||||
{
|
||||
struct bitvec b;
|
||||
uint8_t d[32];
|
||||
unsigned int i;
|
||||
|
||||
b.data = d;
|
||||
b.data_len = sizeof(d);
|
||||
bitvec_zero(&b);
|
||||
|
||||
OSMO_ASSERT(bitvec_tailroom_bits(&b) == sizeof(d)*8);
|
||||
|
||||
for (i = 0; i < 8*sizeof(d); i++) {
|
||||
bitvec_set_bit(&b, 1);
|
||||
OSMO_ASSERT(bitvec_tailroom_bits(&b) == sizeof(d)*8-(i+1));
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
struct bitvec bv;
|
||||
|
@ -311,6 +329,7 @@ int main(int argc, char **argv)
|
|||
|
||||
printf("\nbitvec bytes used.\n");
|
||||
test_used_bytes();
|
||||
test_tailroom();
|
||||
|
||||
printf("\nbitvec ok.\n");
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue