00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
#ifndef CONSTRAINTNET_H
00021
#define CONSTRAINTNET_H
00022
00023
00024
#include <blah.h>
00025
#include "input.h"
00026
#include "scorematrix.h"
00027
#include "lexemgraph.h"
00028
#include "scache.h"
00029
00030
00031
00032
00033 typedef enum {
00034 cnEdgesOn,
00035 cnEdgesOff,
00036 cnEdgesFew,
00037 cnEdgesAll
00038 }
CnEdgesType;
00039
00040
00041
00042
00043
00044 typedef struct {
00045 String
id;
00046
00047
00048
00049 LexemGraph lexemgraph;
00050
00051 Vector values;
00052 Vector nodes;
00053 Vector edges;
00054 Array isBuilt;
00055 Agenda searchagenda;
00056
00057 int totalNumberOfValues;
00058
00059
00060 List parses;
00061
00062 ScoreCache cache;
00063
00064
00065
00066 int evalUnary;
00067 int statUnary;
00068 int evalBinary;
00069 Vector lvTotals;
00070
00071
00072 }
ConstraintNetStruct;
00073
typedef ConstraintNetStruct *
ConstraintNet;
00074
00075
00076
00077
00078
00079
00080
#ifndef SWIG
00081
00082
00083
00084 typedef struct {
00085 ConstraintNet net;
00086 Level level;
00087
00088 GraphemNode gn;
00089 Vector values;
00090
00091
00092 int totalNumberOfValues;
00093 int noValidValues;
00094 }
ConstraintNodeStruct;
00095
00096
00097
00098
00099 typedef ConstraintNodeStruct *
ConstraintNode;
00100
00101
00102
00103
00104
00105
00106
00107 typedef struct ConstraintEdgeStruct {
00108 ConstraintNode start;
00109 ConstraintNode stop;
00110 struct ConstraintEdgeStruct *
reverse;
00111
00112 ScoreMatrix scores;
00113
00114 Boolean *
m;
00115 Vector *
prevSupport;
00116 Vector *
nextSupport;
00117 Vector *
s;
00118 int *
counter;
00119 Boolean *
isMarked;
00120 }
ConstraintEdgeStruct;
00121
00122
00123
00124
00125 typedef ConstraintEdgeStruct *
ConstraintEdge;
00126
00127
00128
00129
00130 typedef struct {
00131 ConstraintNode node;
00132 LevelValue value;
00133 }
NodeBindingStruct;
00134
00135
00136
00137
00138 typedef NodeBindingStruct *
NodeBinding;
00139
#endif
00140
00141
00142
00143
00144
00145 typedef struct {
00146 Constraint constraint;
00147 Number penalty;
00148
00149
00150
00151
00152 int nodeBindingIndex1;
00153
00154
00155 LevelValue lv1;
00156 int nodeBindingIndex2;
00157
00158
00159 LevelValue lv2;
00160 }
ConstraintViolationStruct;
00161
00162
00163
00164
00165 typedef ConstraintViolationStruct *
ConstraintViolation;
00166
00167
00168
00169
#ifndef SWIG
00170
extern int cnCounter;
00171
#endif
00172
00173
#ifdef SWIG
00174
#ifdef OLD_SWIG
00175
%readwrite;
00176
#else
00177
%
mutable;
00178
#endif
00179
#endif
00180
00181
extern ConstraintNet cnMostRecentlyCreatedNet;
00182
#ifdef SWIG
00183
#ifdef OLD_SWIG
00184
%readonly;
00185
#else
00186
%immutable;
00187
#endif
00188
#endif
00189
00190
00191
extern CnEdgesType cnEdgesFlag;
00192
00193
00194
extern Boolean
cnShowDeletedFlag;
00195
00196
00197
extern Boolean
cnUseNonSpec;
00198
00199
00200
00201
00202
00203
extern Number
cnUnaryPruningFraction;
00204
00205
00206
00207
00208
00209
00210
00211
00212
extern int cnSortNodesMethod;
00213
00214
00215
00216
00217
00218
00219
00220
extern ConstraintNet cnFindNet(String
id);
00221
00222
#ifndef SWIG
00223
extern ConstraintNet cnBuildInit();
00224
extern ConstraintNet cnBuildFinal(ConstraintNet net, Boolean buildLVs);
00225
extern ConstraintNet cnBuild(Lattice lat, Boolean buildLVs);
00226
extern void cnDelete(ConstraintNet net);
00227
extern void cnDeleteNode(ConstraintNode cn);
00228
extern void cnDeleteEdge(ConstraintEdge cn);
00229
extern void cnDeleteBinding(NodeBinding nb);
00230
extern void cnPrint(
long unsigned int mode, ConstraintNet net);
00231
extern void cnPrintNode(
long unsigned int mode, ConstraintNode cn);
00232
extern void cnPrintEdge(
long unsigned int mode, ConstraintEdge e);
00233
extern void cnBuildLevelValues(ConstraintNode node, Level level,
GraphemNode modifier,
GraphemNode modifiee);
00234
extern Boolean
cnBuildTriple(ConstraintNet net,
int a,
int b,
int levelno);
00235
extern Boolean
cnBuildIter(ConstraintNet net,
GraphemNode gn, Boolean buildLVs);
00236
extern Boolean
cnBuildNodes(ConstraintNet net, Boolean buildLVs);
00237
extern void cnBuildEdges(ConstraintNet net);
00238
extern void cnBuildLv(ConstraintNode node, List modifiers,
00239 Level level, String label, List modifiees);
00240
extern Boolean
cnRenew(ConstraintNet net);
00241
extern Boolean
cnIsStartNode(ConstraintNode n);
00242
extern Boolean
cnIsEndNode(ConstraintNode n);
00243
extern Boolean
cnCompareViolation(ConstraintViolation a,
00244 ConstraintViolation b);
00245
extern Boolean
cnConnectedByArc(ConstraintNode a, ConstraintNode b);
00246
extern void cnPrintInfo(ConstraintNet net);
00247
extern void cnUnaryPruning(ConstraintNode node);
00248
extern int cnOptimizeNet(ConstraintNet net);
00249
extern int cnOptimizeNode(ConstraintNet net, ConstraintNode node);
00250
extern void cnSortNodes(ConstraintNet net);
00251
extern void cnSortLVs(ConstraintNet net);
00252
extern void cnPrintParses(ConstraintNet net);
00253
extern ConstraintNode cnFindNode(ConstraintNet net, LevelValue lv);
00254
00255
extern ConstraintViolation cvNew(Constraint c, LevelValue lva, LevelValue lvb);
00256
extern void cvDelete(ConstraintViolation cv);
00257
extern void cvAnalyse(ConstraintViolation cv, Vector context);
00258
extern void cvPrint(
unsigned long mode, ConstraintViolation cv);
00259
extern Boolean
cvContains(List conflicts, ConstraintViolation cv);
00260
extern ConstraintViolation cvClone(ConstraintViolation cv);
00261
extern Boolean
cvCompare(ConstraintViolation a, ConstraintViolation b);
00262
extern Boolean
cvCompareNatural(ConstraintViolation a, ConstraintViolation b);
00263
extern void cnPrintActiveLVs(ConstraintNet net);
00264
extern void cnUndeleteAllLVs(ConstraintNet net);
00265
extern void cnDeleteAllLVs(ConstraintNet net);
00266
extern Boolean
cnBuildUpdateArcs(ConstraintNet net, List listArcs);
00267
extern GraphemNode cnGetGraphemNodeFromArc(ConstraintNet net, Arc arc);
00268
00269
extern void cnInitialize();
00270
extern void cnCallback(String name,
float *var);
00271
#endif
00272
00273
extern Lattice
cnGetLattice(ConstraintNet cn);
00274
00275
00276
#endif
00277