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

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

?? ftwbrk.cpp

?? DragonRaja Client source version 1.4+ this source allow players join in (Hades Warfield or Monsters
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
				for (i = 1; i < rgWL[iWL-1]; i++)
				{
					w = GetWeight(vmOurDict,pchFst,pchFst+i,pchLim,0);
					if (w + i > wMaxSum)
					{
						rgWL[0] = i;
						iMax = 0;
						break;
					}
				}
			}
			else
			for (i = iWL-1; i>=0;i--)
			{
				w = GetWeight(vmOurDict,pchFst,pchFst+rgWL[i],pchLim,0);
				//
				// Store max weight
				//
				if ((w + rgWL[i] > wMaxSum) ||
					((w + rgWL[i] == wMaxSum) && (max(w,rgWL[i]) <= wMaxPri)))
				{
					//
					// if the weight is equal, choose the pair that have same len
					//
					wMaxSum = max(w,1) + rgWL[i];
					wMaxPri = max(w,rgWL[i]);
					wMaxSnd = wMaxSum - wMaxPri;
					iMax = i;
				}
			}
			
			iLoop = iMax;
			cch = rgWL[iLoop];
		}
#else
		if (iWL)
		{
			unsigned char *pchWordWalk;
			BOOL fTryLastChance = false;
			INT cchLastChance = 0;
			//
			//	Select the properly length.
			//	(longest and can break next word)
			//
			fCanBreakNext = false;
			for(iLoop = iWL-1; (iLoop >= 0 || fTryLastChance) && (!fCanBreakNext); iLoop--)
			{
				cch = 0;
				if (fTryLastChance)
				{
					iLoop = 0;	// iLoop must be 0 while we're in LastChance Loop
					//
					// No more chance?
					//
					if (cchLastChance == 0)
						break;
					//
					// Go ahead!
					//
					pchWordWalk = pchFst + cchLastChance;
				}
				else
				{
					pchWordWalk = pchFst + rgWL[iLoop];
				}
				pchDictWalk = vmOurDict;
				//pchWordWalkSav = NULL;
				if (!(*pchWordWalk))
				{
					fCanBreakNext = true;
					break;
				}
				fCharInfoNotMatch = false;
				while ((*pchWordWalk) && (!fCanBreakNext) && (!fCharInfoNotMatch))
				{
					//
					//	Can not break next word...
					//
					if (*pchDictWalk & ENDCHILD)
					{
							//
							// Without this it may be forever loop also.
							//
							if (fTryLastChance && cchLastChance > 0)
								cchLastChance--;
						break;
					}
					//
					// get next TCB node's address.
					//
					cbDiff.b.b2 = ((*(pchDictWalk++)) & 0x3F);
					cbDiff.b.b1 = *(pchDictWalk++);
					cbDiff.b.b0 = *(pchDictWalk++);

#ifdef	_DICTIONARY20_
					//
					// Not only 1 char?
					// 
					if (((nSubStrLen = vmOurDict[cbDiff.l]) < MAX_DICT_CTRL_CHAR) &&
						(vmOurDict[cbDiff.l+1] == *pchWordWalk))
					{
						++cbDiff.l;
						for (iSubLoop = 0; iSubLoop < nSubStrLen; iSubLoop++)
						{
							if (vmOurDict[cbDiff.l++] != *pchWordWalk)	// word not match
							{
								fCharInfoNotMatch = true;
								if (fTryLastChance && cchLastChance > 0)
									--cchLastChance;
								break;
							}
							else
							{
								cch++;
								pchWordWalk++;
								if (vmOurDict[cbDiff.l] < MAX_DICT_CTRL_CHAR)
								{
									if (vmOurDict[cbDiff.l] & SUBSTRENDWORD)
			 						{
										if (fTryLastChance)
										{
											if (rgWL[iWL-1] < cch || !*pchWordWalk)
											{
												//
												// Ok!!!! We got it!!!
												// Change the first item of WordLength
												// and assume it's correct break position
												//
												rgWL[0] = cchLastChance; 
												fCanBreakNext = true;
											}
										}
										else
											fCanBreakNext = true;
									}
									if (vmOurDict[cbDiff.l] & SUBSTRHAVECHILD)	// this means end of substr
									{											// next 3 byte will be 'Address'
										pchDictWalk = vmOurDict + cbDiff.l + 1;	// of next node.
										break;	//	goto LFTWBLoop1;
									}
									cbDiff.l++;
								}
							}
						}
					}
					else
#endif	//_DICTIONARY20_
					//
					//	Compare char
					//
					if ((chDict = vmOurDict[cbDiff.l]) < *pchWordWalk)
					{
					}
					else if (chDict == *pchWordWalk)
					{
						++cch;
						++pchWordWalk;
						//
						//	Can break word ?
						//
						if (vmOurDict[cbDiff.l+1] & ENDWORD)
						{
							if (fTryLastChance)
							{
								if (rgWL[iWL-1] < cch || !*pchWordWalk)
								{
									//
									// Ok!!!! We got it!!!
									// Change the first item of WordLength
									// and assume it's correct break position
									//
									rgWL[0] = cchLastChance; 
									fCanBreakNext = true;
								}
							}
							else
								fCanBreakNext = true;
						}
						//
						//	Move to first child node.
						//
						pchDictWalk = vmOurDict + cbDiff.l + 1;
						if (!*pchWordWalk && fTryLastChance && (cchLastChance > 0))
							cchLastChance--;
					}
					else // cbDict > *pchWord
					{
						//
						// If this is last chance to break the word that can also 
						// match the next word. (iLoop = 0) 
						// Than, Can we this card the first word for the next word that longer?
						// (If it is, ofcause) :)
						//
						if (iLoop == 0)
						{
							if (!fTryLastChance)
							{
								fTryLastChance = true;
								cchLastChance = rgWL[0]-1;
							}
							else
							if (cchLastChance > 0)
							{
								cchLastChance--;
							}
							else
							{
								// we tried.
								fTryLastChance = false;
							}
						}
						fCharInfoNotMatch  = true;
						break;
					}
				}//while
				if (fCanBreakNext)
					break;	// exit for loop;
			}
			//
			// Cannot break next word, then select longest length.
			//
			if (!fCanBreakNext)
				iLoop = iWL-1;
LCanBreakNext:
			cch = rgWL[iLoop];
		}
