Index: gperf/src/gperf/3.0.1/gperf-3.0.1-src/src/options.h |
=================================================================== |
--- gperf/src/gperf/3.0.1/gperf-3.0.1-src/src/options.h (revision 0) |
+++ gperf/src/gperf/3.0.1/gperf-3.0.1-src/src/options.h (revision 0) |
@@ -0,0 +1,289 @@ |
+/* This may look like C code, but it is really -*- C++ -*- */ |
+ |
+/* Handles parsing the Options provided to the user. |
+ |
+ Copyright (C) 1989-1998, 2000, 2002-2003 Free Software Foundation, Inc. |
+ Written by Douglas C. Schmidt <schmidt@ics.uci.edu> |
+ and Bruno Haible <bruno@clisp.org>. |
+ |
+ This file is part of GNU GPERF. |
+ |
+ GNU GPERF 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, or (at your option) |
+ any later version. |
+ |
+ GNU GPERF 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; see the file COPYING. |
+ If not, write to the Free Software Foundation, Inc., |
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
+ |
+/* This module provides a uniform interface to the various options available |
+ to a user of the gperf hash function generator. */ |
+ |
+#ifndef options_h |
+#define options_h 1 |
+ |
+#include <stdio.h> |
+#include "positions.h" |
+ |
+/* Enumeration of the possible boolean options. */ |
+ |
+enum Option_Type |
+{ |
+ /* --- Input file interpretation --- */ |
+ |
+ /* Handle user-defined type structured keyword input. */ |
+ TYPE = 1 << 0, |
+ |
+ /* Ignore case of ASCII characters. */ |
+ UPPERLOWER = 1 << 1, |
+ |
+ /* --- Language for the output code --- */ |
+ |
+ /* Generate K&R C code: no prototypes, no const. */ |
+ KRC = 1 << 2, |
+ |
+ /* Generate C code: no prototypes, but const (user can #define it away). */ |
+ C = 1 << 3, |
+ |
+ /* Generate ISO/ANSI C code: prototypes and const, but no class. */ |
+ ANSIC = 1 << 4, |
+ |
+ /* Generate C++ code: prototypes, const, class, inline, enum. */ |
+ CPLUSPLUS = 1 << 5, |
+ |
+ /* --- Details in the output code --- */ |
+ |
+ /* Assume 7-bit, not 8-bit, characters. */ |
+ SEVENBIT = 1 << 6, |
+ |
+ /* Generate a length table for string comparison. */ |
+ LENTABLE = 1 << 7, |
+ |
+ /* Generate strncmp rather than strcmp. */ |
+ COMP = 1 << 8, |
+ |
+ /* Make the generated tables readonly (const). */ |
+ CONST = 1 << 9, |
+ |
+ /* Use enum for constants. */ |
+ ENUM = 1 << 10, |
+ |
+ /* Generate #include statements. */ |
+ INCLUDE = 1 << 11, |
+ |
+ /* Make the keyword table a global variable. */ |
+ GLOBAL = 1 << 12, |
+ |
+ /* Use NULL strings instead of empty strings for empty table entries. */ |
+ NULLSTRINGS = 1 << 13, |
+ |
+ /* Optimize for position-independent code. */ |
+ SHAREDLIB = 1 << 14, |
+ |
+ /* Generate switch output to save space. */ |
+ SWITCH = 1 << 15, |
+ |
+ /* Don't include user-defined type definition in output -- it's already |
+ defined elsewhere. */ |
+ NOTYPE = 1 << 16, |
+ |
+ /* --- Algorithm employed by gperf --- */ |
+ |
+ /* Use the given key positions. */ |
+ POSITIONS = 1 << 17, |
+ |
+ /* Handle duplicate hash values for keywords. */ |
+ DUP = 1 << 18, |
+ |
+ /* Don't include keyword length in hash computations. */ |
+ NOLENGTH = 1 << 19, |
+ |
+ /* Randomly initialize the associated values table. */ |
+ RANDOM = 1 << 20, |
+ |
+ /* --- Informative output --- */ |
+ |
+ /* Enable debugging (prints diagnostics to stderr). */ |
+ DEBUG = 1 << 21 |
+}; |
+ |
+/* Class manager for gperf program Options. */ |
+ |
+class Options |
+{ |
+public: |
+ /* Constructor. */ |
+ Options (); |
+ |
+ /* Destructor. */ |
+ ~Options (); |
+ |
+ /* Parses the options given in the command-line arguments. */ |
+ void parse_options (int argc, char *argv[]); |
+ |
+ /* Prints the given options. */ |
+ void print_options () const; |
+ |
+ /* Accessors. */ |
+ |
+ /* Tests a given boolean option. Returns true if set, false otherwise. */ |
+ bool operator[] (Option_Type option) const; |
+ /* Sets a given boolean option. */ |
+ void set (Option_Type option); |
+ |
+ /* Returns the input file name. */ |
+ const char * get_input_file_name () const; |
+ |
+ /* Returns the output file name. */ |
+ const char * get_output_file_name () const; |
+ |
+ /* Sets the output language, if not already set. */ |
+ void set_language (const char *language); |
+ |
+ /* Returns the jump value. */ |
+ int get_jump () const; |
+ |
+ /* Returns the initial associated character value. */ |
+ int get_initial_asso_value () const; |
+ |
+ /* Returns the number of iterations for finding good asso_values. */ |
+ int get_asso_iterations () const; |
+ |
+ /* Returns the total number of switch statements to generate. */ |
+ int get_total_switches () const; |
+ /* Sets the total number of switch statements, if not already set. */ |
+ void set_total_switches (int total_switches); |
+ |
+ /* Returns the factor by which to multiply the generated table's size. */ |
+ float get_size_multiple () const; |
+ |
+ /* Returns the generated function name. */ |
+ const char * get_function_name () const; |
+ /* Sets the generated function name, if not already set. */ |
+ void set_function_name (const char *name); |
+ |
+ /* Returns the keyword key name. */ |
+ const char * get_slot_name () const; |
+ /* Sets the keyword key name, if not already set. */ |
+ void set_slot_name (const char *name); |
+ |
+ /* Returns the struct initializer suffix. */ |
+ const char * get_initializer_suffix () const; |
+ /* Sets the struct initializer suffix, if not already set. */ |
+ void set_initializer_suffix (const char *initializers); |
+ |
+ /* Returns the generated class name. */ |
+ const char * get_class_name () const; |
+ /* Sets the generated class name, if not already set. */ |
+ void set_class_name (const char *name); |
+ |
+ /* Returns the hash function name. */ |
+ const char * get_hash_name () const; |
+ /* Sets the hash function name, if not already set. */ |
+ void set_hash_name (const char *name); |
+ |
+ /* Returns the hash table array name. */ |
+ const char * get_wordlist_name () const; |
+ /* Sets the hash table array name, if not already set. */ |
+ void set_wordlist_name (const char *name); |
+ |
+ /* Returns the string pool name. */ |
+ const char * get_stringpool_name () const; |
+ /* Sets the string pool name, if not already set. */ |
+ void set_stringpool_name (const char *name); |
+ |
+ /* Returns the string used to delimit keywords from other attributes. */ |
+ const char * get_delimiters () const; |
+ /* Sets the delimiters string, if not already set. */ |
+ void set_delimiters (const char *delimiters); |
+ |
+ /* Returns key positions. */ |
+ const Positions& get_key_positions () const; |
+ |
+private: |
+ /* Prints program usage to given stream. */ |
+ static void short_usage (FILE * stream); |
+ |
+ /* Prints program usage to given stream. */ |
+ static void long_usage (FILE * stream); |
+ |
+ /* Records count of command-line arguments. */ |
+ int _argument_count; |
+ |
+ /* Stores a pointer to command-line argument vector. */ |
+ char ** _argument_vector; |
+ |
+ /* Holds the boolean options. */ |
+ int _option_word; |
+ |
+ /* Name of input file. */ |
+ char * _input_file_name; |
+ |
+ /* Name of output file. */ |
+ char * _output_file_name; |
+ |
+ /* The output language. */ |
+ const char * _language; |
+ |
+ /* Jump length when trying alternative values. */ |
+ int _jump; |
+ |
+ /* Initial value for asso_values table. */ |
+ int _initial_asso_value; |
+ |
+ /* Number of attempts at finding good asso_values. */ |
+ int _asso_iterations; |
+ |
+ /* Number of switch statements to generate. */ |
+ int _total_switches; |
+ |
+ /* Factor by which to multiply the generated table's size. */ |
+ float _size_multiple; |
+ |
+ /* Names used for generated lookup function. */ |
+ const char * _function_name; |
+ |
+ /* Name used for keyword key. */ |
+ const char * _slot_name; |
+ |
+ /* Suffix for empty struct initializers. */ |
+ const char * _initializer_suffix; |
+ |
+ /* Name used for generated C++ class. */ |
+ const char * _class_name; |
+ |
+ /* Name used for generated hash function. */ |
+ const char * _hash_name; |
+ |
+ /* Name used for hash table array. */ |
+ const char * _wordlist_name; |
+ |
+ /* Name used for the string pool. */ |
+ const char * _stringpool_name; |
+ |
+ /* Separates keywords from other attributes. */ |
+ const char * _delimiters; |
+ |
+ /* Contains user-specified key choices. */ |
+ Positions _key_positions; |
+}; |
+ |
+/* Global option coordinator for the entire program. */ |
+extern Options option; |
+ |
+#ifdef __OPTIMIZE__ |
+ |
+#define INLINE inline |
+#include "options.icc" |
+#undef INLINE |
+ |
+#endif |
+ |
+#endif |
Property changes on: gperf\src\gperf\3.0.1\gperf-3.0.1-src\src\options.h |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |