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

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

?? deelx.h

?? LINUX 設計一個簡單的二級文件系統
?? H
?? 第 1 頁 / 共 5 頁
字號:

	switch(m_ntype)
	{
	case BOUNDARY_FILE_BEGIN:
		bsucc = (npos <= 0);
		break;

	case BOUNDARY_FILE_END:
		bsucc = (npos >= tlen);
		break;

	case BOUNDARY_FILE_END_N:
		bsucc = (npos >= tlen) || (pcsz[tlen-1] == RCHART('\n') && (npos == tlen-1 || (pcsz[tlen-2] == RCHART('\r') && npos == tlen-2)));
		break;

	case BOUNDARY_LINE_BEGIN:
		bsucc = (npos <= 0   ) || (chL == RCHART('\n')) || ((chL == RCHART('\r')) && (chR != RCHART('\n')));
		break;

	case BOUNDARY_LINE_END:
		bsucc = (npos >= tlen) || (chR == RCHART('\r')) || ((chR == RCHART('\n')) && (chL != RCHART('\r')));
		break;

	case BOUNDARY_WORD_BEGIN:
		bsucc = ! IsWordChar(chL) &&   IsWordChar(chR);
		break;

	case BOUNDARY_WORD_END:
		bsucc =   IsWordChar(chL) && ! IsWordChar(chR);
		break;

	case BOUNDARY_WORD_EDGE:
		bsucc =   IsWordChar(chL) ?  ! IsWordChar(chR) : IsWordChar(chR);
		break;
	}

	return m_byes ? bsucc : ! bsucc;
}

template <class CHART> int CBoundaryElxT <CHART> :: MatchNext(CContext *) const
{
	return 0;
}

template <class CHART> inline int CBoundaryElxT <CHART> :: IsWordChar(CHART ch)
{
	return (ch >= RCHART('A') && ch <= RCHART('Z')) || (ch >= RCHART('a') && ch <= RCHART('z')) || (ch >= RCHART('0') && ch <= RCHART('9')) || (ch == RCHART('_'));
}

//
// Bracket
//
template <class CHART> class CBracketElxT : public ElxInterface  
{
public:
	int Match    (CContext * pContext) const;
	int MatchNext(CContext * pContext) const;

public:
	CBracketElxT(int nnumber, int bright);
	int CheckCaptureIndex(int & index, CContext * pContext) const;

public:
	int m_nnumber;
	int m_bright;

	CBufferT <CHART> m_szNamed;
};

template <class CHART> CBracketElxT <CHART> :: CBracketElxT(int nnumber, int bright)
{
	m_nnumber = nnumber;
	m_bright  = bright;
}

template <class CHART> inline int CBracketElxT <CHART> :: CheckCaptureIndex(int & index, CContext * pContext) const
{
	if( index >= pContext->m_capturestack.GetSize() )
		index  = pContext->m_capturestack.GetSize() - 4;

	while(index >= 0)
	{
		if(pContext->m_capturestack[index] == m_nnumber)
		{
			return 1;
		}

		index -= 4;
	}


	return 0;
}

//
// capturestack[index+0] => Group number
// capturestack[index+1] => Capture start pos
// capturestack[index+2] => Capture end pos
// capturestack[index+3] => Capture enclose z-index, zindex<0 means inner group with same name
//
template <class CHART> int CBracketElxT <CHART> :: Match(CContext * pContext) const
{
	// check, for named
	if(m_nnumber < 0) return 0;

	if( ! m_bright )
	{
		pContext->m_captureindex.Prepare(m_nnumber, -1);
		int index = pContext->m_captureindex[m_nnumber];

		// check
		if(CheckCaptureIndex(index, pContext) && pContext->m_capturestack[index+2] < 0)
		{
			pContext->m_capturestack[index+3] --;
			return 1;
		}

		// save
		pContext->m_captureindex[m_nnumber] = pContext->m_capturestack.GetSize();

		pContext->m_capturestack.Push(m_nnumber);
		pContext->m_capturestack.Push(pContext->m_nCurrentPos);
		pContext->m_capturestack.Push(-1);
		pContext->m_capturestack.Push( 0); // z-index
	}
	else
	{
		// check
		int index = pContext->m_captureindex[m_nnumber];

		if(CheckCaptureIndex(index, pContext))
		{
			if(pContext->m_capturestack[index + 3] < 0) // check inner group with same name
			{
				pContext->m_capturestack[index + 3] ++;
				return 1;
			}

			// save
			pContext->m_capturestack[index + 2] = pContext->m_nCurrentPos;
			pContext->m_capturestack[index + 3] = pContext->m_nParenZindex ++;
		}
	}

	return 1;
}

