crash.types.bitmap module
*************************

The crash.types.bitmap module provides helpers for iterating and
scanning in-memory bitmaps.

A bitmap is represented as either an array of "unsigned long" or as
"unsigned long *".  Each routine below that accepts a gdb.Value
requires that it be of either type.

crash.types.bitmap.find_first_set_bit(bitmap: Value, size_in_bytes: int = None) -> int

   Return the first set bit in the bitmap

   Parameters:
      * **bitmap** -- The bitmap to scan.

      * **size_in_bytes** -- The size of the bitmap if the type is
        "unsigned long *".

   Returns:
      The position of the first bit that is set, or "0" if all are
      unset

   Return type:
      "int"

   Raises:
      **.InvalidArgumentError** -- The "gdb.Value" is not of     type
      "unsigned long[]" or "unsigned long *".

crash.types.bitmap.find_first_zero_bit(bitmap: Value, size_in_bytes: int = None) -> int

   Return the first unset bit in the bitmap

   Parameters:
      * **bitmap** -- The bitmap to scan.

      * **start** -- The bit number to use as a starting position.  If
        the bit at this position is unset, it will be the first bit
        number yielded.

   Returns:
      The position of the first bit that is unset

   Return type:
      "int"

   Raises:
      **.InvalidArgumentError** -- The "gdb.Value" is not of     type
      "unsigned long[]" or "unsigned long *".

crash.types.bitmap.find_last_set_bit(bitmap: Value, size_in_bytes: int = None) -> int

   Return the last set bit in the bitmap

   Parameters:
      * **bitmap** -- The bitmap to scan.

      * **size_in_bytes** -- The size of the bitmap if the type is
        "unsigned long *".

   Returns:
      The position of the last bit that is set, or "0" if all are
      unset

   Return type:
      "int"

   Raises:
      **.InvalidArgumentError** -- The "gdb.Value" is not     of type
      "unsigned long[]" or "unsigned long *".

crash.types.bitmap.find_next_set_bit(bitmap: Value, start: int, size_in_bytes: int = None) -> int

   Return the next set bit in the bitmap starting at position start,
   inclusive.

   Parameters:
      * **bitmap** -- The bitmap to scan.

      * **start** -- The bit number to use as a starting position.  If
        the bit at this position is unset, it will be the first bit
        number yielded.

      * **size_in_bytes** -- The size of the bitmap if the type is
        "unsigned long *".

   Returns:
      The position of the next bit that is set, or "0" if all are
      unset

   Return type:
      "int"

   Raises:
      **.InvalidArgumentError** -- The "gdb.Value" is not of     type
      "unsigned long[]" or "unsigned long *".

crash.types.bitmap.find_next_zero_bit(bitmap: Value, start: int, size_in_bytes: int = None) -> int

   Return the next unset bit in the bitmap starting at position start,
   inclusive.

   Parameters:
      * **bitmap** -- The bitmap to scan.

      * **start** -- The bit number to use as a starting position.  If
        the bit at this position is unset, it will be the first bit
        number yielded.

      * **size_in_bytes** -- The size of the bitmap if the type is
        "unsigned long *".

   Returns:
      The position of the first bit that is unset or "0" if all are
      set

   Return type:
      "int"

   Raises:
      **.InvalidArgumentError** -- The "gdb.Value" is not of     type
      "unsigned long[]" or "unsigned long *".

crash.types.bitmap.for_each_set_bit(bitmap: Value, size_in_bytes: int = None) -> Iterable[int]

   Yield each set bit in a bitmap

   Parameters:
      * **bitmap** -- The bitmap to iterate.

      * **size_in_bytes** -- The size of the bitmap if the type is
        "unsigned long *".

   Yields:
      "int" -- The position of a bit that is set

   Raises:
      **.InvalidArgumentError** -- The "gdb.Value" is not of     type
      "unsigned long[]" or "unsigned long *".

crash.types.bitmap.test_bit(bitmap: Value, bit: int, size_in_bytes: int = None) -> bool

   Test a bit in a bitmap.  Unlike the "find" family of functions, the
   index starts at 0.

   Parameters:
      * **bitmap** -- The bitmap to use for testing

      * **bit** -- The bit in the bitmap to test, starting at offset 0

      * **size_in_bytes** (*optional**, **default = None*) -- The size
        of the bitmap if a pointer is used.

   Returns:
      Whether the bit is set or not

   Return type:
      "bool"

   Raises:
      **.InvalidArgumentError** -- The "gdb.Value" is not     of type
      "unsigned long[]" or "unsigned long *".
