Main Page | Modules | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

bitvector.h File Reference


Detailed Description

Bitvector object

#include "sys.h"

Go to the source code of this file.

Data Structures

struct  aw_bitvector_t

Defines

#define AW_BITVECTOR_CALC_VECTOR_SIZE(nbits)   ( ((nbits) / (sizeof(u_int32_t)*8) + 1) * sizeof(u_int32_t))
#define AW_BITVECTOR_CLEAR(bv)   ( memset( AW_BITVECTOR_GET_VECTOR(bv), 0 , bv->vectorsize ) )
#define AW_BITVECTOR_CORE_SIZE(nbits)   ( sizeof(aw_bitvector_t) + AW_BITVECTOR_CALC_VECTOR_SIZE( nbits ) )
#define AW_BITVECTOR_DO_SIZE(nbits)
#define AW_BITVECTOR_GET_VECTOR(bv)   ( (u_int32_t *)( ((caddr_t)bv) + sizeof(aw_bitvector_t)) )
#define AW_BITVECTOR_GET_VECTOR_SIZE(bv)   ( (bv)->vectorsize )
#define AW_BITVECTOR_IS_SELECTED(index, bv)
#define AW_BITVECTOR_NOT_SELECTED(index, bv)
#define AW_BITVECTOR_SELECTED(index, bv)
#define AW_BITVECTOR_UNCLEAR(bv)   ( memset( AW_BITVECTOR_GET_VECTOR(bv), ~0 , bv->vectorsize ) )

Functions

int32_t aw_bitvector_andmerge (aw_bitvector_t *bv1, aw_bitvector_t *bv2)
 Bitwise AND bv2 into bv1 (bv1 is changed).

aw_bitvector_t * aw_bitvector_create (u_int32_t nbits)
 Create a bitvector to accomidate 'n' bits.

void aw_bitvector_destroy (aw_bitvector_t *bv)
 Freeup resources for a bitvector.

int32_t aw_bitvector_findfirstbit (u_int32_t start_index, aw_bitvector_t *bv)
 Finds index of the first 1 from the starting bit index.

int32_t aw_bitvector_ormerge (aw_bitvector_t *bv1, aw_bitvector_t *bv2)
 Bitwise OR bv2 into bv1 (bv1 is changed).


Define Documentation

#define AW_BITVECTOR_CALC_VECTOR_SIZE (  nbits   )     ( ((nbits) / (sizeof(u_int32_t)*8) + 1) * sizeof(u_int32_t))
 

#define AW_BITVECTOR_CLEAR (  bv   )     ( memset( AW_BITVECTOR_GET_VECTOR(bv), 0 , bv->vectorsize ) )
 

#define AW_BITVECTOR_CORE_SIZE (  nbits   )     ( sizeof(aw_bitvector_t) + AW_BITVECTOR_CALC_VECTOR_SIZE( nbits ) )
 

#define AW_BITVECTOR_DO_SIZE (  nbits   ) 
 

Value:

#define AW_BITVECTOR_GET_VECTOR (  bv   )     ( (u_int32_t *)( ((caddr_t)bv) + sizeof(aw_bitvector_t)) )
 

#define AW_BITVECTOR_GET_VECTOR_SIZE (  bv   )     ( (bv)->vectorsize )
 

#define AW_BITVECTOR_IS_SELECTED (  index,
bv   ) 
 

Value:

( (*( AW_BITVECTOR_GET_VECTOR(bv) + ((index) / (sizeof(u_int32_t)*8) )) >> \
   ((index) & ( (sizeof(u_int32_t)*8) - 1) )) & 0x1)

#define AW_BITVECTOR_NOT_SELECTED (  index,
bv   ) 
 

Value:

(*( AW_BITVECTOR_GET_VECTOR(bv) + ((index) / (sizeof(u_int32_t)*8) ) ) &= \
 ~(0x1 << ((index) & ( (sizeof(u_int32_t)*8) - 1) )))

#define AW_BITVECTOR_SELECTED (  index,
bv   ) 
 

Value:

(*( AW_BITVECTOR_GET_VECTOR(bv) + ((index) / (sizeof(u_int32_t)*8) ) ) |= \
 0x1 << ((index) & ( (sizeof(u_int32_t)*8) - 1) ))

#define AW_BITVECTOR_UNCLEAR (  bv   )     ( memset( AW_BITVECTOR_GET_VECTOR(bv), ~0 , bv->vectorsize ) )
 


Function Documentation

int32_t aw_bitvector_andmerge (  aw_bitvector_t *  bv1,
aw_bitvector_t *  bv2
) 
 

Bitwise AND bv2 into bv1 (bv1 is changed).

aw_bitvector_andmerge

Parameters:
bv1 Bitvector
bv2 Bitvector
Returns:
0 on success, non-zero if bv1->vectorsize != bv2->vectorsize

aw_bitvector_t* aw_bitvector_create (  u_int32_t  nbits  ) 
 

Create a bitvector to accomidate 'n' bits.

Changes:

03/23/2004 Russell Leighton Added merge funtions

void aw_bitvector_destroy (  aw_bitvector_t *  bv  ) 
 

Freeup resources for a bitvector.

aw_bitvector_destroy

Parameters:
bv Bitvector object to free

int32_t aw_bitvector_findfirstbit (  u_int32_t  start_index,
aw_bitvector_t *  bv
) 
 

Finds index of the first 1 from the starting bit index.

aw_bitvector_findfirstbit

Parameters:
start_index Bit position to start search
bv Bitvector
Returns:
0 on success, non-zero if no 1's found

int32_t aw_bitvector_ormerge (  aw_bitvector_t *  bv1,
aw_bitvector_t *  bv2
) 
 

Bitwise OR bv2 into bv1 (bv1 is changed).

aw_bitvector_ormerge

Parameters:
bv1 Bitvector
bv2 Bitvector
Returns:
0 on success, non-zero if bv1->vectorsize != bv2->vectorsize

Aware 0.11.1 Copyright (C) 1998-2005 Russell Leighton (russ@elegant-software.com)