template <class CHART> int CBracketElxT <CHART> :: MatchNext(CContext * pContext) const
{
	int index = pContext->m_captureindex[m_nnumber];
	if( ! CheckCaptureIndex(index, pContext) )
	{
		return 0;
	}

	if( ! m_bright )
	{
		if(pContext->m_capturestack[index + 3] < 0)
		{
			pContext->m_capturestack[index + 3] ++;
			return 0;
		}

		pContext->m_capturestack.Restore(pContext->m_capturestack.GetSize() - 4);

		// to find
		CheckCaptureIndex(index, pContext);

		// new index
		pContext->m_captureindex[m_nnumber] = index;
	}
	else
	{
		if( pContext->m_capturestack[index + 2] >= 0 )
		{
			pContext->m_capturestack[index + 2] = -1;
			pContext->m_capturestack[index + 3] =  0;
		}
		else
		{
			pContext->m_capturestack[index + 3] --;
		}
	}

	return 0;
}

//
// Deletage
//
template <class CHART> class CDelegateElxT : public ElxInterface  
{
public:
	int Match    (CContext * pContext) const;
	int MatchNext(CContext * pContext) const;

public:
	CDelegateElxT(int ndata = 0);

public:
	ElxInterface * m_pelx;
	int m_ndata; // +0 : recursive to
	             // -3 : named recursive

	CBufferT <CHART> m_szNamed;
};

template <class CHART> CDelegateElxT <CHART> :: CDelegateElxT(int ndata)
{
	m_pelx  = 0;
	m_ndata = ndata;
}

template <class CHART> int CDelegateElxT <CHART> :: Match(CContext * pContext) const
{
	if(m_pelx != 0)
		return m_pelx->Match(pContext);
	else
		return 1;
}

template <class CHART> int CDelegateElxT <CHART> :: MatchNext(CContext * pContext) const
{
	if(m_pelx != 0)
		return m_pelx->MatchNext(pContext);
	else
		return 0;
}

//
// Empty
//
template <int x> class CEmptyElxT : public ElxInterface
{
public:
	int Match    (CContext * pContext) const;
	int MatchNext(CContext * pContext) const;

public:
	CEmptyElxT();
};

typedef CEmptyElxT <0> CEmptyElx;

//
// Global
//
template <int x> class CGlobalElxT : public ElxInterface
{
public:
	int Match    (CContext * pContext) const;
	int MatchNext(CContext * pContext) const;

public:
	CGlobalElxT();
};

typedef CGlobalElxT <0> CGlobalElx;

//
// Repeat
//
template <int x> class CRepeatElxT : public ElxInterface
{
public:
	int Match    (CContext * pContext) const;
	int MatchNext(CContext * pContext) const;

public:
	CRepeatElxT(ElxInterface * pelx, int ntimes);

protected:
	int MatchFixed    (CContext * pContext) const;
	int MatchNextFixed(CContext * pContext) const;

public:
	ElxInterface * m_pelx;
	int m_nfixed;
};

typedef CRepeatElxT <0> CRepeatElx;

//
// Greedy
//
template <int x> class CGreedyElxT : public CRepeatElxT <x>
{
public:
	int Match    (CContext * pContext) const;
	int MatchNext(CContext * pContext) const;

public:
	CGreedyElxT(ElxInterface * pelx, int nmin = 0, int nmax = INT_MAX);

protected:
	int MatchVart    (CContext * pContext) const;
	int MatchNextVart(CContext * pContext) const;

public:
	int m_nvart;
};

typedef CGreedyElxT <0> CGreedyElx;

//
// Independent
//
template <int x> class CIndependentElxT : public ElxInterface
{
public:
	int Match    (CContext * pContext) const;
	int MatchNext(CContext * pContext) const;

public:
	CIndependentElxT(ElxInterface * pelx);

public:
	ElxInterface * m_pelx;
};

typedef CIndependentElxT <0> CIndependentElx;

//
// List
//
template <int x> class CListElxT : public ElxInterface
{
public:
	int Match    (CContext * pContext) const;
	int MatchNext(CContext * pContext) const;

public:
	CListElxT(int brightleft);

public:
	CBufferT <ElxInterface *> m_elxlist;
	int m_brightleft;
};

typedef CListElxT <0> CListElx;

