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

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

?? init.c

?? gcc庫的原代碼,對編程有很大幫助.
?? C
字號:
/* GNU Objective C Runtime initialization    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"/* The version number of this runtime.  This must match the number    defined in gcc (objc-act.c) */#define OBJC_VERSION 7#define PROTOCOL_VERSION 2/* This list contains all modules currently loaded into the runtime */static struct objc_list* __objc_module_list = 0;/* This list contains all proto_list's not yet assigned class links */static struct objc_list* unclaimed_proto_list = 0;/* List of unresolved static instances.  */static struct objc_list *uninitialized_statics;/* Check compiler vs runtime version */static void init_check_module_version (Module_t);/* Assign isa links to protos */static void __objc_init_protocols (struct objc_protocol_list* protos);/* Add protocol to class */static void __objc_class_add_protocols (Class, struct objc_protocol_list*);/* This is a hook which is called by __objc_exec_class every time a class   or a category is loaded into the runtime.  This may e.g. help a   dynamic loader determine the classes that have been loaded when   an object file is dynamically linked in */void (*_objc_load_callback)(Class class, Category* category) = 0;/* Is all categories/classes resolved? */BOOL __objc_dangling_categories = NO;extern SEL__sel_register_typed_name (const char *name, const char *types, 			   struct objc_selector *orig);/* Run through the statics list, removing modules as soon as all its statics   have been initialized.  */static voidobjc_init_statics (){  struct objc_list **cell = &uninitialized_statics;  struct objc_static_instances **statics_in_module;  while (*cell)    {      int module_initialized = 1;      for (statics_in_module = (*cell)->head;	   *statics_in_module; statics_in_module++)	{	  struct objc_static_instances *statics = *statics_in_module;	  Class class = objc_lookup_class (statics->class_name);	  if (!class)	    module_initialized = 0;	  /* Actually, the static's class_pointer will be NULL when we             haven't been here before.  However, the comparison is to be             reminded of taking into account class posing and to think about             possible semantics...  */	  else if (class != statics->instances[0]->class_pointer)	    {	      id *inst;	      for (inst = &statics->instances[0]; *inst; inst++)		{		  (*inst)->class_pointer = class;		  /* ??? Make sure the object will not be freed.  With                     refcounting, invoke `-retain'.  Without refcounting, do                     nothing and hope that `-free' will never be invoked.  */		  /* ??? Send the object an `-initStatic' or something to                     that effect now or later on?  What are the semantics of                     statically allocated instances, besides the trivial                     NXConstantString, anyway?  */		}	    }	}      if (module_initialized)	{	  /* Remove this module from the uninitialized list.  */	  struct objc_list *this = *cell;	  *cell = this->tail;	  free (this);	}      else	cell = &(*cell)->tail;    }} /* objc_init_statics *//* This function is called by constructor functions generated for each   module compiled.  (_GLOBAL_$I$...) The purpose of this function is to   gather the module pointers so that they may be processed by the   initialization routines as soon as possible */void__objc_exec_class (Module_t module){  /* Have we processed any constructors previously?  This flag is used to     indicate that some global data structures need to be built.  */  static BOOL previous_constructors = 0;  static struct objc_list* unclaimed_categories = 0;  /* The symbol table (defined in objc-api.h) generated by gcc */  Symtab_t symtab = module->symtab;  /* Entry used to traverse hash lists */  struct objc_list** cell;  /* The table of selector references for this module */  SEL selectors = symtab->refs;   /* dummy counter */  int i;  DEBUG_PRINTF ("received module: %s\n", module->name);  /* check gcc version */  init_check_module_version(module);  /* On the first call of this routine, initialize some data structures.  */  if (!previous_constructors)    {      __objc_init_selector_tables();      __objc_init_class_tables();      __objc_init_dispatch_tables();      previous_constructors = 1;    }  /* Save the module pointer for later processing. (not currently used) */  __objc_module_list = list_cons(module, __objc_module_list);  /* Replace referenced selectors from names to SEL's.  */  if (selectors)    {      for (i = 0; selectors[i].sel_id; ++i)	{	  const char *name, *type;	  name = (char*)selectors[i].sel_id;	  type = (char*)selectors[i].sel_types;	  __sel_register_typed_name (name, type, 				     (struct objc_selector*)&(selectors[i]));	}    }  /* Parse the classes in the load module and gather selector information.  */  DEBUG_PRINTF ("gathering selectors from module: %s\n", module->name);  for (i = 0; i < symtab->cls_def_cnt; ++i)    {      Class class = (Class) symtab->defs[i];      /* Make sure we have what we think.  */      assert (CLS_ISCLASS(class));      assert (CLS_ISMETA(class->class_pointer));      DEBUG_PRINTF ("phase 1, processing class: %s\n", class->name);      /* Store the class in the class table and assign class numbers.  */      __objc_add_class_to_hash (class);      /* Register all of the selectors in the class and meta class.  */      __objc_register_selectors_from_class (class);      __objc_register_selectors_from_class ((Class) class->class_pointer);      /* Install the fake dispatch tables */      __objc_install_premature_dtable(class);      __objc_install_premature_dtable(class->class_pointer);      if (class->protocols)	__objc_init_protocols (class->protocols);      if (_objc_load_callback)	_objc_load_callback(class, 0);   }  /* Process category information from the module.  */  for (i = 0; i < symtab->cat_def_cnt; ++i)    {      Category_t category = symtab->defs[i + symtab->cls_def_cnt];      Class class = objc_lookup_class (category->class_name);            /* If the class for the category exists then append its methods.  */      if (class)	{	  DEBUG_PRINTF ("processing categories from (module,object): %s, %s\n",			module->name,			class->name);	  /* Do instance methods.  */	  if (category->instance_methods)	    class_add_method_list (class, category->instance_methods);	  /* Do class methods.  */	  if (category->class_methods)	    class_add_method_list ((Class) class->class_pointer, 				   category->class_methods);	  if (category->protocols)	    {	      __objc_init_protocols (category->protocols);	      __objc_class_add_protocols (class, category->protocols);	    }          if (_objc_load_callback)	    _objc_load_callback(class, category);	}      else	{	  /* The object to which the category methods belong can't be found.	     Save the information.  */	  unclaimed_categories = list_cons(category, unclaimed_categories);	}    }  if (module->statics)    uninitialized_statics = list_cons (module->statics, uninitialized_statics);  if (uninitialized_statics)    objc_init_statics ();  /* Scan the unclaimed category hash.  Attempt to attach any unclaimed     categories to objects.  */  for (cell = &unclaimed_categories;       *cell;       ({ if (*cell) cell = &(*cell)->tail; }))    {      Category_t category = (*cell)->head;      Class class = objc_lookup_class (category->class_name);            if (class)	{	  DEBUG_PRINTF ("attaching stored categories to object: %s\n",			class->name);	  	  list_remove_head (cell);	  	  if (category->instance_methods)	    class_add_method_list (class, category->instance_methods);	  	  if (category->class_methods)	    class_add_method_list ((Class) class->class_pointer,				   category->class_methods);	  	  if (category->protocols)	    {	      __objc_init_protocols (category->protocols);	      __objc_class_add_protocols (class, category->protocols);	    }	            if (_objc_load_callback)	    _objc_load_callback(class, category);	}    }    if (unclaimed_proto_list && objc_lookup_class ("Protocol"))    {      list_mapcar (unclaimed_proto_list,(void(*)(void*))__objc_init_protocols);      list_free (unclaimed_proto_list);      unclaimed_proto_list = 0;    }}/* Sanity check the version of gcc used to compile `module'*/static void init_check_module_version(Module_t module){  if ((module->version != OBJC_VERSION) || (module->size != sizeof (Module)))    {      fprintf (stderr, "Module %s version %d doesn't match runtime %d\n",	       module->name, (int)module->version, OBJC_VERSION);      if(module->version > OBJC_VERSION)	fprintf (stderr, "Runtime (libobjc.a) is out of date\n");      else if (module->version < OBJC_VERSION)	fprintf (stderr, "Compiler (gcc) is out of date\n");      else	fprintf (stderr, "Objective C internal error -- bad Module size\n");      abort ();    }}static void__objc_init_protocols (struct objc_protocol_list* protos){  int i;  static Class proto_class = 0;  if (! protos)    return;  if (!proto_class)    proto_class = objc_lookup_class("Protocol");  if (!proto_class)    {      unclaimed_proto_list = list_cons (protos, unclaimed_proto_list);      return;    }#if 0  assert (protos->next == 0);	/* only single ones allowed */#endif  for(i = 0; i < protos->count; i++)    {      struct objc_protocol* aProto = protos->list[i];      if (((size_t)aProto->class_pointer) == PROTOCOL_VERSION)	{	  /* assign class pointer */	  aProto->class_pointer = proto_class;	  /* init super protocols */	  __objc_init_protocols (aProto->protocol_list);	}      else if (protos->list[i]->class_pointer != proto_class)	{	  fprintf (stderr,		   "Version %d doesn't match runtime protocol version %d\n",		   (int)((char*)protos->list[i]->class_pointer-(char*)0),		   PROTOCOL_VERSION);	  abort ();	}    }}static void __objc_class_add_protocols (Class class,					struct objc_protocol_list* protos){  /* Well... */  if (! protos)    return;  /* Add it... */  protos->next = class->protocols;  class->protocols = protos;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美天堂亚洲电影院在线播放| 国产精品久久久久四虎| 欧美另类久久久品| 欧美亚洲国产一区在线观看网站| 91婷婷韩国欧美一区二区| 成人小视频免费在线观看| 国产91在线观看| 不卡视频在线观看| 本田岬高潮一区二区三区| 成人涩涩免费视频| 成人激情小说网站| av毛片久久久久**hd| 不卡区在线中文字幕| 91小视频在线观看| 一本久久a久久免费精品不卡| 91亚洲国产成人精品一区二区三 | 丝袜国产日韩另类美女| 亚洲大型综合色站| 青青青爽久久午夜综合久久午夜| 免播放器亚洲一区| 国产乱码精品一区二区三区av| 国产精品亚洲一区二区三区妖精| 国产麻豆欧美日韩一区| 国产成人aaaa| 91在线精品一区二区| 色一区在线观看| 在线91免费看| 欧美精品一区二区在线观看| 久久嫩草精品久久久精品一| 欧美国产日产图区| 亚洲激情在线播放| 奇米精品一区二区三区在线观看| 久久99国产乱子伦精品免费| 国产不卡视频在线观看| 91丝袜呻吟高潮美腿白嫩在线观看| 欧美在线高清视频| 日韩美女在线视频| 国产精品沙发午睡系列990531| 一区二区三区**美女毛片| 天堂va蜜桃一区二区三区| 狠狠色综合日日| av在线不卡电影| 欧美三级欧美一级| 久久综合成人精品亚洲另类欧美| 中文字幕五月欧美| 热久久一区二区| 国产成a人亚洲精| 在线观看不卡视频| 精品国产免费一区二区三区四区 | 亚洲福利视频一区二区| 国产一区二区在线看| 91在线小视频| 日韩一二三区视频| 国产精品不卡在线观看| 99视频精品在线| 欧美精品在线观看播放| 国产精品少妇自拍| 麻豆精品在线看| 色综合天天做天天爱| 日韩欧美激情在线| 亚洲另类春色校园小说| 国产一区二区精品久久| 欧美三级中文字| 欧美国产激情一区二区三区蜜月| 图片区小说区国产精品视频| 国产高清不卡一区| 在线观看91av| 亚洲视频一区二区在线| 久久黄色级2电影| 欧洲国内综合视频| 国产精品美女久久久久aⅴ国产馆| 午夜电影久久久| 99精品视频一区二区三区| 欧美精品一区二区蜜臀亚洲| 亚洲第一电影网| 91一区二区在线| 国产午夜久久久久| 日韩av二区在线播放| 在线视频国内一区二区| 国产精品久久久久毛片软件| 国内成人自拍视频| 日韩欧美在线不卡| 亚洲成a人片在线观看中文| 成人的网站免费观看| 久久久精品影视| 蜜桃视频一区二区三区| 欧美日韩国产小视频| 亚洲欧美色综合| 成人福利电影精品一区二区在线观看| 日韩免费高清av| 日韩 欧美一区二区三区| 在线精品视频免费播放| 亚洲欧美国产三级| 99热精品国产| 中文字幕一区在线观看| 粉嫩蜜臀av国产精品网站| 久久精品亚洲麻豆av一区二区| 久久av资源站| 欧美不卡一二三| 麻豆精品一二三| 欧美成人vps| 久久国产精品一区二区| 日韩欧美亚洲一区二区| 日本欧美在线观看| 7777精品久久久大香线蕉| 亚洲国产一区在线观看| 在线观看一区二区视频| 亚洲动漫第一页| 欧美精品在线观看播放| 免费成人av在线| 日韩欧美高清一区| 久久99精品国产麻豆婷婷洗澡| 日韩午夜在线播放| 久久99日本精品| 久久先锋影音av鲁色资源网| 国产一区二区三区精品视频| 久久久91精品国产一区二区精品| 国产乱码字幕精品高清av| 国产欧美日韩在线看| www.一区二区| 亚洲永久免费视频| 欧美精品电影在线播放| 日韩高清在线电影| 日韩精品一区在线| 国产精品一品二品| 国产精品不卡一区二区三区| 91福利在线观看| 亚洲成人激情av| 欧美mv和日韩mv国产网站| 高清国产午夜精品久久久久久| 亚洲视频在线观看一区| 欧美午夜电影网| 免费观看一级特黄欧美大片| 久久日韩粉嫩一区二区三区| 风间由美性色一区二区三区| 中文字幕字幕中文在线中不卡视频| 在线免费观看一区| 免费的成人av| 国产精品成人免费精品自在线观看| 在线观看视频一区二区| 美日韩黄色大片| 国产精品久久久久婷婷二区次| 欧美日韩视频在线观看一区二区三区| 男女激情视频一区| 国产精品天干天干在线综合| 在线中文字幕一区二区| 日本三级韩国三级欧美三级| 亚洲国产精品ⅴa在线观看| 欧美视频一区二区在线观看| 久久成人av少妇免费| 亚洲欧洲综合另类在线| 欧美大片日本大片免费观看| 成人av网站免费观看| 天使萌一区二区三区免费观看| 久久久精品国产免大香伊 | 日韩网站在线看片你懂的| 国产iv一区二区三区| 亚洲狠狠爱一区二区三区| 精品国产一区二区亚洲人成毛片| 91麻豆免费在线观看| 另类中文字幕网| 亚洲欧美日韩久久| 久久综合久久鬼色| 欧美亚洲一区二区在线| 丁香桃色午夜亚洲一区二区三区| 一片黄亚洲嫩模| 久久久国产午夜精品| 欧美精品 国产精品| 成人一区二区视频| 免费成人在线观看视频| 亚洲精品国产高清久久伦理二区 | 日本一不卡视频| 综合欧美一区二区三区| 26uuu色噜噜精品一区二区| 欧美中文字幕一区| 成人性色生活片| 狠狠色丁香久久婷婷综| 五月天一区二区| 一区二区三区自拍| 国产欧美一区在线| 日韩视频一区二区三区在线播放| 在线视频中文字幕一区二区| 成人免费看片app下载| 九色|91porny| 婷婷国产v国产偷v亚洲高清| 一区二区三区四区激情| 中文一区一区三区高中清不卡| 欧美大片日本大片免费观看| 欧美日韩免费高清一区色橹橹| 97久久超碰精品国产| 国产乱国产乱300精品| 美女爽到高潮91| 日韩av一区二| 日韩国产一二三区| 亚洲国产美女搞黄色| 一区二区三区在线免费播放| 亚洲精品中文字幕乱码三区| 国产精品毛片a∨一区二区三区| 久久影视一区二区| 精品国精品国产|