Tesseract  3.02
tesseract-ocr/wordrec/closed.cpp File Reference
#include "freelist.h"
#include "closed.h"
#include "cutil.h"
#include "callcpp.h"
#include <assert.h>

Go to the source code of this file.

Defines

#define TABLE_SIZE   2000

Functions

hash_add

Look in the hash table for a particular value. If it is not there then add it.

int hash_add (HASH_TABLE state_table, STATE *state)
hash_lookup

Look in the hash table for a particular value. If the value is there then return TRUE, FALSE otherwise.

int hash_lookup (HASH_TABLE state_table, STATE *state)
new_hash_table

Create and initialize a hash table.

HASH_TABLE new_hash_table ()

Define Documentation

#define TABLE_SIZE   2000

Definition at line 39 of file closed.cpp.


Function Documentation

int hash_add ( HASH_TABLE  state_table,
STATE state 
)

Definition at line 50 of file closed.cpp.

                                                   {
  int x;
  int i = 0;
  int table_limit = TABLE_SIZE;

  x = state->part2 % table_limit;
  while (i < table_limit) {
    assert (0 <= x && x < table_limit);
    /* Found it */
    if ((state_table[x].part2 == state->part2) &&
    (state_table[x].part1 == state->part1)) {
      return (FALSE);
    }
    /* Not in table */
    else if (state_table[x].part1 == NO_STATE) {
      state_table[x].part2 = state->part2;
      state_table[x].part1 = state->part1;
      return (TRUE);
    }
    i++;
    if (++x >= table_limit)
      x = 0;
  }
  cprintf("warning: hash table is full");

  abort();
  return 0;
}
int hash_lookup ( HASH_TABLE  state_table,
STATE state 
)

Definition at line 86 of file closed.cpp.

                                                      {
  int x;
  int i = 0;
  int table_limit = TABLE_SIZE;

  x = state->part2 % table_limit;
  while (i < table_limit) {
    assert (0 <= x && x < table_limit);
    /* Found it */
    if ((state_table[x].part2 == state->part2) &&
    (state_table[x].part1 == state->part1)) {
      return (TRUE);
    }
    /* Not in table */
    else if (state_table[x].part1 == NO_STATE) {
      return (FALSE);
    }

    i++;
    if (++x >= table_limit)
      x = 0;
  }
  cprintf ("warning: fell off end of hash table  (%x) %x\n",
    state->part2, state->part2 % table_limit);
  abort();
  return 0;
}
HASH_TABLE new_hash_table ( )

Definition at line 120 of file closed.cpp.

                            {
  HASH_TABLE ht;
  int x;

  ht = (HASH_TABLE) memalloc (TABLE_SIZE * sizeof (STATE));
  for (x = 0; x < TABLE_SIZE; x++) {
    ht[x].part1 = NO_STATE;
    ht[x].part2 = NO_STATE;
  }
  return (ht);
}