//
// Posix Elx
//
template <class CHART> class CPosixElxT : public ElxInterface
{
public:
	int Match    (CContext * pContext) const;
	int MatchNext(CContext * pContext) const;

public:
	CPosixElxT(const char * posix, int brightleft);

protected:
	static int m_isblank(int c);

public:
	int (*m_posixfun)(int);
	int m_brightleft;
	int m_byes;
};

//
// Implementation
//
template <class CHART> CPosixElxT <CHART> :: CPosixElxT(const char * posix, int brightleft)
{
	m_brightleft = brightleft;

	if(posix[1] == '^')
	{
		m_byes = 0;
		posix += 2;
	}
	else
	{
		m_byes = 1;
		posix += 1;
	}

	if     (!strncmp(posix, "alnum:", 6)) m_posixfun = ::isalnum ;
	else if(!strncmp(posix, "alpha:", 6)) m_posixfun = ::isalpha ;
	else if(!strncmp(posix, "ascii:", 6)) m_posixfun = ::isascii ;
	else if(!strncmp(posix, "cntrl:", 6)) m_posixfun = ::iscntrl ;
	else if(!strncmp(posix, "digit:", 6)) m_posixfun = ::isdigit ;
	else if(!strncmp(posix, "graph:", 6)) m_posixfun = ::isgraph ;
	else if(!strncmp(posix, "lower:", 6)) m_posixfun = ::islower ;
	else if(!strncmp(posix, "print:", 6)) m_posixfun = ::isprint ;
	else if(!strncmp(posix, "punct:", 6)) m_posixfun = ::ispunct ;
	else if(!strncmp(posix, "space:", 6)) m_posixfun = ::isspace ;
	else if(!strncmp(posix, "upper:", 6)) m_posixfun = ::isupper ;
	else if(!strncmp(posix, "xdigit:",7)) m_posixfun = ::isxdigit;
	else if(!strncmp(posix, "blank:", 6)) m_posixfun = m_isblank ;
	else                                  m_posixfun = 0         ;
}

template <class CHART> int CPosixElxT <CHART> :: m_isblank(int c)
{
	return c == 0x20 || c == '\t';
}

template <class CHART> int CPosixElxT <CHART> :: Match(CContext * pContext) const
{
	if(m_posixfun == 0) return 0;

	int tlen = pContext->m_pMatchStringLength;
	int npos = pContext->m_nCurrentPos;

	// check
	int at   = m_brightleft ? npos - 1 : npos;
	if( at < 0 || at >= tlen )
		return 0;

	CHART ch = ((const CHART *)pContext->m_pMatchString)[at];

	int bsucc = (*m_posixfun)(ch);

	if( ! m_byes )
		bsucc = ! bsucc;

	if( bsucc )
		pContext->m_nCurrentPos += m_brightleft ? -1 : 1;

	return bsucc;
}

template <class CHART> int CPosixElxT <CHART> :: MatchNext(CContext * pContext) const
{
	pContext->m_nCurrentPos -= m_brightleft ? -1 : 1;
	return 0;
}

//
// Possessive
//
template <int x> class CPossessiveElxT : public CGreedyElxT <x>
{
public:
	int Match    (CContext * pContext) const;
	int MatchNext(CContext * pContext) const;

public:
	CPossessiveElxT(ElxInterface * pelx, int nmin = 0, int nmax = INT_MAX);
};

typedef CPossessiveElxT <0> CPossessiveElx;

//
// Range Elx
//
template <class CHART> class CRangeElxT : public ElxInterface
{
public:
	int Match    (CContext * pContext) const;
	int MatchNext(CContext * pContext) const;

public:
	CRangeElxT(int brightleft, int byes);

public:
	int IsContainChar(CHART ch) const;

public:
	CBufferT <CHART> m_ranges;
	CBufferT <CHART> m_chars;
	CBufferT <ElxInterface *> m_embeds;

public:
	int m_brightleft;
	int m_byes;
};

//
// Implementation
//
template <class CHART> CRangeElxT <CHART> :: CRangeElxT(int brightleft, int byes)
{
	m_brightleft = brightleft;
	m_byes       = byes;
}

