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

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

?? objc-act.c

?? GUN開源阻止下的編譯器GCC
?? C
?? 第 1 頁 / 共 5 頁
字號:
  tree type_decl = lookup_name (objc_id_id);  tree type;  if (type_decl && TREE_CODE (type_decl) == TYPE_DECL)    {      type = TREE_TYPE (type_decl);      if (TYPE_MAIN_VARIANT (type) != id_type)	warning ("Unexpected type for `id' (%s)",		gen_declaration (type, errbuf));    }  else    fatal ("Undefined type `id', please import <objc/objc.h>");  /* This clause creates a new pointer type that is qualified with     the protocol specification...this info is used later to do more     elaborate type checking.  */  if (protocols)    {      tree t, m = TYPE_MAIN_VARIANT (type);      push_obstacks_nochange ();      end_temporary_allocation ();      t = copy_node (type);      TYPE_BINFO (t) = make_tree_vec (2);      pop_obstacks ();      /* Add this type to the chain of variants of TYPE.  */      TYPE_NEXT_VARIANT (t) = TYPE_NEXT_VARIANT (m);      TYPE_NEXT_VARIANT (m) = t;      /* Look up protocols...and install in lang specific list */      TYPE_PROTOCOL_LIST (t) = lookup_and_install_protocols (protocols);      /* This forces a new pointer type to be created later	 (in build_pointer_type)...so that the new template	 we just created will actually be used...what a hack!  */      if (TYPE_POINTER_TO (t))	TYPE_POINTER_TO (t) = NULL;      type = t;    }  return type;}static treelookup_and_install_protocols (protocols)     tree protocols;{  tree proto;  tree prev = NULL;  tree return_value = protocols;  for (proto = protocols; proto; proto = TREE_CHAIN (proto))    {      tree ident = TREE_VALUE (proto);      tree p = lookup_protocol (ident);      if (!p)	{	  error ("Cannot find protocol declaration for `%s'",		 IDENTIFIER_POINTER (ident));	  if (prev)	    TREE_CHAIN (prev) = TREE_CHAIN (proto);	  else	    return_value = TREE_CHAIN (proto);	}      else	{	  /* Replace identifier with actual protocol node. */	  TREE_VALUE (proto) = p;	  prev = proto;	}    }  return return_value;}/* Create and push a decl for a built-in external variable or field NAME.   CODE says which.   TYPE is its data type.  */static treecreate_builtin_decl (code, type, name)     enum tree_code code;     tree type;     char *name;{  tree decl = build_decl (code, get_identifier (name), type);  if (code == VAR_DECL)    {      TREE_STATIC (decl) = 1;      make_decl_rtl (decl, 0, 1);      pushdecl (decl);    }  DECL_ARTIFICIAL (decl) = 1;  return decl;}/* Purpose: "play" parser, creating/installing representations   of the declarations that are required by Objective-C.   Model: 	type_spec--------->sc_spec 	(tree_list)        (tree_list) 	    |                  | 	    |                  | 	identifier_node    identifier_node  */static voidsynth_module_prologue (){  tree temp_type;  tree super_p;  /* Defined in `objc.h' */  objc_object_id = get_identifier (TAG_OBJECT);  objc_object_reference = xref_tag (RECORD_TYPE, objc_object_id);  id_type = build_pointer_type (objc_object_reference);  objc_id_id = get_identifier (TYPE_ID);  objc_class_id = get_identifier (TAG_CLASS);  objc_class_type = build_pointer_type (xref_tag (RECORD_TYPE, objc_class_id));  protocol_type = build_pointer_type (xref_tag (RECORD_TYPE,				get_identifier (PROTOCOL_OBJECT_CLASS_NAME)));  /* Declare type of selector-objects that represent an operation name.  */#ifdef OBJC_INT_SELECTORS  /* `unsigned int' */  selector_type = unsigned_type_node;#else  /* `struct objc_selector *' */  selector_type    = build_pointer_type (xref_tag (RECORD_TYPE,				    get_identifier (TAG_SELECTOR)));#endif /* not OBJC_INT_SELECTORS */  /* Forward declare type, or else the prototype for msgSendSuper will     complain.  */  super_p = build_pointer_type (xref_tag (RECORD_TYPE,					  get_identifier (TAG_SUPER)));  /* id objc_msgSend (id, SEL, ...); */  temp_type    = build_function_type (id_type,			   tree_cons (NULL_TREE, id_type,				      tree_cons (NULL_TREE, selector_type,						 NULL_TREE)));  if (! flag_next_runtime)    {      umsg_decl = build_decl (FUNCTION_DECL,			      get_identifier (TAG_MSGSEND), temp_type);      DECL_EXTERNAL (umsg_decl) = 1;      TREE_PUBLIC (umsg_decl) = 1;      DECL_INLINE (umsg_decl) = 1;      DECL_ARTIFICIAL (umsg_decl) = 1;      if (flag_traditional && TAG_MSGSEND[0] != '_')	DECL_BUILT_IN_NONANSI (umsg_decl) = 1;      make_decl_rtl (umsg_decl, NULL_PTR, 1);      pushdecl (umsg_decl);    }  else    umsg_decl = builtin_function (TAG_MSGSEND, temp_type, NOT_BUILT_IN, 0);  /* id objc_msgSendSuper (struct objc_super *, SEL, ...); */  temp_type    = build_function_type (id_type,			   tree_cons (NULL_TREE, super_p,				      tree_cons (NULL_TREE, selector_type,						 NULL_TREE)));  umsg_super_decl = builtin_function (TAG_MSGSENDSUPER,				     temp_type, NOT_BUILT_IN, 0);  /* id objc_getClass (const char *); */  temp_type = build_function_type (id_type,			tree_cons (NULL_TREE,				   const_string_type_node,				   tree_cons (NULL_TREE, void_type_node,					      NULL_TREE)));  objc_get_class_decl    = builtin_function (TAG_GETCLASS, temp_type, NOT_BUILT_IN, 0);  /* id objc_getMetaClass (const char *); */  objc_get_meta_class_decl    = builtin_function (TAG_GETMETACLASS, temp_type, NOT_BUILT_IN, 0);  /* static SEL _OBJC_SELECTOR_TABLE[]; */  if (! flag_next_runtime)    {      if (flag_typed_selectors)	{	  /* Suppress outputting debug symbols, because	     dbxout_init hasn'r been called yet.  */	  enum debug_info_type save_write_symbols = write_symbols;	  write_symbols = NO_DEBUG;	  build_selector_template ();	  temp_type = build_array_type (objc_selector_template, NULL_TREE);	  write_symbols = save_write_symbols;	}      else	temp_type = build_array_type (selector_type, NULL_TREE);      layout_type (temp_type);      UOBJC_SELECTOR_TABLE_decl	= create_builtin_decl (VAR_DECL, temp_type,			       "_OBJC_SELECTOR_TABLE");      /* Avoid warning when not sending messages.  */      TREE_USED (UOBJC_SELECTOR_TABLE_decl) = 1;    }  generate_forward_declaration_to_string_table ();  /* Forward declare constant_string_id and constant_string_type.  */  constant_string_id = get_identifier (STRING_OBJECT_CLASS_NAME);  constant_string_type = xref_tag (RECORD_TYPE, constant_string_id);}/* Custom build_string which sets TREE_TYPE!  */static treemy_build_string (len, str)     int len;     char *str;{  int wide_flag = 0;  tree a_string = build_string (len, str);  /* Some code from combine_strings, which is local to c-parse.y.  */  if (TREE_TYPE (a_string) == int_array_type_node)    wide_flag = 1;  TREE_TYPE (a_string)    = build_array_type (wide_flag ? integer_type_node : char_type_node,			build_index_type (build_int_2 (len - 1, 0)));  TREE_CONSTANT (a_string) = 1;	/* Puts string in the readonly segment */  TREE_STATIC (a_string) = 1;  return a_string;}/* Return a newly constructed OBJC_STRING_CST node whose value is   the LEN characters at STR.   The TREE_TYPE is not initialized.  */treebuild_objc_string (len, str)     int len;     char *str;{  tree s = build_string (len, str);  TREE_SET_CODE (s, OBJC_STRING_CST);  return s;}/* Given a chain of OBJC_STRING_CST's, build a static instance of   NXConstanString which points at the concatenation of those strings.   We place the string object in the __string_objects section of the   __OBJC segment.  The Objective-C runtime will initialize the isa   pointers of the string objects to point at the NXConstandString class   object.  */treebuild_objc_string_object (strings)     tree strings;{  tree string, initlist, constructor;  int length;  if (!doing_objc_thang)    objc_fatal ();  if (lookup_interface (constant_string_id) == NULL_TREE)    {      error ("Cannot find interface declaration for `%s'",	     IDENTIFIER_POINTER (constant_string_id));      return error_mark_node;    }  add_class_reference (constant_string_id);  /* Combine_strings will work for OBJC_STRING_CST's too.  */  string = combine_strings (strings);  TREE_SET_CODE (string, STRING_CST);  length = TREE_STRING_LENGTH (string) - 1;  if (! flag_next_runtime)    {      push_obstacks_nochange ();      end_temporary_allocation ();      if (! TREE_PERMANENT (strings))	string = my_build_string (length + 1,				  TREE_STRING_POINTER (string));    }  /* & ((NXConstantString) {0, string, length})  */  initlist = build_tree_list (NULL_TREE, build_int_2 (0, 0));  initlist    = tree_cons (NULL_TREE, copy_node (build_unary_op (ADDR_EXPR, string, 1)),		 initlist);  initlist = tree_cons (NULL_TREE, build_int_2 (length, 0), initlist);  constructor = build_constructor (constant_string_type, nreverse (initlist));  if (!flag_next_runtime)    {      constructor	= objc_add_static_instance (constructor, constant_string_type);      pop_obstacks ();    }  return (build_unary_op (ADDR_EXPR, constructor, 1));}/* Declare a static instance of CLASS_DECL initialized by CONSTRUCTOR.  */static treeobjc_add_static_instance (constructor, class_decl)     tree constructor, class_decl;{  static int num_static_inst;  tree *chain, decl, decl_spec, decl_expr;  char buf[256];  push_obstacks_nochange ();  end_temporary_allocation ();  /* Find the list of static instances for the CLASS_DECL.  Create one if     not found.  */  for (chain = &objc_static_instances;       *chain && TREE_VALUE (*chain) != class_decl;       chain = &TREE_CHAIN (*chain));  if (!*chain)    {      *chain = tree_cons (NULL_TREE, class_decl, NULL_TREE);      add_objc_string (TYPE_NAME (class_decl), class_names);    }  sprintf (buf, "_OBJC_INSTANCE_%d", num_static_inst++);  decl = build_decl (VAR_DECL, get_identifier (buf), class_decl);  DECL_COMMON (decl) = 1;  TREE_STATIC (decl) = 1;  DECL_ARTIFICIAL (decl) = 1;  pushdecl_top_level (decl);  rest_of_decl_compilation (decl, 0, 1, 0);  /* Do this here so it gets output later instead of possibly     inside something else we are writing.  */  DECL_INITIAL (decl) = constructor;  /* Add the DECL to the head of this CLASS' list.  */  TREE_PURPOSE (*chain) = tree_cons (NULL_TREE, decl, TREE_PURPOSE (*chain));  pop_obstacks ();  return decl;}/* Build a static constant CONSTRUCTOR   with type TYPE and elements ELTS.  */static treebuild_constructor (type, elts)     tree type, elts;{  tree constructor = build (CONSTRUCTOR, type, NULL_TREE, elts);  TREE_CONSTANT (constructor) = 1;  TREE_STATIC (constructor) = 1;  TREE_READONLY (constructor) = 1;  return constructor;}/* Take care of defining and initializing _OBJC_SYMBOLS.  *//* Predefine the following data type:   struct _objc_symtab   {     long sel_ref_cnt;     SEL *refs;     short cls_def_cnt;     short cat_def_cnt;     void *defs[cls_def_cnt + cat_def_cnt];   }; */static voidbuild_objc_symtab_template (){  tree field_decl, field_decl_chain, index;  objc_symtab_template    = start_struct (RECORD_TYPE, get_identifier (UTAG_SYMTAB));  /* long sel_ref_cnt; */  field_decl = create_builtin_decl (FIELD_DECL,				    long_integer_type_node,				    "sel_ref_cnt");  field_decl_chain = field_decl;  /* SEL *refs; */  field_decl = create_builtin_decl (FIELD_DECL,				    build_pointer_type (selector_type),				    "refs");  chainon (field_decl_chain, field_decl);  /* short cls_def_cnt; */  field_decl = create_builtin_decl (FIELD_DECL,				    short_integer_type_node,				    "cls_def_cnt");  chainon (field_decl_chain, field_decl);  /* short cat_def_cnt; */  field_decl = create_builtin_decl (FIELD_DECL,				    short_integer_type_node,				    "cat_def_cnt");  chainon (field_decl_chain, field_decl);  /* void *defs[cls_def_cnt + cat_def_cnt]; */  index = build_index_type (build_int_2 (imp_count + cat_count - 1,					 imp_count == 0 && cat_count == 0					 ? -1 : 0));  field_decl = create_builtin_decl (FIELD_DECL,				    build_array_type (ptr_type_node, index),				    "defs");  chainon (field_decl_chain, field_decl);  finish_struct (objc_symtab_template, field_decl_chain, NULL_TREE);}/* Create the initial value for the `defs' field of _objc_symtab.   This is a CONSTRUCTOR.  */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费视频视频| 久久久欧美精品sm网站| 欧美日韩亚洲不卡| 久久婷婷成人综合色| 亚洲影视在线播放| 国产美女主播视频一区| 欧美三级电影网| 一区二区三区av电影| 国产一区二区三区不卡在线观看 | 97久久精品人人做人人爽50路| 欧美视频完全免费看| 国产精品热久久久久夜色精品三区 | 日本va欧美va精品发布| 成人开心网精品视频| 久久中文字幕电影| 蜜桃91丨九色丨蝌蚪91桃色| 一本大道久久a久久精品综合| 久久久久久综合| 精品在线一区二区| 91精品黄色片免费大全| 亚洲自拍欧美精品| 91精品1区2区| 国产精品久久久久久一区二区三区| 狠狠色丁香婷婷综合久久片| 欧美一卡二卡三卡四卡| 一级特黄大欧美久久久| 99精品视频在线播放观看| 中文字幕精品—区二区四季| 国产成人日日夜夜| 久久精品一区二区三区四区| av电影在线观看一区| 精品国产亚洲在线| 精品综合久久久久久8888| 日韩一区二区三区精品视频 | 国产乱妇无码大片在线观看| 精品国产区一区| 国内久久精品视频| 久久免费国产精品| 国产99久久久精品| 国产精品乱人伦中文| 91亚洲资源网| 亚洲图片欧美综合| 欧美老年两性高潮| 国产在线一区二区| 国产精品天天看| 99久久国产综合精品女不卡| 日韩伦理电影网| 欧美日韩精品免费| 久久成人羞羞网站| 国产精品欧美一级免费| 色综合天天狠狠| 日韩电影在线观看电影| 日韩精品一区二区三区在线| 国内偷窥港台综合视频在线播放| 久久久不卡影院| 色8久久人人97超碰香蕉987| 丝袜亚洲精品中文字幕一区| 精品日韩一区二区| av中文一区二区三区| 亚洲最新在线观看| 日韩免费一区二区三区在线播放| 国产精品综合网| 亚洲一区二区成人在线观看| 日韩一区二区电影网| 成人激情午夜影院| 亚洲国产欧美一区二区三区丁香婷| 欧美一区二区三区免费大片| 国产成人欧美日韩在线电影| 一区二区三区中文在线| 日韩美女视频在线| 91在线丨porny丨国产| 日本成人在线看| 中文字幕欧美一| 日韩精品一区二区在线| 91激情在线视频| 久久av中文字幕片| 亚洲午夜久久久久中文字幕久| 久久新电视剧免费观看| 色吊一区二区三区| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美在线视频日韩| 国产精品18久久久久久久久| 一区二区三区影院| 国产女人aaa级久久久级| 欧美日韩1234| www.66久久| 精品一区二区三区在线观看国产| 一个色在线综合| 国产精品色噜噜| 欧美v国产在线一区二区三区| 色噜噜狠狠色综合中国| 91麻豆成人久久精品二区三区| 六月丁香综合在线视频| 亚洲mv在线观看| 亚洲人亚洲人成电影网站色| 久久精品夜夜夜夜久久| 91精品国产品国语在线不卡| 91国产丝袜在线播放| 粉嫩13p一区二区三区| 韩国女主播一区| 午夜视频一区二区| 午夜电影网亚洲视频| 亚洲精品综合在线| 中文字幕一区二区三区四区不卡 | 蜜臀国产一区二区三区在线播放| 一区二区三区av电影 | 99riav久久精品riav| 国产一区不卡视频| 国产在线一区二区| 狠狠狠色丁香婷婷综合激情 | 亚洲码国产岛国毛片在线| 国产日韩一级二级三级| 久久久国产午夜精品| 久久免费精品国产久精品久久久久 | 日本一区二区三区电影| 精品美女一区二区| 久久奇米777| 久久久久久久久97黄色工厂| 日韩精品中午字幕| 精品久久五月天| 精品成人私密视频| 久久久美女毛片| 国产日韩欧美不卡| 性感美女极品91精品| 偷偷要91色婷婷| 乱中年女人伦av一区二区| 久久精品av麻豆的观看方式| 精品亚洲成a人| 国产又黄又大久久| 国产精品88888| 99麻豆久久久国产精品免费| 不卡视频一二三| 日本韩国一区二区三区| 欧美精品国产精品| 26uuu成人网一区二区三区| 久久久精品欧美丰满| 18成人在线观看| 亚洲一区在线看| 免费成人美女在线观看| 国产盗摄精品一区二区三区在线| 高清av一区二区| 欧美性xxxxxx少妇| 久久久精品影视| 亚洲自拍偷拍综合| 国模无码大尺度一区二区三区| 国产成人福利片| 在线观看91精品国产入口| 日韩亚洲欧美在线观看| 日本一区二区三区久久久久久久久不| 亚洲天堂免费看| 麻豆国产91在线播放| av动漫一区二区| 日韩欧美一级二级三级久久久| 国产午夜精品一区二区三区嫩草 | 色婷婷av一区二区三区之一色屋| 欧美亚男人的天堂| 国产性色一区二区| 五月婷婷激情综合| 91在线播放网址| 欧美一区二区黄| 亚洲精品日产精品乱码不卡| 激情综合网最新| 欧美色精品在线视频| 久久精品视频在线看| 亚洲第一激情av| 成人黄动漫网站免费app| 日韩一区二区在线观看| 亚洲欧美一区二区三区久本道91| 久久国产精品99久久人人澡| 精品久久久久久无| 尤物在线观看一区| 成人高清av在线| 精品电影一区二区| 亚洲成人7777| 91在线无精精品入口| 国产日韩成人精品| 韩国午夜理伦三级不卡影院| 欧美日韩精品电影| 亚洲综合色自拍一区| 成人激情免费电影网址| 26uuu色噜噜精品一区二区| 污片在线观看一区二区| 91国模大尺度私拍在线视频| 国产精品白丝在线| 国产经典欧美精品| 精品国产乱码久久久久久蜜臀| 午夜日韩在线观看| 欧美日韩中字一区| 亚洲高清视频中文字幕| 色一区在线观看| 亚洲欧美在线视频观看| 成人免费毛片aaaaa**| 国产性做久久久久久| 国产传媒日韩欧美成人| 精品国产123| 久久99国产精品免费| 日韩亚洲欧美成人一区| 蜜桃一区二区三区四区| 欧美一区二区二区| 久久国产精品第一页|