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

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

?? regularopt.cpp

?? 我的簡易編譯器終于在花了近20個工作日后完成了。按照設計是做成一個FormulaEx.dll
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// RegularOpt.cpp: implementation of the CRegularOpt class.
//
//////////////////////////////////////////////////////////////////////
/*
 * Generated by MyEclipse Struts
 * 
 * written by Yang Huaisheng 
 * Homepage: http://codefan.spaces.live.com
 * version 0.01
 * create at 2008-04-30
 * 
 *  Distribute freely, except: don't remove my name from the source or
 *  documentation (don't take credit for my work), mark your changes (don't
 *  get me blamed for your possible bugs), don't alter or remove this
 *  notice.
 *  No warrantee of any kind, express or implied, is included with this
 *  software; use at your own risk, responsibility for damages (if any) to
 *  anyone resulting from the use of this software rests entirely with the
 *  user.
 * 
 *  Send bug reports, bug fixes, enhancements, requests, flames, etc. to
 *     codefan@hotmial.com
 *  
 */
#include "stdafx.h"
#include "RegularOpt.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CString CRegularOpt::RectToString(const CRect & rect,bool isRelRow,bool isRelCol)
{
	CString str;//("");
	if (isRelRow || isRelCol){
		CString sLeft,sTop;
		if (isRelCol) sLeft="-"; else sLeft.Format("%d",rect.left);
		if (isRelRow) sTop="-"; else sTop.Format("%d",rect.top);
		str.Format("%s,%s,%d,%d",sLeft,sTop,rect.Width(),rect.Height());	
	}else
		str.Format("%d,%d,%d,%d",rect.left,rect.top,rect.Width(),rect.Height());
	return str;
}
CRect CRegularOpt::RectFrom( LPCTSTR szRect)
{
	if(szRect == NULL) return CRect(0,0,0,0);
	CRect  rect ;
	int sl = strlen(szRect);
	char * szCopy = new char[sl+2];
	CopyMemory(szCopy , szRect,sl);
	szCopy[sl] = szCopy[sl+1] = 0;
	char * szP = szCopy;
	char * szT = szCopy;
	char * szE =  szCopy + sl; 

	while(szT < szE && (*szT != ',') ) szT++;
	(*szT) = 0; szT++;
	rect.left = atoi(szP);
	szP = szT;

	while(szT < szE && (*szT != ',') ) szT++;
	(*szT) = 0; szT++;
	rect.top = atoi(szP);
	szP = szT; szT++;

	while(szT < szE && (*szT != ',') ) szT++;
	(*szT) = 0; szT++;
	rect.right = rect.left + atoi(szP);

	rect.bottom = rect.top + atoi(szT);

	delete [] szCopy;
	return rect;
}

CString CRegularOpt::XectToString(const CRect & rect)
{
	CString str;//("");
	str.Format("%d,%d,%d,%d",rect.left,rect.top,rect.right,rect.bottom);
	return str;
}

CRect CRegularOpt::XectFrom(LPCTSTR szRect)
{
	if(szRect == NULL) return CRect(0,0,0,0);
	CRect  rect ;
	int sl = strlen(szRect);
	char * szCopy = new char[sl+2];
	CopyMemory(szCopy , szRect,sl);
	szCopy[sl] = szCopy[sl+1] = 0;
	char * szP = szCopy;
	char * szT = szCopy;
	char * szE =  szCopy + sl; 

	while(szT < szE && (*szT != ',') ) szT++;
	(*szT) = 0; szT++;
	rect.left = atoi(szP);
	szP = szT;

	while(szT < szE && (*szT != ',') ) szT++;
	(*szT) = 0; szT++;
	rect.top = atoi(szP);
	szP = szT; szT++;

	while(szT < szE && (*szT != ',') ) szT++;
	(*szT) = 0; szT++;
	rect.right = atoi(szP);

	rect.bottom = atoi(szT);

	delete [] szCopy;
	return rect;
}

CString CRegularOpt::SizeToString(const CSize & size)
{
	CString str;
	str.Format("%d,%d",size.cx,size.cy);
	return str;
}

