wget2: Bitmap management functions

| wget2 2.2.1

Loading...
Searching...
No Matches
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)
#define | bit(n)

## 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.

## Macro Definition Documentation

## ◆ map

#define map | ( |  | n | ) |

Value:
(((wget_bitmap *)b)->map[(n) >> bitmap_shift])

## ◆ bit

#define bit | ( |  | n | ) |

Value:
(((bitmap_type) 1) << ((n) & (bitmap_bits - 1)))

## Function Documentation

## ◆ wget_bitmap_set()

void wget_bitmap_set | ( | wget_bitmap * | b,
|  | unsigned | n )

Parameters

  b | Bitmap to act on
  n | Number 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

  b | Bitmap to act on
  n | Number 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] | b | Bitmap to read from
  [in] | n | Number 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] | b | Pointer to the allocated bitmap
  [in] | bits | Number 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] | b | Pointer to bitmap to free

Frees and clears the bitmap pointed to by `b`.