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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? hashmgr.cxx

?? 管理項(xiàng)目進(jìn)度工具的原代碼
?? CXX
字號(hào):
#include "license.readme"

#include <cstdlib>
#include <cstring>
#include <cstdio>

#include "hashmgr.hxx"

extern void mychomp(char * s);
extern char * mystrdup(const char *);

//using namespace std;
#pragma warning(disable:4244)
#pragma warning(disable:4514)

// build a hash table from a munched word list

HashMgr::HashMgr(const char * tpath)
{
  tablesize = 0;
  tableptr = NULL;
  int ec = load_tables(tpath);
  if (ec) {
    /* error condition - what should we do here */
    fprintf(stderr,"Hash Manager Error : %d\n",ec);
    fflush(stderr);
    if (tableptr) {
      free(tableptr);
    }
    tablesize = 0;
  }
}


HashMgr::~HashMgr()
{
  if (tableptr) {
    // now pass through hash table freeing up everything
    // go through column by column of the table
    for (int i=0; i < tablesize; i++) {
      struct hentry * pt = &tableptr[i];
      struct hentry * nt = NULL;
      if (pt) {
	if (pt->word) free(pt->word);
        if (pt->astr) free(pt->astr);
        pt = pt->next;
      }
      while(pt) {
        nt = pt->next;
	if (pt->word) free(pt->word);
        if (pt->astr) free(pt->astr);
        free(pt);
	pt = nt;
      }
    }
    free(tableptr);
  }
  tablesize = 0;
}



// lookup a root word in the hashtable

struct hentry * HashMgr::lookup(const char *word) const
{
    struct hentry * dp;
    if (tableptr) {
       dp = &tableptr[hash(word)];
       if (dp->word == NULL) return NULL;
       for (  ;  dp != NULL;  dp = dp->next) {
          if (strcmp(word,dp->word) == 0) return dp;
       }
    }
    return NULL;
}



// add a word to the hash table (private)

int HashMgr::add_word(const char * word, int wl, const char * aff, int al)
{
    int i = hash(word);
    struct hentry * dp = &tableptr[i];
    struct hentry* hp;
    if (dp->word == NULL) {
       dp->wlen = wl;
       dp->alen = al;
       dp->word = mystrdup(word);
       dp->astr = mystrdup(aff);
       dp->next = NULL;
       if ((wl) && (dp->word == NULL)) return 1;
       if ((al) && (dp->astr == NULL)) return 1;
    } else {
       hp = (struct hentry *) malloc (sizeof(struct hentry));
       if (hp == NULL) return 1;
       hp->wlen = wl;
       hp->alen = al;
       hp->word = mystrdup(word);
       hp->astr = mystrdup(aff);
       hp->next = NULL;      
       while (dp->next != NULL) dp=dp->next; 
       dp->next = hp;
       if ((wl) && (hp->word == NULL)) return 1;
       if ((al) && (hp->astr == NULL)) return 1;
    }
    return 0;
}     



// walk the hash table entry by entry - null at end
struct hentry * HashMgr::walk_hashtable(int &col, struct hentry * hp) const
{
  //reset to start
  if ((col < 0) || (hp == NULL)) {
    col = -1;
    hp = NULL;
  }

  if (hp && hp->next != NULL) {
    hp = hp->next;
  } else {
    col++;
    hp = (col < tablesize) ? &tableptr[col] : NULL;
    // search for next non-blank column entry
    while (hp && (hp->word == NULL)) {
        col ++;
        hp = (col < tablesize) ? &tableptr[col] : NULL;
    }
    if (col < tablesize) return hp;
    hp = NULL;
    col = -1;
  }
  return hp;
}



// load a munched word list and build a hash table on the fly