template <class CHART> int CRangeElxT <CHART> :: Match(CContext * pContext) const
{
	int tlen = pContext->m_pMatchStringLength;
	int npos = pContext->m_nCurrentPos;

	// check
	int at   = m_brightleft ? npos - 1 : npos;
	if( at < 0 || at >= tlen )
		return 0;

	CHART ch = ((const CHART *)pContext->m_pMatchString)[at];
	int bsucc = 0, i;

	// compare
	for(i=0; !bsucc && i<m_ranges.GetSize(); i+=2)
	{
		if(m_ranges[i] <= ch && ch <= m_ranges[i+1]) bsucc = 1;
	}

	for(i=0; !bsucc && i<m_chars.GetSize(); i++)
	{
		if(m_chars[i] == ch) bsucc = 1;
	}

	for(i=0; !bsucc && i<m_embeds.GetSize(); i++)
	{
		if(m_embeds[i]->Match(pContext))
		{
			pContext->m_nCurrentPos = npos;
			bsucc = 1;
		}
	}

	if( ! m_byes )
		bsucc = ! bsucc;

	if( bsucc )
		pContext->m_nCurrentPos += m_brightleft ? -1 : 1;

	return bsucc;
}

template <class CHART> int CRangeElxT <CHART> :: IsContainChar(CHART ch) const
{
	int bsucc = 0, i;

	// compare
	for(i=0; !bsucc && i<m_ranges.GetSize(); i+=2)
	{
		if(m_ranges[i] <= ch && ch <= m_ranges[i+1]) bsucc = 1;
	}

	for(i=0; !bsucc && i<m_chars.GetSize(); i++)
	{
		if(m_chars[i] == ch) bsucc = 1;
	}

	return bsucc;
}

template <class CHART> int CRangeElxT <CHART> :: MatchNext(CContext * pContext) const
{
	pContext->m_nCurrentPos -= m_brightleft ? -1 : 1;
	return 0;
}

//
// Reluctant
//
template <int x> class CReluctantElxT : public CRepeatElxT <x>
{
public:
	int Match    (CContext * pContext) const;
	int MatchNext(CContext * pContext) const;

public:
	CReluctantElxT(ElxInterface * pelx, int nmin = 0, int nmax = INT_MAX);

protected:
	int MatchVart    (CContext * pContext) const;
	int MatchNextVart(CContext * pContext) const;

public:
	int m_nvart;
};

typedef CReluctantElxT <0> CReluctantElx;

