tesseract  4.00.00dev
UNICHARMAP Class Reference

#include <unicharmap.h>

Public Member Functions

 UNICHARMAP ()
 
 ~UNICHARMAP ()
 
void insert (const char *const unichar_repr, UNICHAR_ID id)
 
UNICHAR_ID unichar_to_id (const char *const unichar_repr) const
 
UNICHAR_ID unichar_to_id (const char *const unichar_repr, int length) const
 
bool contains (const char *const unichar_repr) const
 
bool contains (const char *const unichar_repr, int length) const
 
int minmatch (const char *const unichar_repr) const
 
void clear ()
 

Detailed Description

Definition at line 27 of file unicharmap.h.

Constructor & Destructor Documentation

◆ UNICHARMAP()

UNICHARMAP::UNICHARMAP ( )

Definition at line 25 of file unicharmap.cpp.

25  :
26 nodes(0) {
27 }

◆ ~UNICHARMAP()

UNICHARMAP::~UNICHARMAP ( )

Definition at line 29 of file unicharmap.cpp.

29  {
30  delete[] nodes;
31 }

Member Function Documentation

◆ clear()

void UNICHARMAP::clear ( )

Definition at line 153 of file unicharmap.cpp.

153  {
154  delete[] nodes;
155  nodes = 0;
156 }

◆ contains() [1/2]

bool UNICHARMAP::contains ( const char *const  unichar_repr) const

Definition at line 100 of file unicharmap.cpp.

100  {
101  if (unichar_repr == NULL || *unichar_repr == '\0') return false;
102 
103  const char* current_char = unichar_repr;
104  UNICHARMAP_NODE* current_nodes = nodes;
105 
106  while (current_nodes != 0 && *(current_char + 1) != '\0') {
107  current_nodes =
108  current_nodes[static_cast<unsigned char>(*current_char)].children;
109  ++current_char;
110  }
111  return current_nodes != 0 && *(current_char + 1) == '\0' &&
112  current_nodes[static_cast<unsigned char>(*current_char)].id >= 0;
113 }

◆ contains() [2/2]

bool UNICHARMAP::contains ( const char *const  unichar_repr,
int  length 
) const

Definition at line 119 of file unicharmap.cpp.

120  {
121  if (unichar_repr == NULL || *unichar_repr == '\0') return false;
122  if (length <= 0 || length > UNICHAR_LEN) return false;
123 
124  const char* current_char = unichar_repr;
125  UNICHARMAP_NODE* current_nodes = nodes;
126 
127  while (current_nodes != 0 && (length > 1 && *(current_char + 1) != '\0')) {
128  current_nodes =
129  current_nodes[static_cast<unsigned char>(*current_char)].children;
130  --length;
131  ++current_char;
132  }
133  return current_nodes != 0 && (length == 1 || *(current_char + 1) == '\0') &&
134  current_nodes[static_cast<unsigned char>(*current_char)].id >= 0;
135 }
#define UNICHAR_LEN
Definition: unichar.h:30

◆ insert()

void UNICHARMAP::insert ( const char *const  unichar_repr,
UNICHAR_ID  id 
)

Definition at line 75 of file unicharmap.cpp.

75  {
76  const char* current_char = unichar_repr;
77  UNICHARMAP_NODE** current_nodes_pointer = &nodes;
78 
79  assert(*unichar_repr != '\0');
80  assert(id >= 0);
81 
82  do {
83  if (*current_nodes_pointer == 0)
84  *current_nodes_pointer = new UNICHARMAP_NODE[256];
85  if (*(current_char + 1) == '\0') {
86  (*current_nodes_pointer)
87  [static_cast<unsigned char>(*current_char)].id = id;
88  return;
89  }
90  current_nodes_pointer =
91  &((*current_nodes_pointer)
92  [static_cast<unsigned char>(*current_char)].children);
93  ++current_char;
94  } while (true);
95 }

◆ minmatch()

int UNICHARMAP::minmatch ( const char *const  unichar_repr) const

Definition at line 139 of file unicharmap.cpp.

139  {
140  const char* current_char = unichar_repr;
141  UNICHARMAP_NODE* current_nodes = nodes;
142 
143  while (current_nodes != NULL && *current_char != '\0') {
144  if (current_nodes[static_cast<unsigned char>(*current_char)].id >= 0)
145  return current_char + 1 - unichar_repr;
146  current_nodes =
147  current_nodes[static_cast<unsigned char>(*current_char)].children;
148  ++current_char;
149  }
150  return 0;
151 }

◆ unichar_to_id() [1/2]

UNICHAR_ID UNICHARMAP::unichar_to_id ( const char *const  unichar_repr) const

Definition at line 35 of file unicharmap.cpp.

35  {
36  const char* current_char = unichar_repr;
37  UNICHARMAP_NODE* current_nodes = nodes;
38 
39  assert(*unichar_repr != '\0');
40 
41  do {
42  if (*(current_char + 1) == '\0')
43  return current_nodes[static_cast<unsigned char>(*current_char)].id;
44  current_nodes =
45  current_nodes[static_cast<unsigned char>(*current_char)].children;
46  ++current_char;
47  } while (true);
48 }

◆ unichar_to_id() [2/2]

UNICHAR_ID UNICHARMAP::unichar_to_id ( const char *const  unichar_repr,
int  length 
) const

Definition at line 53 of file unicharmap.cpp.

54  {
55  const char* current_char = unichar_repr;
56  UNICHARMAP_NODE* current_nodes = nodes;
57 
58  assert(*unichar_repr != '\0');
59  assert(length > 0 && length <= UNICHAR_LEN);
60 
61  do {
62  if (length == 1 || *(current_char + 1) == '\0')
63  return current_nodes[static_cast<unsigned char>(*current_char)].id;
64  current_nodes =
65  current_nodes[static_cast<unsigned char>(*current_char)].children;
66  ++current_char;
67  --length;
68  } while (true);
69 }
#define UNICHAR_LEN
Definition: unichar.h:30

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