CSize CRegularOpt::SizeFrom(  LPCTSTR szSize)
{
	if(szSize == NULL) return CSize(0,0);
	CSize  size;
	int sl = strlen(szSize);
	char * szCopy = new char[sl+2];
	CopyMemory(szCopy , szSize,sl);
	szCopy[sl] = szCopy[sl+1] = 0;
	char * szT = szCopy;
	char * szE =  szCopy + sl; 

	while(szT < szE && (*szT != ',') ) szT++;
	(*szT) = 0; szT++;
	size.cx = atoi(szCopy);
	size.cy = atoi(szT);
	delete []szCopy;
	return size;
}
CString  CRegularOpt::PointToString(const CPoint & point)
{
	CString str;
	str.Format("%d,%d",point.x,point.y);
	return str;
}
CPoint   CRegularOpt::PointFrom(LPCTSTR szPoint)
{
	CSize size = SizeFrom(szPoint);
	return CPoint(size);
}

CString CRegularOpt::ColorToString(COLORREF colorref)
{
	CString str;
	str.Format("#%x",colorref);
	return str;
}

COLORREF CRegularOpt::ColorFrom(LPCTSTR szColor)
{
	CString str(szColor);
	DWORD colorref = 0;
	str.MakeLower();
	int n = str.Find('#')+1;
	int sl = str.GetLength();
	if(sl>7) sl = 7;
	int d;
	for(;n<sl;n++){
		if(str[n] >= '0' && str[n] <='9') d = int(str[n] -'0');
		else if(str[n] >= 'a' && str[n] <='f') d = int(str[n] -'a') + 10;
		else d = 0;
		colorref = colorref * 16 + d;
	}
	return colorref;
}

CString CRegularOpt::AlignToString(BYTE align)
{
	CString str;
	BYTE halign = align & 0x0F;
	switch(halign){
	case CT_ALIGN_RIGHT:
		str = "right";
		break;
	case CT_ALIGN_CENTER:
		str = "center";
		break;
	case CT_ALIGN_FILL:
		str = "fill";
		break;
	default :
		str = "left";
		break;
	}
	BYTE valign = (align & 0xF0) >> 4;
	switch(valign){
	case CT_ALIGN_BOTTOM:
		str += " bottom";
		break;
	case CT_ALIGN_CENTER:
		str += " center";
		break;
	case CT_ALIGN_FILL:
		str += " fill";
		break;
	default :
		str += " top";
		break;
	}
	return str;
}
BYTE	CRegularOpt::AlignFrom(LPCTSTR szAlign)
{
	CString str(szAlign);
	str.MakeLower();
	str.TrimLeft();
	str.TrimRight();
	int n = str.Find(' ');
	if( n == -1){
		if(str.Compare("right") == 0) return CT_ALIGN_RIGHT;
		if(str.Compare("center") == 0) return CT_ALIGN_CENTER;
		if(str.Compare("fill") == 0) return CT_ALIGN_FILL;
		return CT_ALIGN_LEFT;
	}
	BYTE align = 0;
	CString str1 = str.Mid(0,n);
	if(str1.Compare("right") == 0) align = CT_ALIGN_RIGHT;
	else if(str1.Compare("center") == 0) align = CT_ALIGN_CENTER;
	else if(str1.Compare("fill") == 0) align = CT_ALIGN_FILL;
	else if(str1.Compare("bottom") == 0) align = CT_ALIGN_BOTTOM << 4;

	str1 = str.Mid(n);
	str1.TrimLeft();

	if(str1.Compare("right") == 0) align =  (align & 0xF0) | CT_ALIGN_RIGHT;
	else if(str1.Compare("center") == 0) align = (align & 0x0F) | (CT_ALIGN_CENTER << 4);
	else if(str1.Compare("fill") == 0) align = (align & 0x0F) | (CT_ALIGN_FILL << 4);
	else if(str1.Compare("bottom") == 0) align = (align & 0x0F) | (CT_ALIGN_BOTTOM << 4); 

	return align;

}
#if 0
CString CRegularOpt::VariantToString(_variant_t tvalue)
{
	CString res;
	switch(tvalue.vt){
	case VT_I2:
		res.Format("%d",tvalue.iVal);
		break;
	case VT_I4:
		res.Format("%d",tvalue.intVal);
		break;
	case VT_I1:
	case VT_UI1:
		res.Format("%c",tvalue.cVal);
		break;
	case VT_R4:
		res.Format("%f",tvalue.fltVal);
		break;
	case VT_DATE: // date
		{
			COleDateTime  otime(tvalue);
			res = otime.Format();
		}
		break;
	case VT_R8:
		res.Format("%f",tvalue.dblVal);
		break;
	case VT_UI2:
	case VT_UI4:
		res.Format("%d",tvalue.uiVal);
		break;
	case VT_INT:
		res.Format("%d ",tvalue.intVal);
		break;
	case VT_DECIMAL:
	case VT_I8:
	case VT_CY:
		res.Format("%I64 ",tvalue.intVal);
		break;
	case VT_UI8:
		res.Format("%I64 ",tvalue.uintVal);
		break;
	case VT_UINT:
		res.Format("%d ",tvalue.uintVal);
		break;

	case VT_LPWSTR:
	case VT_LPSTR:
	case VT_BSTR:
		res = LPCTSTR(tvalue.bstrVal);
		break;
	case VT_BOOL:
		res = (tvalue.boolVal)?"true":"false";
		break;
	default :
		res = "";
	}
	return res;
}
CString CRegularOpt::VariantToString(_variant_t tvalue)
{
	return CString((LPCTSTR)(_bstr_t)tvalue);
}
//#else
#endif

