Tesseract  3.02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
tesseract::TessLangModEdge Class Reference

#include <tess_lang_mod_edge.h>

Inheritance diagram for tesseract::TessLangModEdge:
tesseract::LangModEdge

List of all members.

Public Member Functions

 TessLangModEdge (CubeRecoContext *cntxt, const Dawg *edge_array, EDGE_REF edge, int class_id)
 TessLangModEdge (CubeRecoContext *cntxt, const Dawg *edge_array, EDGE_REF start_edge_idx, EDGE_REF end_edge_idx, int class_id)
 TessLangModEdge (CubeRecoContext *cntxt, int class_id)
 ~TessLangModEdge ()
bool IsRoot () const
void SetRoot (bool flag)
bool IsOOD () const
bool IsNumber () const
bool IsEOW () const
const DawgGetDawg () const
EDGE_REF StartEdge () const
EDGE_REF EndEdge () const
EDGE_REF EdgeMask () const
const char_32EdgeString () const
int ClassID () const
int PathCost () const
void SetEdgeMask (EDGE_REF edge_mask)
void SetDawg (Dawg *dawg)
void SetStartEdge (EDGE_REF edge_idx)
void SetEndEdge (EDGE_REF edge_idx)
bool IsTerminal () const
int SignalCnt () const
double SignalWgt (int signal) const
void SetSignalWgt (int signal, double wgt)
int Signal (int signal)
unsigned int Hash () const
char * Description () const
bool IsIdentical (LangModEdge *lang_mod_edge) const
- Public Member Functions inherited from tesseract::LangModEdge
 LangModEdge ()
virtual ~LangModEdge ()

Static Public Member Functions

static int CreateChildren (CubeRecoContext *cntxt, const Dawg *edges, NODE_REF edge_reg, LangModEdge **lm_edges)

Detailed Description

Definition at line 68 of file tess_lang_mod_edge.h.


Constructor & Destructor Documentation

tesseract::TessLangModEdge::TessLangModEdge ( CubeRecoContext cntxt,
const Dawg edge_array,
EDGE_REF  edge,
int  class_id 
)

Definition at line 41 of file tess_lang_mod_edge.cpp.

{
root_ = false;
cntxt_ = cntxt;
dawg_ = dawg;
start_edge_ = edge_idx;
end_edge_ = edge_idx;
edge_mask_ = 0;
class_id_ = class_id;
str_ = cntxt_->CharacterSet()->ClassString(class_id);
path_cost_ = Cost();
}
tesseract::TessLangModEdge::TessLangModEdge ( CubeRecoContext cntxt,
const Dawg edge_array,
EDGE_REF  start_edge_idx,
EDGE_REF  end_edge_idx,
int  class_id 
)

Definition at line 55 of file tess_lang_mod_edge.cpp.

{
root_ = false;
cntxt_ = cntxt;
dawg_ = dawg;
start_edge_ = start_edge_idx;
end_edge_ = end_edge_idx;
edge_mask_ = 0;
class_id_ = class_id;
str_ = cntxt_->CharacterSet()->ClassString(class_id);
path_cost_ = Cost();
}
tesseract::TessLangModEdge::TessLangModEdge ( CubeRecoContext cntxt,
int  class_id 
)

Definition at line 28 of file tess_lang_mod_edge.cpp.

{
root_ = false;
cntxt_ = cntxt;
dawg_ = NULL;
start_edge_ = 0;
end_edge_ = 0;
edge_mask_ = 0;
class_id_ = class_id;
str_ = cntxt_->CharacterSet()->ClassString(class_id);
path_cost_ = Cost();
}
tesseract::TessLangModEdge::~TessLangModEdge ( )
inline

Definition at line 77 of file tess_lang_mod_edge.h.

{}

Member Function Documentation

int tesseract::TessLangModEdge::ClassID ( ) const
inlinevirtual

Implements tesseract::LangModEdge.

Definition at line 102 of file tess_lang_mod_edge.h.

{ return class_id_; }
int tesseract::TessLangModEdge::CreateChildren ( CubeRecoContext cntxt,
const Dawg edges,
NODE_REF  edge_reg,
LangModEdge **  lm_edges 
)
static

