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

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

?? selector.c

?? GUN開源阻止下的編譯器GCC
?? C
字號:
/* GNU Objective C Runtime selector related functions   Copyright (C) 1993, 1995 Free Software Foundation, Inc.   Contributed by Kresten Krab ThorupThis file is part of GNU CC.GNU CC is free software; you can redistribute it and/or modify it under theterms of the GNU General Public License as published by the Free SoftwareFoundation; either version 2, or (at your option) any later version.GNU CC is distributed in the hope that it will be useful, but WITHOUT ANYWARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESSFOR A PARTICULAR PURPOSE.  See the GNU General Public License for moredetails.You should have received a copy of the GNU General Public License along withGNU CC; see the file COPYING.  If not, write to the Free SoftwareFoundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  *//* As a special exception, if you link this library with files compiled with   GCC to produce an executable, this does not cause the resulting executable   to be covered by the GNU General Public License. This exception does not   however invalidate any other reasons why the executable file might be   covered by the GNU General Public License.  */#include "runtime.h"#include "objc/sarray.h"#include "encoding.h"/* Initial selector hash table size. Value doesn't matter much */#define SELECTOR_HASH_SIZE 128/* Tables mapping selector names to uid and opposite */static struct sarray* __objc_selector_array = 0; /* uid -> sel */static struct sarray* __objc_selector_names = 0; /* uid -> name */static cache_ptr      __objc_selector_hash  = 0; /* name -> uid */static void register_selectors_from_list(MethodList_t);/* Number of selectors stored in each of the above tables */int __objc_selector_max_index = 0;void __objc_init_selector_tables(){  __objc_selector_array = sarray_new (SELECTOR_HASH_SIZE, 0);  __objc_selector_names = sarray_new (SELECTOR_HASH_SIZE, 0);  __objc_selector_hash    = hash_new (SELECTOR_HASH_SIZE,		(hash_func_type) hash_string,		(compare_func_type) compare_strings);}  /* This routine is given a class and records all of the methods in its class   structure in the record table.  */void__objc_register_selectors_from_class (Class class){  MethodList_t method_list;  method_list = class->methods;  while (method_list)    {      register_selectors_from_list (method_list);      method_list = method_list->method_next;    }}/* This routine is given a list of methods and records each of the methods in   the record table.  This is the routine that does the actual recording   work.   This one is only called for Class objects.  For categories,   class_add_method_list is called.   */static voidregister_selectors_from_list (MethodList_t method_list){  int i = 0;  while (i < method_list->method_count)    {      Method_t method = &method_list->method_list[i];      method->method_name 	= sel_register_typed_name ((const char*)method->method_name, 				     method->method_types);      i += 1;    }}/* Returns YES iff t1 and t2 have same method types, but we ignore   the argframe layout */BOOLsel_types_match (const char* t1, const char* t2){  if (!t1 || !t2)    return NO;  while (*t1 && *t2)    {      if (*t1 == '+') t1++;      if (*t2 == '+') t2++;      while (isdigit(*t1)) t1++;      while (isdigit(*t2)) t2++;      /* xxx Remove these next two lines when qualifiers are put in	 all selectors, not just Protocol selectors. */      t1 = objc_skip_type_qualifiers(t1);      t2 = objc_skip_type_qualifiers(t2);      if (!*t1 && !*t2)	return YES;      if (*t1 != *t2)	return NO;      t1++;      t2++;    }  return NO;}/* return selector representing name */SELsel_get_typed_uid (const char *name, const char *types){  struct objc_list *l;  sidx i;  i = (sidx) hash_value_for_key (__objc_selector_hash, name);  if (i == 0)    return 0;  for (l = (struct objc_list*)sarray_get (__objc_selector_array, i);       l; l = l->tail)    {      SEL s = (SEL)l->head;      if (types == 0 || s->sel_types == 0)	{	  if (s->sel_types == types)	    {	      return s;	    }	}      else if (sel_types_match (s->sel_types, types))	{	  return s;	}    }  return 0;}/* Return selector representing name; prefer a selector with non-NULL type */SELsel_get_any_typed_uid (const char *name){  struct objc_list *l;  sidx i;  SEL s;  i = (sidx) hash_value_for_key (__objc_selector_hash, name);  if (i == 0)    return 0;  for (l = (struct objc_list*)sarray_get (__objc_selector_array, i);       l; l = l->tail)    {      s = (SEL) l->head;      if (s->sel_types)	return s;    }  return s;}/* return selector representing name */SELsel_get_any_uid (const char *name){  struct objc_list *l;  sidx i;  i = (sidx) hash_value_for_key (__objc_selector_hash, name);  if (soffset_decode (i) == 0)    return 0;  l = (struct objc_list*)sarray_get (__objc_selector_array, i);  if (l == 0)    return 0;  return (SEL)l->head;}/* return selector representing name */SELsel_get_uid (const char *name){  return sel_register_typed_name (name, 0);}/* Get name of selector.  If selector is unknown, the empty string ""    is returned */ const char*sel_get_name (SEL selector){  if ((soffset_decode((sidx)selector->sel_id) > 0)      && (soffset_decode((sidx)selector->sel_id) <= __objc_selector_max_index))    return sarray_get (__objc_selector_names, (sidx) selector->sel_id);  else    return 0;}BOOLsel_is_mapped (SEL selector){  unsigned int idx = soffset_decode ((sidx)selector->sel_id);  return ((idx > 0) && (idx <= __objc_selector_max_index));}const char*sel_get_type (SEL selector){  if (selector)    return selector->sel_types;  else    return 0;}/* The uninstalled dispatch table */extern struct sarray* __objc_uninstalled_dtable;/* Store the passed selector name in the selector record and return its   selector value (value returned by sel_get_uid). */SEL__sel_register_typed_name (const char *name, const char *types, 			   struct objc_selector *orig){  struct objc_selector* j;  sidx i;  struct objc_list *l;  i = (sidx) hash_value_for_key (__objc_selector_hash, name);  if (soffset_decode (i) != 0)    {      for (l = (struct objc_list*)sarray_get (__objc_selector_array, i);	   l; l = l->tail)	{	  SEL s = (SEL)l->head;	  if (types == 0 || s->sel_types == 0)	    {	      if (s->sel_types == types)		{		  if (orig)		    {		      orig->sel_id = (void*)i;		      return orig;		    }		  else		    return s;		}	    }	  else if (!strcmp (s->sel_types, types))	    {	      if (orig)		{		  orig->sel_id = (void*)i;		  return orig;		}	      else		return s;	    }	}      if (orig)	j = orig;      else	j = __objc_xmalloc (sizeof (struct objc_selector));      j->sel_id = (void*)i;      j->sel_types = (const char*)types;      l = (struct objc_list*)sarray_get (__objc_selector_array, i);    }  else    {      __objc_selector_max_index += 1;      i = soffset_encode(__objc_selector_max_index);      if (orig)	j = orig;      else	j = __objc_xmalloc (sizeof (struct objc_selector));	      j->sel_id = (void*)i;      j->sel_types = (const char*)types;      l = 0;    }  DEBUG_PRINTF ("Record selector %s[%s] as: %ld\n", name, types, 		soffset_decode (i));    {    int is_new = (l == 0);    l = list_cons ((void*)j, l);    sarray_at_put_safe (__objc_selector_names, i, (void *) name);    sarray_at_put_safe (__objc_selector_array, i, (void *) l);    if (is_new)      hash_add (&__objc_selector_hash, (void *) name, (void *) i);  }  sarray_realloc(__objc_uninstalled_dtable, __objc_selector_max_index+1);  return (SEL) j;}SELsel_register_name (const char *name){  return __sel_register_typed_name (name, 0, 0);}SELsel_register_typed_name (const char *name, const char *type){  return __sel_register_typed_name (name, type, 0);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品成a人在线观看| 丁香婷婷深情五月亚洲| 在线观看欧美黄色| 中文字幕精品一区二区精品绿巨人 | 日本一区二区三区久久久久久久久不| 日韩av不卡一区二区| 欧美日韩在线精品一区二区三区激情 | 91精品国产福利在线观看| 亚洲国产精品久久人人爱| 91蜜桃传媒精品久久久一区二区| 中文字幕亚洲不卡| 色综合久久88色综合天天 | 99re免费视频精品全部| 中文字幕av一区二区三区| k8久久久一区二区三区| 亚洲欧美另类综合偷拍| 91久久久免费一区二区| 丝袜美腿亚洲一区二区图片| 91麻豆精品国产91久久久久久久久| 天天做天天摸天天爽国产一区| 欧美精品777| 国内精品久久久久影院一蜜桃| 2020国产精品自拍| a亚洲天堂av| 亚洲www啪成人一区二区麻豆| 欧美日韩精品一区二区在线播放 | 久久久久久日产精品| 成人久久18免费网站麻豆| 亚洲男人的天堂在线观看| 欧美日韩免费高清一区色橹橹 | 国产风韵犹存在线视精品| 国产精品久久二区二区| 欧美三级韩国三级日本三斤| jlzzjlzz国产精品久久| 亚洲欧美电影一区二区| 日韩一级片在线播放| 国产iv一区二区三区| 亚洲综合色视频| 精品福利视频一区二区三区| 99久久久精品| 精品一区二区三区在线观看国产| 日本一区二区电影| 欧美精品视频www在线观看 | 99久久免费精品高清特色大片| 亚洲国产欧美在线| 久久久久久久久久久电影| 91日韩精品一区| 精品制服美女丁香| 亚洲无线码一区二区三区| 精品捆绑美女sm三区| 91传媒视频在线播放| 狠狠久久亚洲欧美| 亚洲福利电影网| 亚洲国产精品av| 日韩免费视频一区二区| 色婷婷激情综合| 国产成人av电影在线观看| 三级精品在线观看| 亚洲人成亚洲人成在线观看图片| 精品捆绑美女sm三区| 欧美精品在线视频| 91蝌蚪国产九色| 国产精品911| 蜜桃视频一区二区三区| 亚洲综合激情小说| 亚洲欧洲精品天堂一级| 欧美成人精品二区三区99精品| 色综合久久天天| 成人午夜又粗又硬又大| 裸体健美xxxx欧美裸体表演| 一区二区三区视频在线看| 国产女同性恋一区二区| 精品精品国产高清a毛片牛牛| 欧美伊人久久大香线蕉综合69| 成人免费毛片高清视频| 国产一区二三区好的| 蜜臀久久99精品久久久久宅男| 亚洲国产欧美在线人成| 17c精品麻豆一区二区免费| 久久久国产午夜精品| 久久久久综合网| 国产亚洲精品精华液| 精品黑人一区二区三区久久 | 欧美r级电影在线观看| 3d动漫精品啪啪1区2区免费| 欧美三级欧美一级| 欧美日韩成人激情| 欧美日韩在线电影| 欧美美女一区二区在线观看| 欧美久久高跟鞋激| 欧美一级一区二区| 欧美α欧美αv大片| 欧美v日韩v国产v| 精品电影一区二区| 久久综合狠狠综合久久激情 | 免费人成在线不卡| 蜜桃视频免费观看一区| 国内精品伊人久久久久av一坑| 韩日av一区二区| 国产宾馆实践打屁股91| 99国产欧美另类久久久精品 | 亚洲美女视频在线观看| 亚洲自拍偷拍网站| 午夜精品爽啪视频| 精品一区二区在线免费观看| 国产精品一区不卡| 91影院在线免费观看| 欧美又粗又大又爽| 日韩一二三区不卡| 国产免费观看久久| 亚洲天堂av老司机| 丝袜亚洲另类欧美| 国产精品一区二区果冻传媒| 91丨porny丨蝌蚪视频| 欧美伊人久久大香线蕉综合69| 欧美一级国产精品| 国产拍揄自揄精品视频麻豆| 亚洲欧洲综合另类| 美国毛片一区二区| 成人黄色a**站在线观看| 日本韩国欧美在线| 日韩欧美在线1卡| 国产精品久久三| 午夜亚洲国产au精品一区二区| 精品中文字幕一区二区小辣椒 | 成人精品在线视频观看| 欧美午夜不卡在线观看免费| 欧美成人一区二区| 亚洲欧美日韩国产一区二区三区 | 亚洲午夜精品久久久久久久久| 日本欧美一区二区| av一区二区不卡| 国产精品久久午夜| 国产精品18久久久久| 亚洲综合在线观看视频| 久久99精品一区二区三区三区| 99久久99久久精品免费观看 | 欧洲精品中文字幕| 久久日一线二线三线suv| 一区二区在线电影| 国产成人午夜视频| 91精品在线麻豆| 亚洲欧美另类久久久精品| 久久99热99| 欧美三级日韩在线| 亚洲婷婷国产精品电影人久久| 美脚の诱脚舐め脚责91 | 亚洲一区免费在线观看| 国产成人午夜精品影院观看视频 | 在线看日韩精品电影| 国产色爱av资源综合区| 日本不卡不码高清免费观看| 99国产精品久久久久久久久久久| 精品国产露脸精彩对白 | 欧美色图12p| 国产精品三级av| 精品系列免费在线观看| 538在线一区二区精品国产| 一区二区三区高清不卡| 成人精品视频一区二区三区尤物| 日韩欧美一区二区三区在线| 午夜亚洲国产au精品一区二区| 色综合色综合色综合色综合色综合| 久久久久久久综合日本| 蜜桃视频在线观看一区二区| 91.com视频| 亚洲第一久久影院| 欧美天天综合网| 亚洲男人的天堂网| 色婷婷狠狠综合| 亚洲免费观看在线观看| www.亚洲激情.com| 综合自拍亚洲综合图不卡区| 懂色av中文一区二区三区| 国产日产欧产精品推荐色| 国产中文字幕精品| 久久综合五月天婷婷伊人| 九九九久久久精品| 国产午夜精品一区二区三区四区| 久久成人免费网站| 精品国产污网站| 激情综合网av| 久久夜色精品国产欧美乱极品| 国产一区二区中文字幕| 91麻豆精品国产91久久久使用方法 | 成人免费视频视频| 久久精品一二三| 国产成人啪免费观看软件| 日本一区二区三区久久久久久久久不| 国产乱码字幕精品高清av | 96av麻豆蜜桃一区二区| 最近中文字幕一区二区三区| 97aⅴ精品视频一二三区| 亚洲精品高清视频在线观看| 欧美亚洲国产一区二区三区 | 国产精品美女久久久久久久久 | 一区二区视频在线| 欧美日韩亚洲国产综合| 日本不卡高清视频| 久久久99精品免费观看|