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

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

?? chipdefbase.cpp

?? 用C語言設計的EPSON LCD控制器S1D13700驅動。
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
		bool   RetVal = false;
		UInt32 iFeatureValue;
		UInt32 Value;

		switch ( m_Features[iFeature].Type )
		{
		  case FT_NUMB:
		  case FT_ADDR:
			RetVal = SetFeatureNumValue( Keyname, atoi32(StrValue,m_Features[iFeature].Radix) );
			break;

		  case FT_FREQ:
			RetVal = SetFeatureNumValue( Keyname, atohz(StrValue,MHZ) );
			break;

		  case FT_TEXT:
			assert( false );	// The chip-specific class should have handled this!
			break;

		  case FT_LIST:
			if ( LookupFeatureValue(iFeature,StrValue,&iFeatureValue) )
				RetVal = SetFeatureRawValue( Keyname, m_Features[iFeature].Values[iFeatureValue].Index );
			break;

		  case FT_BOOL:
			if ( stricmp(StrValue,"Enabled")==0 || stricmp(StrValue,"True")==0 || stricmp(StrValue,"T")==0 || stricmp(StrValue,"On")==0 || stricmp(StrValue,"1")==0 )
				Value = 1;
			else if ( stricmp(StrValue,"Disabled")==0 || stricmp(StrValue,"False")==0  || stricmp(StrValue,"F")==0 || stricmp(StrValue,"Off")==0 || stricmp(StrValue,"0")==0 )
				Value = 0;
			else
				return false;	// Unknown string.
			if ( m_Features[iFeature].BoolInvert )
				Value = Value ? 0 : 1;
			RetVal = SetFeatureRawValue( Keyname, Value );
			break;

		  case FT_SEQU:
			{
				int    i = 0;
				int    iLabel = 0;
				int	   nItems = 0;
				UInt32 Type;
				UInt32 Value;
				char   Label[256];

				RetVal = true;
				while ( StrValue[i] )
				{
					switch ( StrValue[i++] )
					{
						case 'c': Type=SEQ_COMMAND;								break;
						case 'p': Type=SEQ_PARAM;								break;
						case 'd': Type=SEQ_DELAY;								break;
						default:  while (StrValue[i] && StrValue[i]!=';') i++;	continue;
					}
					Value = atoi32( StrValue+i, (Type==SEQ_DELAY?10:16) );
					while ( StrValue[i] && StrValue[i]!='(' && StrValue[i]!=' ' )
						i++;
					iLabel = 0;
					if ( StrValue[i] == '(' )
					{
						i++;
						while ( StrValue[i] && StrValue[i]!=')' && StrValue[i]!=';' && iLabel<sizeof(Label)-1 )
							Label[iLabel++] = StrValue[i++];
						if ( StrValue[i] == ')' )
							i++;
					}
					Label[iLabel] = '\0';
					RetVal = SetFeatureSeqValue(Keyname,nItems++,Type,Value,Label) && RetVal;
					while ( StrValue[i] == ' ' )
						i++;
				}
				SetFeatureSeqCount( Keyname, nItems );
			}
			break;
		}

		return RetVal;
	}
	assert( false ); // ERROR: either this keyname doesn't exist, or you should have called IsFeatureValid() first!
	return false;
}




int ChipDefBase::GetFeatureAddrOffset( in const char* Keyname )
{
	UInt32 iFeature;

	if ( LookupFeature(Keyname,&iFeature) )
	{
		assert( m_Features[iFeature].Type==FT_ADDR );
		return m_Features[iFeature].OffsetOf;
	}
	assert( false ); // ERROR: either this keyname doesn't exist, or you should have called IsFeatureValid() first!
	return 0;
}




