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

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

?? bplus.cpp

?? 計算機英漢機器翻譯系統中的英語詞性標注方法實現
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/********************************************************************/
/*                                                                  */
/*             BPLUS file indexing program - Version 1.0            */
/*                                                                  */
/*                      A "shareware program"                       */
/*                                                                  */
/*                                                                  */
/*                      Copyright (C) 1987 by                       */
/*                                                                  */
/*                      Hunter and Associates                       */
/*                      7050 NW Zinfandel Lane                      */
/*                      Corvallis, Oregon  97330                    */
/*                      (503) 745 - 7186                            */
/*                                                                  */
/********************************************************************/

#include "stdafx.h"
#include "io.h"
#include <fcntl.h>
#include <sys/stat.h>


#include "bplus.h"


/*  macros, constants, data types  */

#define  NULLREC      (-1L)
#define  FREE_BLOCK   (-2)

#define  ENT_ADR(pb,off)  ((ENTRY*)((char*)((pb)->entries) + off))
#define  ENT_SIZE(pe)     strlen((pe)->key) + 1 + 2 * sizeof(RECPOS)
#define  BUFDIRTY(j)      (mci->cache[j].dirty)
#define  BUFHANDLE(j)     (mci->cache[j].handle)
#define  BUFBLOCK(j)      (mci->cache[j].mb)
#define  BUFCOUNT(j)      (mci->cache[j].count)
#define  CB(j)            (pci->pos[j].cblock)
#define  CO(j)            (pci->pos[j].coffset)


/*  declare some global variables  */

IX_DESC      *pci;
IX_BUFFER    bt_buffer;
IX_BUFFER    *mci = &bt_buffer;
BLOCK        *block_ptr;
BLOCK        *spare_block;
int          cache_ptr = 0;
int          cache_init = 0;
int          split_size = IXB_SPACE;
int          comb_size  = (IXB_SPACE/2);

void  error(int, long);
void  read_if(long, char *, int);
void  write_if(int, long, char *, int);
int   creat_if(char *);
int   open_if(char *);
void  close_if(int);
void  update_block(void);
void  init_cache(void);
int   find_cache(RECPOS);
int   new_cache(void);
void  load_cache(RECPOS);
void  get_cache(RECPOS);
void  retrieve_block(int, RECPOS);
int   prev_entry(int);
int   next_entry(int);
int   copy_entry(ENTRY *, ENTRY *);
int   scan_blk(int);
int   last_entry(void);
int   write_free( RECPOS, BLOCK *);
RECPOS  get_free(void);
int   find_block(ENTRY *, int *);
void  movedown(BLOCK *, int, int);
void  moveup(BLOCK *, int, int);
void  ins_block(BLOCK *, ENTRY *, int);
void  del_block(BLOCK *, int);
int   split(int, ENTRY *, ENTRY *);
void  ins_level(int, ENTRY *);
int   insert_ix(ENTRY *, IX_DESC *);
int   find_ix(ENTRY *, IX_DESC *, int);
int   combineblk(RECPOS, int);
void  replace_entry(ENTRY *);
void print_blk(BLOCK *);


/*  file I/O for B-PLUS module  */

void  error(  int j,long l)
{
	static char *msg[3] = {"ERROR - CANNOT OPEN/CLOSE FILE",
						   "ERROR WHILE READING FILE",
						   "ERROR WHILE WRITING FILE"};
	CString strTmp;
	strTmp.Format("\n  %s - Record Number %ld\n", msg[j], l);
	AfxMessageBox(strTmp);
	exit(1);
} /* error */


void  read_if(long start, char *buf,  int nwrt)
{
	long err;
	err = start - lseek(pci->ixfile, start, SEEK_SET);
	if (err == 0) err = nwrt - read(pci->ixfile, buf, nwrt);
	if (err != 0) error(1, start);
} /* read_if */


void  write_if(int handle, long start, char *buf, int nwrt)
{
	long err;
	err = start - lseek(handle, start, SEEK_SET);
	if (err == 0) err = nwrt - write(handle, buf, nwrt);
	if (err != 0) error(2, start);
} /* write_if */


int  creat_if(char *fn)
{
	int   ret;
	ret = open(fn,O_RDWR|O_CREAT|O_TRUNC|O_BINARY,S_IWRITE);
	if (ret  < 0) error(0,0L);
	return (ret);
} /* creat_if */


int  open_if(char *fn)
{
	int  ret;
	ret = _open(fn,_O_RDWR|_O_BINARY);
	if (ret < 1) error(0,0L);
	return (ret);
} /* open_if */


void  close_if(int handle)
{
	if(close(handle) < 0)  error(2,0L);
} /*  close_if */