int HashMgr::load_tables(const char * tpath)
{
  int wl, al;
  char * ap;

  // raw dictionary - munched file
  FILE * rawdict = fopen(tpath, "r");
  if (rawdict == NULL) return 1;

  // first read the first line of file to get hash table size */
  char ts[MAXDELEN];
  if (! fgets(ts, MAXDELEN-1,rawdict)) return 2;
  mychomp(ts);
  tablesize = atoi(ts);
  if (!tablesize) return 4; 
  tablesize = tablesize + 5;
  if ((tablesize %2) == 0) tablesize++;

  // allocate the hash table
  tableptr = (struct hentry *) calloc(tablesize, sizeof(struct hentry));
  if (! tableptr) return 3;

  // loop through all words on much list and add to hash
  // table and create word and affix strings

  while (fgets(ts,MAXDELEN-1,rawdict)) {
    mychomp(ts);
    // split each line into word and affix char strings
    ap = strchr(ts,'/');
    if (ap) {
      *ap = '\0';
      ap++;
      al = strlen(ap);
    } else {
      al = 0;
      ap = NULL;
    }

    wl = strlen(ts);

    // add the word and its index
    if (add_word(ts,wl,ap,al)) 
      return 5;;

  }

  fclose(rawdict);
  return 0;
}


// the hash function is a simple load and rotate
// algorithm borrowed

