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

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

?? objc-act.c

?? GCC編譯器源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
static tree objc_super_template, objc_object_reference;static tree objc_object_id, objc_class_id, objc_id_id;static tree constant_string_id;static tree constant_string_type;static tree UOBJC_SUPER_decl;static tree method_context = NULL_TREE;static int  method_slot = 0;	/* Used by start_method_def, */#define BUFSIZE		1024static char *errbuf;	/* Buffer for error diagnostics *//* Data imported from tree.c.  */extern enum debug_info_type write_symbols;/* Data imported from toplev.c.  */extern char *dump_base_name;/* Generate code for GNU or NeXT runtime environment.  */#ifdef NEXT_OBJC_RUNTIMEint flag_next_runtime = 1;#elseint flag_next_runtime = 0;#endifint flag_typed_selectors;/* Open and close the file for outputting class declarations, if requested.  */int flag_gen_declaration = 0;FILE *gen_declaration_file;/* Warn if multiple methods are seen for the same selector, but with   different argument types.  */int warn_selector = 0;/* Warn if methods required by a protocol are not implemented in the    class adopting it.  When turned off, methods inherited to that   class are also considered implemented */int flag_warn_protocol = 1;/* Tells "encode_pointer/encode_aggregate" whether we are generating   type descriptors for instance variables (as opposed to methods).   Type descriptors for instance variables contain more information   than methods (for static typing and embedded structures). This   was added to support features being planned for dbkit2.  */static int generating_instance_variables = 0;/* Tells the compiler that this is a special run.  Do not perform   any compiling, instead we are to test some platform dependent   features and output a C header file with appropriate definitions. */static int print_struct_values = 0;/* Some platforms pass small structures through registers versus through   an invisible pointer.  Determine at what size structure is the    transition point between the two possibilities. */voidgenerate_struct_by_value_array (){  tree type;  tree field_decl, field_decl_chain;  int i, j;  int aggregate_in_mem[32];  int found = 0;  /* Presumbaly no platform passes 32 byte structures in a register. */  for (i = 1; i < 32; i++)    {      char buffer[5];      /* Create an unnamed struct that has `i' character components */      type = start_struct (RECORD_TYPE, NULL_TREE);      strcpy (buffer, "c1");      field_decl = create_builtin_decl (FIELD_DECL,					char_type_node,					buffer);      field_decl_chain = field_decl;      for (j = 1; j < i; j++)	{	  sprintf (buffer, "c%d", j + 1);	  field_decl = create_builtin_decl (FIELD_DECL,					    char_type_node,					    buffer);	  chainon (field_decl_chain, field_decl);	}      finish_struct (type, field_decl_chain, NULL_TREE);       aggregate_in_mem[i] = aggregate_value_p (type);      if (!aggregate_in_mem[i])	found = 1;    }   /* We found some structures that are returned in registers instead of memory     so output the necessary data. */  if (found)    {      for (i = 31; i >= 0;  i--)	if (!aggregate_in_mem[i])	  break;      printf ("#define OBJC_MAX_STRUCT_BY_VALUE %d\n\n", i);       /* The first member of the structure is always 0 because we don't handle	 structures with 0 members */      printf ("static int struct_forward_array[] = {\n  0");       for (j = 1; j <= i; j++)	printf (", %d", aggregate_in_mem[j]);      printf ("\n};\n");    }   exit (0);}voidlang_init (){#if !USE_CPPLIB  /* The beginning of the file is a new line; check for #.     With luck, we discover the real source file's name from that     and put it in input_filename.  */  ungetc (check_newline (), finput);#endif  /* The line number can be -1 if we had -g3 and the input file     had a directive specifying line 0.  But we want predefined     functions to have a line number of 0, not -1.  */  if (lineno == -1)    lineno = 0;  /* If gen_declaration desired, open the output file.  */  if (flag_gen_declaration)    {      int dump_base_name_length = strlen (dump_base_name);      register char *dumpname = (char *) xmalloc (dump_base_name_length + 7);      strcpy (dumpname, dump_base_name);      strcat (dumpname, ".decl");      gen_declaration_file = fopen (dumpname, "w");      if (gen_declaration_file == 0)	pfatal_with_name (dumpname);    }  if (flag_next_runtime)    {      TAG_GETCLASS = "objc_getClass";      TAG_GETMETACLASS = "objc_getMetaClass";      TAG_MSGSEND = "objc_msgSend";      TAG_MSGSENDSUPER = "objc_msgSendSuper";      TAG_EXECCLASS = "__objc_execClass";    }  else    {      TAG_GETCLASS = "objc_get_class";      TAG_GETMETACLASS = "objc_get_meta_class";      TAG_MSGSEND = "objc_msg_lookup";      TAG_MSGSENDSUPER = "objc_msg_lookup_super";      TAG_EXECCLASS = "__objc_exec_class";      flag_typed_selectors = 1;    }  if (doing_objc_thang)    init_objc ();  if (print_struct_values)    generate_struct_by_value_array ();}static voidobjc_fatal (){  fatal ("Objective-C text in C source file");}voidfinish_file (){  if (doing_objc_thang)    finish_objc ();		/* Objective-C finalization */  if (gen_declaration_file)    fclose (gen_declaration_file);}voidlang_finish (){}char *lang_identify (){  return "objc";}intlang_decode_option (p)     char *p;{  if (!strcmp (p, "-lang-objc"))    doing_objc_thang = 1;  else if (!strcmp (p, "-gen-decls"))    flag_gen_declaration = 1;  else if (!strcmp (p, "-Wselector"))    warn_selector = 1;  else if (!strcmp (p, "-Wno-selector"))    warn_selector = 0;  else if (!strcmp (p, "-Wprotocol"))    flag_warn_protocol = 1;  else if (!strcmp (p, "-Wno-protocol"))    flag_warn_protocol = 0;  else if (!strcmp (p, "-fgnu-runtime"))    flag_next_runtime = 0;  else if (!strcmp (p, "-fno-next-runtime"))    flag_next_runtime = 0;  else if (!strcmp (p, "-fno-gnu-runtime"))    flag_next_runtime = 1;  else if (!strcmp (p, "-fnext-runtime"))    flag_next_runtime = 1;  else if (!strcmp (p, "-print-objc-runtime-info"))    print_struct_values = 1;  else    return c_decode_option (p);  return 1;}static treedefine_decl (declarator, declspecs)     tree declarator;     tree declspecs;{  tree decl = start_decl (declarator, declspecs, 0, NULL_TREE, NULL_TREE);  finish_decl (decl, NULL_TREE, NULL_TREE);  return decl;}/* Return 1 if LHS and RHS are compatible types for assignment or   various other operations.  Return 0 if they are incompatible, and   return -1 if we choose to not decide.  When the operation is   REFLEXIVE, check for compatibility in either direction.   For statically typed objects, an assignment of the form `a' = `b'   is permitted if:   `a' is of type "id",   `a' and `b' are the same class type, or   `a' and `b' are of class types A and B such that B is a descendant of A.  */intmaybe_objc_comptypes (lhs, rhs, reflexive)     tree lhs, rhs;     int reflexive;{  if (doing_objc_thang)    return objc_comptypes (lhs, rhs, reflexive);  return -1;}static treelookup_method_in_protocol_list (rproto_list, sel_name, class_meth)   tree rproto_list;   tree sel_name;   int class_meth;{   tree rproto, p;   tree fnd = 0;   for (rproto = rproto_list; rproto; rproto = TREE_CHAIN (rproto))     {        p = TREE_VALUE (rproto);	if (TREE_CODE (p) == PROTOCOL_INTERFACE_TYPE)	  {	    if ((fnd = lookup_method (class_meth				      ? PROTOCOL_CLS_METHODS (p)				      : PROTOCOL_NST_METHODS (p), sel_name)))	      ;	    else if (PROTOCOL_LIST (p))	      fnd = lookup_method_in_protocol_list (PROTOCOL_LIST (p),						    sel_name, class_meth);	  }	else	  ; /* An identifier...if we could not find a protocol.  */	if (fnd)	  return fnd;     }   return 0;}static treelookup_protocol_in_reflist (rproto_list, lproto)   tree rproto_list;   tree lproto;{   tree rproto, p;   /* Make sure the protocol is support by the object on the rhs.  */   if (TREE_CODE (lproto) == PROTOCOL_INTERFACE_TYPE)     {       tree fnd = 0;       for (rproto = rproto_list; rproto; rproto = TREE_CHAIN (rproto))	 {	   p = TREE_VALUE (rproto);	   if (TREE_CODE (p) == PROTOCOL_INTERFACE_TYPE)	     {	       if (lproto == p)		 fnd = lproto;	       else if (PROTOCOL_LIST (p))		 fnd = lookup_protocol_in_reflist (PROTOCOL_LIST (p), lproto);	     }	   if (fnd)	     return fnd;	 }     }   else     ; /* An identifier...if we could not find a protocol.  */   return 0;}/* Return 1 if LHS and RHS are compatible types for assignment   or various other operations.  Return 0 if they are incompatible,   and return -1 if we choose to not decide.  When the operation   is REFLEXIVE, check for compatibility in either direction.  */intobjc_comptypes (lhs, rhs, reflexive)     tree lhs;     tree rhs;     int reflexive;{  /* New clause for protocols.  */  if (TREE_CODE (lhs) == POINTER_TYPE      && TREE_CODE (TREE_TYPE (lhs)) == RECORD_TYPE      && TREE_CODE (rhs) == POINTER_TYPE      && TREE_CODE (TREE_TYPE (rhs)) == RECORD_TYPE)    {      int lhs_is_proto = IS_PROTOCOL_QUALIFIED_ID (lhs);      int rhs_is_proto = IS_PROTOCOL_QUALIFIED_ID (rhs);      if (lhs_is_proto)        {	  tree lproto, lproto_list = TYPE_PROTOCOL_LIST (lhs);	  tree rproto, rproto_list;	  tree p;	  if (rhs_is_proto)	    {	      rproto_list = TYPE_PROTOCOL_LIST (rhs);	      /* Make sure the protocol is supported by the object		 on the rhs.  */	      for (lproto = lproto_list; lproto; lproto = TREE_CHAIN (lproto))		{		  p = TREE_VALUE (lproto);		  rproto = lookup_protocol_in_reflist (rproto_list, p);		  if (!rproto)		    warning ("object does not conform to the `%s' protocol",			     IDENTIFIER_POINTER (PROTOCOL_NAME (p)));		}	    }	  else if (TYPED_OBJECT (TREE_TYPE (rhs)))	    {	      tree rname = TYPE_NAME (TREE_TYPE (rhs));	      tree rinter;	      /* Make sure the protocol is supported by the object		 on the rhs.  */	      for (lproto = lproto_list; lproto; lproto = TREE_CHAIN (lproto))		{		  p = TREE_VALUE (lproto);		  rproto = 0;		  rinter = lookup_interface (rname);		  while (rinter && !rproto)		    {		      tree cat;		      rproto_list = CLASS_PROTOCOL_LIST (rinter);		      rproto = lookup_protocol_in_reflist (rproto_list, p);		      /* Check for protocols adopted by categories.  */		      cat = CLASS_CATEGORY_LIST (rinter);		      while (cat && !rproto)			{			  rproto_list = CLASS_PROTOCOL_LIST (cat);			  rproto = lookup_protocol_in_reflist (rproto_list, p);			  cat = CLASS_CATEGORY_LIST (cat);			}		      rinter = lookup_interface (CLASS_SUPER_NAME (rinter));		    }		  if (!rproto)		    warning ("class `%s' does not implement the `%s' protocol",	                     IDENTIFIER_POINTER (TYPE_NAME (TREE_TYPE (rhs))),		             IDENTIFIER_POINTER (PROTOCOL_NAME (p)));		}	    }	  /* May change...based on whether there was any mismatch */          return 1;        }      else if (rhs_is_proto)	/* Lhs is not a protocol...warn if it is statically typed */	return (TYPED_OBJECT (TREE_TYPE (lhs)) != 0);      else	/* Defer to comptypes .*/	return -1;    }  else if (TREE_CODE (lhs) == RECORD_TYPE && TREE_CODE (rhs) == RECORD_TYPE)    ; /* Fall thru.  This is the case we have been handling all along */  else    /* Defer to comptypes.  */    return -1;  /* `id' = `<class> *', `<class> *' = `id' */  if ((TYPE_NAME (lhs) == objc_object_id && TYPED_OBJECT (rhs))      || (TYPE_NAME (rhs) == objc_object_id && TYPED_OBJECT (lhs)))    return 1;  /* `id' = `Class', `Class' = `id' */  else if ((TYPE_NAME (lhs) == objc_object_id	    && TYPE_NAME (rhs) == objc_class_id)	   || (TYPE_NAME (lhs) == objc_class_id	       && TYPE_NAME (rhs) == objc_object_id))    return 1;  /* `<class> *' = `<class> *' */  else if (TYPED_OBJECT (lhs) && TYPED_OBJECT (rhs))    {      tree lname = TYPE_NAME (lhs);      tree rname = TYPE_NAME (rhs);      tree inter;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产高清精品久久久久| 综合激情成人伊人| 欧美日韩视频在线一区二区 | 亚洲视频小说图片| 欧美韩日一区二区三区| 国产人伦精品一区二区| 久久精品网站免费观看| 欧美国产1区2区| 国产精品欧美一级免费| 亚洲欧洲精品一区二区精品久久久| 国产婷婷精品av在线| 国产精品情趣视频| 亚洲欧洲日韩女同| 亚洲五月六月丁香激情| 日韩国产欧美三级| 国产盗摄视频一区二区三区| 国产精品一区二区在线观看网站 | 成人欧美一区二区三区视频网页| 欧美国产欧美亚州国产日韩mv天天看完整| 久久免费精品国产久精品久久久久| 久久久精品2019中文字幕之3| 国产精品无人区| 亚洲va欧美va人人爽| 另类的小说在线视频另类成人小视频在线| 精品一区二区三区久久| www.日本不卡| 欧美一区二区久久| 国产精品少妇自拍| 日本一区中文字幕| 成人精品免费看| 欧美日本一区二区三区| 久久久av毛片精品| 亚洲国产婷婷综合在线精品| 免费一级片91| 99久久精品情趣| 日韩欧美高清dvd碟片| 亚洲色图在线视频| 精品综合久久久久久8888| 99久久久国产精品| 精品电影一区二区三区| 亚洲精品一二三| 激情成人综合网| 欧美午夜影院一区| 中文字幕日韩av资源站| 日本va欧美va瓶| 91免费版pro下载短视频| 精品美女在线观看| 亚洲主播在线播放| av一区二区不卡| 久久综合九色综合97_久久久| 亚洲成人手机在线| 一本一道综合狠狠老| 久久色在线视频| 免费在线观看日韩欧美| 色婷婷av一区二区三区软件| 国产亚洲综合在线| 九九国产精品视频| 欧美成人一区二区三区在线观看| 亚洲乱码中文字幕综合| 成人av影视在线观看| 精品少妇一区二区三区免费观看| 一二三四社区欧美黄| av一区二区三区黑人| 久久精品视频一区二区| 国内精品久久久久影院薰衣草 | 日韩欧美的一区| 亚洲与欧洲av电影| 色乱码一区二区三区88| 国产精品成人免费| 99国产精品99久久久久久| 国产日产亚洲精品系列| 国产精品2024| 国产精品视频你懂的| 国产91丝袜在线播放| 久久精品夜夜夜夜久久| 国产精品一级在线| 欧美国产精品一区二区| 粉嫩高潮美女一区二区三区 | 成人免费视频一区| 国产精品色哟哟| www.成人在线| 亚洲精品老司机| 欧美三级电影网| 日本在线不卡视频一二三区| 欧美成人精品1314www| 激情图区综合网| 国产精品五月天| 91成人免费在线视频| 亚洲国产成人av网| 欧美电影免费观看高清完整版在线| 另类小说综合欧美亚洲| 欧美精品一区二区三区高清aⅴ| 国产一区在线精品| 中文字幕一区二区日韩精品绯色| 91福利在线播放| 奇米影视在线99精品| 久久女同性恋中文字幕| 91首页免费视频| 日韩电影在线观看电影| 国产婷婷色一区二区三区| 日本韩国一区二区三区视频| 午夜精品一区二区三区免费视频 | 国产日本亚洲高清| 一本色道久久综合亚洲91| 日韩精品一卡二卡三卡四卡无卡| 精品黑人一区二区三区久久| 成人av影院在线| 日韩成人一区二区| 国产精品国产精品国产专区不蜜| 色天使色偷偷av一区二区| 蜜臀精品一区二区三区在线观看| 国产精品丝袜91| 欧美精品精品一区| 丁香六月久久综合狠狠色| 亚洲第一成人在线| 欧美高清在线视频| 欧美一区二区精美| 99精品欧美一区二区三区小说 | 午夜精品福利一区二区蜜股av | 久久久综合九色合综国产精品| 不卡av在线网| 激情六月婷婷综合| 亚洲成av人片在线观看| 亚洲国产精品精华液ab| 日韩欧美区一区二| 欧美日韩国产精选| 91猫先生在线| 成人免费高清视频| 国产在线不卡一区| 日本伊人午夜精品| 亚洲国产精品天堂| 亚洲精品中文字幕在线观看| 久久久99久久精品欧美| 欧美成人精品福利| 制服丝袜一区二区三区| 欧洲亚洲精品在线| 日本韩国一区二区三区| k8久久久一区二区三区| 国产成人在线观看免费网站| 日本中文在线一区| 日韩和欧美一区二区三区| 亚洲色图欧美激情| 中文字幕在线观看不卡视频| 国产亚洲欧美日韩日本| 久久奇米777| 久久久www成人免费无遮挡大片| 日韩欧美一区二区免费| 69堂成人精品免费视频| 欧美日韩一区久久| 在线观看av不卡| 欧美性猛交xxxxxx富婆| 欧美曰成人黄网| 欧美日韩不卡视频| 欧美日本不卡视频| 欧美一区二区三区免费在线看| 欧美日韩久久久| 91麻豆精品国产91久久久资源速度 | 亚洲精品国产精华液| 国产欧美一区二区三区鸳鸯浴 | 国产精品二三区| 亚洲国产精品精华液2区45| 国产午夜一区二区三区| 欧美激情中文字幕| 日韩理论片中文av| 亚洲第一会所有码转帖| 日本欧美一区二区三区乱码| 午夜精品在线看| 精品伊人久久久久7777人| 国产美女久久久久| 97久久精品人人爽人人爽蜜臀| 91丨porny丨在线| 制服丝袜av成人在线看| 欧美大片一区二区| 中文乱码免费一区二区 | 色婷婷综合久久久中文一区二区| 色一情一乱一乱一91av| 欧美裸体一区二区三区| 欧美mv和日韩mv国产网站| 国产女人18水真多18精品一级做| 日韩一区欧美小说| 日韩高清在线电影| 国产成人av一区二区三区在线| 99久久er热在这里只有精品66| 91国内精品野花午夜精品 | 97精品国产露脸对白| 在线看一区二区| 精品成人免费观看| 亚洲精品视频在线观看免费 | 久久久久久久精| 亚洲另类春色校园小说| 麻豆精品蜜桃视频网站| 成人小视频在线| 欧美一区二区三区四区视频| 国产欧美1区2区3区| 亚洲图片欧美色图| eeuss鲁片一区二区三区在线观看| 欧美三级三级三级| 国产精品久久久一区麻豆最新章节| 亚洲影院久久精品| 成人黄页毛片网站|