//
// String Elx
//
template <class CHART> class CStringElxT : public ElxInterface
{
public:
	int Match    (CContext * pContext) const;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天操天天色综合| 中文字幕一区二区在线播放| 国产精品一区二区无线| 亚洲欧洲一区二区三区| 91精品国产综合久久久久久漫画 | 国产v综合v亚洲欧| 亚洲小少妇裸体bbw| 国产精品私人自拍| 欧美一级专区免费大片| 99国产欧美另类久久久精品| 激情深爱一区二区| 午夜电影网一区| 久久久三级国产网站| 欧美福利视频一区| 91女厕偷拍女厕偷拍高清| 国内外成人在线| 日韩电影在线一区二区| 亚洲精品老司机| 国产欧美一区二区精品秋霞影院| 91精品国产色综合久久ai换脸| 色丁香久综合在线久综合在线观看| 国产最新精品精品你懂的| 五月天婷婷综合| 一区二区在线观看视频| 国产精品美女久久久久久久久久久 | 一区二区三区在线播放| 国产亚洲婷婷免费| 欧美大片在线观看| 欧美精选一区二区| 欧美丝袜丝交足nylons图片| 97久久精品人人做人人爽50路 | 欧美精品99久久久**| 一本一道久久a久久精品综合蜜臀| 国产丶欧美丶日本不卡视频| 另类小说视频一区二区| 日韩电影在线免费观看| 婷婷夜色潮精品综合在线| 亚洲精品成人悠悠色影视| 中文字幕在线免费不卡| 国产精品素人视频| 中文字幕一区二区视频| 国产精品国产精品国产专区不片| 日本一区二区三区dvd视频在线| 亚洲风情在线资源站| 亚洲免费成人av| 一区二区三区国产豹纹内裤在线| 亚洲精品欧美激情| 亚洲国产精品影院| 亚洲第四色夜色| 青青草国产精品亚洲专区无| 日本欧美加勒比视频| 日韩黄色片在线观看| 美女www一区二区| 久久 天天综合| 国产成人精品免费| 99久久婷婷国产精品综合| 97久久精品人人澡人人爽| 色综合久久中文综合久久牛| 91国产视频在线观看| 欧美日韩高清影院| 日韩欧美成人激情| 久久久久久久久久久99999| 中文乱码免费一区二区| 中文字幕一区二区三区乱码在线 | 激情丁香综合五月| 国产毛片精品国产一区二区三区| 成人性生交大合| 色婷婷久久综合| 欧美一区二区成人| 国产日韩欧美一区二区三区乱码| 亚洲特级片在线| 午夜激情综合网| 国产美女精品在线| 91麻豆精品一区二区三区| 欧美性做爰猛烈叫床潮| 日韩精品一区在线| 国产精品美女久久久久久| 夜夜精品视频一区二区| 麻豆一区二区99久久久久| 国产91丝袜在线观看| 国产精品不卡一区二区三区| 亚洲午夜免费福利视频| 精品一区二区av| 91美女蜜桃在线| 精品国产一二三| 一区二区三区中文字幕| 蓝色福利精品导航| 色综合一个色综合亚洲| 欧美一级欧美一级在线播放| 国产精品美女久久久久久久 | 亚洲欧美日韩一区二区 | 欧美成人综合网站| 一色屋精品亚洲香蕉网站| 青青草成人在线观看| av电影天堂一区二区在线| 制服丝袜中文字幕一区| 国产日产欧美一区二区视频| 亚洲一区二区av在线| 国产综合色在线视频区| 欧美三级韩国三级日本一级| 日本一区二区动态图| 日本美女视频一区二区| 91看片淫黄大片一级| 日韩精品一区二| 亚洲综合成人在线| 成人丝袜视频网| 欧美草草影院在线视频| 午夜久久久久久久久| 99久久精品情趣| 久久久99免费| 美女视频第一区二区三区免费观看网站| 99久久综合色| 国产三级欧美三级| 韩国欧美国产1区| 日韩欧美一区中文| 亚洲国产日韩在线一区模特| 97久久精品人人做人人爽| 中文文精品字幕一区二区| 国产一区二区在线看| 欧美一级艳片视频免费观看| 亚洲一线二线三线视频| 91蜜桃免费观看视频| 国产精品激情偷乱一区二区∴| 国产精品一级片| 精品国产精品网麻豆系列| 日韩不卡免费视频| 欧美美女视频在线观看| 亚洲午夜精品17c| 在线亚洲+欧美+日本专区| 亚洲图片你懂的| 91在线无精精品入口| 国产精品美女久久久久高潮| 精品一区二区三区影院在线午夜 | 成人欧美一区二区三区小说| 蜜桃视频在线观看一区二区| 色婷婷综合久久| 日本一区二区免费在线| 麻豆极品一区二区三区| 欧美探花视频资源| 亚洲欧洲综合另类| 成人激情文学综合网| 26uuu亚洲| 国产资源精品在线观看| 91精品国产综合久久福利 | 国产精品九色蝌蚪自拍| 九九在线精品视频| 91精品国产一区二区三区蜜臀| 有坂深雪av一区二区精品| 欧美精品一区二区三区高清aⅴ | 久久精品99国产精品日本| 制服视频三区第一页精品| 亚洲成人精品在线观看| 在线观看成人小视频| 午夜av电影一区| 51精品秘密在线观看| 午夜精品久久一牛影视| 欧美日韩免费高清一区色橹橹| 17c精品麻豆一区二区免费| 欧美伊人久久久久久久久影院| 一区二区视频在线| 91免费国产视频网站| 亚洲精选视频免费看| 97成人超碰视| 日韩激情一区二区| 日韩视频中午一区| 狠狠v欧美v日韩v亚洲ⅴ| 欧美一二三区精品| 成人开心网精品视频| 亚洲欧洲日产国产综合网| av综合在线播放| 亚洲欧美日韩系列| 欧美一区二区三区爱爱| 激情久久五月天| 国产喷白浆一区二区三区| 成人免费黄色在线| 亚洲福利国产精品| 日韩精品一区二区三区在线播放| 精品一区二区三区不卡 | 7777精品伊人久久久大香线蕉超级流畅| 亚洲综合成人在线视频| 欧美一区二区观看视频| 国产精品自在在线| 国产精品国产自产拍高清av | 成人性色生活片| 中文字幕色av一区二区三区| 欧美性videosxxxxx| 免费成人性网站| 久久久久99精品国产片| av一区二区久久| 捆绑紧缚一区二区三区视频| 亚洲国产精品精华液ab| 色婷婷亚洲精品| 麻豆精品久久久| 亚洲国产精品久久久久秋霞影院| 日韩三级伦理片妻子的秘密按摩| 国产成人在线影院| 亚洲高清在线视频| 亚洲日本在线天堂| 日韩欧美在线影院| 国产91精品入口|