int HashMgr::hash(const char * word) const
{
    long  hv = 0;
    for (int i=0; i < 4  &&  *word != 0; i++)
	hv = (hv << 8) | (*word++);
    while (*word != 0) {
      ROTATE(hv,ROTATE_LEN);
      hv ^= (*word++);
    }
    return (unsigned long) hv % tablesize;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美天堂亚洲电影院在线播放| 国产色一区二区| 欧美乱妇23p| 欧美一区二区三区在| 精品国产乱码久久久久久图片| 久久精品视频在线看| 亚洲欧美中日韩| 亚洲成人午夜影院| 麻豆91免费观看| 成人免费精品视频| 色爱区综合激月婷婷| 日韩欧美亚洲国产另类| 国产欧美一区二区精品忘忧草| 自拍偷拍国产亚洲| 国产一区欧美日韩| 久久久99精品免费观看不卡| 中文字幕一区二区在线观看| 香蕉影视欧美成人| 国产成人精品影视| 欧美日韩国产美女| 中文在线免费一区三区高中清不卡 | 欧美日韩成人一区| 国产女人18毛片水真多成人如厕| 亚洲精品视频在线观看免费 | 欧美刺激午夜性久久久久久久| 日本一区二区成人在线| 性感美女久久精品| 成人av网址在线观看| 91精品免费观看| 亚洲摸摸操操av| 狠狠狠色丁香婷婷综合久久五月| 色综合中文字幕国产| 欧美疯狂做受xxxx富婆| 中文字幕一区二区三| 美女看a上一区| 欧美自拍丝袜亚洲| 国产精品午夜在线观看| 免费观看成人鲁鲁鲁鲁鲁视频| 99re亚洲国产精品| 国产亚洲成av人在线观看导航| 亚洲成a人片在线观看中文| 成人av综合在线| 久久久久久久久久久99999| 天天操天天色综合| 91黄色免费看| 中文字幕一区在线观看| 国产精品小仙女| 日韩欧美色综合| 日韩中文欧美在线| 欧美午夜精品久久久久久孕妇| 国产精品久久久久久久久久久免费看| 久久激情五月激情| 欧美高清视频一二三区 | 欧美日韩中文字幕一区二区| 亚洲欧洲在线观看av| 成人性生交大片免费看视频在线 | 国产精品美女久久久久aⅴ国产馆| 亚洲第一av色| 欧美自拍偷拍一区| 亚洲天堂网中文字| 国产suv一区二区三区88区| 日韩一区二区精品| 亚洲gay无套男同| 欧美综合在线视频| 亚洲欧美日韩人成在线播放| 韩国精品一区二区| 日韩你懂的在线播放| 国产精品视频在线看| 国产福利一区二区| 欧美精品一区二| 激情成人综合网| 欧美一级黄色录像| 久久精品国产免费| 91精品免费观看| 久久国产精品99精品国产| 欧美日韩精品福利| 日本欧美一区二区| 欧美人xxxx| 天天色天天爱天天射综合| 欧美亚洲国产一区在线观看网站| 亚洲丝袜自拍清纯另类| 成人一区二区三区视频在线观看| wwww国产精品欧美| 国产福利91精品一区| 久久久久国产一区二区三区四区 | 久久这里只有精品首页| 亚洲影院久久精品| 在线精品国精品国产尤物884a| 久久精品日韩一区二区三区| 国产成人在线电影| 国产女同性恋一区二区| 国产精品一二三四| 在线中文字幕一区| 欧美日韩一区高清| 久久久久久久久久久电影| 精品一区二区成人精品| 久久精品国产网站| 久久婷婷国产综合国色天香 | 日韩av不卡一区二区| 国产精品一区二区在线播放| 精品电影一区二区| 日本午夜精品一区二区三区电影 | 亚洲理论在线观看| 欧美美女黄视频| 日日夜夜精品免费视频| 欧美岛国在线观看| 国产在线不卡一区| 亚洲精品日韩综合观看成人91| 91老司机福利 在线| 午夜精品久久久久久久蜜桃app| 欧美日韩精品电影| 国产美女av一区二区三区| 日本一区二区在线不卡| 欧美午夜理伦三级在线观看| 日韩高清电影一区| 亚洲精品一区二区三区99| 国产精品99久久久久久有的能看 | 日本视频一区二区三区| 日韩精品最新网址| 国产91在线看| 一级中文字幕一区二区| 日韩一区二区三区免费看 | 国产精品99久久久久| 亚洲综合区在线| 欧美一区二区精品久久911| 成人三级伦理片| 一区二区三区精品久久久| 精品捆绑美女sm三区| 成人深夜在线观看| 免费观看一级欧美片| 国产日韩欧美精品在线| 欧美乱熟臀69xxxxxx| 国产成+人+日韩+欧美+亚洲| 国产日韩av一区| 色综合久久天天综合网| 久久99这里只有精品| 国产欧美一区二区精品仙草咪| 欧美最猛黑人xxxxx猛交| 激情图片小说一区| 国产精品二区一区二区aⅴ污介绍| 欧美午夜精品一区二区三区| 国产精品一区专区| 亚洲最大成人综合| 欧美在线三级电影| 一区二区三区在线影院| 日韩高清一级片| 不卡欧美aaaaa| 久久综合国产精品| 中文字幕在线一区| 国产婷婷色一区二区三区在线| 久久无码av三级| 亚洲天堂av一区| 国产福利一区二区| 欧美一级国产精品| 亚洲人成小说网站色在线| 国产精品素人一区二区| 91麻豆精品国产91久久久久| 欧美a一区二区| 亚洲精品福利视频网站| 久久久久亚洲蜜桃| 日韩一区二区三区视频在线| 91麻豆国产精品久久| 成人国产精品视频| 麻豆91在线观看| 日韩电影一区二区三区| 亚洲免费在线电影| 国产精品大尺度| 欧美卡1卡2卡| 欧美色网站导航| 国产成人av电影| 久久99久久精品| 久久99国产精品尤物| 亚洲综合在线免费观看| 亚洲人成7777| 国产欧美一区二区三区鸳鸯浴 | 欧美在线免费观看亚洲| 99免费精品在线| 成人午夜在线视频| 国产成人精品亚洲777人妖 | 久久婷婷一区二区三区| 欧美一区永久视频免费观看| 欧美日韩一区久久| 在线精品视频一区二区三四| 色综合亚洲欧洲| 成人手机电影网| 99视频精品在线| 成人一区二区在线观看| 成人三级在线视频| 国产精品一区一区三区| 国产剧情一区二区| 丁香婷婷综合网| 国产成人丝袜美腿| av在线不卡网| 不卡一区二区三区四区| 91丝袜美女网| 99久久精品一区二区| 色婷婷综合久久久久中文| 国产成人精品午夜视频免费| 懂色av中文一区二区三区 | 中文字幕在线不卡一区|