int  open_index(char *name, IX_DESC *pix, int dup)
{
	pci = pix;
	//xeddel open_if(name);
	pci->ixfile = open_if(name);
	pci->duplicate = dup;
	read_if(0L,(char *)&(pix->root), (sizeof(BLOCK) + sizeof(IX_DISK)));
	if (!cache_init)
	{
		init_cache();
		cache_init = 1;
	}
	first_key(pix);
	return ( IX_OK );
} /* open_index */


int  close_index(  IX_DESC *pix)
{
	int i;
	write_if(pix->ixfile, 0L,(char *)&(pix->root),
			   (sizeof(BLOCK) + sizeof(IX_DISK)));
	for (i = 0; i < NUM_BUFS; i++)
		if (BUFDIRTY(i) && (BUFHANDLE(i) == pix->ixfile))
		{
			write_if(BUFHANDLE(i),
				   BUFBLOCK(i).brec,
				   (char *) &BUFBLOCK(i),
				   sizeof(BLOCK));
			BUFDIRTY(i) = 0;
		}
	close_if(pix->ixfile);
	return( IX_OK );
} /* close_index */


int  make_index(char *name, IX_DESC *pix,   int dup)
{
	pci = pix;
	pci->ixfile = creat_if(name);
	pci->duplicate = dup;
	pci->dx.nl = 1;
	pci->dx.ff = NULLREC;
	pci->level = 0;
	CO(0) = -1;
	CB(0) = 0L;
	pci->root.brec = 0L;
	pci->root.bend = 0;
	pci->root.p0 = NULLREC;
	write_if(pci->ixfile, 0L,(char *)&(pix->root),
			   (sizeof(BLOCK) + sizeof(IX_DISK)));
	if (!cache_init)
	{
		init_cache();
		cache_init = 1;
	}
	first_key(pix);
	return ( IX_OK );
} /* make_index */


/*  cache I/O for BPLUS  */

void  update_block()
{
	if (block_ptr != &(pci->root))
	   BUFDIRTY(cache_ptr) = 1;
} /* update_block */


void  init_cache()
{
	register int  j;
	for (j = 0; j < NUM_BUFS; j++)
	{  
		BUFDIRTY(j) = 0;
		BUFCOUNT(j) = 0;
		BUFBLOCK(j).brec = NULLREC;
	}
} /* init_cache */


int  find_cache(  RECPOS r)
{
	register int  j;
	for (j = 0; j < NUM_BUFS; j++)
	{
		if((BUFBLOCK(j).brec == r) && (BUFHANDLE(j) == pci->ixfile))
		{
			cache_ptr = j;
			return (1);
		}  
	}
	return (-1);
} /* find_cache */


int  new_cache()
{
	register int  i;
	i = (cache_ptr + 1) % NUM_BUFS;
	if (BUFDIRTY(i)) write_if(BUFHANDLE(i),
							  BUFBLOCK(i).brec,
							  (char *) &BUFBLOCK(i),
							  sizeof(BLOCK));
	BUFHANDLE(i) = pci->ixfile;
	BUFDIRTY(i) = 0;
	return (i);
} /* new_cache */


void  load_cache(RECPOS r)
  
{
	cache_ptr = new_cache();
	read_if(r, (char *)&BUFBLOCK(cache_ptr), sizeof(BLOCK));
} /* load_cache */


void  get_cache(  RECPOS r)
{
	if (find_cache(r) < 0)
	   load_cache(r);
	block_ptr = &BUFBLOCK(cache_ptr);
} /* get_cache */


void  retrieve_block(int j, RECPOS r)
  {
    if (j == 0)
       block_ptr = &(pci->root);
    else  get_cache(r);
    CB(j) = block_ptr->brec;
  } /* retrieve_block */


/*  low level functions of BPLUS  */

int  prev_entry(int off)
  {
     if (off <= 0)
       {
         off = -1;
         CO(pci->level) = off;
       }
     else
       off = scan_blk(off);
     return(off);
  } /* prev_entry */


int  next_entry(int off)
  {
     if (off == -1)
       off = 0;
     else
       {
         if (off < block_ptr->bend)
            off += ENT_SIZE(ENT_ADR(block_ptr,off));
       }
     CO(pci->level) = off;
     return (off);
  } /* next_entry */


int  copy_entry(ENTRY *to, ENTRY *from)
  {
    int me;
    me = ENT_SIZE(from);
    memcpy(to, from, me);
	return me;
  } /* copy_entry */


int  scan_blk(int n)
  {
     register int off, last;
     off = 0;
     last = -1;
     while (off < n )
       {  last = off;
          off += ENT_SIZE(ENT_ADR(block_ptr,off));
       }
     CO(pci->level) = last;
     return (last);
  } /* scan_blk */


