123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- /**
- * \file bitarray.h
- *
- * \brief This module defines interfaces to efficiently process
- * an array of booleans represented as bits in an array of 32-bit integers.
- */
- /*
- * Copyright (C) 2017. Mindtree Limited.
- * All rights reserved.
- */
- #ifndef _H_BITARRAY_
- #define _H_BITARRAY_
- /* --------------------------------------------- Header File Inclusion */
- #include "EM_os.h"
- /* --------------------------------------------- Global Definitions */
- /** Size of a single block in bitarray data structure */
- #define BITARRAY_BLOCK_SIZE 32u
- /** Number of blocks required to store a given number of bits */
- #define BITARRAY_NUM_BLOCKS(bit_count) \
- (((bit_count) + (BITARRAY_BLOCK_SIZE - 1)) / (BITARRAY_BLOCK_SIZE))
- /* --------------------------------------------- Structures/Data Types */
- /* --------------------------------------------- Macros */
- /* --------------------------------------------- API Declarations */
- #ifdef __cplusplus
- extern "C" {
- #endif
- /**
- * \brief Set boolean value of a specific bit position
- *
- * \par Description
- * This routine sets the boolean value of a specific bit position in a given bitarray.
- *
- * \param [in] bitarray The bitarray in which the bit position to be set.
- * \param [in] bit_position The bit position to be set.
- */
- void bitarray_set_bit
- (
- /* IN */ UINT32 * bitarray,
- /* IN */ UINT32 bit_position
- );
- /**
- * \brief Get boolean value of a specific bit position
- *
- * \par Description
- * This routine returns the boolean value of a specific bit position in a given bitarray.
- *
- * \param [in] bitarray The bitarray from which the bit position to be fetched.
- * \param [in] bit_position The bit position to be fetched.
- *
- * \return Boolean value 1 if bit is set, otherwise 0
- */
- UINT8 bitarray_get_bit
- (
- /* IN */ UINT32 * bitarray,
- /* IN */ UINT32 bit_position
- );
- /**
- * \brief Reset/clear boolean value of a specific bit position
- *
- * \par Description
- * This routine resets/clear the boolean value of a specific bit position in a given bitarray.
- *
- * \param [in] bitarray The bitarray in which the bit position to be reset.
- * \param [in] bit_position The bit position to be reset.
- */
- void bitarray_reset_bit
- (
- /* IN */ UINT32 * bitarray,
- /* IN */ UINT32 bit_position
- );
- /**
- * \brief Set boolean value of all bits
- *
- * \par Description
- * This routine sets the boolean value of all bits in a given bitarray.
- *
- * \param [in] bitarray The bitarray to be set.
- * \param [in] bit_count Number of bits in the bitarray.
- */
- void bitarray_set_all
- (
- /* IN */ UINT32 * bitarray,
- /* IN */ UINT32 bit_count
- );
- /**
- * \brief Reset/clear boolean value of all bits
- *
- * \par Description
- * This routine resets/clear the boolean value of all bits in a given bitarray.
- *
- * \param [in] bitarray The bitarray to be reset.
- * \param [in] bit_count Number of bits in the bitarray.
- */
- void bitarray_reset_all
- (
- /* IN */ UINT32 * bitarray,
- /* IN */ UINT32 bit_count
- );
- /**
- * \brief To check if all bits are set
- *
- * \par Description
- * This routine checks if all bits in a given bitarray are set.
- *
- * \param [in] bitarray The bitarray to be checked.
- * \param [in] bit_count Number of bits in the bitarray.
- *
- * \return Boolean value 1 if all bits are set, otherwise 0
- */
- UINT8 bitarray_is_all_set
- (
- /* IN */ UINT32 * bitarray,
- /* IN */ UINT32 bit_count
- );
- /**
- * \brief To check if all bits are reset/clear
- *
- * \par Description
- * This routine checks if all bits in a given bitarray are reset/clear.
- *
- * \param [in] bitarray The bitarray to be checked.
- * \param [in] bit_count Number of bits in the bitarray.
- *
- * \return Boolean value 1 if all bits are reset/clear, otherwise 0
- */
- UINT8 bitarray_is_all_reset
- (
- /* IN */ UINT32 * bitarray,
- /* IN */ UINT32 bit_count
- );
- /**
- * \brief Get the index of lowest bit that is set
- *
- * \par Description
- * This routine returns the index of the lowest bit set in a given bitarray.
- *
- * \param [in] bitarray The bitarray to be checked.
- * \param [in] bit_count Number of bits in the bitarray.
- * \param [in] start_index Index in the bitarray from where to start looking for.
- *
- * \return Index of the lowest bit that is set from the given start_index.
- * Return start_index itself, if no further bits are set.
- */
- UINT32 bitarray_get_lowest_bit_set
- (
- /* IN */ UINT32 * bitarray,
- /* IN */ UINT32 bit_count,
- /* IN */ UINT32 start_index
- );
- /**
- * \brief Get the index of highest bit that is set
- *
- * \par Description
- * This routine returns the index of the highest bit set in a given bitarray.
- *
- * \param [in] bitarray The bitarray to be checked.
- * \param [in] bit_count Number of bits in the bitarray.
- * \param [in] start_index Index in the bitarray from where to start looking for.
- *
- * \return Index of the highest bit that is set from the given start_index.
- * Return start_index itself, if no further bits are set.
- */
- UINT32 bitarray_get_highest_bit_set
- (
- /* IN */ UINT32 * bitarray,
- /* IN */ UINT32 bit_count,
- /* IN */ UINT32 start_index
- );
- #ifdef __cplusplus
- };
- #endif
- #endif /* _H_BITARRAY_ */
|