All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
char_altlist.h
Go to the documentation of this file.
1 /**********************************************************************
2  * File: char_altlist.h
3  * Description: Declaration of a Character Alternate List Class
4  * Author: Ahmad Abdulkader
5  * Created: 2007
6  *
7  * (C) Copyright 2008, Google Inc.
8  ** Licensed under the Apache License, Version 2.0 (the "License");
9  ** you may not use this file except in compliance with the License.
10  ** You may obtain a copy of the License at
11  ** http://www.apache.org/licenses/LICENSE-2.0
12  ** Unless required by applicable law or agreed to in writing, software
13  ** distributed under the License is distributed on an "AS IS" BASIS,
14  ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  ** See the License for the specific language governing permissions and
16  ** limitations under the License.
17  *
18  **********************************************************************/
19 
20 #ifndef CHAR_ALT_LIST_H
21 #define CHAR_ALT_LIST_H
22 
23 // The CharAltList class holds the list of class alternates returned from
24 // a character classifier. Each alternate represents a class ID.
25 // It inherits from the AltList class.
26 // The CharAltList owns a CharSet object that maps a class-id to a string.
27 
28 #include "altlist.h"
29 #include "char_set.h"
30 
31 namespace tesseract {
32 class CharAltList : public AltList {
33  public:
34  CharAltList(const CharSet *char_set, int max_alt = kMaxCharAlt);
35  ~CharAltList();
36 
37  // Sort the alternate list based on cost
38  void Sort();
39  // insert a new alternate with the specified class-id, cost and tag
40  bool Insert(int class_id, int cost, void *tag = NULL);
41  // returns the cost of a specific class ID
42  inline int ClassCost(int class_id) const {
43  if (class_id_cost_ == NULL ||
44  class_id < 0 ||
45  class_id >= char_set_->ClassCount()) {
46  return WORST_COST;
47  }
48  return class_id_cost_[class_id];
49  }
50  // returns the alternate class-id corresponding to an alternate index
51  inline int Alt(int alt_idx) const { return class_id_alt_[alt_idx]; }
52  // set the cost of a certain alternate
53  void SetAltCost(int alt_idx, int cost) {
54  alt_cost_[alt_idx] = cost;
55  class_id_cost_[class_id_alt_[alt_idx]] = cost;
56  }
57 
58  private:
59  // character set object. Passed at construction time
60  const CharSet *char_set_;
61  // array of alternate class-ids
62  int *class_id_alt_;
63  // array of alternate costs
64  int *class_id_cost_;
65  // default max count of alternates
66  static const int kMaxCharAlt = 256;
67 };
68 }
69 
70 #endif // CHAR_ALT_LIST_H
bool Insert(int class_id, int cost, void *tag=NULL)
#define WORST_COST
Definition: cube_const.h:30
void SetAltCost(int alt_idx, int cost)
Definition: char_altlist.h:53
CharAltList(const CharSet *char_set, int max_alt=kMaxCharAlt)
int ClassCost(int class_id) const
Definition: char_altlist.h:42
int ClassCount() const
Definition: char_set.h:111
#define NULL
Definition: host.h:144
int Alt(int alt_idx) const
Definition: char_altlist.h:51