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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? fty_enum.c

?? ncurses-5.4 需要的就來下把 一定會(huì)有用的哦
?? C
字號(hào):
/* * THIS CODE IS SPECIFICALLY EXEMPTED FROM THE NCURSES PACKAGE COPYRIGHT. * You may freely copy it for use as a template for your own field types. * If you develop a field type that might be of general use, please send * it back to the ncurses maintainers for inclusion in the next version. *//****************************************************************************                                                                          **  Author : Juergen Pfeifer                                                **                                                                          ****************************************************************************/#include "form.priv.h"MODULE_ID("$Id: fty_enum.c,v 1.18 2003/11/08 20:25:29 tom Exp $")typedef struct {  char **kwds;  int  count;  bool checkcase;  bool checkunique;} enumARG;/*---------------------------------------------------------------------------|   Facility      :  libnform  |   Function      :  static void *Make_Enum_Type( va_list * ap )|   |   Description   :  Allocate structure for enumeration type argument.||   Return Values :  Pointer to argument structure or NULL on error+--------------------------------------------------------------------------*/static void *Make_Enum_Type(va_list * ap){  enumARG *argp = (enumARG *)malloc(sizeof(enumARG));  if (argp)    {      int cnt = 0;      char **kp = (char **)0;      int ccase, cunique;      argp->kwds        = va_arg(*ap,char **);      ccase             = va_arg(*ap,int);      cunique           = va_arg(*ap,int);      argp->checkcase   = ccase   ? TRUE : FALSE;      argp->checkunique = cunique ? TRUE : FALSE;      kp = argp->kwds;      while( kp && (*kp++) ) cnt++;      argp->count = cnt;    }  return (void *)argp;}/*---------------------------------------------------------------------------|   Facility      :  libnform  |   Function      :  static void *Copy_Enum_Type( const void * argp )|   |   Description   :  Copy structure for enumeration type argument.  ||   Return Values :  Pointer to argument structure or NULL on error.+--------------------------------------------------------------------------*/static void *Copy_Enum_Type(const void * argp){  enumARG *result = (enumARG *)0;  if (argp)    {      const enumARG *ap = (const enumARG *)argp;      result = (enumARG *)malloc(sizeof(enumARG));      if (result)	*result = *ap;    }  return (void *)result;}/*---------------------------------------------------------------------------|   Facility      :  libnform  |   Function      :  static void Free_Enum_Type( void * argp )|   |   Description   :  Free structure for enumeration type argument.||   Return Values :  -+--------------------------------------------------------------------------*/static void Free_Enum_Type(void * argp){  if (argp)     free(argp);}#define SKIP_SPACE(x) while(((*(x))!='\0') && (is_blank(*(x)))) (x)++#define NOMATCH 0#define PARTIAL 1#define EXACT   2/*---------------------------------------------------------------------------|   Facility      :  libnform  |   Function      :  static int Compare(const unsigned char * s,  |                                       const unsigned char * buf,|                                       bool  ccase )|   |   Description   :  Check whether or not the text in 'buf' matches the|                    text in 's', at least partial.||   Return Values :  NOMATCH   - buffer doesn't match|                    PARTIAL   - buffer matches partially|                    EXACT     - buffer matches exactly+--------------------------------------------------------------------------*/static int Compare(const unsigned char *s, const unsigned char *buf, 		   bool ccase){  SKIP_SPACE(buf); /* Skip leading spaces in both texts */  SKIP_SPACE(s);  if (*buf=='\0')    {      return (((*s)!='\0') ? NOMATCH : EXACT);    }   else     {      if (ccase)	{	  while(*s++ == *buf)	    {	      if (*buf++=='\0') return EXACT;	    } 	}       else 	{	  while(toupper(*s++)==toupper(*buf))	    {	      if (*buf++=='\0') return EXACT;	    }	}    }  /* At this location buf points to the first character where it no longer     matches with s. So if only blanks are following, we have a partial     match otherwise there is no match */  SKIP_SPACE(buf);  if (*buf)     return NOMATCH;  /* If it happens that the reference buffer is at its end, the partial     match is actually an exact match. */  return ((s[-1]!='\0') ? PARTIAL : EXACT);}/*---------------------------------------------------------------------------|   Facility      :  libnform  |   Function      :  static bool Check_Enum_Field(|                                      FIELD * field,|                                      const void  * argp)|   |   Description   :  Validate buffer content to be a valid enumeration value||   Return Values :  TRUE  - field is valid|                    FALSE - field is invalid+--------------------------------------------------------------------------*/static bool Check_Enum_Field(FIELD * field, const void  * argp){  char **kwds       = ((const enumARG *)argp)->kwds;  bool ccase        = ((const enumARG *)argp)->checkcase;  bool unique       = ((const enumARG *)argp)->checkunique;  unsigned char *bp = (unsigned char *)field_buffer(field,0);  char *s, *t, *p;  int res;    while( kwds && (s=(*kwds++)) )    {      if ((res=Compare((unsigned char *)s,bp,ccase))!=NOMATCH)	{	  p=t=s; /* t is at least a partial match */	  if ((unique && res!=EXACT)) 	    {	      while( kwds && (p = *kwds++) )		{		  if ((res=Compare((unsigned char *)p,bp,ccase))!=NOMATCH)		    {		      if (res==EXACT)			{			  t = p;			  break;			}		      else			t = (char *)0;		    }		}	    }	  	  if (t)	    {	      set_field_buffer(field,0,t);	      return TRUE;	    }	  if (!p)	    break;	}    }  return FALSE;}static const char *dummy[] = { (char *)0 };/*---------------------------------------------------------------------------|   Facility      :  libnform  |   Function      :  static bool Next_Enum(FIELD * field,|                                          const void * argp)|   |   Description   :  Check for the next enumeration value||   Return Values :  TRUE  - next value found and loaded|                    FALSE - no next value loaded+--------------------------------------------------------------------------*/static bool Next_Enum(FIELD * field, const void * argp){  const enumARG *args = (const enumARG *)argp;  char **kwds       = args->kwds;  bool ccase        = args->checkcase;  int cnt           = args->count;  unsigned char *bp = (unsigned char *)field_buffer(field,0);  if (kwds) {    while(cnt--)      {	if (Compare((unsigned char *)(*kwds++),bp,ccase)==EXACT) 	  break;      }    if (cnt<=0)      kwds = args->kwds;    if ((cnt>=0) || (Compare((const unsigned char *)dummy,bp,ccase)==EXACT))      {	set_field_buffer(field,0,*kwds);	return TRUE;      }  }  return FALSE;}/*---------------------------------------------------------------------------|   Facility      :  libnform  |   Function      :  static bool Previous_Enum(|                                          FIELD * field,|                                          const void * argp)|   |   Description   :  Check for the previous enumeration value||   Return Values :  TRUE  - previous value found and loaded|                    FALSE - no previous value loaded+--------------------------------------------------------------------------*/static bool Previous_Enum(FIELD * field, const void * argp){  const enumARG *args = (const enumARG *)argp;  int cnt       = args->count;  char **kwds   = &args->kwds[cnt-1];  bool ccase    = args->checkcase;  unsigned char *bp = (unsigned char *)field_buffer(field,0);  if (kwds) {    while(cnt--)      {	if (Compare((unsigned char *)(*kwds--),bp,ccase)==EXACT) 	  break;      }        if (cnt<=0)      kwds  = &args->kwds[args->count-1];        if ((cnt>=0) || (Compare((const unsigned char *)dummy,bp,ccase)==EXACT))      {	set_field_buffer(field,0,*kwds);	return TRUE;      }  }  return FALSE;}static FIELDTYPE typeENUM = {  _HAS_ARGS | _HAS_CHOICE | _RESIDENT,  1,                           /* this is mutable, so we can't be const */  (FIELDTYPE *)0,  (FIELDTYPE *)0,  Make_Enum_Type,  Copy_Enum_Type,  Free_Enum_Type,  Check_Enum_Field,  NULL,  Next_Enum,  Previous_Enum};NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ENUM = &typeENUM;/* fty_enum.c ends here */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久久快鸭 | 美国三级日本三级久久99| 欧美另类高清zo欧美| 日韩高清一级片| 精品剧情在线观看| 国产精品一区二区不卡| 日韩码欧中文字| 91麻豆精品国产91久久久久久 | 8x8x8国产精品| 韩日精品视频一区| 亚洲一区二区欧美| 久久天堂av综合合色蜜桃网| 91免费在线看| 久久成人综合网| 亚洲欧美乱综合| 国产亚洲一区二区三区在线观看| 91麻豆成人久久精品二区三区| 懂色av中文一区二区三区| 亚洲精选视频在线| 久久伊人中文字幕| 欧美群妇大交群的观看方式| 国产成人午夜片在线观看高清观看| 亚洲另类在线视频| 久久久久久毛片| 91精品欧美久久久久久动漫| 99这里只有久久精品视频| 久久99精品国产.久久久久久| 亚洲美女一区二区三区| 国产亚洲综合av| 日韩精品中午字幕| 9191国产精品| 欧美视频一区二区三区四区| 成人深夜福利app| 韩日精品视频一区| 激情国产一区二区 | 国产精品99久久不卡二区| 日韩成人免费在线| 亚洲福利视频三区| 亚洲激情中文1区| 亚洲美女偷拍久久| 亚洲精品一二三四区| 国产精品久久久久久久蜜臀| 国产人成一区二区三区影院| 欧美成人官网二区| 26uuu欧美| 久久久亚洲高清| 久久久高清一区二区三区| 久久男人中文字幕资源站| 精品国产1区2区3区| 26uuu亚洲综合色| 欧美韩国一区二区| 国产精品久久毛片a| 国产精品久久久久久久久搜平片| 一区二区三区国产| 亚洲成av人片| 免费观看成人av| 国产一区在线不卡| 成人免费观看男女羞羞视频| 91亚洲资源网| 欧美日本在线一区| 日韩精品一区二| 国产精品丝袜91| 亚洲色图一区二区三区| 午夜欧美视频在线观看| 日韩福利视频网| 大陆成人av片| 欧美亚洲国产一区二区三区va| 欧美二区乱c少妇| 久久九九久久九九| 一区二区三区在线不卡| 伦理电影国产精品| 成人免费视频网站在线观看| 欧美日韩亚洲综合一区| 国产亚洲一区二区三区在线观看| 亚洲一区在线看| 国产乱码精品一区二区三| 在线一区二区视频| 久久女同互慰一区二区三区| 亚洲综合色成人| 粉嫩av一区二区三区在线播放| 欧美性受xxxx黑人xyx| 久久久精品黄色| 日韩综合小视频| 91免费版在线看| 国产性做久久久久久| 五月婷婷激情综合| 99re成人精品视频| 久久先锋影音av鲁色资源网| 亚洲一区日韩精品中文字幕| 成人黄色小视频| 精品国偷自产国产一区| 天天操天天色综合| 91在线视频在线| 国产精品网站在线观看| 久久99国产精品久久| 日韩欧美一区电影| 手机精品视频在线观看| 欧美羞羞免费网站| 一区二区三区久久| 在线精品视频小说1| 中文字幕一区不卡| 99精品视频在线观看免费| 欧美精彩视频一区二区三区| 国产乱码精品一区二区三区五月婷 | 国产精品国产精品国产专区不片| 久久99在线观看| 精品国精品国产| 韩日av一区二区| 国产欧美日韩三级| 粉嫩久久99精品久久久久久夜| 国产欧美日韩一区二区三区在线观看| 精品亚洲成a人| 国产女人aaa级久久久级| 国产丶欧美丶日本不卡视频| 国产人久久人人人人爽| 成人不卡免费av| 一区二区三区四区在线免费观看| 91成人网在线| 日本vs亚洲vs韩国一区三区二区| 日韩一区二区三区观看| 久久精品国产一区二区| 欧美一级免费大片| 日本不卡不码高清免费观看| 日韩欧美中文一区| 粉嫩av一区二区三区在线播放| 一区av在线播放| 欧美丰满少妇xxxbbb| 色综合天天综合网国产成人综合天 | 日本一区二区成人| 国产成人免费视| 国产人成亚洲第一网站在线播放| 国产在线精品不卡| 中文字幕av不卡| 色综合色狠狠综合色| 亚洲一级不卡视频| 91精品黄色片免费大全| 日本欧洲一区二区| 日韩欧美激情四射| 成人av在线一区二区| 亚洲激情男女视频| 日韩一级视频免费观看在线| 天天综合色天天综合| 国产亚洲一区二区三区四区| 99天天综合性| 日韩国产在线一| 国产精品人成在线观看免费| www.色精品| 美女任你摸久久| 亚洲人成亚洲人成在线观看图片| 欧美肥大bbwbbw高潮| 成人免费视频网站在线观看| 天天色综合天天| 中文字幕制服丝袜成人av| 欧美一区二区美女| 91免费在线看| 不卡的电视剧免费网站有什么| 亚洲一区二区三区四区不卡| 久久久久久久一区| 91精品福利在线一区二区三区| 成人激情动漫在线观看| 久久99精品国产.久久久久久| 亚洲黄色在线视频| 国产精品福利一区二区三区| 6080yy午夜一二三区久久| 日本韩国欧美一区二区三区| 国产精品夜夜嗨| 久久福利资源站| 狠狠网亚洲精品| 美女一区二区三区| 日本免费在线视频不卡一不卡二| 一区二区三区免费网站| 一区二区视频免费在线观看| 中文字幕一区二区三区色视频| 国产亚洲一本大道中文在线| 久久五月婷婷丁香社区| 久久奇米777| 国产精品拍天天在线| 最近日韩中文字幕| 亚洲欧美国产毛片在线| 亚洲综合免费观看高清完整版 | 一区二区三区在线看| 亚洲综合激情网| 日韩一区精品字幕| 国产一区二区三区四区五区入口 | 精品国精品国产| 中文字幕欧美国产| 亚洲一区精品在线| 奇米精品一区二区三区在线观看一 | 国产精品99久| 欧美亚男人的天堂| 久久精品欧美一区二区三区不卡| 国产精品天干天干在观线| **欧美大码日韩| 丝袜亚洲另类欧美| 成人h动漫精品一区二| 欧美日本在线视频| 亚洲天堂精品在线观看| 日本成人在线电影网| 99久久精品国产毛片| 欧美一区二区三区免费|