//--------------------------------------------------------------------------- void kbitarray_clean_bit(t_kbitarray *self, off_t bit_index) { unsigned char mask; /* create a mask to zero out desired bit */ mask = BIT_IN_CHAR(bit_index); mask = ~mask; self->bitarray[BIT_CHAR(bit_index)] &= mask; }
/*************************************************************************** * Function : BitArraySetBit * Description: This function sets the specified bit to 1 in the bit array * passed as a parameter. * Parameters : ba - pointer to bit array * bit - bit to set * Effects : The specified bit in the bit array is set to 1. * Returned : NONE ***************************************************************************/ void BitArraySetBit(bit_array_t *ba, unsigned int bit) { if (ba == NULL) { return; /* no bit to set */ } if (ba->numBits <= bit) { return; /* bit out of range */ } ba->array[BIT_CHAR(bit)] |= BIT_IN_CHAR(bit); }
/*************************************************************************** * Function : BitArrayClearBit * Description: This function sets the specified bit to 0 in the bit array * passed as a parameter. * Parameters : ba - pointer to bit array * bit - bit to clear * Effects : The specified bit in the bit array is set to 0. * Returned : NONE ***************************************************************************/ void BitArrayClearBit(bit_array_t *ba, unsigned int bit) { unsigned char mask; if (ba == NULL) { return; /* no bit to clear */ } if (ba->numBits <= bit) { return; /* bit out of range */ } /* create a mask to zero out desired bit */ mask = BIT_IN_CHAR(bit); mask = ~mask; ba->array[BIT_CHAR(bit)] &= mask; }
int GetBitCount (BYTE *pTicketBet, WORD bits_in_universe) { int bits_enabled; int bit; BOOL status; status = FALSE; bits_enabled = 0; // How many bits are enabled in an universe of universe_size elements? for ( bit = 0; bit < bits_in_universe; bit++ ) { status = (pTicketBet[BIT_CHAR(bit)] & BIT_IN_CHAR(bit)) != 0; if ( status ) { bits_enabled++; } } return bits_enabled; }
//--------------------------------------------------------------------------- void kbitarray_set_bit(t_kbitarray *self, off_t bit_index) { self->bitarray[BIT_CHAR(bit_index)] |= BIT_IN_CHAR(bit_index); }
//--------------------------------------------------------------------------- bool kbitarray_test_bit(t_kbitarray *self, off_t bit_index) { return ((self->bitarray[BIT_CHAR(bit_index)] & BIT_IN_CHAR(bit_index)) != 0); }
/*************************************************************************** * Function : BitArrayTestBit * Description: This function tests the specified bit in the bit array * passed as a parameter. A non-zero will be returned if the * tested bit is set. * Parameters : ba - pointer to bit array * bit - bit to test * Effects : None * Returned : Non-zero if bit is set, otherwise 0. This function does * not check the input. Tests on invalid input will produce * unknown results. ***************************************************************************/ int BitArrayTestBit(bit_array_t *ba, unsigned int bit) { return((ba->array[BIT_CHAR(bit)] & BIT_IN_CHAR(bit)) != 0); }