200 lines
10 KiB
C
200 lines
10 KiB
C
|
#include "commondict.h"
|
||
|
|
||
|
/* ************************************************************************* */
|
||
|
/* * Definitions for dictionary support for XRW algs * */
|
||
|
/* ************************************************************************* */
|
||
|
|
||
|
#ifndef XRWORDDICT_INCLUDED
|
||
|
#define XRWORDDICT_INCLUDED
|
||
|
|
||
|
#define XRWD_SRCID_NOP 0x0000 /* Initial state - can be any */
|
||
|
#define XRWD_SRCID_VOC 0x0001 /* Sym originates from vocabulary */
|
||
|
#define XRWD_SRCID_USV 0x0011 /* Sym originates from user dict */
|
||
|
#define XRWD_SRCID_LD 0x0002 /* Sym originates from lexical DB */
|
||
|
#define XRWD_SRCID_TR 0x0004 /* Sym originates from charset */
|
||
|
#define XRWD_SRCID_CS 0x0008 /* Sym originates from charset */
|
||
|
#define XRWD_SRCID_PT 0x0030 /* Sym originates from punctuation */
|
||
|
#define XRWD_SRCID_SPT 0x0010 /* Sym originates from spunctuation */
|
||
|
#define XRWD_SRCID_EPT 0x0020 /* Sym originates from epunctuation */
|
||
|
#define XRWD_SRCID_DGT 0x0040 /* Sym is digit */
|
||
|
#define XRWD_IS_VOC_ONLY(x) (((x) & XRWD_SRCID_VOC) == (x))
|
||
|
|
||
|
#define XRWD_N_SRCS 5 /* Num of buffer for sym sources */
|
||
|
#define XRWD_N_VOC 0 /* Num of buffer for vocabulary */
|
||
|
#define XRWD_N_LD 1 /* Num of buffer for lexical DB */
|
||
|
#define XRWD_N_TR 2 /* Num of buffer for charset */
|
||
|
#define XRWD_N_CS 3 /* Num of buffer for charset */
|
||
|
#define XRWD_N_PT 4 /* Num of buffer for punctuation */
|
||
|
|
||
|
#define XRWD_ID_ORDER XRWD_SRCID_VOC, XRWD_SRCID_LD, XRWD_SRCID_TR, XRWD_SRCID_CS, XRWD_SRCID_PT
|
||
|
|
||
|
#define XRWD_MAX_LETBUF 512
|
||
|
|
||
|
#define XRWD_USE_LENLIM OFF /* Len limit check support #enabled */
|
||
|
#define XRWD_LENLIM 1 /* Len limit check enabled flag */
|
||
|
|
||
|
#define XRWD_NOP 0 /* Starting state, nothing done yet */
|
||
|
#define XRWD_INIT 1 /* Starting state, nothing done yet */
|
||
|
#define XRWD_MIDWORD 2 /* There is no end of word in block db;*/
|
||
|
#define XRWD_WORDEND 3 /* There is end of word in block db; */
|
||
|
#define XRWD_BLOCKEND 4 /* There is no tails in block db; */
|
||
|
#define XRWD_REINIT 10 /* ReStarting state, somwhere in the middle */
|
||
|
#define XRWD_TO_BE_CONTINUED(x) ((x) == XRWD_INIT || (x) == XRWD_MIDWORD || (x) == XRWD_WORDEND)
|
||
|
#define XRWD_TO_BE_ANSWERED(x) ((x) == XRWD_BLOCKEND || (x) == XRWD_WORDEND)
|
||
|
|
||
|
#define XRWD_CA_EXACT 0 /* Command for Check Ans to verify exactly */
|
||
|
#define XRWD_CA_INSENS 1 /* Command for Check Ans to verify caps insensitive */
|
||
|
|
||
|
/* -------------------- Srtructures -------------------------------------- */
|
||
|
#if 0
|
||
|
typedef struct {
|
||
|
_UCHAR l_status; /* Word continuation state */
|
||
|
_UCHAR attribute; /* Word attribute */
|
||
|
_UCHAR chain_num; /* Num of dictionary in chain */
|
||
|
_UCHAR penalty; /* Penalty for current symbol */
|
||
|
_ULONG state; /* State of sym generator */
|
||
|
} sym_src_descr_type, _PTR p_sym_src_descr_type;
|
||
|
|
||
|
typedef struct {
|
||
|
_UCHAR sym; /* Symbol itself (OS coding) */
|
||
|
_UCHAR penalty; /* Min penalty of the sym sources */
|
||
|
_UCHAR sources; /* Flags of sym active sources*/
|
||
|
sym_src_descr_type sd[XRWD_N_SRCS]; /* Sym sources descriptors */
|
||
|
} sym_descr_type, _PTR p_sym_descr_type;
|
||
|
#endif
|
||
|
|
||
|
|
||
|
typedef struct {
|
||
|
_UCHAR sym; /* Symbol itself */
|
||
|
_UCHAR l_status; /* Word continuation state */
|
||
|
_UCHAR attribute; /* Word attribute */
|
||
|
_UCHAR chain_num; /* Num of dictionary in chain */
|
||
|
_UCHAR penalty; /* Source penalty for sym */
|
||
|
_UCHAR cdb_l_status; /* Delayed status for a codebook entry */
|
||
|
_USHORT codeshift; /* Shift in the codebook */
|
||
|
_ULONG state; /* State of sym generator */
|
||
|
|
||
|
LMSTATE InfLMState;
|
||
|
} fw_buf_type, _PTR p_fw_buf_type;
|
||
|
|
||
|
typedef struct {
|
||
|
_UCHAR sym; /* Symbol itself (OS coding) */
|
||
|
_UCHAR penalty; /* Min penalty of the sym sources */
|
||
|
_UCHAR sources; /* Flags of sym active sources*/
|
||
|
fw_buf_type sd[XRWD_N_SRCS]; /* Sym sources descriptors */
|
||
|
} sym_descr_type, _PTR p_sym_descr_type;
|
||
|
|
||
|
#if PS_VOC /* ............................................................ */
|
||
|
|
||
|
#include "vocutilp.h"
|
||
|
|
||
|
typedef struct {
|
||
|
_INT inverse; /* Direct or backward pass */
|
||
|
_INT filter; /* Filter type (old one) */
|
||
|
_INT flags; /* Flag register directons */
|
||
|
_INT xrw_mode; /* XRW mode of operation */
|
||
|
_INT dict_flags; /* Control flags for dict */
|
||
|
|
||
|
sym_descr_type l_sym; /* Last assigned symbol */
|
||
|
|
||
|
_INT src_id; /* ID of source of verif. */
|
||
|
// _INT src_id_answ; /* ID of found full word */
|
||
|
// _ULONG attribute; /* Word attribute */
|
||
|
// _ULONG state; /* Cur verification state */
|
||
|
|
||
|
_INT xrinp_len; /* Length of Xr inp seq. */
|
||
|
_INT done_let; /* Num of letters created */
|
||
|
_INT word_offset; /* Num let of word's last init */
|
||
|
_INT done_xrlen; /* Num of Xr els. used */
|
||
|
|
||
|
_INT main_dict_enabled; /* Is the dict enabled */
|
||
|
|
||
|
p_VOID huserdict; /* user dict handle */
|
||
|
|
||
|
p_VOID p_tr; /* Pointer to beg triads */
|
||
|
|
||
|
p_UCHAR charset; /* Pointer to charset str. */
|
||
|
p_UCHAR lpunct; /* Pointer to charset str. */
|
||
|
p_UCHAR epunct; /* Pointer to charset str. */
|
||
|
|
||
|
_UCHAR word[w_lim]; /* Cur word sequence */
|
||
|
_UCHAR realword[w_lim]; /* Cur realword sequence */
|
||
|
_UCHAR wwc_delt[w_lim]; /* Deltas betw sym-realsym in wwc */
|
||
|
#if USE_LOCATIONS
|
||
|
_UCHAR locations[XRINP_SIZE]; /* Positions of xr relative to step in the word */
|
||
|
#endif
|
||
|
p_VOID pldbsm;
|
||
|
} lex_data_type, _PTR p_lex_data_type;
|
||
|
|
||
|
#endif /* PS_VOC ......................................................... */
|
||
|
|
||
|
#if AIRUS_VOC /* ......................................................... */
|
||
|
|
||
|
#define BORLAND /* For Microlytics */
|
||
|
|
||
|
#include "newttype.h"
|
||
|
#include "airustyp.h"
|
||
|
#include "microlyt.h"
|
||
|
|
||
|
#include "vocutila.h"
|
||
|
|
||
|
#define BLOCKEND 3 /* There is no tails in block db; */
|
||
|
#define WORDEND 2 /* There is end of word in block db; */
|
||
|
#define MIDWORD 1 /* There is no end of word in block db;*/
|
||
|
|
||
|
|
||
|
typedef struct {
|
||
|
_INT inverse;
|
||
|
_INT filter;
|
||
|
_INT flags;
|
||
|
_INT xrw_mode; /* XRW mode of operation */
|
||
|
_INT dict_flags; /* Control flags for dict */
|
||
|
|
||
|
sym_descr_type l_sym; /* Last assigned symbol */
|
||
|
|
||
|
_INT src_id;
|
||
|
// _INT src_id_answ; /* ID of found full word */
|
||
|
// _ULONG attribute;
|
||
|
// _ULONG state;
|
||
|
|
||
|
_INT xrinp_len;
|
||
|
_INT done_let;
|
||
|
_INT word_offset; /* Num let of word's last init */
|
||
|
_INT done_xrlen;
|
||
|
|
||
|
AirusAPtr p; /* Airus param block pointer*/
|
||
|
ParcSpeller _PTR ps; /* Microlitycs object */
|
||
|
_UCHAR n_vocs; /* Number of voc's in chain */
|
||
|
_ULONG voc_IDs[MAX_DICT];/* ID codes of current dictionary */
|
||
|
|
||
|
p_VOID hld; /* Character filter pointer */
|
||
|
|
||
|
p_triad_type p_tr; /* Pointer to beg triads */
|
||
|
|
||
|
p_UCHAR charset;
|
||
|
p_UCHAR lpunct; /* Pointer to charset str. */
|
||
|
p_UCHAR epunct; /* Pointer to charset str. */
|
||
|
//CHE: _UCHARs:
|
||
|
_UCHAR word[w_lim];
|
||
|
_UCHAR realword[w_lim]; /* Cur realword sequence */
|
||
|
_UCHAR wwc_delt[w_lim]; /* Deltas betw sym-realsym in wwc */
|
||
|
#if USE_LOCATIONS
|
||
|
_UCHAR locations[XRINP_SIZE]; /* Positions of xr relative to step in the word */
|
||
|
#endif
|
||
|
} lex_data_type, _PTR p_lex_data_type;
|
||
|
|
||
|
#endif /* AIRUS_VOC ..................................................... */
|
||
|
|
||
|
/* -------------------- Proto -------------------------------------------- */
|
||
|
|
||
|
_INT GF_VocSymbolSet(lex_data_type _PTR vs, fw_buf_type (_PTR fbuf)[XRWD_MAX_LETBUF], p_rc_type prc);
|
||
|
_INT AssignDictionaries(lex_data_type _PTR vs, rc_type _PTR rc);
|
||
|
_INT GetWordAttributeAndID(lex_data_type _PTR vs, p_INT src_id, p_INT stat);
|
||
|
|
||
|
#endif
|
||
|
|
||
|
/* ************************************************************************* */
|
||
|
/* * END OF ALLLLLLLLLLLLL * */
|
||
|
/* ************************************************************************* */
|
||
|
|