#endif	// dontuseweight
		else
		{
			cch = 1;
		}
		//
		// Store wordbreak position;
		//
		if (cch == 1)
		{
			if (HaveType(*pchFst,XT_THA) &&
				((pchFst + 1) < pchLim) &&
				(*(pchFst+1) != KARAN))
			{
				pchWordWalk = pchFst+1;
				while ((pchWordWalk < pchLim) && HaveType(*pchWordWalk,XT_ZWIDTH|XT_FVOW))
				{
					++pchWordWalk;
					++cch;
				}
			}
			else if((*pchFst == 0x0D) && 
					((pchFst + 1) < pchLim) && 
					(*(pchFst+1) == 0x0A))
			{
				cch = 2;
			}
		}
LStoreWordLen:
		if (((unsigned long)pchFst > (unsigned long)szText) &&		/* not a first char */
			fCanCat(*(pchFst-1),*pchFst,uFlags))
		{
			if (iBrk && rgbBrk[iBrk] == 0)
				rgbBrk[iBrk-1] += cch;
			else
				rgbBrk[iBrk] += cch;
		}
		else
		if (
		    ((unsigned long)pchFst > (unsigned long)szText) &&								/* not the first char */
			(XCharType(*(pchFst-1)) & XCharType(*pchFst)) &&	/* type can mearge */
			(
			 (
			  (cch == 1) &&
			  (!(HaveType(*pchFst,XT_WRDBEG))) &&
			  (!(HaveType(*pchFst,XT_LVOW) && ((pchFst + 1) < pchLim) && HaveType(*(pchFst+1),XT_THA)))
			 ) 
			 ||
			 (
			  (rgbBrk[iBrk] == 1) || 
			  (iBrk && (rgbBrk[iBrk] == 0) && (rgbBrk[iBrk-1] == 1))
			 )
			)
		   )
		{
			if (rgbBrk[iBrk])
				rgbBrk[iBrk] += cch;
			else
				rgbBrk[iBrk-1] += cch;
		}
		else
		{
			if (rgbBrk[iBrk])
				++iBrk;
			rgbBrk[iBrk] = cch;
		}

		pchFst += cch;
		pchWordWalk = pchFst;
		
		if (iBrk == nMaxBrk)
		{
			rgbBrk[iBrk] = 0;		// there are no room to store word break
			break;
		}
	}
	
	if (rgbBrk[iBrk])		// length of last word in given string
		iBrk++;
	rgbBrk[iBrk] = 0;		// close array

	return iBrk;
}