Definition at line 104 of file tess_lang_mod_edge.cpp.

{
int edge_cnt = 0;
dawg->unichar_ids_of(parent_node, &vec); // find all children of the parent
for (int i = 0; i < vec.size(); ++i) {
const NodeChild &child = vec[i];
if (child.unichar_id == INVALID_UNICHAR_ID) continue;
edge_array[edge_cnt] =
new TessLangModEdge(cntxt, dawg, child.edge_ref, child.unichar_id);
if (edge_array[edge_cnt] != NULL) edge_cnt++;
}
return edge_cnt;
}
char * tesseract::TessLangModEdge::Description ( ) const
virtual

Implements tesseract::LangModEdge.

Definition at line 69 of file tess_lang_mod_edge.cpp.

{
char *char_ptr = new char[256];
if (!char_ptr) {
return NULL;
}
char dawg_str[256];
char edge_str[32];
if (dawg_ == (Dawg *)DAWG_OOD) {
strcpy(dawg_str, "OOD");
} else if (dawg_ == (Dawg *)DAWG_NUMBER) {
strcpy(dawg_str, "NUM");
} else if (dawg_->permuter() == SYSTEM_DAWG_PERM) {
strcpy(dawg_str, "Main");
} else if (dawg_->permuter() == USER_DAWG_PERM) {
strcpy(dawg_str, "User");
} else if (dawg_->permuter() == DOC_DAWG_PERM) {
strcpy(dawg_str, "Doc");
} else {
strcpy(dawg_str, "N/A");
}
sprintf(edge_str, "%d", static_cast<int>(start_edge_));
if (IsLeadingPuncEdge(edge_mask_)) {
strcat(edge_str, "-LP");
}
if (IsTrailingPuncEdge(edge_mask_)) {
strcat(edge_str, "-TP");
}
sprintf(char_ptr, "%s(%s)%s, Wtd Dawg Cost=%d",
dawg_str, edge_str, IsEOW() ? "-EOW-" : "", path_cost_);
return char_ptr;
}
EDGE_REF tesseract::TessLangModEdge::EdgeMask ( ) const
inline

Definition at line 100 of file tess_lang_mod_edge.h.

{ return edge_mask_; }
const char_32* tesseract::TessLangModEdge::EdgeString ( ) const
inlinevirtual

Implements tesseract::LangModEdge.

Definition at line 101 of file tess_lang_mod_edge.h.

{ return str_; }
EDGE_REF tesseract::TessLangModEdge::EndEdge ( ) const
inline

Definition at line 99 of file tess_lang_mod_edge.h.

{ return end_edge_; }
const Dawg* tesseract::TessLangModEdge::GetDawg ( ) const
inline

Definition at line 97 of file tess_lang_mod_edge.h.

{ return dawg_; }
unsigned int tesseract::TessLangModEdge::Hash ( ) const
inlinevirtual

Implements tesseract::LangModEdge.

Definition at line 178 of file tess_lang_mod_edge.h.

{
return static_cast<unsigned int>(((start_edge_ | end_edge_) ^
((reinterpret_cast<unsigned long int>(dawg_)))) ^
((unsigned int)edge_mask_) ^
class_id_);
}
bool tesseract::TessLangModEdge::IsEOW ( ) const
inlinevirtual

Implements tesseract::LangModEdge.

Definition at line 93 of file tess_lang_mod_edge.h.

{
return (IsTerminal() || (dawg_->end_of_word(end_edge_) != 0));
}
bool tesseract::TessLangModEdge::IsIdentical ( LangModEdge lang_mod_edge) const
inlinevirtual

Implements tesseract::LangModEdge.

Definition at line 189 of file tess_lang_mod_edge.h.

{
return (class_id_ ==
reinterpret_cast<TessLangModEdge *>(lang_mod_edge)->class_id_ &&
str_ == reinterpret_cast<TessLangModEdge *>(lang_mod_edge)->str_ &&
dawg_ == reinterpret_cast<TessLangModEdge *>(lang_mod_edge)->dawg_ &&
start_edge_ ==
reinterpret_cast<TessLangModEdge *>(lang_mod_edge)->start_edge_ &&
end_edge_ ==
reinterpret_cast<TessLangModEdge *>(lang_mod_edge)->end_edge_ &&
edge_mask_ ==
reinterpret_cast<TessLangModEdge *>(lang_mod_edge)->edge_mask_);
}
bool tesseract::TessLangModEdge::IsNumber ( ) const
inline

