#ifndef lint
#ifndef SABER
static char *RCSid = "$Header: /afs/athena.mit.edu/astaff/project/olhdev/src/libmenu/RCS/hash.c,v 1.6 92/04/19 16:57:43 vanharen Exp $";
#endif
#endif

char *TYPE;
char *NODE_ID;
char *MODIFY_DATE;
char *NODE_LABEL;
char *AUTHOR;
char *MAINTAINER;
char *KEYWORDS;
char *FILE_FORMAT;
char *FILE_LOCATION;
char *FILESYSTEM;
char *GROUP_ID;
char *POINTER;
char *PARENT;
char *DO_KEYWORDS;
char *IN_KEYWORDS;
char *FORMATTER;
char *MPARENT;
char *TTY;
char *X;
char *LPTLN;
char *ASCII_FILE;

/* starting time is 16:51:40 */
/* C code produced by gperf version 2.5 (GNU C++ version) */
/* Command-line: gperf -g -a test  */

#define TOTAL_KEYWORDS 21
#define MIN_WORD_LENGTH 1
#define MAX_WORD_LENGTH 14
#define MIN_HASH_VALUE 1
#define MAX_HASH_VALUE 36
/* maximum key range = 36, duplicates = 0 */

#ifdef __GNUC__
inline
#endif
static unsigned int
#ifdef __STDC__
hash (register const char *str, register int len)
#else
hash (str, len)
register char *str;
register int len;
#endif
{
  static unsigned char asso_values[] =
    {
     37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
     37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
     37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
     37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
     37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
     37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
     37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
     37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
     37, 37, 37, 37, 37, 37, 37, 37, 37, 37,
     37, 37, 37, 37, 37, 37, 37,  0, 37, 37,
     25, 20, 10,  0, 37,  5, 37,  0, 10,  0,
      0, 37, 15, 37,  0,  0,  0, 37, 37, 37,
      0,  0, 37, 37, 37, 37, 37, 37,
    };
  return len + asso_values[str[len - 1]] + asso_values[str[0]];
}

#ifdef __GNUC__
inline
#endif
char *
#ifdef __STDC__
in_word_set (register const char *str, register int len)
#else
in_word_set (str, len)
register char *str;
register int len;
#endif
{
  static char *wordlist[] =
    {
      "", 
      "x", 
      "", 
      "tty", 
      "", "", 
      "author", 
      "", 
      "keywords", 
      "", 
      "maintainer", 
      "menu-parent", 
      "", "", "", 
      "lptln", 
      "in-keywords", 
      "", "", 
      "formatter", 
      "filesystem", 
      "file-format", 
      "pointer", 
      "file-location", 
      "type", 
      "label", 
      "", "", "", 
      "primary-parent", 
      "ascii-file", 
      "modify-date", 
      "node-id", 
      "group-id", 
      "", "", 
      "do-keywords", 
    };

  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
    {
      register int key = hash (str, len);

      if (key <= MAX_HASH_VALUE && key >= 0)
        {
          register char *s = wordlist[key];

          if (*s == *str && !strcmp (str + 1, s + 1))
            return s;
        }
    }
  return 0;
}
/* ending time is 16:51:40 */

void
init_hash_table()
{
  TYPE = in_word_set("type",4);
  NODE_ID = in_word_set("node-id",7);
  MODIFY_DATE = in_word_set("modify-date",11);
  NODE_LABEL = in_word_set("label",5);
  AUTHOR = in_word_set("author",6);
  MAINTAINER = in_word_set("maintainer",10);
  KEYWORDS = in_word_set("keywords",8);
  FILE_FORMAT = in_word_set("file-format",11);
  FILE_LOCATION = in_word_set("file-location",13);
  FILESYSTEM = in_word_set("filesystem",10);
  GROUP_ID = in_word_set("group-id",8);
  POINTER = in_word_set("pointer",7);
  PARENT = in_word_set("primary-parent",14);
  DO_KEYWORDS = in_word_set("do-keywords",11);
  IN_KEYWORDS = in_word_set("in-keywords",11);
  FORMATTER = in_word_set("formatter",9);
  MPARENT = in_word_set("menu-parent",11);
  TTY = in_word_set("tty",3);
  X = in_word_set("x",1);
  LPTLN = in_word_set("lptln",5);
  ASCII_FILE = in_word_set("ascii-file",10);
}