bool CRegularOpt::InnerMatch(LPCTSTR szValue , LPCTSTR szTempl)
{
	int nLV = strlen(szValue);
	int nLT = strlen(szTempl);
	if(nLV == 0){
		for(int i=0;i<nLT;i++)
			if(szTempl[i]!='*')
				return  false;
		return true;
	}
	int i(0),j(0);
	while(i<nLV && j<nLT){
		if( (szTempl[j] != '*' && szValue[i] == szTempl[j]) ||
			szTempl[j] == '?'){
			i++;j++;
		}else if(szTempl[j] == '*'){
			if(szTempl[j+1] == '*'){
				if (szValue[i] == '*'){
					i++; j+=2;
				}else return false;
			} else {
				j++;
				while(j<nLT && (szTempl[j]=='?' )){
					j++;
					i++;
				}
				int nStart = j;
				if(nStart == nLT) return true;
				while(j<nLT && szTempl[j]!='?' && szTempl[j]!='*') j++;
				int nSubStr = j-nStart;

				for(int k=i;k<=nLV-nSubStr;k++){
					bool bMatchSub = true;
					for(int l=nStart;l<j;l++)
						if(szValue[k+l-nStart] != szTempl[l]){
							bMatchSub = false;
							break;
						}
					if(bMatchSub && InnerMatch(szValue+k+nSubStr ,szTempl+j)) return true;
				}
				return false;
			}
		}else
			return false;
	}
	return (i==nLV && j==nLT);
}

bool CRegularOpt::IsMatch(LPCTSTR szValue , LPCTSTR szTempl)
{// ?_  *% 是通配符
	if( szValue == szTempl) return true;
	if( szValue == NULL || szTempl == NULL) return false;
	int nLV = strlen(szValue);
	int nLT = strlen(szTempl);
	if(nLV == 0 && nLT == 0) return true;

	char * lpszValue = new char[nLV+1];
	char * lpszTempl = new char[nLT+1];
	if((nLV>=2) && ( (szValue[0] == '"' && szValue[nLV-1] == '"' ) ||
					 (szValue[0] == '\'' && szValue[nLV-1] == '\'' ))
		){
			if(nLV>2)
				CopyMemory(lpszValue,szValue+1,nLV-2);
			lpszValue[nLV-2] = 0;
	}else{
		CopyMemory(lpszValue,szValue,nLV);
		lpszValue[nLV] = 0;
	}

	if((nLT>=2) && ( (szTempl[0] == '"' && szTempl[nLT-1] == '"' ) ||
					 (szTempl[0] == '\'' && szTempl[nLT-1] == '\'' ) )
		){
			if(nLT>2)
				CopyMemory(lpszTempl,szTempl+1,nLT-2);
			lpszTempl[nLT-2] = 0;
	}else{
		CopyMemory(lpszTempl,szTempl,nLT);
		lpszTempl[nLT] = 0;
	}

	bool bMatch = InnerMatch(lpszValue,lpszTempl);
	delete [] lpszValue;
	delete [] lpszTempl;
	return bMatch;		
}

