⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 key_list.h

📁 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework)
💻 H
字号:
// -*- C++ -*-// Key_List.h,v 4.16 1999/06/17 23:07:48 schmidt Exp// Copyright (C) 1989 Free Software Foundation, Inc.// written by Douglas C. Schmidt (schmidt@cs.wustl.edu)// This file is part of GNU GPERF.// This program is free software; you can redistribute it and/or// modify it under the terms of the GNU General Public License// as published by the Free Software Foundation; either version 2// of the License, or (at your option) any later version.// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.#ifndef KEY_LIST_H#define KEY_LIST_H#include "Options.h"#include "List_Node.h"#include "Vectors.h"#if defined (ACE_HAS_GPERF)class Duplicate_Entry{  // = TITLE  //     Describes a duplicate entry.  //  // = DESCRIPTION  //     This is used for generating code by the <Key_List>.public:  int hash_value;  // Hash value for this particular duplicate set.  int slot;  // Slot into the main keyword storage array.  int count;  // Number of consecutive duplicates at this slot.};class Key_List{  // = TITLE  //   Data and function member declarations for the keyword list class.  //  // = DESCRIPTION  //   The key word list is a useful abstraction that keeps track of  //   various pieces of information that enable that fast generation of  //   the Gen_Perf.hash function.  A Key_List is a singly-linked list  //   of List_Nodes.public:  Key_List (void);  ~Key_List (void);  int keyword_list_length (void);  int max_key_length (void);  void reorder (void);  void sort (void);  void string_sort (void);  int read_keys (void);  int output (void);  List_Node *head;  // Points to the head of the linked list.  int total_duplicates;  // Total number of duplicate hash values.private:  // = Make hash table 10 times larger than # of keyword entries.  enum  {    TABLE_MULTIPLE = 10  };  static int occurrence (List_Node *ptr);  static int already_determined (List_Node *ptr);  static void determined (List_Node *ptr);  // @@ All of the following methods should be factored out and  // replaced by the use of the Strategy/Bridge pattern so that we can  // easily add new languages.  void output_min_max (void);  void output_switch (int use_keyword_table = 0);  void output_keyword_table (void);  void output_keylength_table (void);  void output_hash_function (void);  void output_lookup_function (void);  int output_binary_search_function(void);  int output_linear_search_function (void);  int output_lookup_array (void);  void output_strcasecmp (void);  int output_types (void);  void dump (void);  char *array_type (void);  char *save_include_src (void);  char *special_input (char delimiter);  List_Node *merge (List_Node *list1, List_Node *list2);  List_Node *merge_sort (List_Node *head);  int count_duplicates (List_Node *link, const char *type);  void update_lookup_array (int lookup_array[],                            int i1,                            int i2,                            Duplicate_Entry *dup_ptr,                            int value);  char *array_type_;  // Pointer to the type for word list.  char *return_type;  // Pointer to return type for lookup function.  char *struct_tag;  // Shorthand for user-defined struct tag type.  char *include_src;  // C source code to be included verbatim.  int max_key_len;  // Maximum length of the longest keyword.  int min_key_len;  // Minimum length of the shortest keyword.  int min_hash_value;  // Minimum hash value for all keywords.  int max_hash_value;  // Maximum hash value for all keywords.  int occurrence_sort;  // True if sorting by occurrence.  int hash_sort;  // True if sorting by hash value.  int key_sort;  // True if sorting by key value.  int additional_code;  // True if any additional C code is included.  int list_len;  // Length of head's Key_List, not counting duplicates.  int total_keys;  // Total number of keys, counting duplicates.  static const char *const default_array_type;  // Default type for generated code.  static const char *const default_return_type;  // in_word_set return type, by default.  static int field_width;  // How wide the printed field width must be to contain the maximum  // hash value.  static int determined_[ACE_STANDARD_CHARACTER_SET_SIZE];  // Sets the slot location for all keysig characters that are now  // determined.};#endif /* ACE_HAS_GPERF */#endif /* KEY_LIST_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -