163 lines
4 KiB
C
163 lines
4 KiB
C
![]() |
/* Runes for special purposes (0xe800-0xfdff is Private Use Area) */
|
|||
|
enum { NONE=0xe800, /* Emit nothing */
|
|||
|
TAGS, /* Start of tag */
|
|||
|
TAGE, /* End of tag */
|
|||
|
SPCS, /* Start of special character name */
|
|||
|
PAR, /* Newline, indent */
|
|||
|
LIGS, /* Start of ligature codes */
|
|||
|
LACU=LIGS, /* Acute (´) ligatures */
|
|||
|
LGRV, /* Grave (ˋ) ligatures */
|
|||
|
LUML, /* Umlaut (¨) ligatures */
|
|||
|
LCED, /* Cedilla (¸) ligatures */
|
|||
|
LTIL, /* Tilde (˜) ligatures */
|
|||
|
LBRV, /* Breve (˘) ligatures */
|
|||
|
LRNG, /* Ring (˚) ligatures */
|
|||
|
LDOT, /* Dot (˙) ligatures */
|
|||
|
LDTB, /* Dot below (.) ligatures */
|
|||
|
LFRN, /* Frown (⌢) ligatures */
|
|||
|
LFRB, /* Frown below (̯) ligatures */
|
|||
|
LOGO, /* Ogonek (˛) ligatures */
|
|||
|
LMAC, /* Macron (¯) ligatures */
|
|||
|
LHCK, /* Hacek (ˇ) ligatures */
|
|||
|
LASP, /* Asper (ʽ) ligatures */
|
|||
|
LLEN, /* Lenis (ʼ) ligatures */
|
|||
|
LBRB, /* Breve below (̮) ligatures */
|
|||
|
LIGE, /* End of ligature codes */
|
|||
|
MULTI, /* Start of multi-rune codes */
|
|||
|
MAAS=MULTI, /* ʽα */
|
|||
|
MALN, /* ʼα */
|
|||
|
MAND, /* and */
|
|||
|
MAOQ, /* a/q */
|
|||
|
MBRA, /* <| */
|
|||
|
MDD, /* .. */
|
|||
|
MDDD, /* ... */
|
|||
|
MEAS, /* ʽε */
|
|||
|
MELN, /* ʼε */
|
|||
|
MEMM, /* —— */
|
|||
|
MHAS, /* ʽη */
|
|||
|
MHLN, /* ʼη */
|
|||
|
MIAS, /* ʽι */
|
|||
|
MILN, /* ʼι */
|
|||
|
MLCT, /* ct */
|
|||
|
MLFF, /* ff */
|
|||
|
MLFFI, /* ffi */
|
|||
|
MLFFL, /* ffl */
|
|||
|
MLFL, /* fl */
|
|||
|
MLFI, /* fi */
|
|||
|
MLLS, /* ll with swing */
|
|||
|
MLST, /* st */
|
|||
|
MOAS, /* ʽο */
|
|||
|
MOLN, /* ʼο */
|
|||
|
MOR, /* or */
|
|||
|
MRAS, /* ʽρ */
|
|||
|
MRLN, /* ʼρ */
|
|||
|
MTT, /* ~~ */
|
|||
|
MUAS, /* ʽυ */
|
|||
|
MULN, /* ʼυ */
|
|||
|
MWAS, /* ʽω */
|
|||
|
MWLN, /* ʼω */
|
|||
|
MOE, /* oe */
|
|||
|
MES, /* em space */
|
|||
|
MULTIE, /* End of multi-rune codes */
|
|||
|
};
|
|||
|
#define Nligs (LIGE-LIGS)
|
|||
|
#define Nmulti (MULTIE-MULTI)
|
|||
|
|
|||
|
typedef struct Entry Entry;
|
|||
|
typedef struct Assoc Assoc;
|
|||
|
typedef struct Nassoc Nassoc;
|
|||
|
typedef struct Dict Dict;
|
|||
|
|
|||
|
struct Entry {
|
|||
|
char *start; /* entry starts at start */
|
|||
|
char *end; /* and finishes just before end */
|
|||
|
long doff; /* dictionary offset (for debugging) */
|
|||
|
};
|
|||
|
|
|||
|
struct Assoc {
|
|||
|
char *key;
|
|||
|
long val;
|
|||
|
};
|
|||
|
|
|||
|
struct Nassoc {
|
|||
|
long key;
|
|||
|
long val;
|
|||
|
};
|
|||
|
|
|||
|
struct Dict {
|
|||
|
char *name; /* dictionary name */
|
|||
|
char *desc; /* description */
|
|||
|
char *path; /* path to dictionary data */
|
|||
|
char *indexpath; /* path to index data */
|
|||
|
long (*nextoff)(long); /* function to find next entry offset from arg */
|
|||
|
void (*printentry)(Entry, int); /* function to print entry */
|
|||
|
void (*printkey)(void); /* function to print pronunciation key */
|
|||
|
};
|
|||
|
|
|||
|
int acomp(Rune*, Rune*);
|
|||
|
Rune *changett(Rune *, Rune *, int);
|
|||
|
void err(char*, ...);
|
|||
|
void fold(Rune *);
|
|||
|
void foldre(char*, char*);
|
|||
|
Rune liglookup(Rune, Rune);
|
|||
|
long lookassoc(Assoc*, int, char*);
|
|||
|
long looknassoc(Nassoc*, int, long);
|
|||
|
void outprint(char*, ...);
|
|||
|
void outrune(long);
|
|||
|
void outrunes(Rune *);
|
|||
|
void outchar(int);
|
|||
|
void outchars(char *);
|
|||
|
void outnl(int);
|
|||
|
void outpiece(char *, char *);
|
|||
|
long runetol(Rune*);
|
|||
|
|
|||
|
long oednextoff(long);
|
|||
|
void oedprintentry(Entry, int);
|
|||
|
void oedprintkey(void);
|
|||
|
long ahdnextoff(long);
|
|||
|
void ahdprintentry(Entry, int);
|
|||
|
void ahdprintkey(void);
|
|||
|
long pcollnextoff(long);
|
|||
|
void pcollprintentry(Entry, int);
|
|||
|
void pcollprintkey(void);
|
|||
|
long pcollgnextoff(long);
|
|||
|
void pcollgprintentry(Entry, int);
|
|||
|
void pcollgprintkey(void);
|
|||
|
long movienextoff(long);
|
|||
|
void movieprintentry(Entry, int);
|
|||
|
void movieprintkey(void);
|
|||
|
long pgwnextoff(long);
|
|||
|
void pgwprintentry(Entry,int);
|
|||
|
void pgwprintkey(void);
|
|||
|
void rogetprintentry(Entry, int);
|
|||
|
long rogetnextoff(long);
|
|||
|
void rogetprintkey(void);
|
|||
|
long slangnextoff(long);
|
|||
|
void slangprintentry(Entry, int);
|
|||
|
void slangprintkey(void);
|
|||
|
long robertnextoff(long);
|
|||
|
void robertindexentry(Entry, int);
|
|||
|
void robertprintkey(void);
|
|||
|
long robertnextflex(long);
|
|||
|
void robertflexentry(Entry, int);
|
|||
|
long simplenextoff(long);
|
|||
|
void simpleprintentry(Entry, int);
|
|||
|
void simpleprintkey(void);
|
|||
|
long thesnextoff(long);
|
|||
|
void thesprintentry(Entry, int);
|
|||
|
void thesprintkey(void);
|
|||
|
long worldnextoff(long);
|
|||
|
void worldprintentry(Entry, int);
|
|||
|
void worldprintkey(void);
|
|||
|
|
|||
|
extern Biobuf *bdict;
|
|||
|
extern Biobuf *bout;
|
|||
|
extern int linelen;
|
|||
|
extern int breaklen;
|
|||
|
extern int outinhibit;
|
|||
|
extern int debug;
|
|||
|
extern Rune *multitab[];
|
|||
|
extern Dict dicts[];
|
|||
|
|
|||
|
#define asize(a) (sizeof (a)/sizeof(a[0]))
|