diff options
Diffstat (limited to 'ACE/apps/gperf/src/Options.cpp')
-rw-r--r-- | ACE/apps/gperf/src/Options.cpp | 873 |
1 files changed, 0 insertions, 873 deletions
diff --git a/ACE/apps/gperf/src/Options.cpp b/ACE/apps/gperf/src/Options.cpp deleted file mode 100644 index b6ef8e4a95e..00000000000 --- a/ACE/apps/gperf/src/Options.cpp +++ /dev/null @@ -1,873 +0,0 @@ -// -*- C++ -*- - -// $Id$ - -// Handles parsing the Options provided to the user. - -// 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. - -#include "Options.h" - -ACE_RCSID(src, Options, "$Id$") - -#if defined (ACE_HAS_GPERF) - -#include "ace/Get_Opt.h" -#include "Iterator.h" -#include "ace/OS_NS_stdio.h" -#include "ace/OS_NS_string.h" -#include "ace/OS_NS_stdlib.h" - -// Global option coordinator for the entire program. -Options option; - -// Current program version. -extern const char *version_string; - -// Size to jump on a collision. -static const int DEFAULT_JUMP_VALUE = 5; - -// Default name for generated lookup function. -static const char *const DEFAULT_NAME = "in_word_set"; - -// Default filler for keyword table. -static const char *const DEFAULT_FILL = ""; - -// Default name for the key component. -static const char *const DEFAULT_KEY = "name"; - -// Default name for the generated class. -static const char *const DEFAULT_CLASS_NAME = "Perfect_Hash"; - -// Default name for generated hash function. -static const char *const DEFAULT_HASH_NAME = "hash"; - -// Default delimiters that separate keywords from their attributes. -static const char *const DEFAULT_DELIMITERS = ",\n"; - -int Options::option_word_; -int Options::total_switches_; -u_int Options::total_keysig_size_; -int Options::size_; -int Options::key_pos_; -int Options::jump_; -int Options::initial_asso_value_; -int Options::argc_; -char **Options::argv_; -int Options::iterations_; -const char *Options::function_name_; -const char *Options::fill_default_; -const char *Options::key_name_; -const char *Options::class_name_; -const char *Options::hash_name_; -const char *Options::delimiters_; -char Options::key_positions_[MAX_KEY_POS]; - -// Prints program usage to standard error stream. - -void -Options::usage (void) -{ - ACE_ERROR ((LM_ERROR, - "Usage: %n [-abBcCdDef[num]gGhH<hashname>i<init>IjJ" - "k<keys>K<keyname>lL<language>mMnN<function name>o" - "Oprs<size>S<switches>tTvVZ<class name>].\n" - "(type %n -h for help)\n")); -} - -// Output command-line Options. - -void -Options::print_options (void) -{ - int i; - - ACE_OS::printf ("/* Command-line: "); - - for (i = 0; i < argc_; i++) - ACE_OS::printf ("%s ", - argv_[i]); - - ACE_OS::printf (" */"); -} - -// Sorts the key positions *IN REVERSE ORDER!!* This makes further -// routines more efficient. Especially when generating code. Uses a -// simple Insertion Sort since the set is probably ordered. Returns 1 -// if there are no duplicates, 0 otherwise. - -int -Options::key_sort (char *base, int len) -{ - int i, j; - - for (i = 0, j = len - 1; i < j; i++) - { - int curr, tmp; - - for (curr = i + 1, tmp = base[curr]; - curr > 0 && tmp >= base[curr - 1]; - curr--) - if ((base[curr] = base[curr - 1]) == tmp) - // Oh no, a duplicate!!! - return 0; - - base[curr] = static_cast<char> (tmp); - } - - return 1; -} - -// Sets the default Options. - -Options::Options (void) -{ - key_positions_[0] = WORD_START; - key_positions_[1] = WORD_END; - key_positions_[2] = EOS; - total_keysig_size_ = 2; - delimiters_ = DEFAULT_DELIMITERS; - jump_ = DEFAULT_JUMP_VALUE; - option_word_ = DEFAULTCHARS | C; - function_name_ = DEFAULT_NAME; - fill_default_ = DEFAULT_FILL; - key_name_ = DEFAULT_KEY; - hash_name_ = DEFAULT_HASH_NAME; - class_name_ = DEFAULT_CLASS_NAME; - total_switches_ = size_ = 1; - initial_asso_value_ = iterations_ = 0; -} - -// Dumps option status when debug is set. - -Options::~Options (void) -{ - if (ACE_BIT_ENABLED (option_word_, DEBUGGING)) - { - char *ptr; - - ACE_OS::fprintf (stderr, - "\ndumping Options:" - "\nDEBUGGING is...: %s" - "\nORDER is.......: %s" - "\nANSI is........: %s" - "\nTYPE is........: %s" - "\nINLINE is......: %s" - "\nRANDOM is......: %s" - "\nDEFAULTCHARS is: %s" - "\nSWITCH is......: %s" - "\nPOINTER is.....: %s" - "\nNOLENGTH is....: %s" - "\nLENTABLE is....: %s" - "\nDUP is.........: %s" - "\nFAST is........: %s" - "\nCOMP is........: %s" - "\nNOTYPE is......: %s" - "\nGLOBAL is......: %s" - "\nCONSTANT is....: %s" - "\nCPLUSPLUS is...: %s" - "\nC is...........: %s" - "\nENUM is........: %s" - "\nSTRCASECMP is..: %s" - "\nOPTIMIZE is....: %s" - "\nLINEARSEARCH is: %s" - "\nBINARYSEARCH is: %s" - "\niterations = %d" - "\nlookup function name = %s" - "\nfill default = %s" - "\nhash function name = %s" - "\nkey name = %s" - "\njump value = %d" - "\nmax associcated value = %d" - "\ninitial associated value = %d" - "\ndelimiters = %s" - "\nnumber of switch statements = %d" - "\n", - ACE_BIT_ENABLED (option_word_, DEBUGGING) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, ORDER) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, ANSI) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, TYPE) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, INLINE) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, RANDOM) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, DEFAULTCHARS) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, SWITCH) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, POINTER) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, NOLENGTH) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, LENTABLE) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, DUP) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, FAST) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, COMP) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, NOTYPE) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, GLOBAL) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, CONSTANT) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, CPLUSPLUS) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, C) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, ENUM) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, STRCASECMP) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, OPTIMIZE) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, LINEARSEARCH) ? "enabled" : "disabled", - ACE_BIT_ENABLED (option_word_, BINARYSEARCH) ? "enabled" : "disabled", - iterations_, - function_name_, - fill_default_, - hash_name_, - key_name_, - jump_, - size_ - 1, - initial_asso_value_, - delimiters_, - total_switches_); - if (ACE_BIT_ENABLED (option_word_, ALLCHARS)) - ACE_OS::fprintf (stderr, - "all characters are used in the hash function\n"); - - ACE_OS::fprintf (stderr, - "maximum keysig size = %d\nkey positions are: \n", - total_keysig_size_); - - for (ptr = key_positions_; *ptr != EOS; ptr++) - if (*ptr == WORD_END) - ACE_OS::fprintf (stderr, "$\n"); - else - ACE_OS::fprintf (stderr, "%d\n", *ptr); - - ACE_OS::fprintf (stderr, "finished dumping Options\n"); - } -} - -// Parses the command line Options and sets appropriate flags in -// option_word_. - -int -Options::parse_args (int argc, char *argv[]) -{ - if (ACE_LOG_MSG->open (argv[0]) == -1) - return -1; - - //FUZZ: disable check_for_lack_ACE_OS - ACE_Get_Opt getopt (argc, argv, "abBcCdDe:Ef:F:gGhH:i:IJj:k:K:lL:mMnN:oOprs:S:tTvVZ:"); - //FUZZ: enable check_for_lack_ACE_OS - - int option_char; - - argc_ = argc; - argv_ = argv; - - while ((option_char = getopt ()) != -1) - { - switch (option_char) - { - // Generated coded uses the ANSI prototype format. - case 'a': - { - ACE_SET_BITS (option_word_, ANSI); - break; - } - // Generate code for Linear Search. - case 'b': - { - ACE_SET_BITS (option_word_, LINEARSEARCH); - break; - } - // Generate code for Binary Search. - case 'B': - { - ACE_SET_BITS (option_word_, BINARYSEARCH); - break; - } - // Generate strncmp rather than strcmp. - case 'c': - { - ACE_SET_BITS (option_word_, COMP); - break; - } - // Make the generated tables readonly (const). - case 'C': - { - ACE_SET_BITS (option_word_, CONSTANT); - break; - } - // Enable debugging option. - case 'd': - { - ACE_SET_BITS (option_word_, DEBUGGING); - ACE_ERROR ((LM_ERROR, - "Starting program %n, version %s, with debugging on.\n", - version_string)); - break; - } - // Enable duplicate option. - case 'D': - { - ACE_SET_BITS (option_word_, DUP); - break; - } - // Allows user to provide keyword/attribute separator - case 'e': - { - delimiters_ = getopt.opt_arg (); - break; - } - case 'E': - { - ACE_SET_BITS (option_word_, ENUM); - break; - } - // Generate the hash table ``fast.'' - case 'f': - { - ACE_SET_BITS (option_word_, FAST); - iterations_ = ACE_OS::atoi (getopt.opt_arg ()); - if (iterations_ < 0) - { - ACE_ERROR ((LM_ERROR, "iterations value must not be negative, assuming 0\n")); - iterations_ = 0; - } - break; - } - // Use the ``inline'' keyword for generated sub-routines. - case 'g': - { - ACE_SET_BITS (option_word_, INLINE); - break; - } - // Make the keyword table a global variable. - case 'G': - { - ACE_SET_BITS (option_word_, GLOBAL); - break; - } - // Displays a list of helpful Options to the user. - case 'h': - { - ACE_OS::fprintf (stderr, - "-a\tGenerate ANSI standard C output code, i.e., function prototypes.\n" - "-b\tGenerate code for Linear Search.\n" - "-B\tGenerate code for Binary Search.\n" - "-c\tGenerate comparison code using strncmp rather than strcmp.\n" - "-C\tMake the contents of generated lookup tables constant, i.e., readonly.\n" - "-d\tEnables the debugging option (produces verbose output to the standard\n" - "\terror).\n" - "-D\tHandle keywords that hash to duplicate values. This is useful\n" - "\tfor certain highly redundant keyword sets.\n" - "-e\tAllow user to provide a string containing delimiters used to separate\n" - "\tkeywords from their attributes. Default is \",\\n\"\n" - "-E\tDefine constant values using an enum local to the lookup function\n" - "\trather than with defines\n" - "-f\tGenerate the gen-perf.hash function ``fast.'' This decreases GPERF's\n" - "\trunning time at the cost of minimizing generated table-size.\n" - "\tThe numeric argument represents the number of times to iterate when\n" - "\tresolving a collision. `0' means ``iterate by the number of keywords.''\n" - "-F\tProvided expression will be used to assign default values in keyword\n" - "\ttable, i.e., the fill value. Default is \"\".\n" - "-g\tMake generated routines use ``inline'' to remove function overhead.\n" - "-G\tGenerate the static table of keywords as a static global variable,\n" - "\trather than hiding it inside of the lookup function (which is the\n" - "\tdefault behavior).\n" - "-h\tPrints this message.\n" - "-H\tAllow user to specify name of generated hash function. Default\n" - "\tis `hash'.\n" - "-i\tProvide an initial value for the associate values array. Default is 0.\n" - "-I\tGenerate comparison code using case insensitive string comparison, e.g.,\n" - "\tstrncasecmp or strcasecmp.\n" - "\tSetting this value larger helps inflate the size of the final table.\n" - "-j\tAffects the ``jump value,'' i.e., how far to advance the associated\n" - "\tcharacter value upon collisions. Must be an odd number, default is %d.\n" - "-J\tSkips '#include \"ace/OS_NS_string.h\"' part in the output.\n" - "-k\tAllows selection of the key positions used in the hash function.\n" - "\tThe allowable choices range between 1-%d, inclusive. The positions\n" - "\tare separated by commas, ranges may be used, and key positions may\n" - "\toccur in any order. Also, the meta-character '*' causes the generated\n" - "\thash function to consider ALL key positions, and $ indicates the\n" - "\t``final character'' of a key, e.g., $,1,2,4,6-10.\n" - "-K\tAllow use to select name of the keyword component in the keyword\n" - "\tstructure.\n" - "-l\tCompare key lengths before trying a string comparison. This helps\n" - "\tcut down on the number of string comparisons made during the lookup.\n" - "-L\tGenerates code in the language specified by the option's argument.\n" - "\tLanguages handled are currently C++ and C. The default is C.\n" - "-m\tAvoids the warning about identical hash values. This is valid\n" - "\tonly if the -D option is enabled.\n" - "-M\tSkips class definition in the output. This is valid only in C++ mode.\n" - "-n\tDo not include the length of the keyword when computing the hash\n" - "\tfunction.\n" - "-N\tAllow user to specify name of generated lookup function. Default\n" - "\tname is `in_word_set.'\n" - "-o\tReorders input keys by frequency of occurrence of the key sets.\n" - "\tThis should decrease the search time dramatically.\n" - "-O\tOptimize the generated lookup function by assuming that all input\n" - "\tkeywords are members of the keyset from the keyfile.\n" - "-p\tChanges the return value of the generated function ``in_word_set''\n" - "\tfrom its default boolean value (i.e., 0 or 1), to type ``pointer\n" - "\tto wordlist array'' This is most useful when the -t option, allowing\n" - "\tuser-defined structs, is used.\n" - "-r\tUtilizes randomness to initialize the associated values table.\n" - "-s\tAffects the size of the generated hash table. The numeric argument\n" - "\tfor this option indicates ``how many times larger or smaller'' the\n" - "\tassociated value range should be, in relationship to the number of\n" - "\tkeys, e.g. a value of 3 means ``allow the maximum associated value\n" - "\tto be about 3 times larger than the number of input keys.''\n" - "\tConversely, a value of -3 means ``make the maximum associated\n" - "\tvalue about 3 times smaller than the number of input keys. A\n" - "\tlarger table should decrease the time required for an unsuccessful\n" - "\tsearch, at the expense of extra table space. Default value is 1.\n" - "-S\tCauses the generated C code to use a switch statement scheme, rather\n" - "\tthan an array lookup table. This can lead to a reduction in both\n" - "\ttime and space requirements for some keyfiles. The argument to\n" - "\tthis option determines how many switch statements are generated.\n" - "\tA value of 1 generates 1 switch containing all the elements, a value\n" - "\tof 2 generates 2 tables with 1/2 the elements in each table, etc.\n" - "\tThis is useful since many C compilers cannot correctly generate code\n" - "\tfor large switch statements.\n" - "-t\tAllows the user to include a structured type declaration for \n" - "\tgenerated code. Any text before %%%% is consider part of the type\n" - "\tdeclaration. Key words and additional fields may follow this, one\n" - "\tgroup of fields per line.\n" - "-T\tPrevents the transfer of the type declaration to the output file.\n" - "\tUse this option if the type is already defined elsewhere.\n" - "-v\tPrints out the current version number and exits with a value of 0\n" - "-V\tExits silently with a value of 0.\n" - "-Z\tAllow user to specify name of generated C++ class. Default\n" - "\tname is `Perfect_Hash.'\n", - DEFAULT_JUMP_VALUE, - MAX_KEY_POS - 1); - Options::usage (); - return -1; - } - // Sets the name for the hash function. - case 'H': - { - hash_name_ = getopt.opt_arg (); - break; - } - // Sets the initial value for the associated values array. - case 'i': - { - initial_asso_value_ = ACE_OS::atoi (getopt.opt_arg ()); - if (initial_asso_value_ < 0) - ACE_ERROR ((LM_ERROR, - "Initial value %d should be non-zero, ignoring and continuing.\n", - initial_asso_value_)); - if (option[RANDOM]) - ACE_ERROR ((LM_ERROR, - "warning, -r option superceeds -i, ignoring -i option and continuing\n")); - break; - } - case 'I': - { - ACE_SET_BITS (option_word_, STRCASECMP); - break; - } - // Sets the jump value, must be odd for later algorithms. - case 'j': - { - jump_ = ACE_OS::atoi (getopt.opt_arg ()); - if (jump_ < 0) - ACE_ERROR_RETURN ((LM_ERROR, - "Jump value %d must be a positive number.\n%r", - jump_, - &Options::usage), - -1); - else if (jump_ && ACE_EVEN (jump_)) - ACE_ERROR ((LM_ERROR, - "Jump value %d should be odd, adding 1 and continuing...\n", - jump_++)); - break; - } - // Skip including the header file ace/OS_NS_string.h. - case 'J': - { - ACE_SET_BITS (option_word_, SKIPSTRINGH); - break; - } - // Sets key positions used for hash function. - case 'k': - { - const int BAD_VALUE = -1; - int value; - Iterator expand (getopt.opt_arg (), - 1, - MAX_KEY_POS - 1, - WORD_END, - BAD_VALUE, - EOS); - - // Use all the characters for hashing!!!! - if (*getopt.opt_arg () == '*') - option_word_ = (option_word_ & ~DEFAULTCHARS) | ALLCHARS; - else - { - char *l_key_pos; - - for (l_key_pos = key_positions_; - (value = expand ()) != EOS; - l_key_pos++) - if (value == BAD_VALUE) - ACE_ERROR_RETURN ((LM_ERROR, - "Illegal key value or range, use 1,2,3-%d,'$' or '*'.\n%r", - MAX_KEY_POS - 1, - usage), - -1); - else - *l_key_pos = static_cast<char> (value); - - *l_key_pos = EOS; - - total_keysig_size_ = (l_key_pos - key_positions_); - if (total_keysig_size_ == 0) - ACE_ERROR_RETURN ((LM_ERROR, - "No keys selected.\n%r", - &Options::usage), - -1); - else if (key_sort (key_positions_, total_keysig_size_) == 0) - ACE_ERROR_RETURN ((LM_ERROR, - "Duplicate keys selected\n%r", - &Options::usage), - -1); - if (total_keysig_size_ != 2 - || (key_positions_[0] != 1 - || key_positions_[1] != WORD_END)) - ACE_CLR_BITS (option_word_, DEFAULTCHARS); - } - break; - } - // Make this the keyname for the keyword component field. - case 'K': - { - key_name_ = getopt.opt_arg (); - break; - } - // Create length table to avoid extra string compares. - case 'l': - { - ACE_SET_BITS (option_word_, LENTABLE); - break; - } - // Deal with different generated languages. - case 'L': - { - option_word_ &= ~C; - if (!ACE_OS::strcmp (getopt.opt_arg (), "C++")) - ACE_SET_BITS (option_word_, (CPLUSPLUS | ANSI)); - else if (!ACE_OS::strcmp (getopt.opt_arg (), "C")) - ACE_SET_BITS (option_word_, C); - else - { - ACE_ERROR ((LM_ERROR, - "unsupported language option %s, defaulting to C\n", - getopt.opt_arg ())); - ACE_SET_BITS (option_word_, C); - } - break; - } - // Don't print the warnings. - case 'm': - { - ACE_SET_BITS (option_word_, MUTE); - break; - } - // Skip the class definition while in C++ mode. - case 'M': - { - ACE_SET_BITS (option_word_, SKIPCLASS); - break; - } - // Don't include the length when computing hash function. - case 'n': - { - ACE_SET_BITS (option_word_, NOLENGTH); - break; - } - // Make generated lookup function name be.opt_arg () - case 'N': - { - function_name_ = getopt.opt_arg (); - break; - } - // Make fill_default be.opt_arg () - case 'F': - { - fill_default_ = getopt.opt_arg (); - break; - } - // Order input by frequency of key set occurrence. - case 'o': - { - ACE_SET_BITS (option_word_, ORDER); - break; - } - case 'O': - { - ACE_SET_BITS (option_word_, OPTIMIZE); - break; - } - // Generated lookup function now a pointer instead of int. - case 'p': - { - ACE_SET_BITS (option_word_, POINTER); - break; - } - // Utilize randomness to initialize the associated values - // table. - case 'r': - { - ACE_SET_BITS (option_word_, RANDOM); - if (initial_asso_value_ != 0) - ACE_ERROR ((LM_ERROR, - "warning, -r option superceeds -i, disabling -i option and continuing\n")); - break; - } - // Range of associated values, determines size of final table. - case 's': - { - size_ = ACE_OS::atoi (getopt.opt_arg ()); - if (abs (size_) > 50) - ACE_ERROR ((LM_ERROR, - "%d is excessive, did you really mean this?! (type %n -h for help)\n", - size_)); - break; - } - // Generate switch statement output, rather than lookup table. - case 'S': - { - ACE_SET_BITS (option_word_, SWITCH); - total_switches_ = ACE_OS::atoi (getopt.opt_arg ()); - if (total_switches_ <= 0) - ACE_ERROR_RETURN ((LM_ERROR, - "number of switches %s must be a positive number\n%r", - getopt.opt_arg (), - &Options::usage), - -1); - break; - } - // Enable the TYPE mode, allowing arbitrary user structures. - case 't': - { - ACE_SET_BITS (option_word_, TYPE); - break; - } - // Don't print structure definition. - case 'T': - { - ACE_SET_BITS (option_word_, NOTYPE); - break; - } - // Print out the version and quit. - case 'v': - ACE_ERROR ((LM_ERROR, - "%n: version %s\n%r\n", - version_string, - &Options::usage)); - ACE_OS::exit (0); - /* NOTREACHED */ - break; - // Exit with value of 0 (this is useful to check if gperf exists) - case 'V': - ACE_OS::exit (0); - /* NOTREACHED */ - break; - // Set the class name. - case 'Z': - { - class_name_ = getopt.opt_arg (); - break; - } - default: - ACE_ERROR_RETURN ((LM_ERROR, - "%r", - &Options::usage), - -1); - } - - } - - if (argv[getopt.opt_ind ()] && - ACE_OS::freopen (argv[getopt.opt_ind ()], - "r", - stdin) == 0) - ACE_ERROR_RETURN ((LM_ERROR, - "Cannot open keyword file %p\n%r", - argv[getopt.opt_ind ()], - &Options::usage), - -1); - if (getopt.opt_ind () + 1 < argc) - ACE_ERROR_RETURN ((LM_ERROR, - "Extra trailing arguments to %n.\n%r", - usage), - -1); - return 0; -} - -// True if option enable, else false. - -int -Options::operator[] (Option_Type option) -{ - return ACE_BIT_ENABLED (option_word_, option); -} - -// Enables option OPT. - -void -Options::operator = (enum Option_Type opt) -{ - ACE_SET_BITS (option_word_, opt); -} - -// Disables option OPT. - -bool -Options::operator != (enum Option_Type opt) -{ - // @@ Why is this inequality comparison operator clearing bits? - ACE_CLR_BITS (option_word_, opt); - - return true; -} - -// Initializes the key Iterator. - -void -Options::reset (void) -{ - key_pos_ = 0; -} - -// Returns current key_position and advanced index. - -int -Options::get (void) -{ - return key_positions_[key_pos_++]; -} - -// Sets the size of the table size. - -void -Options::asso_max (int r) -{ - size_ = r; -} - -// Returns the size of the table size. - -int -Options::asso_max (void) -{ - return size_; -} - -// Returns total distinct key positions. - -u_int -Options::max_keysig_size (void) -{ - return total_keysig_size_; -} - -// Sets total distinct key positions. - -void -Options::keysig_size (u_int a_size) -{ - total_keysig_size_ = a_size; -} - -// Returns the jump value. - -int -Options::jump (void) -{ - return jump_; -} - -// Returns the generated function name. - -const char * -Options::function_name (void) -{ - return function_name_; -} - -// Returns the fill default - -const char * -Options::fill_default (void) -{ - return fill_default_; -} - -// Returns the keyword key name. - -const char * -Options::key_name (void) -{ - return key_name_; -} - -// Returns the hash function name. - -const char * -Options::hash_name (void) -{ - return hash_name_; -} - -// Returns the generated class name. - -const char * -Options::class_name (void) -{ - return class_name_; -} - -// Returns the initial associated character value. - -int -Options::initial_value (void) -{ - return initial_asso_value_; -} - -// Returns the iterations value. - -int -Options::iterations (void) -{ - return iterations_; -} - -// Returns the string used to delimit keywords from other attributes. - -const char * -Options::delimiter (void) -{ - return delimiters_; -} - -// Gets the total number of switch statements to generate. - -int -Options::total_switches (void) -{ - return total_switches_; -} - -#endif /* ACE_HAS_GPERF */ |