2008-01-13 06:57:09 +01:00
|
|
|
#ifndef _HTYPES_HXX_
|
|
|
|
#define _HTYPES_HXX_
|
|
|
|
|
|
|
|
#define ROTATE_LEN 5
|
|
|
|
|
|
|
|
#define ROTATE(v,q) \
|
|
|
|
(v) = ((v) << (q)) | (((v) >> (32 - q)) & ((1 << (q))-1));
|
|
|
|
|
|
|
|
// hentry options
|
|
|
|
#define H_OPT (1 << 0)
|
|
|
|
#define H_OPT_ALIASM (1 << 1)
|
|
|
|
#define H_OPT_PHON (1 << 2)
|
|
|
|
|
2012-10-08 21:20:19 +02:00
|
|
|
// see also csutil.hxx
|
|
|
|
#define HENTRY_WORD(h) &(h->word[0])
|
2008-01-13 06:57:09 +01:00
|
|
|
|
|
|
|
// approx. number of user defined words
|
|
|
|
#define USERWORD 1000
|
|
|
|
|
|
|
|
struct hentry
|
|
|
|
{
|
|
|
|
unsigned char blen; // word length in bytes
|
|
|
|
unsigned char clen; // word length in characters (different for UTF-8 enc.)
|
|
|
|
short alen; // length of affix flag vector
|
|
|
|
unsigned short * astr; // affix flag vector
|
|
|
|
struct hentry * next; // next word with same hash code
|
|
|
|
struct hentry * next_homonym; // next homonym word (with same hash code)
|
|
|
|
char var; // variable fields (only for special pronounciation yet)
|
2012-10-08 21:20:19 +02:00
|
|
|
char word[1]; // variable-length word (8-bit or UTF-8 encoding)
|
2008-01-13 06:57:09 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|