int  last_entry()
  {
     return( scan_blk(block_ptr->bend) );
  } /* last_entry *;


/*  maintain list of free index blocks  */

int  write_free(  RECPOS r, BLOCK *pb)
  {
    pb->p0 = FREE_BLOCK;
    pb->brec = pci->dx.ff;
    write_if(pci->ixfile, r, (char *) pb, sizeof(BLOCK));
    pci->dx.ff = r;
	return 1;
  } /* write_free */


RECPOS  get_free()
  {
    RECPOS  r, rt;

    r = pci->dx.ff;
    if ( r != NULLREC )
      {  read_if(r, (char *)&rt, sizeof( RECPOS ));
         pci->dx.ff = rt;
      }
    else
      r = filelength (pci->ixfile);
    return (r);
  } /* get_free */


/*  general BPLUS block level functions  */

int  find_block(ENTRY *pe, int *poff)
  {
    register int pos, nextpos, ret;
    pos = -1;
    nextpos = 0;
    ret = 1;
    while ( nextpos < block_ptr->bend)
      {
        ret = strcmp((char *)(pe->key),
                     (char *)(ENT_ADR(block_ptr, nextpos)->key));
        if (ret <= 0)
          {
             if (ret == 0) pos = nextpos;
             break;
          }
        pos = nextpos;
        nextpos = next_entry(pos);
      }
    CO(pci->level) = pos;
    *poff = pos;
    return (ret);
  } /* find_block */


void  movedown(BLOCK *pb, int off, int n)
  {
    memcpy(ENT_ADR(pb, off),
           ENT_ADR(pb, off + n),
           pb -> bend - (off + n));
  } /* movedown */


void  moveup(BLOCK *pb, int off, int n)
  {
    memcpy(ENT_ADR(pb, off + n),
            ENT_ADR(pb, off),
            pb->bend - off);
  } /* moveup */


void  ins_block(BLOCK *pb, ENTRY *pe,   int off)
  {
    int size;
    size = ENT_SIZE(pe);
    moveup(pb,off,size);
    copy_entry(ENT_ADR(pb,off),pe);
    pb->bend += size;
  } /* ins_block */


void  del_block(BLOCK *pb, int off)
  {
    int ne;
    ne = ENT_SIZE(ENT_ADR(pb, off));
    movedown(pb, off, ne);
    pb->bend -= ne;
  } /* del_block */


/*  position at start/end of index  */

