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

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

?? dicthash.cpp

?? 計算機英漢機器翻譯系統中的英語詞性標注方法實現
?? CPP
字號:
#include "stdafx.h"
//#include "DictMent.h"
#include "Diction.h"
#include "PosTag.h"
#include "ChildFrm.h"
#include <stdio.h>
#include <string.h>
#include <memory.h>

void DictSearch::SetHashTableValue(LPCSTR pszKeyword)
{
	UINT nHashValue = HashKey(pszKeyword,( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize);
	UINT nOffset = nHashValue / 8;
	UINT nOffsetInByte = nHashValue % 8;

	UCHAR chNeed = m_pszHashTable[nOffset];
	chNeed &= m_narrayDector[nOffsetInByte];
	if ( chNeed != 0 )	
		m_nSameHushWordsNum	++;

	m_pszHashTable[nOffset] |= (BYTE)m_narrayDector[nOffsetInByte];
}

BOOL DictSearch::HashFindPossible(LPCSTR pszKeyword)
{
	UINT nHashValue = HashKey(pszKeyword,( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize);
	UINT nOffset = nHashValue / 8;
	UINT nOffsetInByte = nHashValue % 8;
	UCHAR chNeed = m_pszHashTable[nOffset];
	chNeed &= m_narrayDector[nOffsetInByte];

	return chNeed;
}

inline UINT DictSearch::HashKey(LPCSTR pszKeyword,UINT nHashLen) const
{
	UINT nHash = 0;
	while (*pszKeyword)
		nHash = (nHash<<5) + nHash + *pszKeyword++;
	return nHash % nHashLen;
}

void DictSearch::SetHableTableSize()
{
	m_nHashTableOffset = 0;
	( (CPosTagApp*) AfxGetApp() ) ->m_nHashTableSize = 0xfffff;//0xa0000(7008);
}

BOOL DictSearch::AllocHashTableMemory()
{
	( (CPosTagApp* ) AfxGetApp() ) ->m_pszSysHashTable = NULL;
	( (CPosTagApp* ) AfxGetApp() ) ->m_pszAddtionHashTable = NULL;

	if ( ( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize > 0 ) {
		( (CPosTagApp* ) AfxGetApp() ) ->m_pszSysHashTable = (LPSTR)GlobalLock(GlobalAlloc(
						GMEM_MOVEABLE|GMEM_SHARE|GMEM_ZEROINIT,
						( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize/8 + 10));
		if ( ( (CPosTagApp* ) AfxGetApp() ) ->m_pszSysHashTable == NULL ) // 內存不夠
			return FALSE;
		
		( (CPosTagApp* ) AfxGetApp() ) ->m_pszAddtionHashTable = (LPSTR)GlobalLock(GlobalAlloc(
						GMEM_MOVEABLE|GMEM_SHARE|GMEM_ZEROINIT,
						( (CPosTagApp*) AfxGetApp() ) ->m_nHashTableSize/8 + 10));
		if (( (CPosTagApp* ) AfxGetApp() ) -> m_pszAddtionHashTable == NULL ) // 內存不夠
			return FALSE;
	}
	
	m_pszHashTable = ( (CPosTagApp* ) AfxGetApp() ) ->m_pszSysHashTable;		//另默認的值為m_pszSysHashTable
	
	( (CPosTagApp* ) AfxGetApp() ) ->m_pszUserHashTable = NULL;

	if ( ( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize > 0 ) {
		( (CPosTagApp* ) AfxGetApp() ) ->m_pszUserHashTable = (LPSTR)GlobalLock(GlobalAlloc(
						GMEM_MOVEABLE|GMEM_SHARE|GMEM_ZEROINIT,
						( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize/8 + 10));
		if ( ( (CPosTagApp* ) AfxGetApp() ) ->m_pszUserHashTable == NULL ) // 內存不夠
			return FALSE;
	}

	bHaveAllocMemory = TRUE;
	return TRUE;
}

void DictSearch::FreeHashTableMemory()
{
	if ( ( (CPosTagApp* ) AfxGetApp() ) ->m_pszSysHashTable != NULL ) {
		GlobalUnlock(GlobalHandle(( (CPosTagApp* ) AfxGetApp() ) ->m_pszSysHashTable));
		GlobalFree(GlobalHandle(( (CPosTagApp* ) AfxGetApp() ) ->m_pszSysHashTable));
		( (CPosTagApp* ) AfxGetApp() ) ->m_pszSysHashTable = NULL;
	}
/*
	if ( m_pszAddtionHashTable != NULL ) {
		GlobalUnlock(GlobalHandle(m_pszAddtionHashTable));
		GlobalFree(GlobalHandle(m_pszAddtionHashTable));
		m_pszAddtionHashTable = NULL;
	}
	
	if ( m_pszUserHashTable != NULL ) {
		GlobalUnlock(GlobalHandle(m_pszUserHashTable));
		GlobalFree(GlobalHandle(m_pszUserHashTable));
		m_pszUserHashTable = NULL;
	}
	*/
}

BOOL DictSearch::CreateSingleDictHashTable(LPSTR pszDictName)
{
	FILE *fpDict;
	if ( (fpDict = fopen(pszDictName,"rb") ) == NULL ) {
		CString strMsg;
		strMsg.Format("Cann't open file %s !",pszDictName);
		AfxMessageBox(strMsg);
		return FALSE;
	}

	// Add for Debug Begin
	m_nSameHushWordsNum = 0;
	// Add for Debug End

	char szLine[MAX_DICTLINE_LEN];
	LPSTR pszPtr;
	do {
		fgets(szLine,MAX_DICTLINE_LEN,fpDict);
		if ( feof(fpDict) ) break;

		if ( szLine[0] != '#' )
			continue;
		pszPtr = strchr(szLine+1,'\\');
		ASSERT( pszPtr != NULL );
		*pszPtr = '\0';

		SetHashTableValue(szLine+1);
	} while ( TRUE );

	fclose(fpDict);

	// Add for Debug Begin
	FILE *fpInfo;
	char szInfoName[] = "DictRes\\HashInfo.txt";
	if ( (fpInfo = fopen(szInfoName,"ab") ) == NULL ) {
		CString strMsg;
		strMsg.Format("Cann't write file %s !",szInfoName);
		AfxMessageBox(strMsg);
		return FALSE;
	}
	fprintf(fpInfo,"Dict = %s,Same Hash Num = %d\n",
				pszDictName,m_nSameHushWordsNum);
	fclose(fpInfo);
	// Add for Debug End

	return TRUE;
}

BOOL DictSearch::CreateHashTableAndAddToDat(FILE *fpIndexDat,
				 DictHeader &phHead,char *szDicName)
{
	SetHableTableSize();

	if ( AllocHashTableMemory() == FALSE ) {
		AfxMessageBox("No enough memory !");
		return FALSE;
	}

	//yys 98.5.14 Bgn
	CreateSingleDictHashTable(szDicName);
	//yys 98.5.14 End

	phHead.nHashTableSize = ( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize;
	phHead.nHashTableOffset = 0;
	
	phHead.nHashTableOffset = ftell(fpIndexDat);
	if ( phHead.nHashTableSize > 0 )
		fwrite(m_pszHashTable,phHead.nHashTableSize/8+1,
					1,fpIndexDat);

	FreeHashTableMemory();
	return TRUE;
}

BOOL DictSearch::LoadHushTable()
{
	FILE *fpHash;
	
	char szHashTableName[] = "DictRes\\LilyData.Dat";
	if ( (fpHash = fopen(szHashTableName,"rb") ) == NULL ) {
		CString strMsg;
		strMsg.Format("Cann't open file %s !",szHashTableName);
		AfxMessageBox(strMsg);
		return FALSE;
	}
	fseek(fpHash,0L,SEEK_SET);

	DictHeader hushHead;
	fread(&hushHead,sizeof(DictHeader),1,fpHash);

	( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize = hushHead.nHashTableSize;
	
	if ( AllocHashTableMemory() == FALSE )
		return FALSE;

	if ( ( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize > 0 ) {
		fseek(fpHash,hushHead.nHashTableOffset,SEEK_SET);
		fread(m_pszHashTable,( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize/8 + 1,1,fpHash);
	}

	fclose(fpHash);
	
	return TRUE;
}

//Load系統和系統附加詞典數據
int DictSearch::LoadSysHushTableFromIndexDat(FILE *fpSysIndexDat,FILE *fpAddtionIndexDat)
{//for qlp
	DictHeader hushHead;
		
	fseek(fpSysIndexDat,0L,SEEK_SET);
	fread(&hushHead,sizeof(DictHeader),1,fpSysIndexDat);	
	( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize = hushHead.nHashTableSize;

	if ( !bHaveAllocMemory ){
		if ( AllocHashTableMemory() == FALSE )		//分配內存
			return 0;
	}

	
	if ( ( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize > 0 ) {
		fseek(fpSysIndexDat,hushHead.nHashTableOffset,SEEK_SET);
		fread(( (CPosTagApp* ) AfxGetApp() ) ->m_pszSysHashTable ,( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize/8 + 1,1,fpSysIndexDat);
	}

	fseek(fpAddtionIndexDat,0L,SEEK_SET);
	fread(&hushHead,sizeof(DictHeader),1,fpAddtionIndexDat);	
	( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize = hushHead.nHashTableSize;
	
	if ( ( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize > 0 ) {
		fseek(fpAddtionIndexDat,hushHead.nHashTableOffset,SEEK_SET);
		fread(( (CPosTagApp* ) AfxGetApp() ) ->m_pszAddtionHashTable,( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize/8 + 1,1,fpAddtionIndexDat);
	}

	return 1;
}

//Load用戶詞典數據
BOOL DictSearch::LoadUserHushTableFromIndexDat(FILE *fpUserIndexDat)
{
	DictHeader hushHead;

	fseek(fpUserIndexDat,0L,SEEK_SET);
	fread(&hushHead,sizeof(DictHeader),1,fpUserIndexDat);
	( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize = hushHead.nHashTableSize;
	
	if ( ( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize > 0 ) {
		fseek(fpUserIndexDat,hushHead.nHashTableOffset,SEEK_SET);
		fread(( (CPosTagApp* ) AfxGetApp() ) ->m_pszUserHashTable,( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize/8 + 1,1,fpUserIndexDat);
	}	

	return TRUE;
}

//yys 98.5.14 Bgn
//添加一個形參szDicName
BOOL DictSearch::CreateHashTable(char *szDicName)
//yys 98.5.14 End
{
	SetHableTableSize();
	if ( AllocHashTableMemory() == FALSE )
		return FALSE;
	
	//yys 98.5.14 Bgn
	CreateSingleDictHashTable(szDicName);
	//yys 98.5.14 End

	char szHashTableName[] = "DictRes\\LilyData.Dat";
	FILE *fpHash;
	if ( (fpHash = fopen(szHashTableName,"wb") ) == NULL ) {
		CString strMsg;
		strMsg.Format("Cann't write file %s !",szHashTableName);
		AfxMessageBox(strMsg);
		return FALSE;
	}
	
	DictHeader hushHead;
	
	strcpy(hushHead.szMagic,szDictDataMagic);

	hushHead.nHashTableSize = ( (CPosTagApp* ) AfxGetApp() ) ->m_nHashTableSize;
	hushHead.nHashTableOffset = 0;
	
	fwrite(&hushHead,sizeof(DictHeader),1,fpHash);
	hushHead.nHashTableOffset = ftell(fpHash);
	if ( hushHead.nHashTableSize > 0 )
		fwrite(m_pszHashTable,hushHead.nHashTableSize/8+1,1,fpHash);
	fclose(fpHash);

	if ( (fpHash = fopen(szHashTableName,"r+b") ) == NULL ) {
		CString strMsg;
		strMsg.Format("Cann't write file %s !",szHashTableName);
		AfxMessageBox(strMsg);
		return FALSE;
	}
	fseek(fpHash,0L,SEEK_SET);
	fwrite(&hushHead,sizeof(DictHeader),1,fpHash);
	fclose(fpHash);
	
	AfxMessageBox("Finish!");
	
	return TRUE;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品三级在线看| 99在线视频精品| 欧美大白屁股肥臀xxxxxx| 天天爽夜夜爽夜夜爽精品视频| 色噜噜狠狠成人中文综合| 亚洲欧洲精品成人久久奇米网| 色偷偷成人一区二区三区91| 国产精品欧美久久久久一区二区 | 久久综合九色综合久久久精品综合| 日本在线不卡视频| 日韩欧美久久一区| 国产91色综合久久免费分享| 国产精品国产三级国产有无不卡 | 毛片一区二区三区| 欧美大片国产精品| 成人h动漫精品一区二| 亚洲男人的天堂在线aⅴ视频| 欧美性猛交xxxxxx富婆| 日本一区中文字幕| 久久久久亚洲蜜桃| 波多野结衣在线aⅴ中文字幕不卡| 亚洲欧美另类小说视频| 欧美日韩不卡视频| 狠狠狠色丁香婷婷综合激情 | eeuss国产一区二区三区| 亚洲精品国产精华液| 欧美一区二区三区日韩| 夫妻av一区二区| 一区二区激情视频| 亚洲综合色丁香婷婷六月图片| 7777精品伊人久久久大香线蕉完整版 | 亚洲一区二区三区小说| 日韩三级在线观看| www.欧美色图| 青草av.久久免费一区| 久久久蜜臀国产一区二区| 色菇凉天天综合网| 国产一区二区三区av电影| 亚洲一区在线观看免费| 国产视频不卡一区| 欧美一区二区三区四区视频| 99久久777色| 国产精品一区一区三区| 日韩精品一区第一页| 中文字幕一区二区三区在线播放 | 韩国女主播成人在线| 一区二区成人在线视频| 久久九九99视频| 91精品国产欧美一区二区| 色婷婷国产精品综合在线观看| 精彩视频一区二区三区| 亚洲激情在线播放| 26uuuu精品一区二区| 91免费版pro下载短视频| 日韩av一区二区三区四区| 国产婷婷精品av在线| 一本在线高清不卡dvd| 午夜不卡av免费| 国产精品网站在线| 欧美一区二区在线看| 不卡的电影网站| 免费不卡在线观看| 亚洲欧美国产毛片在线| 精品久久五月天| 在线免费观看日韩欧美| 国产成人综合视频| 日本成人在线一区| 一区二区三区欧美久久| 国产精品青草综合久久久久99| 日韩免费在线观看| 在线观看免费亚洲| 成人av资源下载| 国内精品国产成人国产三级粉色 | 日韩一级视频免费观看在线| 91亚洲精华国产精华精华液| 国产在线一区观看| 亚洲成a人v欧美综合天堂 | 亚洲成人在线免费| 亚洲情趣在线观看| 国产欧美一二三区| 精品欧美乱码久久久久久 | 日韩美女久久久| 久久午夜国产精品| 这里只有精品视频在线观看| 欧美午夜免费电影| 在线视频观看一区| 在线视频一区二区三区| 成人不卡免费av| 成人高清av在线| 成人免费av网站| 成人综合婷婷国产精品久久免费| 肉肉av福利一精品导航| 亚洲影院在线观看| 亚洲精品欧美激情| 中文字幕制服丝袜成人av| 成人免费小视频| 日韩毛片视频在线看| 国产精品麻豆网站| 中文成人综合网| 国产精品视频看| 中文字幕中文字幕一区二区| 国产精品免费免费| 自拍偷拍欧美激情| 亚洲免费在线看| 视频一区中文字幕| 日韩不卡免费视频| 蜜桃视频免费观看一区| 美国十次综合导航| 激情久久五月天| 国产成人av一区| 成人av在线播放网站| 91碰在线视频| 欧美三电影在线| 欧美福利一区二区| 欧美成人高清电影在线| 337p日本欧洲亚洲大胆精品| 精品成人一区二区三区四区| 久久久久久久电影| 中文字幕一区在线观看| 一区二区免费视频| 免费在线一区观看| 国产电影一区二区三区| 国产suv精品一区二区883| 不卡大黄网站免费看| 欧美日韩一区二区在线观看 | 欧美精品一卡二卡| 日韩欧美一级二级| 中文字幕乱码日本亚洲一区二区| 中文字幕在线一区二区三区| 亚洲一区二区在线免费看| 日韩国产欧美在线视频| 国产精一品亚洲二区在线视频| 国产不卡高清在线观看视频| 在线观看成人小视频| 91精品国产综合久久小美女| 国产色产综合色产在线视频| 亚洲欧美日韩中文播放 | 激情综合网av| 色综合久久天天| 精品国产一区二区精华| 欧美国产精品一区二区三区| 亚洲欧洲精品一区二区三区| 亚洲123区在线观看| 国产一区二区三区观看| 在线免费观看日本欧美| 26uuu国产一区二区三区| 亚洲精品日产精品乱码不卡| 欧美aⅴ一区二区三区视频| 成人一区二区视频| 日韩午夜激情免费电影| 国产精品麻豆欧美日韩ww| 亚洲在线视频一区| 国产宾馆实践打屁股91| 欧美高清性hdvideosex| 国产精品成人一区二区三区夜夜夜| 午夜国产精品一区| 成人爽a毛片一区二区免费| 91精品免费在线| 夜夜嗨av一区二区三区中文字幕 | 久久一留热品黄| 一区二区三区在线观看欧美| 成人av第一页| 欧美精品一区男女天堂| 亚洲福利一区二区| 99精品视频在线免费观看| 精品精品欲导航| 婷婷久久综合九色综合伊人色| 成人性生交大片免费看中文| 欧美本精品男人aⅴ天堂| 亚洲午夜免费视频| 91麻豆自制传媒国产之光| 欧美—级在线免费片| 国内精品视频一区二区三区八戒| 欧美肥妇bbw| 亚洲6080在线| 欧美视频完全免费看| 成人欧美一区二区三区白人| 国产精品99久| 日韩精品自拍偷拍| 国产一区二区电影| 精品国产伦一区二区三区观看体验 | 中文字幕欧美一区| 国产乱码精品一区二区三区忘忧草 | 国产综合色在线| 日韩一区二区麻豆国产| 日日摸夜夜添夜夜添精品视频| 色94色欧美sute亚洲线路一久| 国产精品白丝在线| av一二三不卡影片| 国产女人aaa级久久久级| 精品午夜一区二区三区在线观看| 91精品国产91久久久久久最新毛片 | 顶级嫩模精品视频在线看| 久久综合九色综合欧美98| 狠狠色丁香婷综合久久| 91精品视频网| 国产福利一区在线| 欧美激情中文字幕| 成人精品鲁一区一区二区| 欧美经典三级视频一区二区三区|