wget2  2.0.0
Bitmap management functions

Data Structures

struct  wget_bitmap_st
 

Macros

#define bitmap_type   uint64_t
 
#define bitmap_bits   (sizeof(bitmap_type) * 8)
 
#define bitmap_shift   6
 
#define map(n)   (((wget_bitmap *)b)->map[(n) >> bitmap_shift])
 
#define bit(n)   (((bitmap_type) 1) << ((n) & (bitmap_bits - 1)))
 

Functions

void wget_bitmap_set (wget_bitmap *b, unsigned n)
 
void wget_bitmap_clear (wget_bitmap *b, unsigned n)
 
bool wget_bitmap_get (const wget_bitmap *b, unsigned n)
 
int wget_bitmap_init (wget_bitmap **b, unsigned bits)
 
void wget_bitmap_free (wget_bitmap **b)
 

Detailed Description

Bitmap (bit array) implementation.

This is useful when you need a bitmap with more than 64 bits. Up to 64 bits you can use the C99 uint64_t as a standard C bitfield.

As a usage example, Wget2 uses bitmaps for options with lists of HTTP status codes, which have values of 100-699.

Function Documentation

◆ wget_bitmap_set()

void wget_bitmap_set ( wget_bitmap b,
unsigned  n 
)
Parameters
bBitmap to act on
nNumber of the bit to set (0-...)

Set the bit n in the bitmap b.

◆ wget_bitmap_clear()

void wget_bitmap_clear ( wget_bitmap b,
unsigned  n 
)
Parameters
bBitmap to act on
nNumber of the bit to clear (0-...)

Clear the bit n in the bitmap b.

◆ wget_bitmap_get()

bool wget_bitmap_get ( const wget_bitmap b,
unsigned  n 
)
Parameters
[in]bBitmap to read from
[in]nNumber of the bit of interest (0-...)
Returns
0 if bit n is cleared or if n is out of range 1 if bit is set

Returns whether the bit n is set or not.

◆ wget_bitmap_init()

int wget_bitmap_init ( wget_bitmap **  b,
unsigned  bits 
)
Parameters
[out]bPointer to the allocated bitmap
[in]bitsNumber of bits
Returns
A wget_error value

Allocates a bitmap with a capacity of bits. It must be freed by wget_bitmap_free() after usage.

◆ wget_bitmap_free()

void wget_bitmap_free ( wget_bitmap **  b)
Parameters
[in]bPointer to bitmap to free

Frees and clears the bitmap pointed to by b.