int ThaiBreakIterator::GetWeight(unsigned char* vmOurDict, unsigned char* szText,unsigned char* pchFst,unsigned char* pchLim, unsigned long dwFlags)
{
	unsigned char	*pchWordWalk;
	unsigned char	*pchDictWalk;
	bool	fTryLastChance = false, fCharInfoNotMatch = false;
	int	cchLastChance = 0;
	DIFFINDEX	cbDiff;
	unsigned char	chDict;
	int	weight = 0;
	int	nSubStrLen;
	int	cch = 0;
	//
	// End of string
	//
	if (!(*pchFst)) return 1000;	/* maximum weight */
	//
	// Initialize
	//
	pchWordWalk = pchFst;
	pchDictWalk = vmOurDict;
	cbDiff.l = 0;
	//	pchWordWalkSav = NULL;

	//
	// Loop thru end of string or get the longest len
	//
	while ( (*pchWordWalk) && 
			(pchWordWalk < pchLim) &&
			(!fCharInfoNotMatch))
	{
		*pchWordWalk;
		//
		//	Can not break next word...
		//
		if (*pchDictWalk & ENDCHILD)	/*  */
		{
			weight = cch;
			break;
		}

		//
		// get next node's address.
		//
		cbDiff.b.b2 = ((*(pchDictWalk++)) & 0x3F);
		cbDiff.b.b1 = *(pchDictWalk++);
		cbDiff.b.b0 = *(pchDictWalk++);

		//
		// Not only 1 char?
		// 
		if (((nSubStrLen = vmOurDict[cbDiff.l]) < MAX_DICT_CTRL_CHAR) &&
			(vmOurDict[cbDiff.l+1] == *pchWordWalk))
		{
			int iSubLoop;
			
			++cbDiff.l;
			
			for (iSubLoop = 0; iSubLoop < nSubStrLen; iSubLoop++)
			{
				if (vmOurDict[cbDiff.l++] != *pchWordWalk)	// word not match
				{
					fCharInfoNotMatch = true;
					break;
				}
				else
				{
					cch++;
					pchWordWalk++;
					if (vmOurDict[cbDiff.l] < MAX_DICT_CTRL_CHAR)
					{
						if (vmOurDict[cbDiff.l] & SUBSTRENDWORD)
							weight = cch;

						if (vmOurDict[cbDiff.l] & SUBSTRHAVECHILD)	// this means end of substr
						{											// next 3 byte will be 'Address'
							pchDictWalk = vmOurDict + cbDiff.l + 1;	// of next node.
							break;	//	goto LFTWBLoop1;
						}
						cbDiff.l++;
					}
				}
			}
		}
		else
		//
		//	Compare char
		//
		if ((chDict = vmOurDict[cbDiff.l]) < *pchWordWalk)
		{
		}
		else if (chDict == *pchWordWalk)
		{
			++cch;
			++pchWordWalk;
			//
			//	Can break word ?
			//
			if (vmOurDict[cbDiff.l+1] & ENDWORD)
				weight = cch;
			//
			//	Move to first child node.
			//
			pchDictWalk = vmOurDict + cbDiff.l + 1;
		}
		else // cbDict > *pchWord
		{
			fCharInfoNotMatch  = true;
			break;
		}
	}//while
	
	return (weight);
}

