亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? options.cc

?? 早期freebsd實現(xiàn)
?? CC
?? 第 1 頁 / 共 2 頁
字號:
/* Handles parsing the Options provided to the user.   Copyright (C) 1989 Free Software Foundation, Inc.   written by Douglas C. Schmidt (schmidt@ics.uci.edu)This file is part of GNU GPERF.GNU GPERF is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 1, 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 ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU GPERF; see the file COPYING.  If not, write tothe Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */#include <stdio.h>#include <builtin.h>#include <assert.h>#include <GetOpt.h>#include "options.h"#include "iterator.h"/* Global option coordinator for the entire program. */Options option;       /* Current program version. */extern 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 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;int Options::total_keysig_size;int Options::size;int Options::key_pos;int Options::jump;int Options::initial_asso_value;int Options::argument_count;int Options::iterations;char **Options::argument_vector;const char *Options::function_name;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. */inline void Options::usage (void) {   T (Trace t ("Options::usage");)  report_error ("Usage: %n [-acCdDef[num]gGhH<hashname>i<init>jk<keys>K<keyname>lL<language>nN<function name>oprs<size>S<switches>tTvZ<class name>].\n"                "(type %n -h for help)\n");}/* Output command-line Options. */void Options::print_options (void){   T (Trace t ("Options::print_options");)  int i;  printf ("/* Command-line: ");  for (i = 0; i < argument_count; i++)     printf ("%s ", argument_vector[i]);     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. */inline int Options::key_sort (char *base, int len) {  T (Trace t ("Options::key_sort");)  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] = tmp;    }  return 1;}/* Sets the default Options. */Options::Options (void) {   T (Trace t ("Options::Options");)  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;  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) {   T (Trace t ("Options::~Options");)  if (option_word & DEBUG)    {      char *ptr;      fprintf (stderr, "\ndumping Options:\nDEBUG is.......: %s\nORDER is.......: %s"               "\nANSI is........: %s\nTYPE is........: %s\nGNU 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\nCONST is....: %s"               "\nCPLUSPLUS is...: %s\nC is...........: %s\nENUM is.....: %s"               "\niterations = %d\nlookup function name = %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",               option_word & DEBUG ? "enabled" : "disabled",                option_word & ORDER ? "enabled" : "disabled",               option_word & ANSI ? "enabled" : "disabled",               option_word & TYPE ? "enabled" : "disabled",               option_word & GNU ? "enabled" : "disabled",               option_word & RANDOM ? "enabled" : "disabled",               option_word & DEFAULTCHARS ? "enabled" : "disabled",               option_word & SWITCH ? "enabled" : "disabled",               option_word & POINTER ? "enabled" : "disabled",               option_word & NOLENGTH ? "enabled" : "disabled",               option_word & LENTABLE ? "enabled" : "disabled",               option_word & DUP ? "enabled" : "disabled",               option_word & FAST ? "enabled" : "disabled",               option_word & COMP ? "enabled" : "disabled",               option_word & NOTYPE ? "enabled" : "disabled",               option_word & GLOBAL ? "enabled" : "disabled",               option_word & CONST ? "enabled" : "disabled",               option_word & CPLUSPLUS ? "enabled" : "disabled",               option_word & C ? "enabled" : "disabled",               option_word & ENUM ? "enabled" : "disabled",               iterations, function_name, hash_name, key_name, jump, size - 1,               initial_asso_value, delimiters, total_switches);      if (option_word & ALLCHARS)         fprintf (stderr, "all characters are used in the hash function\n");      fprintf (stderr, "maximum keysig size = %d\nkey positions are: \n",               total_keysig_size);      for (ptr = key_positions; *ptr != EOS; ptr++)         if (*ptr == WORD_END)           fprintf (stderr, "$\n");        else           fprintf (stderr, "%d\n", *ptr);      fprintf (stderr, "finished dumping Options\n");    }}/* Parses the command line Options and sets appropriate flags in option_word. */void Options::operator() (int argc, char *argv[]){   T (Trace t ("Options::operator()");)  GetOpt getopt (argc, argv, "adcCDe:Ef:gGhH:i:j:k:K:lL:nN:oprs:S:tTvZ:");  int    option_char;  set_program_name (argv[0]);  argument_count  = argc;  argument_vector = argv;  while ((option_char = getopt ()) != -1)    {      switch (option_char)        {        case 'a':               /* Generated coded uses the ANSI prototype format. */          {             option_word |= ANSI;            break;          }        case 'c':               /* Generate strncmp rather than strcmp. */          {            option_word |= COMP;            break;          }        case 'C':               /* Make the generated tables readonly (const). */          {            option_word |= CONST;            break;          }        case 'd':               /* Enable debugging option. */          {             option_word |= DEBUG;            report_error ("Starting program %n, version %s, with debuggin on.\n",                          version_string);            break;          }           case 'D':               /* Enable duplicate option. */          {             option_word |= DUP;            break;          }           case 'e': /* Allows user to provide keyword/attribute separator */          {            option.delimiters = getopt.optarg;            break;          }        case 'E':          {            option_word |= ENUM;            break;          }        case 'f':               /* Generate the hash table ``fast.'' */          {            option_word |= FAST;            if ((iterations = atoi (getopt.optarg)) < 0)               {                report_error ("iterations value must not be negative, assuming 0\n");                iterations = 0;              }            break;          }        case 'g':               /* Use the ``inline'' keyword for generated sub-routines. */          {             option_word |= GNU;            break;          }        case 'G':               /* Make the keyword table a global variable. */          {                                                 option_word |= GLOBAL;            break;          }        case 'h':               /* Displays a list of helpful Options to the user. */          {             report_error (                          "-a\tGenerate ANSI standard C output code, i.e., function prototypes.\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 error).\n"                          "-D\tHandle keywords that hash to duplicate values.  This is useful\n"                          "\tfor certain highly redundant keyword sets.  It enables the -S option.\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"                          "-g\tAssume a GNU compiler, e.g., g++ or gcc.  This makes all generated\n"                          "\troutines use the ``inline'' keyword to remove cost of function calls.\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 mesage.\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"                          "\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"                          "-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 structure.\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.  Languages\n"                          "\thandled are currently C++ and C.  The default is C.\n"                          "-n\tDo not include the length of the keyword when computing the hash function\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"                          "-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"

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国v欧美v亚洲v日本v| 国产日韩欧美a| 亚洲一区视频在线| 一本到不卡免费一区二区| 久久精品视频在线看| 久久精品国产久精国产爱| 欧美日本一道本在线视频| 亚洲风情在线资源站| 精品污污网站免费看| 亚洲午夜精品在线| 欧美日韩成人综合在线一区二区| 亚洲精品你懂的| 欧美手机在线视频| 天天色天天操综合| 欧洲亚洲精品在线| 亚洲高清视频在线| 精品少妇一区二区三区免费观看 | 日韩精品一区二区三区在线| 亚洲123区在线观看| 欧美一区日本一区韩国一区| 久久爱www久久做| 一区在线播放视频| 欧美午夜精品理论片a级按摩| 五月天精品一区二区三区| 欧美大黄免费观看| 成人福利在线看| 丝瓜av网站精品一区二区| 久久免费电影网| 在线视频观看一区| 国产电影精品久久禁18| 亚洲制服丝袜av| 日本一区二区三区免费乱视频| 99免费精品在线观看| 国产在线国偷精品免费看| 亚洲欧美一区二区视频| 欧美电影免费提供在线观看| 99久久久久免费精品国产| 六月丁香婷婷久久| 亚洲综合在线观看视频| 久久久久久99久久久精品网站| 一道本成人在线| 国v精品久久久网| 麻豆成人91精品二区三区| 亚洲成av人片一区二区梦乃| 亚洲欧美日韩久久精品| 国产偷国产偷亚洲高清人白洁| 欧美日韩第一区日日骚| 精品视频免费看| 日本精品免费观看高清观看| 9久草视频在线视频精品| 91在线精品秘密一区二区| 奇米在线7777在线精品| 国产精品每日更新| 色猫猫国产区一区二在线视频| 国产成人三级在线观看| 国产精品亚洲一区二区三区妖精| 性久久久久久久久| 五月开心婷婷久久| 日韩精品成人一区二区三区| 日韩精品色哟哟| 免费国产亚洲视频| 国产在线播精品第三| 国产成人精品免费一区二区| 国产成人自拍在线| 91蝌蚪porny成人天涯| 欧美亚一区二区| 日韩三级视频在线观看| 久久免费电影网| 亚洲欧美福利一区二区| 视频在线在亚洲| 国产一区视频网站| 欧洲色大大久久| 精品日韩在线观看| 亚洲视频在线一区| 久久精品理论片| 日本精品一区二区三区高清| 2023国产精品| 亚洲精品国产视频| 精品亚洲porn| 欧美日本高清视频在线观看| 久久久久久久免费视频了| 一区二区三区中文字幕精品精品 | 欧美剧在线免费观看网站| 精品嫩草影院久久| 亚洲成人黄色小说| 91在线丨porny丨国产| 久久综合色8888| 蜜桃视频一区二区三区在线观看| 国产激情视频一区二区在线观看| 免费观看在线综合色| 偷拍自拍另类欧美| av一本久道久久综合久久鬼色| 91精品国产综合久久久久久漫画| 亚洲人成亚洲人成在线观看图片 | 丝袜美腿成人在线| 91精彩视频在线| 国产精品久久久久久久久免费相片 | 91在线云播放| 亚洲婷婷在线视频| 不卡视频免费播放| 国产精品萝li| 波多野结衣亚洲| 日韩一区在线免费观看| 成人综合婷婷国产精品久久免费| 久久九九99视频| 成人小视频免费在线观看| 国产欧美日本一区二区三区| 国产精品99久久不卡二区| 久久免费偷拍视频| jlzzjlzz亚洲女人18| 亚洲精品视频免费看| 色94色欧美sute亚洲线路二| 亚洲欧美自拍偷拍| 欧美日韩中文字幕一区二区| 奇米精品一区二区三区在线观看一 | 国产欧美日韩另类视频免费观看| 成人一区二区三区视频| 亚洲精品日产精品乱码不卡| 91麻豆精品久久久久蜜臀| 精品在线一区二区| 日韩欧美黄色影院| 三级一区在线视频先锋 | 国产伦精品一区二区三区在线观看 | 制服视频三区第一页精品| 青青青伊人色综合久久| 国产亚洲综合av| 欧美高清激情brazzers| 国产伦精品一区二区三区免费| 亚洲视频中文字幕| 精品av久久707| 欧美日韩二区三区| 色综合久久精品| 国产精品一级在线| 琪琪一区二区三区| 香蕉加勒比综合久久| 日韩理论电影院| 国产性做久久久久久| 日韩欧美国产高清| 7777精品伊人久久久大香线蕉超级流畅 | 欧美伦理影视网| 91久久精品国产91性色tv| 国产成人三级在线观看| 激情综合五月婷婷| 免费观看久久久4p| 亚洲动漫第一页| 亚洲综合免费观看高清完整版在线| 国产欧美日韩不卡免费| 国产亚洲欧美一区在线观看| 久久久久99精品一区| 亚洲精品在线免费观看视频| 日韩欧美的一区| 91久久精品日日躁夜夜躁欧美| 亚洲综合色区另类av| 中文字幕一区二区三中文字幕| 国产欧美一区二区三区鸳鸯浴| 欧美v国产在线一区二区三区| 日韩一区二区三区av| 日韩欧美国产精品| 国产亚洲精品资源在线26u| 日本一区二区综合亚洲| 国产精品久久久久久亚洲毛片 | 成人一区二区在线观看| 99久久婷婷国产综合精品| 色婷婷综合久久久中文一区二区 | 91视频免费播放| 91精品国产aⅴ一区二区| 久久综合狠狠综合| 国产精品高潮呻吟| 日韩综合一区二区| 岛国精品在线播放| 欧美精品xxxxbbbb| 国产亚洲一本大道中文在线| 亚洲日本成人在线观看| 美女一区二区三区在线观看| 成人夜色视频网站在线观看| 在线电影国产精品| 国产精品久久99| 久久国产欧美日韩精品| 91麻豆福利精品推荐| 天堂蜜桃91精品| 99久久久久免费精品国产| 日韩欧美在线影院| 亚洲成人av在线电影| 国产高清久久久| 日韩精品最新网址| 午夜电影一区二区| 色乱码一区二区三区88| 一区在线观看免费| 成人一区二区三区视频| 久久精品人人做人人爽97| 蜜桃久久久久久久| 欧美夫妻性生活| 日本亚洲一区二区| 欧美无人高清视频在线观看| 亚洲视频网在线直播| 色婷婷av一区二区三区软件| 精品国产乱码久久久久久牛牛| 亚洲欧洲性图库| 成人精品视频网站| 国产精品国产自产拍高清av|