All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
adaptive.h
Go to the documentation of this file.
1 /******************************************************************************
2  ** Filename: adaptive.h
3  ** Purpose: Interface to adaptive matcher.
4  ** Author: Dan Johnson
5  ** History: Fri Mar 8 10:00:49 1991, DSJ, Created.
6  **
7  ** (c) Copyright Hewlett-Packard Company, 1988.
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 #ifndef ADAPTIVE_H
19 #define ADAPTIVE_H
20 
21 /*----------------------------------------------------------------------------
22  Include Files and Type Defines
23 ----------------------------------------------------------------------------*/
24 #include "oldlist.h"
25 #include "intproto.h"
26 #include <stdio.h>
27 
28 typedef struct
29 {
33 }
34 
35 
38 
39 typedef struct
40 {
46  int FontinfoId; // font information inferred from pre-trained templates
49 
50 typedef struct
51 {
53  int FontinfoId; // font information inferred from pre-trained templates
56 
57 typedef union
58 {
62 
63 typedef struct
64 {
66  uinT8 MaxNumTimesSeen; // maximum number of times any TEMP_CONFIG was seen
67  uinT8 dummy[2]; // (cut at matcher_min_examples_for_prototyping)
74 
75 typedef struct
76 {
80  uinT8 dummy[3];
84 
85 /*----------------------------------------------------------------------------
86  Public Function Prototypes
87 ----------------------------------------------------------------------------*/
88 #define NumNonEmptyClassesIn(Template) ((Template)->NumNonEmptyClasses)
89 
90 #define IsEmptyAdaptedClass(Class) ((Class)->NumPermConfigs == 0 && \
91 (Class)->TempProtos == NIL_LIST)
92 
93 #define ConfigIsPermanent(Class,ConfigId) \
94 (test_bit ((Class)->PermConfigs, ConfigId))
95 
96 #define MakeConfigPermanent(Class,ConfigId) \
97 (SET_BIT ((Class)->PermConfigs, ConfigId))
98 
99 #define MakeProtoPermanent(Class,ProtoId) \
100 (SET_BIT ((Class)->PermProtos, ProtoId))
101 
102 #define TempConfigFor(Class,ConfigId) \
103 ((Class)->Config[ConfigId].Temp)
104 
105 #define PermConfigFor(Class,ConfigId) \
106 ((Class)->Config[ConfigId].Perm)
107 
108 #define IncreaseConfidence(TempConfig) \
109 ((TempConfig)->NumTimesSeen++)
110 
111 void AddAdaptedClass(ADAPT_TEMPLATES Templates,
112  ADAPT_CLASS Class,
113  CLASS_ID ClassId);
114 
115 void FreeTempProto(void *arg);
116 
118 
120 
121 void free_adapted_class(ADAPT_CLASS adapt_class);
122 
124 
125 TEMP_CONFIG NewTempConfig(int MaxProtoId, int FontinfoId);
126 
128 
129 ADAPT_CLASS ReadAdaptedClass(FILE *File);
130 
131 PERM_CONFIG ReadPermConfig(FILE *File);
132 
133 TEMP_CONFIG ReadTempConfig(FILE *File);
134 
135 void WriteAdaptedClass(FILE *File, ADAPT_CLASS Class, int NumConfigs);
136 
137 void WritePermConfig(FILE *File, PERM_CONFIG Config);
138 
139 void WriteTempConfig(FILE *File, TEMP_CONFIG Config);
140 
141 #endif
inT16 PROTO_ID
Definition: matchdefs.h:41
TEMP_CONFIG Temp
Definition: adaptive.h:59
void free_adapted_class(ADAPT_CLASS adapt_class)
Definition: adaptive.cpp:136
#define MAX_NUM_CLASSES
Definition: matchdefs.h:31
void WriteAdaptedClass(FILE *File, ADAPT_CLASS Class, int NumConfigs)
Definition: adaptive.cpp:459
BIT_VECTOR PermConfigs
Definition: adaptive.h:69
#define MAX_NUM_CONFIGS
Definition: intproto.h:46
TEMP_PROTO NewTempProto()
Definition: adaptive.cpp:254
uinT32 * BIT_VECTOR
Definition: bitvec.h:28
void FreeTempProto(void *arg)
Definition: adaptive.cpp:90
TEMP_CONFIG ReadTempConfig(FILE *File)
Definition: adaptive.cpp:429
PERM_CONFIG_STRUCT * PERM_CONFIG
Definition: adaptive.h:55
uinT16 ProtoId
Definition: adaptive.h:30
void FreeTempConfig(TEMP_CONFIG Config)
Definition: adaptive.cpp:80
UNICHAR_ID CLASS_ID
Definition: matchdefs.h:35
uinT8 ProtoVectorSize
Definition: adaptive.h:42
void WritePermConfig(FILE *File, PERM_CONFIG Config)
Definition: adaptive.cpp:535
uinT8 NumPermConfigs
Definition: adaptive.h:65
PERM_CONFIG ReadPermConfig(FILE *File)
Definition: adaptive.cpp:402
ADAPT_CLASS_STRUCT * ADAPT_CLASS
Definition: adaptive.h:73
PROTO_STRUCT Proto
Definition: adaptive.h:32
uinT8 MaxNumTimesSeen
Definition: adaptive.h:66
TEMP_PROTO_STRUCT * TEMP_PROTO
Definition: adaptive.h:37
void WriteTempConfig(FILE *File, TEMP_CONFIG Config)
Definition: adaptive.cpp:559
ADAPT_TEMPLATES_STRUCT * ADAPT_TEMPLATES
Definition: adaptive.h:83
int UNICHAR_ID
Definition: unichar.h:33
uinT8 NumTimesSeen
Definition: adaptive.h:41
TEMP_CONFIG NewTempConfig(int MaxProtoId, int FontinfoId)
Definition: adaptive.cpp:223
ADAPT_CLASS NewAdaptedClass()
Definition: adaptive.cpp:113
INT_TEMPLATES Templates
Definition: adaptive.h:77
CLUSTERCONFIG Config
void free_adapted_templates(ADAPT_TEMPLATES templates)
Definition: adaptive.cpp:199
PROTO_ID MaxProtoId
Definition: adaptive.h:43
ADAPT_CLASS ReadAdaptedClass(FILE *File)
Definition: adaptive.cpp:313
UNICHAR_ID * Ambigs
Definition: adaptive.h:52
PERM_CONFIG Perm
Definition: adaptive.h:60
void AddAdaptedClass(ADAPT_TEMPLATES Templates, ADAPT_CLASS Class, CLASS_ID ClassId)
Definition: adaptive.cpp:49
BIT_VECTOR Protos
Definition: adaptive.h:45
TEMP_CONFIG_STRUCT * TEMP_CONFIG
Definition: adaptive.h:48
BIT_VECTOR PermProtos
Definition: adaptive.h:68
unsigned short uinT16
Definition: host.h:101
unsigned char uinT8
Definition: host.h:99