bool ThaiBreakIterator::fCanCat(unsigned char chPrev, unsigned char ch, unsigned int uFlags)
{
	//
	// If the prev char is a break char, that's it!
	// It's break pos, cannot cat any char to it.
	// (except breakchar)
	//
	/*if (FBreakChar(chPrev))
		return FBreakChar(ch); */
	//
	// Non stop?
	//
	if (FNonbreakChar(chPrev))
		return true;

	//
	// Mode independence case
	//
	if (HaveType(chPrev,XT_THA) && 
		HaveType(ch,XT_FVOW | XT_ZWIDTH))
		return true;

	if (ch == ' ')
		return true;
	else if (chPrev == ' ')
		return false;

	// N_Y_I

	//
	// Look at the mode or option of wordbreak proc
	//
	// SeparateSymbol :: mean symbol can't cat to anytype of
	// char except symbol type. Normally use this option for
	// caret movement.
	//
	if (uFlags & FTWB_SEPARATESYMBOL)
	{
		// Not symbol both
		if ((HaveType(chPrev,XT_ALLSYMBOL)?1:0) != (HaveType(ch,XT_ALLSYMBOL)?1:0))
			return false;

		return (
				(HaveType(chPrev,XT_LVOW) && HaveType(ch,XT_THA)) ||
				(HaveType(chPrev,XT_ALLSYMBOL) && HaveType(ch,XT_ALLSYMBOL)) ||
				(HaveType(chPrev,XT_ENG) && HaveType(ch,XT_ENG))
			   );
	}
	//
	// WordWrap :: use this option only for word wrapping. Such as when
	// user resize the windows.
	//
	else // if (uFlag & FTWB_WORDWRAP)
	{
		if (HaveType(ch,XT_WRDBEG) && !HaveType(chPrev,XT_WRDBEG))
			return false;

		return ( 
			HaveType(ch,XT_WRDEND | XT_SNTEND) ||
			HaveType(ch,XT_SNTEND) ||
			HaveType(chPrev,XT_WRDBEG) ||
			(HaveType(chPrev,XT_LVOW) && HaveType(ch,XT_THA)) ||
			(HaveType(chPrev,XT_PUNCT) && HaveType(ch,XT_ENG|XT_DIGIT)) ||
			HaveType(ch,XT_PUNCT)
			   );
	}
	//
	// default
	//
	return false;
}

bool ThaiBreakIterator::HaveType(char ch, unsigned long IsType)
{
#ifdef _DEBUG
	unsigned long uType = m_rgThaiCharTypeTable[(unsigned char)ch];
	bool bReturn = ((uType & IsType)?true:false);
	return bReturn;
#else
	return m_rgThaiCharTypeTable[(unsigned char)ch] & IsType;
#endif
}