bool CRegularOpt::IsNumber(LPCTSTR szNum , int &s,int &d)
{
	s=0;d=0;
	int sl = strlen(szNum);
	if (sl<1) return false;
	int sp=0;
	while(sp<sl && (szNum[sp]==' ' ||  szNum[sp]== 9)) sp++;
	if(szNum[sp]=='-' || szNum[sp]=='+') sp++;
	if( sp==sl || (sp+1==sl && szNum[sp]=='.')) return false;//
	while(sp<sl){
		if(szNum[sp]>='0' &&  szNum[sp]<= '9'){
			sp++;s++;
			continue;
		}
		if(szNum[sp] == '.') {
			sp++;
			break;
		}
		return false;
	}

	if ((sp==sl) && (sl>1) && (szNum[sp]!='.') && (szNum[0]=='0')) return false;;

	while(sp<sl){
		if(szNum[sp]>='0' &&  szNum[sp]<= '9'){
			sp++;d++;
		}else
			return false;
	}	
	return true;
}
bool CRegularOpt::IsNumber(LPCTSTR szNum )
{
	int s =0, d=0;
	return IsNumber(szNum,s,d);
}

bool CRegularOpt::IsNumberArray(LPCTSTR szNumArray,char splitChar)
{
	CStringList ssRes;
	int nSL = SplitString(szNumArray,  ssRes,splitChar);
	if(nSL<1) return false;
	POSITION pPos = ssRes.GetHeadPosition();
	while(pPos != NULL) {
		if(! IsNumber(ssRes.GetNext(pPos)) ) 
			return false;
	}
	return true;
}

bool CRegularOpt::IsTrue(LPCTSTR szCondition )
{
	if(_stricmp(szCondition,"true")==0) return true;
	if(! IsNumber(szCondition)) return false;
	int bRes = int( atof(szCondition));
	return bRes!=0;
}

char CRegularOpt::GetNumbtye(LPCTSTR szNum , int nBit)
{
	int sl = strlen(szNum);
	int nPos = 0;
	while(nPos<sl && szNum[nPos] != '.' ) nPos ++ ;
	if(nBit<0)
		nPos = nPos - nBit;
	else
		nPos = nPos - nBit - 1;
	if( nPos < 0 || nPos >= sl) return '0';
	return szNum[nPos];
}

bool CRegularOpt::IsIp(LPCTSTR szIp)
{
	int sl = strlen(szIp);
	int sp=0;
	char c[4];
	while(sp<sl && (szIp[sp]==' ' ||  szIp[sp]== 9)) sp++;
	for(int i=0; i<4; i++){
		int s=0;
		while(sp<sl ){
			if(szIp[sp]>='0' &&  szIp[sp]<= '9'){
				if(s<3) c[s] = szIp[sp];
				sp++;s++;
				continue;
			}
			if(szIp[sp] == '.'){ 
				sp++;
				break;
			}
			else 
				return false;
		}
		if(s>3) return false;
		c[s]=0;
		int n = atoi(c);
		if(n>255) return false;
	}
	return true;
}


