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

📄 options.h

📁 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework)
💻 H
字号:
// -*- C++ -*-// Options.h,v 4.22 2004/04/24 04:20:21 ossama 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 OPTIONS_H#define OPTIONS_H#include "ace/Log_Msg.h"#if !defined (ACE_LACKS_PRAGMA_ONCE)# pragma once#endif /* ACE_LACKS_PRAGMA_ONCE */#if defined (ACE_HAS_GPERF)// Enumerate the potential debugging Options.enum Option_Type{  DEBUGGING    = 01,            // Enable debugging (prints diagnostics to stderr).  ORDER        = 02,            // Apply ordering heuristic to speed-up search time.  ANSI         = 04,            // Generate ANSI prototypes.  ALLCHARS     = 010,           // Use all characters in hash function.  INLINE       = 020,           // Generate code for inline functions.  TYPE         = 040,           // Handle user-defined type structured keyword input.  RANDOM       = 0100,          // Randomly initialize the associated values table.  DEFAULTCHARS = 0200,          // Make default char positions be 1,$ (end of keyword).  SWITCH       = 0400,          // Generate switch output to save space.  POINTER      = 01000,         // Have in_word_set function return pointer, not boolean.  NOLENGTH     = 02000,         // Don't include keyword length in hash computations.  LENTABLE     = 04000,         // Generate a length table for string comparison.  DUP          = 010000,        // Handle duplicate hash values for keywords.  FAST         = 020000,        // Generate the hash function ``fast.''  NOTYPE       = 040000,        // Don't include user-defined type definition in output -- it's already defined elsewhere.  COMP         = 0100000,       // Generate strncmp rather than strcmp.  GLOBAL       = 0200000,       // Make the keyword table a global variable.  CONSTANT     = 0400000,       // Make the generated tables readonly (const).  CPLUSPLUS    = 01000000,      // Generate C++ code.  C            = 02000000,      // Generate C code.  ENUM         = 04000000,      // Use enum for constants.  STRCASECMP   = 010000000,     // Use the case insensitive comparison.  OPTIMIZE     = 020000000,     // Assume all input keywords are in the keyset.  ADA          = 040000000,     // Generate Ada code.  MUTE         = 0100000000,    // Dont print the warnings.  SKIPCLASS    = 0200000000,    // Skip the class definition part in the output while in C++ mode.  SKIPSTRINGH  = 0400000000,    // Skip including the header file string.h.  BINARYSEARCH = 01000000000,   // Generates Binary Search code.  LINEARSEARCH = 02000000000    // Generates Linear Search code.};// Define some useful constants (these don't really belong here, but// I'm not sure where else to put them!).  These should be consts, but// g++ doesn't seem to do the right thing with them at the// moment... ;-(// PharLap ETS defines EOS as well... so if building for ETS, clear out// their EOS.#if defined (ACE_HAS_PHARLAP) && defined (EOS)# undef EOS#endif /* ACE_HAS_PHARLAP && EOS */enum{  MAX_KEY_POS = 128 - 1,    // Max size of each word's key set.  WORD_START = 1,           // Signals the start of a word.  WORD_END = 0,             // Signals the end of a word.  EOS = MAX_KEY_POS         // Signals end of the key list.};// @@ The Options class should be changed to use the Singleton pattern.class Options{  // = TITLE  //   This class provides a uniform interface to the various options  //   available to a user of the gperf hash function generator.  //  // = DESCRIPTION  //   In addition to the run-time options, found in the <Option_Type>  //   there is also the hash table Size and the Keys to be used in  //   the hashing.  The overall design of this module was an  //   experiment in using C++ classes as a mechanism to enhance  //   centralization of option and and error handling.public:  Options (void);  ~Options (void);  int operator[] (Option_Type option);  int parse_args (int argc, char *argv[]);  void operator= (enum Option_Type);  bool operator!= (enum Option_Type);  static void print_options (void);  static void asso_max (int r);  static int asso_max (void);  static void reset (void);  static int get (void);  static int iterations (void);  static u_int max_keysig_size (void);  static void keysig_size (u_int);  static int jump (void);  static int initial_value (void);  static int total_switches (void);  static const char *function_name (void);  static const char *fill_default (void);  static const char *key_name (void);  static const char *class_name (void);  static const char *hash_name (void);  static const char *delimiter (void);private:  static int option_word_;  // Holds the user-specified Options.  static int total_switches_;  // Number of switch statements to generate.  static u_int total_keysig_size_;  // Total number of distinct key_positions.  static int size_;  // Range of the hash table.  static int key_pos_;  // Tracks current key position for Iterator.  static int jump_;  // Jump length when trying alternative values.  static int initial_asso_value_;  // Initial value for asso_values table.  static int iterations_;  // Amount to iterate when a collision occurs.  static int argc_;  // Records count of command-line arguments.  static char **argv_;  // Stores a pointer to command-line vector.  static const char *function_name_;  // Names used for generated lookup function.  static const char  *fill_default_;  // Expression used to assign default values in keyword table.  static const char *key_name_;  // Name used for keyword key.  static const char *class_name_;  // Name used for generated C++ class.  static const char *hash_name_;  // Name used for generated hash function.  static const char *delimiters_;  // Separates keywords from other attributes.  static char key_positions_[MAX_KEY_POS];  // Contains user-specified key choices.  static int key_sort (char *base, int len);  // Sorts key positions in REVERSE order.  static void usage (void);  // Prints proper program usage.};// Global option coordinator for the entire program.extern Options option;#endif /* ACE_HAS_GPERF */#endif /* OPTIONS_H */

⌨️ 快捷键说明

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