bool ChipDefBase::GetFeatureListValues( in const char* Keyname, in int ListIndex, out UInt32* RawValue, out UInt32* ToRawValue )
{
	UInt32 iFeature;

	if ( LookupFeature(Keyname,&iFeature) )
	{
		bool RetVal = false;

		switch ( m_Features[iFeature].Type )
		{
		  case FT_LIST:
		  case FT_BOOL:
			if ( m_Features[iFeature].NumValues == 0 )
			{
				// Note: This is a LIST item with no items. We must assume that it's a NEEDSCODE item.  Pretend that there is only one
				// value. This is important, because we use this to fake a constant value that is not a TEXT feature.  For instance,
				// if we want to fake a 'PCLK Source = SYSCLK' even though no such register exists, we can use a LIST item with NEEDSCODE
				// to fake it, because if we use a TEXT feature, double-quotes would show up: 'PCLK Source = "SYSCLK"'.  [ROC SEP-10-2002]
				if ( ListIndex == 0 )
				{
					if ( RawValue != NULL )
						*RawValue = 0;
					if ( ToRawValue != NULL )
						*ToRawValue = 0;
					RetVal = true;
				}
			}
			else if ( ListIndex < (int)m_Features[iFeature].NumValues )
			{
				UInt32 RealIndex = GetFeatureValueRealIndex( Keyname, ListIndex );

				if ( RawValue != NULL )
					*RawValue = m_Features[iFeature].Values[RealIndex].Index;
				if ( ToRawValue != NULL )
					*ToRawValue = m_Features[iFeature].Values[RealIndex].ToIndex;
				RetVal = true;
			}
			break;

		  default:
		  case FT_NUMB:
		  case FT_ADDR:
		  case FT_FREQ:
		  case FT_TEXT:
			assert( false );
			break;
		}

		return RetVal;
	}
	assert( false ); // ERROR: either this keyname doesn't exist, or you should have called IsFeatureValid() first!
	return false;
}




bool ChipDefBase::IsFeatureListIndexValid( in const char* Keyname, in UInt32 ListIndex )
{
	bool   RetVal = false;
	UInt32 iFeature;

	if ( LookupFeature(Keyname,&iFeature) )
	{
		switch ( m_Features[iFeature].Type )
		{
		  case FT_LIST:
		  case FT_BOOL:
			if ( m_Features[iFeature].NumValues )
				RetVal = MatchToCurrentProduct( m_Features[iFeature].Values[GetFeatureValueRealIndex(Keyname,ListIndex)].Product );
			else
				RetVal = true;
			break;

		  default:
		  case FT_NUMB:
		  case FT_ADDR:
		  case FT_FREQ:
		  case FT_TEXT:
			assert( false );
			break;
		}
	}
	return RetVal;
}




bool ChipDefBase::IsFeatureListIndexReserved( in const char* Keyname, in UInt32 ListIndex )
{
	UInt32 iFeature;

	if ( LookupFeature(Keyname,&iFeature) )
	{
		bool RetVal = false;

		switch ( m_Features[iFeature].Type )
		{
		  case FT_LIST:
		  case FT_BOOL:
			if ( m_Features[iFeature].NumValues )
			{
				UInt32 RealIndex = GetFeatureValueRealIndex( Keyname, ListIndex );
				RetVal = m_Features[iFeature].Values[RealIndex].Reserved && MatchToCurrentProduct( m_Features[iFeature].Values[RealIndex].Reserved );
			}
			else
				RetVal = false;
			break;

		  default:
		  case FT_NUMB:
		  case FT_ADDR:
		  case FT_FREQ:
		  case FT_TEXT:
			assert( false );
			break;
		}
		return RetVal;
	}
	assert( false ); // ERROR: either this keyname doesn't exist, or you should have called IsFeatureValid() first!
	return false;
}




bool ChipDefBase::IsFeatureListIndexReadOnly( in const char* Keyname, in UInt32 ListIndex )
{
	UInt32 iFeature;

	if ( LookupFeature(Keyname,&iFeature) )
	{
		bool RetVal = false;

		switch ( m_Features[iFeature].Type )
		{
		  case FT_LIST:
		  case FT_BOOL:
			if ( m_Features[iFeature].NumValues )
			{
				UInt32 iFeatureValue = GetFeatureValueRealIndex( Keyname, ListIndex );
				RetVal = ( m_Features[iFeature].Values[iFeatureValue].ReadValueName!=NULL && m_Features[iFeature].Values[iFeatureValue].WriteValueName==NULL );
			}
			else
				RetVal = false;
			break;

		  default:
		  case FT_NUMB:
		  case FT_ADDR:
		  case FT_FREQ:
		  case FT_TEXT:
			assert( false );
			break;
		}

		return RetVal;
	}
	assert( false ); // ERROR: either this keyname doesn't exist, or you should have called IsFeatureValid() first!
	return false;
}