bool CRegularOpt::IsDatetime(LPCTSTR szTime ,CTime & t_time)
{
	int sl = strlen(szTime);
	int sp=0;
	int s=0;
	char c[5];
	int y,m,d,h,min,sec;
	while(sp<sl && (szTime[sp]==' ' ||  szTime[sp]== 9)) sp++;
	while(sp<sl ){
		if(szTime[sp]>='0' &&  szTime[sp]<= '9'){
			if(s<4) c[s] = szTime[sp];
			sp++;s++;
			continue;
		}
		//if(szTime[sp] == '-') 
			sp++; 
		break;
	}//check year
	c[4]=0;
	y = atoi(c);
	if(y < 1970 || y>2038) return false;
	s=0;
	while(sp<sl ){
		if(szTime[sp]>='0' &&  szTime[sp]<= '9'){
			if(s<2) c[s] = szTime[sp];
			sp++;s++;
			continue;
		}
		//if(szTime[sp] == '-') 
		sp++; 
		break;
	}//check month
	if(s > 2) return false;
	c[s]=0;
	m = atoi(c);
	if(m<1 || m >12) return false;
	s=0;
	while(sp<sl ){
		if(szTime[sp]>='0' &&  szTime[sp]<= '9'){
			if(s<2) c[s] = szTime[sp];
			sp++;s++;
			continue;
		}
		//if(szTime[sp] == '-') 
			sp++; 
		break;
	}//check day
	if(s > 2) return false;
	c[s]=0;
	d = atoi(c);
	if(d<1 || d >31) return false;
	while(sp<sl && (szTime[sp]==' ' ||  szTime[sp]== 9)) sp++;

	s=0;
	while(sp<sl ){
		if(szTime[sp]>='0' &&  szTime[sp]<= '9'){
			if(s<2) c[s] = szTime[sp];
			sp++;s++;
			continue;
		}
		//if(szTime[sp] == ':') 
			sp++; 
		break;
	}//check hour
	if(s > 2) return false;
	c[s]=0;
	h = atoi(c);
	if(h<0 || h >24) return false;
	s=0;
	while(sp<sl ){
		if(szTime[sp]>='0' &&  szTime[sp]<= '9'){
			if(s<2) c[s] = szTime[sp];
			sp++;s++;
			continue;
		}
		//if(szTime[sp] == ':') 
			sp++; 
		break;
	}//check minute
	if(s > 2) return false;
	c[s]=0;
	min = atoi(c);
	if(min<0 || min >60) return false;
	s=0;
	while(sp<sl ){
		if(szTime[sp]>='0' &&  szTime[sp]<= '9'){
			if(s<2) c[s] = szTime[sp];
			sp++;s++;
			continue;
		}
		break;
	}//check second
	if(s > 2) return false;
	c[s]=0;
	sec = atoi(c);
	if(sec<0 || sec >60) return false;

	t_time = CTime(y,m,d,h,min,sec,-1);	
	return true;
}
CString CRegularOpt::TrimDateString(LPCTSTR szDateStr)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线精品免费| 日韩欧美一二三区| 国产一区二区三区| 99热在这里有精品免费| 国产成人av影院| 国产精品1024| 91麻豆精品国产| 26uuu亚洲综合色| 久久久国产精华| 亚洲色大成网站www久久九九| 综合欧美亚洲日本| 激情六月婷婷久久| 91在线免费视频观看| 欧美一区二区在线不卡| 国产清纯白嫩初高生在线观看91 | 欧美国产国产综合| 18欧美亚洲精品| 日韩欧美123| 国产精品视频免费看| 国产婷婷一区二区| 白白色 亚洲乱淫| 欧美一级黄色片| 亚洲国产精品激情在线观看| 麻豆精品一区二区综合av| 黑人巨大精品欧美一区| 在线成人av网站| 久久精品男人天堂av| 琪琪久久久久日韩精品| 成人手机电影网| 96av麻豆蜜桃一区二区| 欧美国产激情一区二区三区蜜月| 捆绑调教一区二区三区| 91浏览器打开| 欧美成人伊人久久综合网| 中文字幕第一区二区| 国产高清精品久久久久| 精品区一区二区| 久久99精品国产91久久来源| 91麻豆视频网站| 亚洲精品午夜久久久| 久久国产免费看| 日韩精品一区国产麻豆| 久久99国产精品免费网站| 欧美一区二区成人| 老司机精品视频线观看86| 欧美大片在线观看| 国产在线播精品第三| 欧美激情在线一区二区三区| 99久久精品国产毛片| 亚洲品质自拍视频| 国产精品1区2区3区在线观看| 欧美日韩一区在线观看| 欧美激情在线看| 色香色香欲天天天影视综合网| 精品少妇一区二区三区| 懂色一区二区三区免费观看| 精品国产乱码久久久久久夜甘婷婷 | 亚洲国产精品99久久久久久久久 | 欧美日韩国产综合一区二区| 日本一区二区三区dvd视频在线| 国产suv一区二区三区88区| 亚洲色图.com| 日韩一级二级三级| 91网站最新网址| 视频一区欧美精品| 91行情网站电视在线观看高清版| 中文字幕一区二区三区不卡在线| 欧美最猛黑人xxxxx猛交| 亚洲视频在线观看三级| 欧美日韩中文字幕一区二区| 久久99国产精品麻豆| 亚洲精选免费视频| 精品国产亚洲在线| 在线一区二区观看| 国产一区二区电影| 亚洲一级二级三级| 欧美日韩国产乱码电影| 国产精品亚洲成人| 亚洲国产wwwccc36天堂| 欧洲一区二区三区免费视频| 狠狠色丁香婷婷综合| 一区二区三区波多野结衣在线观看| 色综合久久66| 国产成人99久久亚洲综合精品| 亚洲天堂福利av| 久久综合九色综合欧美亚洲| 欧美性一区二区| 日韩va亚洲va欧美va久久| 欧美一区二区三区思思人| 白白色 亚洲乱淫| 韩国av一区二区三区四区| 亚洲超碰精品一区二区| 日韩欧美亚洲一区二区| 色猫猫国产区一区二在线视频| 韩国三级电影一区二区| 五月婷婷久久综合| 久久丝袜美腿综合| 日韩欧美激情四射| 欧美日韩成人一区二区| 色婷婷久久99综合精品jk白丝| 国产精品中文字幕日韩精品| 奇米在线7777在线精品| 午夜精品久久久久久久蜜桃app| 亚洲欧美视频一区| 中文av一区特黄| 久久免费偷拍视频| 久久蜜臀精品av| 久久青草国产手机看片福利盒子| 日韩精品中文字幕在线不卡尤物| 5858s免费视频成人| 91.xcao| 日韩无一区二区| 日韩欧美国产一区二区在线播放 | 色av综合在线| 91片黄在线观看| 99re8在线精品视频免费播放| 国产99久久久国产精品| 国产91精品露脸国语对白| 国产原创一区二区三区| 国产成人日日夜夜| 国产一区二区三区蝌蚪| 丁香一区二区三区| 91视频在线看| 欧洲精品一区二区三区在线观看| 欧美日韩高清在线播放| 3d动漫精品啪啪| 日韩精品在线一区二区| 国产亚洲一区二区三区在线观看| 国产日本亚洲高清| 国产精品护士白丝一区av| 日韩一二在线观看| 久久伊人蜜桃av一区二区| 国产视频在线观看一区二区三区 | 国产精品青草综合久久久久99| 国产欧美日韩不卡免费| 亚洲人成在线播放网站岛国| 亚洲国产中文字幕| 狠狠色丁香久久婷婷综合_中 | 久久成人免费电影| 岛国av在线一区| 91国内精品野花午夜精品 | 久久丁香综合五月国产三级网站| 国产高清一区日本| 在线视频一区二区免费| 精品久久一区二区| 综合色中文字幕| 蜜臀va亚洲va欧美va天堂 | 国内精品国产成人国产三级粉色| 国产经典欧美精品| 欧美在线999| 狠狠色狠狠色综合日日91app| 成人午夜视频免费看| 91成人国产精品| 久久日韩粉嫩一区二区三区 | 亚洲视频一区在线| 蜜臀va亚洲va欧美va天堂| 不卡区在线中文字幕| 精品一区二区三区蜜桃| 99久久99久久精品免费观看| 91麻豆精品国产综合久久久久久| 国产午夜精品一区二区| 天堂蜜桃一区二区三区| 粗大黑人巨茎大战欧美成人| 欧美剧在线免费观看网站| 国产视频视频一区| 免费不卡在线观看| 欧美色网一区二区| 国产精品二三区| 国产麻豆精品在线| 日韩视频免费观看高清完整版在线观看 | 蜜臀av在线播放一区二区三区| 99精品黄色片免费大全| 欧美大片在线观看一区| 亚洲福利视频一区| 97久久超碰国产精品| 国产午夜精品一区二区三区视频| 天涯成人国产亚洲精品一区av| 99久久久无码国产精品| 久久精品视频一区二区| 精品一区二区免费| 欧美日韩不卡一区| 亚洲综合在线五月| 99久免费精品视频在线观看| 久久亚洲一级片| 美国精品在线观看| 3d动漫精品啪啪一区二区竹菊 | 成人欧美一区二区三区白人| 国产综合久久久久久久久久久久| 欧美一级黄色大片| 麻豆精品蜜桃视频网站| 欧美久久婷婷综合色| 午夜欧美视频在线观看| 欧美在线播放高清精品| 亚洲一区二区精品视频| 欧美亚洲高清一区二区三区不卡| 中文字幕一区二区不卡 | 成人动漫一区二区三区| 国产亚洲精品福利| 国产精品911| 国产女人18毛片水真多成人如厕|