Tesseract 3.02

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

- Class List
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions
tesseract::WordAltList Class Reference

`#include <word_altlist.h>`

Inheritance diagram for tesseract::WordAltList:

List of all members.

## Public Member Functions

| WordAltList (int max_alt)
| ~WordAltList ()
void | Sort ()
bool | Insert (char_32 *char_ptr, int cost, void *tag=NULL)
char_32 * | Alt (int alt_idx)
void | PrintDebug ()
Public Member Functions inherited from tesseract::AltList
| AltList (int max_alt)
virtual | ~AltList ()
int | BestCost (int *best_alt) const
int | AltCount () const
int | AltCost (int alt_idx) const
double | AltProb (int alt_idx) const
void * | AltTag (int alt_idx) const

## Additional Inherited Members

Protected Attributes inherited from tesseract::AltList
int | max_alt_
int | alt_cnt_
int * | alt_cost_
void ** | alt_tag_

## Detailed Description

Definition at line 32 of file word_altlist.h.

## Constructor & Destructor Documentation

tesseract::WordAltList::WordAltList | ( | int | max_alt | ) |

explicit

Definition at line 23 of file word_altlist.cpp.

: AltList(max_alt) {
word_alt_ = NULL;
}

tesseract::WordAltList::~WordAltList | ( |  | ) |

Definition at line 28 of file word_altlist.cpp.

{
if (word_alt_ != NULL) {
for (int alt_idx = 0; alt_idx < alt_cnt_; alt_idx++) {
if (word_alt_[alt_idx] != NULL) {
delete []word_alt_[alt_idx];
}
}
delete []word_alt_;
word_alt_ = NULL;
}
}

## Member Function Documentation

char_32* tesseract::WordAltList::Alt | ( | int | alt_idx | ) |

inline

Definition at line 41 of file word_altlist.h.

{ return word_alt_[alt_idx]; }

bool tesseract::WordAltList::Insert | ( | char_32 * | char_ptr,
|  | int | cost,
|  | void * | tag = `NULL`
| ) |  |

Definition at line 41 of file word_altlist.cpp.

{
if (word_alt_ == NULL || alt_cost_ == NULL) {
word_alt_ = new char_32*[max_alt_];
alt_cost_ = new int[max_alt_];
alt_tag_ = new void *[max_alt_];
if (word_alt_ == NULL || alt_cost_ == NULL || alt_tag_ == NULL) {
return false;
}
memset(alt_tag_, 0, max_alt_ * sizeof(*alt_tag_));
} else {
// check if alt already exists
for (int alt_idx = 0; alt_idx < alt_cnt_; alt_idx++) {
if (CubeUtils::StrCmp(word_str, word_alt_[alt_idx]) == 0) {
// update the cost if we have a lower one
if (cost < alt_cost_[alt_idx]) {
alt_cost_[alt_idx] = cost;
alt_tag_[alt_idx] = tag;
}
return true;
}
}
}
// determine length of alternate
int len = CubeUtils::StrLen(word_str);
word_alt_[alt_cnt_] = new char_32[len + 1];
if (word_alt_[alt_cnt_] == NULL) {
return false;
}
if (len > 0) {
memcpy(word_alt_[alt_cnt_], word_str, len * sizeof(*word_str));
}
word_alt_[alt_cnt_][len] = 0;
alt_cost_[alt_cnt_] = cost;
alt_tag_[alt_cnt_] = tag;
alt_cnt_++;
return true;
}

void tesseract::WordAltList::PrintDebug | ( |  | ) |

Definition at line 108 of file word_altlist.cpp.

{
for (int alt_idx = 0; alt_idx < alt_cnt_; alt_idx++) {
char_32 *word_32 = word_alt_[alt_idx];
string word_str;
CubeUtils::UTF32ToUTF8(word_32, &word_str);
int num_unichars = CubeUtils::StrLen(word_32);
fprintf(stderr, "Alt[%d]=%s (cost=%d, num_unichars=%d); unichars=", alt_idx,
word_str.c_str(), alt_cost_[alt_idx], num_unichars);
for (int i = 0; i < num_unichars; ++i)
fprintf(stderr, "%d ", word_32[i]);
fprintf(stderr, "\n");
}
}

void tesseract::WordAltList::Sort | ( |  | ) |

virtual

Implements tesseract::AltList.

Definition at line 88 of file word_altlist.cpp.

{
for (int alt_idx = 0; alt_idx < alt_cnt_; alt_idx++) {
for (int alt = alt_idx + 1; alt < alt_cnt_; alt++) {
if (alt_cost_[alt_idx] > alt_cost_[alt]) {
char_32 *pchTemp = word_alt_[alt_idx];
word_alt_[alt_idx] = word_alt_[alt];
word_alt_[alt] = pchTemp;
int temp = alt_cost_[alt_idx];
alt_cost_[alt_idx] = alt_cost_[alt];
alt_cost_[alt] = temp;
void *tag = alt_tag_[alt_idx];
alt_tag_[alt_idx] = alt_tag_[alt];
alt_tag_[alt] = tag;
}
}
}
}

The documentation for this class was generated from the following files:

- /mnt/data/src/tesseract-ocr/cube/word_altlist.h
- /mnt/data/src/tesseract-ocr/cube/word_altlist.cpp