bool ChipDefBase::IsFeatureListIndexWriteOnly( in const char* Keyname, in UInt32 ListIndex )
{
	UInt32 iFeature;

	if ( LookupFeature(Keyname,&iFeature) )
	{
		bool RetVal = false;

		switch ( m_Features[iFeature].Type )
		{
		  case FT_LIST:
		  case FT_BOOL:
			if ( m_Features[iFeature].NumValues )
			{
				UInt32 iFeatureValue = GetFeatureValueRealIndex( Keyname, ListIndex );
				RetVal = ( m_Features[iFeature].Values[iFeatureValue].ReadValueName==NULL && m_Features[iFeature].Values[iFeatureValue].WriteValueName!=NULL );
			}
			else
				RetVal = false;
			break;

		  default:
		  case FT_NUMB:
		  case FT_ADDR:
		  case FT_FREQ:
		  case FT_TEXT:
			assert( false );
			break;
		}

		return RetVal;
	}
	assert( false ); // ERROR: either this keyname doesn't exist, or you should have called IsFeatureValid() first!
	return false;
}




bool ChipDefBase::IsFeatureListIndexRWDiff( in const char* Keyname, in UInt32 ListIndex )
{
	UInt32 iFeature;

	if ( LookupFeature(Keyname,&iFeature) )
	{
		bool RetVal = false;

		switch ( m_Features[iFeature].Type )
		{
		  case FT_LIST:
		  case FT_BOOL:
			if ( m_Features[iFeature].NumValues )
			{
				UInt32 iFeatureValue = GetFeatureValueRealIndex( Keyname, ListIndex );
				RetVal = ( m_Features[iFeature].Values[iFeatureValue].ReadValueName!=NULL || m_Features[iFeature].Values[iFeatureValue].WriteValueName!=NULL );
			}
			else
				return false;
			break;

		  default:
		  case FT_NUMB:
		  case FT_ADDR:
		  case FT_FREQ:
		  case FT_TEXT:
			assert( false );
			break;
		}

		return RetVal;
	}
	assert( false ); // ERROR: either this keyname doesn't exist, or you should have called IsFeatureValid() first!
	return false;
}




bool ChipDefBase::GetFeatureListIndex( in const char* Keyname, out int* ListIndex )
{
	UInt32 iFeature;

	assert( ListIndex != NULL );

	if ( LookupFeature(Keyname,&iFeature) )
	{
		UInt32 FromValue;
		UInt32 ToValue;
		UInt32 RawValue;

		if ( m_Features[iFeature].NumValues )
		{
			RawValue = GetFeatureRawValue( Keyname );
			for ( int i=0; GetFeatureListValues(Keyname,i,&FromValue,&ToValue); i++ )
			{
				if ( RawValue>=FromValue && RawValue<=ToValue )
				{
					*ListIndex = i;
					return true;
				}
			}
		}
		else
		{
			*ListIndex = 0;
			return true;
		}
	}
	*ListIndex = 0;
	return false;
}




bool ChipDefBase::SetFeatureListIndex( in const char* Keyname, in int ListIndex )
{
	UInt32 iFeature;

	if ( LookupFeature(Keyname,&iFeature) )
	{
		switch ( m_Features[iFeature].Type )
		{
		  case FT_LIST:
		  case FT_BOOL:
			if ( m_Features[iFeature].NumValues )
				SetFeatureRawValue( Keyname, m_Features[iFeature].Values[GetFeatureValueRealIndex(Keyname,ListIndex)].Index );
			break;

		  default:
		  case FT_NUMB:
		  case FT_ADDR:
		  case FT_FREQ:
		  case FT_TEXT:
			assert( false );
			break;
		}

		return true;
	}
	assert( false ); // ERROR: either this keyname doesn't exist, or you should have called IsFeatureValid() first!
	return false;
}




