123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- /*
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
- /* 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 *);
- void runescpy(Rune*, Rune*);
- 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]))
|