virbitmap: Allow NULL bitmap in functions returning index of a set/clear bit

virBitmapNextSetBit/virBitmapLastSetBit/virBitmapNextClearBit can be
used for iteration of a bitmap. Allow NULL bitmap so that iteration of a
bitmap can be simplified in certain cases.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Peter Krempa 2022-11-09 16:54:56 +01:00
parent d9e4075d4e
commit 72e3100e82
2 changed files with 12 additions and 6 deletions

View File

@ -824,6 +824,9 @@ virBitmapNextSetBit(virBitmap *bitmap,
size_t nb; size_t nb;
unsigned long bits; unsigned long bits;
if (!bitmap)
return -1;
if (pos < 0) if (pos < 0)
pos = -1; pos = -1;
@ -863,6 +866,9 @@ virBitmapLastSetBit(virBitmap *bitmap)
ssize_t sz; ssize_t sz;
unsigned long bits; unsigned long bits;
if (!bitmap)
return -1;
/* If bitmap is empty then there is no set bit */ /* If bitmap is empty then there is no set bit */
if (bitmap->map_len == 0) if (bitmap->map_len == 0)
return -1; return -1;
@ -916,6 +922,9 @@ virBitmapNextClearBit(virBitmap *bitmap,
size_t nb; size_t nb;
unsigned long bits; unsigned long bits;
if (!bitmap)
return -1;
if (pos < 0) if (pos < 0)
pos = -1; pos = -1;

View File

@ -111,14 +111,11 @@ bool virBitmapIsAllSet(virBitmap *bitmap)
bool virBitmapIsAllClear(virBitmap *bitmap) bool virBitmapIsAllClear(virBitmap *bitmap)
ATTRIBUTE_NONNULL(1); ATTRIBUTE_NONNULL(1);
ssize_t virBitmapNextSetBit(virBitmap *bitmap, ssize_t pos) ssize_t virBitmapNextSetBit(virBitmap *bitmap, ssize_t pos);
ATTRIBUTE_NONNULL(1);
ssize_t virBitmapLastSetBit(virBitmap *bitmap) ssize_t virBitmapLastSetBit(virBitmap *bitmap);
ATTRIBUTE_NONNULL(1);
ssize_t virBitmapNextClearBit(virBitmap *bitmap, ssize_t pos) ssize_t virBitmapNextClearBit(virBitmap *bitmap, ssize_t pos);
ATTRIBUTE_NONNULL(1);
size_t virBitmapCountBits(virBitmap *bitmap) size_t virBitmapCountBits(virBitmap *bitmap)
ATTRIBUTE_NONNULL(1); ATTRIBUTE_NONNULL(1);