/home/rays/src/opensrc/tesseract-ocr/cutil/oldheap.h File Reference
#include "host.h"
#include "cutil.h"
Go to the source code of this file.
Classes |
struct | HEAPENTRY |
struct | HEAP |
Defines |
#define | HEAPFULL 3000 |
#define | EMPTY -1 |
#define | TESS_HEAP_OK 0 |
#define | FreeHeap(H) memfree(H) |
#define | MaxSizeOfHeap(H) (H->Size) |
#define | SizeOfHeap(H) (H->FirstFree - 1) |
#define | InitHeap(H) (H->FirstFree = 1) |
#define | HeapFull(H) ((H)->FirstFree > (H)->Size) |
#define | HeapEmpty(H) ((H)->FirstFree <= 1) |
#define | HeapKeyFor(H, E) ((H)->Entry[(E)+1].Key) |
#define | HeapDataFor(H, E) ((H)->Entry[(E)+1].Data) |
Functions |
HEAP * | MakeHeap (int Size) |
int | HeapPop (HEAP *Heap, FLOAT32 *Key, void *out_ptr) |
int | HeapPopWorst (HEAP *Heap, FLOAT32 *Key, void *out_ptr) |
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) |
bool | HeapPushCheckSize (HEAP *Heap, FLOAT32 Key, void *Data) |
Define Documentation
#define FreeHeap |
( |
H |
|
) |
memfree(H) |
#define HeapDataFor |
( |
H, |
|
|
E |
|
) |
((H)->Entry[(E)+1].Data) |
#define HeapEmpty |
( |
H |
|
) |
((H)->FirstFree <= 1) |
#define HeapFull |
( |
H |
|
) |
((H)->FirstFree > (H)->Size) |
#define HeapKeyFor |
( |
H, |
|
|
E |
|
) |
((H)->Entry[(E)+1].Key) |
#define InitHeap |
( |
H |
|
) |
(H->FirstFree = 1) |
#define MaxSizeOfHeap |
( |
H |
|
) |
(H->Size) |
#define SizeOfHeap |
( |
H |
|
) |
(H->FirstFree - 1) |
Function Documentation
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:
- Note:
- Exceptions: none
-
History: Tue May 15 08:52:04 1990, DSJ, Created.
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:
- 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:
- 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:
- 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 | |
|
) |
| | |
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:
- 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:
- Parameters:
-
| Size | maximum number of entries in the heap |
- Returns:
- Pointer to the new heap.
- Note:
- Exceptions: None
-
History: 3/13/89, DSJ, Created.