home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / cperf-2.1 / src / keylist.h < prev    next >
Encoding:
C/C++ Source or Header  |  1989-11-11  |  2.4 KB  |  55 lines

  1. /* Data and function member declarations for the keyword list class.
  2.  
  3.    Copyright (C) 1989 Free Software Foundation, Inc.
  4.    written by Douglas C. Schmidt (schmidt@ics.uci.edu)
  5.  
  6. This file is part of GNU GPERF.
  7.  
  8. GNU GPERF is free software; you can redistribute it and/or modify
  9. it under the terms of the GNU General Public License as published by
  10. the Free Software Foundation; either version 1, or (at your option)
  11. any later version.
  12.  
  13. GNU GPERF is distributed in the hope that it will be useful,
  14. but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  16. GNU General Public License for more details.
  17.  
  18. You should have received a copy of the GNU General Public License
  19. along with GNU GPERF; see the file COPYING.  If not, write to
  20. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  21.  
  22. /* The key word list is a useful abstraction that keeps track of
  23.    various pieces of information that enable that fast generation
  24.    of the Perfect.hash function.  A Key_List is a singly-linked
  25.    list of List_Nodes. */
  26.  
  27. #ifndef _keylist_h
  28. #define _keylist_h
  29. #include <stdio.h>
  30. #include "listnode.h"
  31.  
  32. typedef struct key_list
  33. {
  34.   LIST_NODE *head;                  /* Points to the head of the linked list. */
  35.   char      *array_type;            /* Pointer to the type for word list. */
  36.   char      *return_type;           /* Pointer to return type for lookup function. */
  37.   char      *struct_tag;            /* Shorthand for user-defined struct tag type. */
  38.   char      *include_src;           /* C source code to be included verbatim. */
  39.   int        list_len;              /* Length of head's Key_List, not counting duplicates. */
  40.   int        total_keys;            /* Total number of keys, counting duplicates. */
  41.   int        max_key_len;           /* Maximum length of the longest keyword. */
  42.   int        min_key_len;           /* Minimum length of the shortest keyword. */
  43.   bool       occurrence_sort;       /* True if sorting by occurrence. */
  44.   bool       hash_sort;             /* True if sorting by hash value. */
  45.   bool       additional_code;       /* True if any additional C code is included. */
  46. } KEY_LIST;
  47.  
  48. extern void       key_list_init P ((void));
  49. extern void       key_list_destroy P ((void));
  50. extern void       print_output P ((void));
  51. extern int        keyword_list_length P ((void));
  52. extern int        max_key_length P ((void));
  53. extern KEY_LIST   key_list;
  54. #endif /* _keylist_h */
  55.