00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
#ifndef EVAL_H
00020
#define EVAL_H
00021
00022
00023
#include <blah.h>
00024
#include "input.h"
00025
#include "constraintnet.h"
00026
00027
00028
00029
#ifndef SWIG
00030
00031
00032
00033
00034
00035
00036
00037
00038 typedef enum {
00039 EMTInterpreted,
00040 EMTCompiled,
00041 }
EvalMethodType;
00042
#endif
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054 typedef struct {
00055 int no;
00056 int hard;
00057 Number soft;
00058 }
BadnessStruct;
00059
00060 typedef BadnessStruct *
Badness;
00061
00062
00063
00064
#ifndef SWIG
00065
extern Constraint
evalCurrentConstraint;
00066
extern Formula
evalCurrentFormula;
00067
00068
extern EvalMethodType evalEvaluationMethod;
00069
extern EvalMethodType evalPeekValueMethod;
00070
00071
extern String
static_string_id;
00072
extern String
static_string_word;
00073
extern String
static_string_from;
00074
extern String
static_string_to;
00075
extern String
static_string_info;
00076
extern String
static_string_chunk_start;
00077
extern String
static_string_chunk_end;
00078
extern String
static_string_chunk_type;
00079
00080
#endif
00081
00082
extern int lock_counter;
00083
extern int lock_width;
00084
extern int *
has_cache;
00085
00086
extern Boolean
evalSloppySubsumesWarnings;
00087
00088
00089
00090
#ifndef SWIG
00091
extern void evalInitialize(
void);
00092
extern void evalFinalize(
void);
00093
extern Boolean
evalValidateEvalMethod(String name, String value,
int *var);
00094
00095
extern Value
evalTerm(Term, Value,
LexemGraph, Vector);
00096
00097
extern Boolean
evalConstraint( Constraint c,
ConstraintNet net, Vector context, ... );
00098
extern Boolean
evalUnaryConstraint(Constraint c,
ConstraintNet net, Vector context,
00099 LevelValue lv);
00100
extern Boolean
evalBinaryConstraint(Constraint c,
ConstraintNet net, Vector context,
00101 LevelValue lva, LevelValue lvb);
00102
extern Number
evalUnary(LevelValue lv,
ConstraintNet net, Vector context,
00103 Boolean use_cs_only,
00104 Badness b, List *conflicts);
00105
extern Number
evalBinary(LevelValue lva, LevelValue lvb,
00106
ConstraintNet net, Vector context,
00107 Boolean use_cs_only,
00108 Badness b, List *conflicts);
00109
extern Number
evalInContext(Vector LVs, Vector context, Badness b, List* conflicts);
00110
extern Value
peekValue( Value val, List path);
00111
extern Badness bNew(
int no,
int hard, Number soft);
00112
extern Badness bClone(Badness b);
00113
extern void bCopy(Badness dest, Badness src);
00114
extern Badness bAdd(Badness b, Number score);
00115
extern Badness bSubtract(Badness b, Number score);
00116
extern Badness bAddBadness(Badness a, Badness b);
00117
extern Badness bSubtractBadness(Badness a, Badness b);
00118
extern void bDelete(Badness b);
00119
extern void bPrint(
unsigned long mode, Badness b);
00120
extern Boolean
bEqual(Badness a, Badness b);
00121
extern Boolean
bCompare(Badness a, Badness b);
00122
extern Badness bestBadness(
void);
00123
extern Badness worstBadness(
void);
00124
extern Boolean
significantlyGreater(Number a, Number b);
00125
extern void lock_tree(
int width);
00126
extern void unlock_tree(
void);
00127
#endif
00128
00129
00130
#endif
00131
00132