/home/rays/src/opensrc/tesseract-ocr/cutil/oldheap.cpp File Reference

#include "oldheap.h"
#include "host.h"
#include "cutil.h"
#include "freelist.h"
#include "danerror.h"
#include "emalloc.h"
#include <stdio.h>

Defines

#define FATHER(N)   ((N)>>1)
#define LEFTSON(N)   ((N)<<1)
#define RIGHTSON(N)   ((N)<<1 + 1)

Functions

HEAPMakeHeap (int Size)
int HeapPop (HEAP *Heap, FLOAT32 *Key, void *out_ptr)
int HeapPopWorst (HEAP *Heap, FLOAT32 *Key, void *out_ptr)
bool HeapPushCheckSize (HEAP *Heap, FLOAT32 Key, void *Data)
void HeapPush (HEAP *Heap, FLOAT32 Key, void *Data)
void HeapStore (HEAP *Heap, HEAPENTRY *Entry)
int GetTopOfHeap (HEAP *Heap, HEAPENTRY *Entry)
void FreeHeapData (HEAP *Heap, void_dest destructor)

Define Documentation

#define FATHER (  )     ((N)>>1)
#define LEFTSON (  )     ((N)<<1)
#define RIGHTSON (  )     ((N)<<1 + 1)

Function Documentation

void FreeHeapData ( HEAP Heap,
void_dest  destructor 
)

This routine is similar to FreeHeap in that it deallocates the memory consumed by the heap. However, it also calls Deallocator for each item in the heap so that this data is also deallocated.

Parameters:
Heap heap whose data is to be freed
Deallocator function to be used to deallocate data

Globals:

  • None
Note:
Exceptions: none
History: Tue May 15 08:52:04 1990, DSJ, Created.
int GetTopOfHeap ( HEAP Heap,
HEAPENTRY Entry 
)

This routine removes the top item on the heap and copies its contents into Entry.

Parameters:
Heap ptr to heap whose top is to be removed and returned
Entry ptr to heap entry to be filled with top entry on Heap

Globals:

  • None
Returns:
OK if top entry returned, EMPTY if heap is empty
Note:
Exceptions: None
History: 3/13/89, DSJ, Created.
int HeapPop ( HEAP Heap,
FLOAT32 Key,
void *  out_ptr 
)

This routine removes the top item on the heap and places its contents into Key and Data.

Globals:

  • None
Parameters:
Heap ptr to heap whose top is to be removed and returned
Key place to put key of top heap item
Data place to put data of top heap item
Returns:
OK if top entry returned, EMPTY if heap is empty
Note:
Exceptions: None
History: 5/10/91, DSJ, Created (Modified from GetTopOfHeap).
int HeapPopWorst ( HEAP Heap,
FLOAT32 Key,
void *  out_ptr 
)

HeapPopWorst

Remove the largest item from the heap.

Parameters:
Heap ptr to heap whose top is to be removed and returned
Key place to put key of top heap item
Data place to put data of top heap item
void HeapPush ( HEAP Heap,
FLOAT32  Key,
void *  Data 
)

This routine stores Data into Heap and associates it with Key. The heap is maintained in such a way that the item with the lowest key is always at the top of the heap.

Globals:

  • None
Parameters:
Heap ptr to heap to store new item in
Key numeric key associated with new item
Data ptr to data contents of new item
Note:
Exceptions:
  • HEAPFULL error if heap size is exceeded
History: 5/10/91, DSJ, Created (Modified version of HeapStore).
bool HeapPushCheckSize ( HEAP Heap,
FLOAT32  Key,
void *  Data 
)
void HeapStore ( HEAP Heap,
HEAPENTRY Entry 
)

This routine stores Entry into Heap. The heap is maintained in such a way that the item with the lowest key is always at the top of the heap.

Globals:

  • None
Parameters:
Heap ptr to heap to store new item in
Entry ptr to item to be stored in Heap
Note:
Exceptions:
  • HEAPFULL error if heap size is exceeded
History: 3/13/89, DSJ, Created.
HEAP* MakeHeap ( int  Size  ) 

This routine creates and initializes a new heap data structure containing Size elements. In actuality, Size + 1 elements are allocated. The first element, element 0, is unused, this makes the index arithmetic easier.

Globals:

  • None
Parameters:
Size maximum number of entries in the heap
Returns:
Pointer to the new heap.
Note:
Exceptions: None
History: 3/13/89, DSJ, Created.
Generated on Thu Feb 2 08:19:22 2012 for Tesseract by  doxygen 1.6.3