bool ChipDefBase::GetFeatureSeqValue( in const char* Keyname, in int ListIndex, out UInt32* Type, out UInt32* Value, out char* *Label )
{
	assert( false );	// The chip-specific class should have handled this!
	return false;
}




bool ChipDefBase::SetFeatureSeqValue( in const char* Keyname, in int ListIndex, in UInt32 Type, in UInt32 Value, in char* Label )
{
	assert( false );	// The chip-specific class should have handled this!
	return false;
}




int ChipDefBase::GetFeatureSeqMax( in const char* Keyname )
{
	assert( false );	// The chip-specific class should have handled this!
	return 0;
}




int ChipDefBase::GetFeatureSeqCount( in const char* Keyname )
{
	assert( false );	// The chip-specific class should have handled this!
	return 0;
}




bool ChipDefBase::SetFeatureSeqCount( in const char* Keyname, in int nItems )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷精品久久二区二区蜜臀av| 欧美色窝79yyyycom| 91免费观看国产| 欧美不卡123| 亚洲妇女屁股眼交7| 粉嫩aⅴ一区二区三区四区| 欧美精品日日鲁夜夜添| 亚洲男人的天堂在线aⅴ视频| 国产精品99久久久久久久女警| 欧美日高清视频| 一区二区三区四区在线| 99精品在线免费| 国产精品视频免费| 国产剧情一区二区| 日韩久久精品一区| 日韩1区2区日韩1区2区| 欧洲av一区二区嗯嗯嗯啊| 日韩美女视频19| 成人精品国产一区二区4080| 精品国产精品网麻豆系列| 三级精品在线观看| 欧美日韩国产123区| 亚洲尤物视频在线| 欧美羞羞免费网站| 亚洲国产精品一区二区久久恐怖片 | 狠狠狠色丁香婷婷综合久久五月| 在线播放91灌醉迷j高跟美女| 亚洲男人天堂一区| 色欧美片视频在线观看在线视频| 亚洲欧美日韩一区| 色综合色综合色综合| 日韩毛片精品高清免费| 色综合久久中文字幕综合网| 一区二区三区高清| 欧美中文字幕一二三区视频| 亚洲不卡一区二区三区| 在线播放亚洲一区| 精品一区二区三区影院在线午夜| 日韩欧美一级片| 国产一区福利在线| 亚洲无人区一区| 欧美精品久久久久久久多人混战 | 亚洲精品一区二区三区99| 精品一区免费av| 久久久久综合网| 99视频热这里只有精品免费| 国产精品视频第一区| 色婷婷久久久亚洲一区二区三区| 一区二区激情视频| 91精品国产综合久久精品图片| 毛片一区二区三区| 亚洲国产成人午夜在线一区| 99视频热这里只有精品免费| 一区二区高清视频在线观看| 5月丁香婷婷综合| 国产精品 日产精品 欧美精品| 中文在线免费一区三区高中清不卡| 色婷婷综合中文久久一本| 日本伊人色综合网| 欧美国产丝袜视频| 欧美日韩视频不卡| 国产91对白在线观看九色| 亚洲精品视频在线观看网站| 日韩免费观看高清完整版| 不卡av免费在线观看| 亚洲va欧美va天堂v国产综合| 久久嫩草精品久久久久| 91久久精品一区二区三| 久久电影网站中文字幕 | 成人动漫av在线| 亚洲午夜在线电影| 26uuu成人网一区二区三区| 91在线观看一区二区| 蜜桃久久久久久久| 亚洲婷婷在线视频| 精品国产乱码久久久久久1区2区| 日本高清不卡一区| 国产福利91精品一区| 亚洲国产成人高清精品| 国产精品久线在线观看| 精品国产欧美一区二区| 色狠狠综合天天综合综合| 国产福利一区二区三区视频在线 | 亚洲视频网在线直播| 欧美第一区第二区| 欧洲色大大久久| 成人免费视频播放| 国产乱一区二区| 日韩国产欧美在线观看| 最新国产の精品合集bt伙计| 国产午夜亚洲精品午夜鲁丝片| 欧美日韩中文另类| 91蜜桃在线免费视频| 风流少妇一区二区| 国产剧情一区在线| 蜜臀久久99精品久久久画质超高清| 亚洲一区二区美女| 亚洲女同一区二区| 中文字幕亚洲不卡| 久久久国际精品| 久久婷婷综合激情| 精品少妇一区二区三区在线播放| 欧美一区二区在线不卡| 中文字幕巨乱亚洲| 国产婷婷色一区二区三区| 亚洲精品一区二区三区福利| 欧美大白屁股肥臀xxxxxx| 4438x成人网最大色成网站| 欧美三级韩国三级日本三斤| 91久久精品一区二区二区| 91成人看片片| 在线观看精品一区| 欧美少妇xxx| 欧美性极品少妇| 欧美日韩视频在线观看一区二区三区| 色偷偷一区二区三区| 在线视频欧美精品| 欧美亚洲国产怡红院影院| 欧美日韩国产电影| 日韩视频中午一区| 精品99一区二区三区| 久久久亚洲高清| 中文字幕一区在线观看| 亚洲美女免费在线| 亚洲国产一区二区视频| 午夜在线电影亚洲一区| 日韩国产高清影视| 狠狠色综合日日| 高清av一区二区| 色综合中文字幕国产| 欧美网站大全在线观看| 91精品国产色综合久久不卡蜜臀| 欧美一区永久视频免费观看| 欧美xxxx老人做受| 国产精品久久99| 亚洲在线视频一区| 久久成人久久爱| 成人动漫一区二区在线| 欧美日韩一区二区三区免费看| 欧美成人一区二区三区在线观看| 久久久久久久久久美女| 亚洲欧美国产77777| 日韩成人免费在线| 成人在线一区二区三区| 欧美天堂一区二区三区| 日韩精品一区二区三区中文不卡| 欧美激情综合五月色丁香小说| 亚洲精品写真福利| 狠狠色丁香婷婷综合久久片| 色综合婷婷久久| 欧美不卡视频一区| 一区二区在线免费观看| 久99久精品视频免费观看| 色综合天天综合网国产成人综合天 | 国产日产亚洲精品系列| 亚洲女子a中天字幕| 久久精品99国产国产精| 91在线免费视频观看| 欧美一卡2卡三卡4卡5免费| 亚洲欧洲一区二区在线播放| 久久国产尿小便嘘嘘尿| 91看片淫黄大片一级在线观看| 欧美一级二级三级乱码| 亚洲手机成人高清视频| 激情综合一区二区三区| 欧美偷拍一区二区| 国产精品久久久久影院色老大| 日韩高清电影一区| 色婷婷av一区二区三区之一色屋| 亚洲精品一区在线观看| 午夜精品久久久久久久99水蜜桃| 成人免费视频一区| 2020日本不卡一区二区视频| 天天亚洲美女在线视频| 99re成人精品视频| 久久久三级国产网站| 男女激情视频一区| 欧美日本一区二区三区四区| 亚洲女与黑人做爰| 99精品在线观看视频| 国产欧美精品区一区二区三区| 蜜臀av一区二区在线免费观看| 久久精品视频在线看| 日本va欧美va欧美va精品| 一本色道久久综合亚洲91| 国产精品五月天| 国产91精品欧美| 久久女同性恋中文字幕| 精品一区二区三区影院在线午夜| 欧美一级精品大片| 蜜桃久久久久久| 日韩欧美区一区二| 青青草国产精品97视觉盛宴| 欧美日韩另类国产亚洲欧美一级| 樱花草国产18久久久久| 91黄视频在线| 午夜亚洲国产au精品一区二区| 欧美性猛交xxxxxx富婆| 亚洲第四色夜色| 欧美日韩一区二区三区视频|