Logo Search packages:      
Sourcecode: kdrill version File versions  Download package


 * defs.h for kdrill
 *   Okay, I "lied".. this file has struct definitions, as
 *   well as the #defines
 * See "externs.h" for the main global variables.

#include <Xmd.h> /* for byte word width */
#include <Xlib.h> /* for XChar2b */

#if defined(BSD) || defined(__DARWIN__)
/* It's Really Important that you use either lrand48(), or random()
 * The old rand() function is just not random enough
# define srand(a) srandom(a)
# define lrand48() random()

#endif /* BSD */

/* for reading in kanjidic lines */
#define MAXLINELEN 1024

#define NOKANJI 0x2266

/* when in random mode, if you have incorrect kanji guessed,
 * will specifically pick an incorrectly-guessed kanji
 * probability of (1/REPEACTFRACTION)
/* number of times a missed kanji will be repeated on purpose */
#define MAXREPEAT 10
/* how many possible answers are there? */
/* maximum of 9, since you can only have accelerator keys 1-9 */

#define BUTTONSWIDTH    120   /* for options buttons */
#define INPUTWIDTH      50
#define GRADEDISTANCE   14

#define ALLGRADES 0xfe
#define ABOVESIXGRADE 0x80
/* FULLWIDTH is startup size of an english translation button */
#define FULLWIDTH 370
#define KANJIWIDTH 50

/* MAXTRANSLATIONSALLOWED reflects the size of an array of pointer-to-translation,
 * and an array of booleans for the Usefile
 * We malloc for every actual entry read
 * MIN/MAX KANJIALLOWED is a special subset of that.
#define MINKANJIALLOWED 0x2000
#define MAXKANJIALLOWED 0x8000 /* start edict at this+1 */
/* Crud. edict actually overflowed when MAXTRANSLATIONS==0x18000 */

/* MAXRADICALS is the approximate number of radicals that we know of, that
 * may be building blocks for a particular kanji.
 * DO NOT CONFUSE THIS with the number of kanji that may be
 * associated with a particular radical.
 * Which for some reason, I named MAXKRADPOST
#define MAXRADICALS 250

#define MAXKRADPOST 3200

/* The following means the minimum active translations we must have available.
 * Otherwise, we assume an error in configuration
#define HAVE_AT_LEAST 9

typedef struct translationstruct * TRANSLATION;

struct translationstruct {
      int kdrill_index; /* position in internal array */

      char *english;    /* english translation string.
                   * null-terminated.
                   * Can theoretically be any length, but
                   * since it will all be on a single-line
                   * text widget, that would be silly

      CARD16 Uindex;          /* because it seems to be the future */
                        /* "Unicode" index */

      BITS16 Qindex;          /* for the "four corner" lookup method */
      BITS16 Sindex;          /* for SKIP: 2 bytes, see skipfromthree() */
      BITS16 Nindex;          /* for annoying "See Nxxxx" references */
                        /* Nelson dictionary */
      BITS16 Hindex;          /* Halpern dictionary indexes */

      BITS16 frequency;       /* frequency that kanji is used */
      BYTE grade_level; /* akin to  school class level */

      BYTE Strokecount;

      BITS16 incorrect;

      XChar2b *pronunciation; /* kana, actually */
      XChar2b *kanji;         /* can be pointer to pronunciation */

      TRANSLATION nextk;



SO here's the format for the translation/dictionary file I have decided
on so far:

I changed specs. it will have to be in "kanjidic" format...

Two char high-bit-set identifier, followed by JIS number in hex.
Followed by stroke information? [HAS TO BE TERMINATED BY 'Gx', where
                          'x' is any number]
Followed by pronunciation guide, in kana.
Followed by various english translations, enclosed in {}

"kanjidic" often has multiple {} phrases. which leads to another nasty
hack  in readstructs()


Generated by  Doxygen 1.6.0   Back to index