unsigned long	ThaiBreakIterator::XCharType(char ch)
{
#ifdef _DEBUG
	unsigned long nReturn = m_rgThaiCharTypeTable[(unsigned char)ch];
	return nReturn;
#else
	return m_rgThaiCharTypeTable[(unsigned char)ch];
#endif
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩中文字幕一区| 亚洲电影一区二区三区| 日韩亚洲欧美成人一区| 欧美亚洲日本国产| 欧美午夜在线一二页| 色综合色综合色综合色综合色综合 | 亚洲精品综合在线| 国产精品入口麻豆原神| 亚洲欧美自拍偷拍色图| 亚洲色图欧洲色图| 亚洲成人综合视频| 麻豆国产欧美日韩综合精品二区| 蜜桃av一区二区三区电影| 精品亚洲aⅴ乱码一区二区三区| 国产在线精品免费| 成人美女在线观看| 欧美色男人天堂| 日韩精品一区二区三区蜜臀| 久久尤物电影视频在线观看| 国产午夜久久久久| 18成人在线视频| 亚洲制服欧美中文字幕中文字幕| 爽好多水快深点欧美视频| 国内精品免费**视频| 不卡的av在线播放| 欧美裸体一区二区三区| 久久这里只有精品视频网| 国产精品蜜臀av| 亚洲一区二区高清| 国产一区二区电影| 91亚洲国产成人精品一区二三| 欧美日韩视频一区二区| 久久久久久久久久久久久女国产乱| 国产精品乱码一区二三区小蝌蚪| 一区二区三区欧美日| 精品综合免费视频观看| fc2成人免费人成在线观看播放| 在线观看网站黄不卡| 欧美一级淫片007| 9191久久久久久久久久久| 久久在线观看免费| 五月婷婷久久综合| 99国产精品一区| 欧美成人一级视频| 亚洲视频在线一区观看| 国产麻豆一精品一av一免费 | 国产在线播放一区三区四| 99精品在线观看视频| 欧美大肚乱孕交hd孕妇| 亚洲免费高清视频在线| 韩国欧美一区二区| 91.com在线观看| 亚洲另类在线一区| 成人动漫一区二区在线| 精品对白一区国产伦| 亚洲午夜免费视频| 色综合一区二区三区| 精品国产乱码久久久久久闺蜜 | 精品免费日韩av| 三级久久三级久久久| 欧洲一区二区av| 综合久久给合久久狠狠狠97色| 国产在线视频一区二区三区| 欧美一区二区三区在线视频| 亚洲另类中文字| 成人精品视频.| 国产精品视频yy9299一区| 久久国产生活片100| 欧美一区二区三区精品| 手机精品视频在线观看| 欧美日韩高清在线播放| 亚洲综合色视频| 91久久久免费一区二区| 亚洲视频免费在线观看| 久久国产麻豆精品| 久久综合久久综合九色| 久久精品久久精品| 精品日产卡一卡二卡麻豆| 精品综合久久久久久8888| 精品精品欲导航| 国产精品影视在线| 久久精品一区二区三区四区| 国产精品18久久久久久vr| 91精品国产综合久久久蜜臀粉嫩 | 91精品国产丝袜白色高跟鞋| 亚洲成人免费在线观看| 一本大道久久a久久精二百| 一区二区成人在线视频| 蜜桃精品视频在线| 久久久国际精品| 96av麻豆蜜桃一区二区| 亚洲自拍都市欧美小说| 日本韩国欧美国产| 免费人成黄页网站在线一区二区| 久久天天做天天爱综合色| 国产白丝网站精品污在线入口| 国产精品伦一区二区三级视频| 欧美制服丝袜第一页| 日本美女视频一区二区| 日本一区二区在线不卡| 91毛片在线观看| 奇米亚洲午夜久久精品| 国产日产精品一区| 欧美日韩在线观看一区二区 | 亚洲精选视频免费看| 欧美猛男gaygay网站| 国产乱码精品一区二区三区av | 欧美色图天堂网| 激情五月激情综合网| 亚洲日本在线看| 欧美成人一区二区| 91麻豆国产香蕉久久精品| 男人的天堂亚洲一区| 国产精品久久久久久亚洲伦| 欧美亚洲综合久久| 精品一区二区三区免费播放| 1024精品合集| 欧美一区二区三区四区高清| 国模少妇一区二区三区| 一区二区三区高清在线| 久久夜色精品国产噜噜av| 在线视频一区二区三区| 热久久免费视频| 亚洲欧美国产高清| 久久综合网色—综合色88| 在线精品视频小说1| 韩国精品免费视频| 亚洲午夜精品网| 国产夜色精品一区二区av| 91黄视频在线| www..com久久爱| 国产精品一二三| 秋霞电影一区二区| 亚洲国产视频直播| 亚洲人午夜精品天堂一二香蕉| 日韩免费视频一区二区| 欧美疯狂做受xxxx富婆| 在线日韩av片| 色999日韩国产欧美一区二区| 国产999精品久久久久久| 韩国av一区二区三区| 美国毛片一区二区三区| 蜜臀精品一区二区三区在线观看| 亚洲午夜精品一区二区三区他趣| 亚洲精品欧美专区| 亚洲色图色小说| 一区二区三区自拍| 亚洲人一二三区| 欧美国产欧美综合| 国产蜜臀97一区二区三区| 国产亚洲一区二区三区在线观看| 精品免费视频.| 久久精品综合网| 中文字幕第一区综合| 中文字幕国产一区| 亚洲情趣在线观看| 夜夜嗨av一区二区三区四季av| 亚洲精品福利视频网站| 亚洲一区二区免费视频| 天天色天天操综合| 亚洲国产综合色| 国产精品少妇自拍| 亚洲综合免费观看高清完整版在线| 亚洲免费av观看| 亚洲国产aⅴ成人精品无吗| 爽爽淫人综合网网站| 激情欧美日韩一区二区| 从欧美一区二区三区| 93久久精品日日躁夜夜躁欧美| 91久久一区二区| 日韩三级视频在线看| 国产三级精品在线| 综合婷婷亚洲小说| 天堂影院一区二区| 国产一区二区免费在线| 成人99免费视频| 91精品免费在线观看| 久久精品无码一区二区三区| 亚洲免费在线观看| 日本特黄久久久高潮| 国产风韵犹存在线视精品| 日本道在线观看一区二区| 日韩一区二区三| 国产精品三级av在线播放| 亚洲一区二区精品3399| 日韩av电影免费观看高清完整版| 国产在线精品视频| 91理论电影在线观看| 日韩一区二区免费视频| 最新热久久免费视频| 日本欧美大码aⅴ在线播放| 成人午夜电影网站| 91精品国产综合久久久蜜臀图片 | 国产精品精品国产色婷婷| 一区二区三区中文字幕| 蜜桃av一区二区| 91成人国产精品| 26uuu另类欧美亚洲曰本| 亚洲女人小视频在线观看| 久国产精品韩国三级视频|