Definition at line 89 of file tess_lang_mod_edge.h.

{
return (dawg_ == (Dawg *)DAWG_NUMBER);
}
bool tesseract::TessLangModEdge::IsOOD ( ) const
inlinevirtual

Implements tesseract::LangModEdge.

Definition at line 85 of file tess_lang_mod_edge.h.

{
return (dawg_ == (Dawg *)DAWG_OOD);
}
bool tesseract::TessLangModEdge::IsRoot ( ) const
inlinevirtual

Implements tesseract::LangModEdge.

Definition at line 80 of file tess_lang_mod_edge.h.

{
return root_;
}
bool tesseract::TessLangModEdge::IsTerminal ( ) const
inlinevirtual

Implements tesseract::LangModEdge.

Definition at line 112 of file tess_lang_mod_edge.h.

{
return (IsOOD() || IsNumber() || IsTrailingPuncEdge(start_edge_) ||
dawg_->next_node(end_edge_) == 0);
}
int tesseract::TessLangModEdge::PathCost ( ) const
inlinevirtual

Implements tesseract::LangModEdge.

Definition at line 103 of file tess_lang_mod_edge.h.

{ return path_cost_; }
void tesseract::TessLangModEdge::SetDawg ( Dawg dawg)
inline

Definition at line 105 of file tess_lang_mod_edge.h.

{ dawg_ = dawg; }
void tesseract::TessLangModEdge::SetEdgeMask ( EDGE_REF  edge_mask)
inline

Definition at line 104 of file tess_lang_mod_edge.h.

{ edge_mask_ = edge_mask; }
void tesseract::TessLangModEdge::SetEndEdge ( EDGE_REF  edge_idx)
inline

Definition at line 107 of file tess_lang_mod_edge.h.

{ end_edge_ = edge_idx; }
void tesseract::TessLangModEdge::SetRoot ( bool  flag)
inlinevirtual

Implements tesseract::LangModEdge.

Definition at line 83 of file tess_lang_mod_edge.h.

{ root_ = flag; }
void tesseract::TessLangModEdge::SetSignalWgt ( int  signal,
double  wgt 
)
inline

Definition at line 144 of file tess_lang_mod_edge.h.

{
CubeTuningParams *params =
reinterpret_cast<CubeTuningParams *>(cntxt_->Params());
if (params != NULL) {
switch (signal) {
case 0:
params->SetOODWgt(wgt);
break;
case 1:
params->SetNumWgt(wgt);
break;
}
}
}
void tesseract::TessLangModEdge::SetStartEdge ( EDGE_REF  edge_idx)
inline

Definition at line 106 of file tess_lang_mod_edge.h.

{ start_edge_ = edge_idx; }
int tesseract::TessLangModEdge::Signal ( int  signal)
inline

Definition at line 161 of file tess_lang_mod_edge.h.

{
switch (signal) {
case 0:
return IsOOD() ? MIN_PROB_COST : 0;
break;
case 1:
return IsNumber() ? MIN_PROB_COST : 0;
break;
default:
return 0;
}
}
int tesseract::TessLangModEdge::SignalCnt ( ) const
inline

Definition at line 120 of file tess_lang_mod_edge.h.

{
return 2;
}
double tesseract::TessLangModEdge::SignalWgt ( int  signal) const
inline

Definition at line 125 of file tess_lang_mod_edge.h.

{
CubeTuningParams *params =
reinterpret_cast<CubeTuningParams *>(cntxt_->Params());
if (params != NULL) {
switch (signal) {
case 0:
return params->OODWgt();
break;
case 1:
return params->NumWgt();
break;
}
}
return 0.0;
}
EDGE_REF tesseract::TessLangModEdge::StartEdge ( ) const
inline

Definition at line 98 of file tess_lang_mod_edge.h.

{ return start_edge_; }

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