tesseract  4.0.0-1-g2a2b
bitvec.h File Reference
#include "host.h"

Go to the source code of this file.

Macros

#define BITSINLONG   32
 
#define zero_all_bits(array, length)
 
#define set_all_bits(array, length)
 
#define copy_all_bits(source, dest, length)
 
#define SET_BIT(array, bit)   (array[bit/BITSINLONG]|=1<<(bit&(BITSINLONG-1)))
 
#define reset_bit(array, bit)   (array[bit/BITSINLONG]&=~(1<<(bit&(BITSINLONG-1))))
 
#define test_bit(array, bit)   (array[bit/BITSINLONG] & (1<<(bit&(BITSINLONG-1))))
 
#define WordsInVectorOfSize(NumBits)   (((NumBits) + BITSINLONG - 1) / BITSINLONG)
 

Typedefs

using BIT_VECTOR = uint32_t *
 

Functions

BIT_VECTOR ExpandBitVector (BIT_VECTOR Vector, int NewNumBits)
 
void FreeBitVector (BIT_VECTOR BitVector)
 
BIT_VECTOR NewBitVector (int NumBits)
 

Macro Definition Documentation

◆ BITSINLONG

#define BITSINLONG   32

no of bits in a long

Definition at line 27 of file bitvec.h.

◆ copy_all_bits

#define copy_all_bits (   source,
  dest,
  length 
)
Value:
{ \
int index; /*temporary index*/ \
\
for (index = 0; index < length; index++) \
dest[index] = source[index]; /*copy all bits*/ \
}

Definition at line 49 of file bitvec.h.

◆ reset_bit

#define reset_bit (   array,
  bit 
)    (array[bit/BITSINLONG]&=~(1<<(bit&(BITSINLONG-1))))

Definition at line 59 of file bitvec.h.

◆ set_all_bits

#define set_all_bits (   array,
  length 
)
Value:
{ \
int index; /*temporary index*/ \
\
for (index = 0; index < length; index++) \
array[index] = ~0; /*set all bits*/ \
}

Definition at line 41 of file bitvec.h.

◆ SET_BIT

#define SET_BIT (   array,
  bit 
)    (array[bit/BITSINLONG]|=1<<(bit&(BITSINLONG-1)))

Definition at line 57 of file bitvec.h.

◆ test_bit

#define test_bit (   array,
  bit 
)    (array[bit/BITSINLONG] & (1<<(bit&(BITSINLONG-1))))

Definition at line 61 of file bitvec.h.

◆ WordsInVectorOfSize

#define WordsInVectorOfSize (   NumBits)    (((NumBits) + BITSINLONG - 1) / BITSINLONG)

Definition at line 63 of file bitvec.h.

◆ zero_all_bits

#define zero_all_bits (   array,
  length 
)
Value:
{ \
int index; /*temporary index*/ \
\
for (index = 0; index < length; index++) \
array[index] = 0; /*zero all bits*/ \
}

Definition at line 33 of file bitvec.h.

Typedef Documentation

◆ BIT_VECTOR

using BIT_VECTOR = uint32_t *

Definition at line 28 of file bitvec.h.

Function Documentation

◆ ExpandBitVector()

BIT_VECTOR ExpandBitVector ( BIT_VECTOR  Vector,
int  NewNumBits 
)

This routine uses realloc to increase the size of the specified bit vector.

Globals:

  • none
Parameters
Vectorbit vector to be expanded
NewNumBitsnew size of bit vector
Returns
New expanded bit vector.

Definition at line 44 of file bitvec.cpp.

44  {
45  return ((BIT_VECTOR) Erealloc(Vector,
46  sizeof(Vector[0]) * WordsInVectorOfSize(NewNumBits)));
47 } /* ExpandBitVector */
#define WordsInVectorOfSize(NumBits)
Definition: bitvec.h:63
uint32_t * BIT_VECTOR
Definition: bitvec.h:28
void * Erealloc(void *ptr, int size)
Definition: emalloc.cpp:38

◆ FreeBitVector()

void FreeBitVector ( BIT_VECTOR  BitVector)

This routine frees a bit vector. It also decrements the global counter that keeps track of the number of bit vectors allocated. If BitVector is nullptr, then the count is printed to stderr.

Globals:

  • BitVectorCount count of number of bit vectors allocated
Parameters
BitVectorbit vector to be freed

Definition at line 51 of file bitvec.cpp.

51  {
64  if (BitVector) {
65  Efree(BitVector);
66  }
67 } /* FreeBitVector */
void Efree(void *ptr)
Definition: emalloc.cpp:45

◆ NewBitVector()

BIT_VECTOR NewBitVector ( int  NumBits)

Allocate and return a new bit vector large enough to hold the specified number of bits.

Globals:

  • BitVectorCount number of bit vectors allocated
Parameters
NumBitsnumber of bits in new bit vector
Returns
New bit vector.

Definition at line 82 of file bitvec.cpp.

82  {
83  return ((BIT_VECTOR) Emalloc(sizeof(uint32_t) *
84  WordsInVectorOfSize(NumBits)));
85 } /* NewBitVector */
#define WordsInVectorOfSize(NumBits)
Definition: bitvec.h:63
void * Emalloc(int Size)
Definition: emalloc.cpp:31
uint32_t * BIT_VECTOR
Definition: bitvec.h:28