Tesseract 3.02

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Macros | Typedefs | Functions
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
typedef uinT32 * | BIT_VECTOR

## Functions
BIT_VECTOR | ExpandBitVector (BIT_VECTOR Vector, int NewNumBits)
void | FreeBitVector (BIT_VECTOR BitVector)
int | hamming_distance (uinT32 *array1, uinT32 *array2, int length)
BIT_VECTOR | NewBitVector (int NumBits)

## Macro Definition Documentation

#define BITSINLONG 32

no of bits in a long

Definition at line 27 of file bitvec.h.

#define copy_all_bits | ( |  | source,
|  |  | dest,
|  |  | length
| ) |  |

Value:
{\
register 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.

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

Definition at line 59 of file bitvec.h.

#define set_all_bits | ( |  | array,
|  |  | length
| ) |  |

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

Definition at line 41 of file bitvec.h.

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

Definition at line 57 of file bitvec.h.

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

Definition at line 61 of file bitvec.h.

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

Definition at line 63 of file bitvec.h.

#define zero_all_bits | ( |  | array,
|  |  | length
| ) |  |

Value:
{\
register 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

typedef uinT32* BIT_VECTOR

Definition at line 28 of file bitvec.h.

## Function Documentation

BIT_VECTOR ExpandBitVector | ( | BIT_VECTOR | Vector,
|  | int | NewNumBits
| ) |  |

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

Globals:

- none

Parameters:

  Vector | bit vector to be expanded
  NewNumBits | new size of bit vector

Returns:
  New expanded bit vector.

Note:
  Exceptions: none
  History: Fri Nov 16 10:11:16 1990, DSJ, Created.

Definition at line 48 of file bitvec.cpp.

{
return ((BIT_VECTOR) Erealloc(Vector,
sizeof(Vector[0]) * WordsInVectorOfSize(NewNumBits)));
} /* ExpandBitVector */

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 NULL, then the count is printed to stderr.

Globals:

- BitVectorCount count of number of bit vectors allocated

Parameters:

  BitVector | bit vector to be freed

Note:
  Exceptions: none
  History: Tue Oct 23 16:46:09 1990, DSJ, Created.

Definition at line 55 of file bitvec.cpp.

{
if (BitVector) {
Efree(BitVector);
}
} /* FreeBitVector */

int hamming_distance | ( | uinT32 * | array1,
|  | uinT32 * | array2,
|  | int | length
| ) |  |

hamming_distance(array1,array2,length) computes the hamming distance between two bit strings.

Definition at line 81 of file bitvec.cpp.

{
register uinT32 diff; /*bit difference */
register int dist; /*total distance */
dist = 0;
for (; length > 0; length--) {
diff = *array1++ ^ *array2++;/*different bits */
while (diff) {
diff &= diff - 1; /*lose a bit */
dist++;
}
}
return dist; /*total distance */
}

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:

  NumBits | number of bits in new bit vector

Returns:
  New bit vector.

Note:
  Exceptions: none
  History: Tue Oct 23 16:51:27 1990, DSJ, Created.

Definition at line 111 of file bitvec.cpp.

{
return ((BIT_VECTOR) Emalloc(sizeof(uinT32) *
WordsInVectorOfSize(NumBits)));
} /* NewBitVector */