int  first_key(IX_DESC *pix)
  {
	pci = pix;
    block_ptr = &(pci->root);
    CB(0) = 0L;
    CO(0) = -1;
    pci->level = 0;
    while(block_ptr->p0 != NULLREC)
      {
        retrieve_block(++(pci->level), block_ptr->p0);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲手机成人高清视频| 国产在线视频一区二区三区| 亚洲成人一二三| 国产真实乱偷精品视频免| 成人av免费在线播放| 欧美高清视频不卡网| 国产精品午夜在线| 久久国产人妖系列| 欧美日韩你懂得| 国产精品免费看片| 国产一区二区三区日韩| 91极品视觉盛宴| 国产女人18毛片水真多成人如厕 | 日韩成人一区二区三区在线观看| 国产成a人亚洲| 日韩亚洲欧美中文三级| 亚洲国产成人精品视频| 91色在线porny| 国产精品不卡在线观看| 国产精品一区二区免费不卡| 6080午夜不卡| 亚洲成a人片在线不卡一二三区| jiyouzz国产精品久久| 久久婷婷国产综合精品青草 | 欧美精品aⅴ在线视频| 亚洲激情图片一区| 97久久超碰国产精品电影| 国产精品欧美综合在线| 国产成人自拍网| 久久久一区二区三区| 久久se这里有精品| 日韩欧美卡一卡二| 久久国产生活片100| 26uuu精品一区二区在线观看| 美国三级日本三级久久99| 91精品国产综合久久久久久 | 国产精品久久久久久久岛一牛影视| 精品中文字幕一区二区小辣椒| 91精品国产综合久久精品app| 日韩—二三区免费观看av| 91精品国产日韩91久久久久久| 石原莉奈一区二区三区在线观看| 777午夜精品免费视频| 午夜a成v人精品| 制服.丝袜.亚洲.中文.综合| 日本不卡一区二区三区高清视频| 欧美一区二区三区影视| 国内外精品视频| 亚洲国产岛国毛片在线| 色诱亚洲精品久久久久久| 亚洲精品视频免费观看| 欧美日韩亚洲综合| 捆绑调教美女网站视频一区| 精品成人a区在线观看| 国产成人在线网站| 亚洲综合在线电影| 7777精品伊人久久久大香线蕉经典版下载 | 五月天国产精品| 欧美成人a在线| 国产成人久久精品77777最新版本| 国产人成一区二区三区影院| 波波电影院一区二区三区| 樱花草国产18久久久久| 日韩一级大片在线观看| 成人黄色综合网站| 香蕉成人啪国产精品视频综合网| 日韩免费观看高清完整版| 成人av电影在线网| 偷拍一区二区三区四区| 国产日韩欧美精品一区| 欧美亚一区二区| 国产精品亚洲成人| 丝袜美腿亚洲综合| 国产精品美女一区二区在线观看| 在线观看亚洲一区| 粉嫩蜜臀av国产精品网站| 五月激情综合网| 亚洲成人一区在线| 欧美mv日韩mv国产| 欧美三级电影精品| 不卡一区二区在线| 激情综合五月天| 一区二区三区欧美视频| 国产日韩亚洲欧美综合| 欧美日本国产视频| 97久久超碰国产精品| 国产一区二区主播在线| 亚洲成人黄色影院| 亚洲精品中文在线| 国产欧美日韩另类视频免费观看| 欧美福利视频一区| 91免费观看国产| 顶级嫩模精品视频在线看| 日本麻豆一区二区三区视频| 亚洲自拍都市欧美小说| 国产精品二三区| 国产亚洲精品福利| 久久久美女毛片| 日韩精品中文字幕一区二区三区| 欧美视频在线观看一区| 91日韩精品一区| 成人免费的视频| 国产精品18久久久久| 久久国产综合精品| 免费观看在线综合| 日本少妇一区二区| 婷婷综合五月天| 日日欢夜夜爽一区| 日韩在线一区二区三区| 五月综合激情婷婷六月色窝| 亚洲午夜私人影院| 亚洲成av人片在线观看| 亚洲国产精品久久人人爱| 亚洲精品久久7777| 亚洲一区二区三区四区五区中文| 亚洲欧美激情在线| 亚洲黄网站在线观看| 亚洲一区二区三区视频在线播放| 亚洲男人的天堂在线aⅴ视频| 一区视频在线播放| 亚洲欧美韩国综合色| 亚洲一二三四在线观看| 亚洲国产视频一区| 日本vs亚洲vs韩国一区三区| 日韩激情在线观看| 黄一区二区三区| 国产精品一区一区| 91视频一区二区| 欧美亚一区二区| 91精品午夜视频| 2024国产精品| 亚洲人精品一区| 亚洲精品免费播放| 日韩精品福利网| 国产一区欧美一区| 91一区一区三区| 欧美丰满一区二区免费视频| 日韩精品中文字幕一区| 久久久99精品免费观看不卡| 国产精品每日更新| 亚洲成人中文在线| 国产一区二区三区在线看麻豆| 成人avav影音| 欧美丰满少妇xxxxx高潮对白| 精品剧情在线观看| 国产精品久久久久久户外露出| 亚洲自拍偷拍九九九| 精品一区二区在线视频| 97久久精品人人做人人爽50路| 欧美日韩不卡一区二区| 久久久噜噜噜久久人人看| 亚洲视频 欧洲视频| 免费成人在线观看| a美女胸又www黄视频久久| 在线电影院国产精品| 国产欧美一区二区精品仙草咪| 亚洲一区二区精品久久av| 国产一区啦啦啦在线观看| 欧美无人高清视频在线观看| 精品欧美一区二区三区精品久久| 亚洲视频图片小说| 极品少妇xxxx精品少妇| 欧美三级视频在线观看| 国产午夜精品一区二区| 欧美a级一区二区| 色综合天天综合狠狠| 精品国产免费久久| 午夜精品久久久久久久99樱桃| 丰满白嫩尤物一区二区| 日韩一区二区三区视频在线观看| 亚洲日本成人在线观看| 久久爱www久久做| 在线电影国产精品| 亚洲欧美电影一区二区| 国产成人一级电影| 日韩欧美一二三四区| 亚洲一线二线三线视频| av电影天堂一区二区在线观看| 欧美精品一区二区三区蜜桃视频| 亚洲国产aⅴ成人精品无吗| 91免费看片在线观看| 五月天激情综合网| 91麻豆免费视频| 中文成人综合网| 国产精品一区不卡| 337p粉嫩大胆噜噜噜噜噜91av| 丝袜国产日韩另类美女| 欧美影院午夜播放| 夜夜精品视频一区二区| 色先锋资源久久综合| 亚洲国产成人在线| 国产91精品在线观看| 久久综合久色欧美综合狠狠| 老司机一区二区| 精品剧情v国产在线观看在线| 久久丁香综合五月国产三级网站| 91精品国产综合久久久久久漫画| 日韩电影在线观看电影| 91精品国产综合久久久久久漫画| 午夜精品成人在线视频|