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

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

?? objc-act.c

?? GCC編譯器源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
  tree cl_chain, in_chain, type;  int num_inst, num_class;  char buf[256];  if (flag_next_runtime)    abort ();  for (cl_chain = objc_static_instances, num_class = 0;       cl_chain; cl_chain = TREE_CHAIN (cl_chain), num_class++)    {      for (num_inst = 0, in_chain = TREE_PURPOSE (cl_chain);	   in_chain; num_inst++, in_chain = TREE_CHAIN (in_chain));      sprintf (buf, "_OBJC_STATIC_INSTANCES_%d", num_class);      ident = get_identifier (buf);      expr_decl = build_nt (ARRAY_REF, ident, NULL_TREE);      decl_spec = tree_cons (NULL_TREE, build_pointer_type (void_type_node),			     build_tree_list (NULL_TREE,					      ridpointers[(int) RID_STATIC]));      decl = start_decl (expr_decl, decl_spec, 1, NULL_TREE, NULL_TREE);      DECL_CONTEXT (decl) = 0;      DECL_ARTIFICIAL (decl) = 1;      /* Output {class_name, ...}.  */      class = TREE_VALUE (cl_chain);      class_name = get_objc_string_decl (TYPE_NAME (class), class_names);      initlist = build_tree_list (NULL_TREE,				  build_unary_op (ADDR_EXPR, class_name, 1));      /* Output {..., instance, ...}.  */      for (in_chain = TREE_PURPOSE (cl_chain);	   in_chain; in_chain = TREE_CHAIN (in_chain))	{	  expr = build_unary_op (ADDR_EXPR, TREE_VALUE (in_chain), 1);	  initlist = tree_cons (NULL_TREE, expr, initlist);	}      /* Output {..., NULL}.  */      initlist = tree_cons (NULL_TREE, build_int_2 (0, 0), initlist);      expr = build_constructor (TREE_TYPE (decl), nreverse (initlist));      finish_decl (decl, expr, NULL_TREE);      TREE_USED (decl) = 1;      type = build_array_type (build_pointer_type (void_type_node), 0);      decl = build_decl (VAR_DECL, ident, type);      make_decl_rtl (decl, 0, 1);      TREE_USED (decl) = 1;      decls	= tree_cons (NULL_TREE, build_unary_op (ADDR_EXPR, decl, 1), decls);    }  decls = tree_cons (NULL_TREE, build_int_2 (0, 0), decls);  ident = get_identifier ("_OBJC_STATIC_INSTANCES");  expr_decl = build_nt (ARRAY_REF, ident, NULL_TREE);  decl_spec = tree_cons (NULL_TREE, build_pointer_type (void_type_node),			 build_tree_list (NULL_TREE,					  ridpointers[(int) RID_STATIC]));  static_instances_decl    = start_decl (expr_decl, decl_spec, 1, NULL_TREE, NULL_TREE);  TREE_USED (static_instances_decl) = 1;  DECL_CONTEXT (static_instances_decl) = 0;  DECL_ARTIFICIAL (static_instances_decl) = 1;  end_temporary_allocation ();  expr = build_constructor (TREE_TYPE (static_instances_decl),			    nreverse (decls));  finish_decl (static_instances_decl, expr, NULL_TREE);}/* Output all strings.  */static voidgenerate_strings (){  tree sc_spec, decl_specs, expr_decl;  tree chain, string_expr;  tree string, decl;  for (chain = class_names_chain; chain; chain = TREE_CHAIN (chain))    {      string = TREE_VALUE (chain);      decl = TREE_PURPOSE (chain);      sc_spec	= tree_cons (NULL_TREE, ridpointers[(int) RID_STATIC], NULL_TREE);      decl_specs = tree_cons (NULL_TREE, ridpointers[(int) RID_CHAR], sc_spec);      expr_decl = build_nt (ARRAY_REF, DECL_NAME (decl), NULL_TREE);      decl = start_decl (expr_decl, decl_specs, 1, NULL_TREE, NULL_TREE);      end_temporary_allocation ();      string_expr = my_build_string (IDENTIFIER_LENGTH (string) + 1,				     IDENTIFIER_POINTER (string));      finish_decl (decl, string_expr, NULL_TREE);    }  for (chain = meth_var_names_chain; chain; chain = TREE_CHAIN (chain))    {      string = TREE_VALUE (chain);      decl = TREE_PURPOSE (chain);      sc_spec	= tree_cons (NULL_TREE, ridpointers[(int) RID_STATIC], NULL_TREE);      decl_specs = tree_cons (NULL_TREE, ridpointers[(int) RID_CHAR], sc_spec);      expr_decl = build_nt (ARRAY_REF, DECL_NAME (decl), NULL_TREE);      decl = start_decl (expr_decl, decl_specs, 1, NULL_TREE, NULL_TREE);      string_expr = my_build_string (IDENTIFIER_LENGTH (string) + 1,				     IDENTIFIER_POINTER (string));      finish_decl (decl, string_expr, NULL_TREE);    }  for (chain = meth_var_types_chain; chain; chain = TREE_CHAIN (chain))    {      string = TREE_VALUE (chain);      decl = TREE_PURPOSE (chain);      sc_spec	= tree_cons (NULL_TREE, ridpointers[(int) RID_STATIC], NULL_TREE);      decl_specs = tree_cons (NULL_TREE, ridpointers[(int) RID_CHAR], sc_spec);      expr_decl = build_nt (ARRAY_REF, DECL_NAME (decl), NULL_TREE);      decl = start_decl (expr_decl, decl_specs, 1, NULL_TREE, NULL_TREE);      string_expr = my_build_string (IDENTIFIER_LENGTH (string) + 1,				IDENTIFIER_POINTER (string));      finish_decl (decl, string_expr, NULL_TREE);    }}static treebuild_selector_reference_decl (name)      tree name;{  tree decl, ident;  char buf[256];  static int idx = 0;  sprintf (buf, "_OBJC_SELECTOR_REFERENCES_%d", idx++);  push_obstacks_nochange ();  end_temporary_allocation ();  ident = get_identifier (buf);  decl = build_decl (VAR_DECL, ident, selector_type);  DECL_EXTERNAL (decl) = 1;  TREE_PUBLIC (decl) = 1;  TREE_USED (decl) = 1;  TREE_READONLY (decl) = 1;  DECL_ARTIFICIAL (decl) = 1;  DECL_CONTEXT (decl) = 0;  make_decl_rtl (decl, 0, 1);  pushdecl_top_level (decl);  pop_obstacks ();  return decl;}/* Just a handy wrapper for add_objc_string.  */static treebuild_selector (ident)     tree ident;{  tree expr = add_objc_string (ident, meth_var_names);  if (flag_typed_selectors)    return expr;  else    return build_c_cast (selector_type, expr); /* cast! */}/* Synthesize the following expr: (char *)&_OBJC_STRINGS[<offset>]   The cast stops the compiler from issuing the following message:   grok.m: warning: initialization of non-const * pointer from const *   grok.m: warning: initialization between incompatible pointer types.  */static treebuild_msg_pool_reference (offset)     int offset;{  tree expr = build_int_2 (offset, 0);  tree cast;  expr = build_array_ref (UOBJC_STRINGS_decl, expr);  expr = build_unary_op (ADDR_EXPR, expr, 0);  cast = build_tree_list (build_tree_list (NULL_TREE,					   ridpointers[(int) RID_CHAR]),			  build1 (INDIRECT_REF, NULL_TREE, NULL_TREE));  TREE_TYPE (expr) = groktypename (cast);  return expr;}static treeinit_selector (offset)     int offset;{  tree expr = build_msg_pool_reference (offset);  TREE_TYPE (expr) = selector_type;  return expr;}static voidbuild_selector_translation_table (){  tree sc_spec, decl_specs;  tree chain, initlist = NULL_TREE;  int offset = 0;  tree decl, var_decl, name;  /* The corresponding pop_obstacks is in finish_decl,     called at the end of this function.  */  if (! flag_next_runtime)    push_obstacks_nochange ();  for (chain = sel_ref_chain; chain; chain = TREE_CHAIN (chain))    {      tree expr;      expr = build_selector (TREE_VALUE (chain));      if (flag_next_runtime)	{	  name = DECL_NAME (TREE_PURPOSE (chain));	  sc_spec = build_tree_list (NULL_TREE, ridpointers[(int) RID_STATIC]);	  /* static SEL _OBJC_SELECTOR_REFERENCES_n = ...; */	  decl_specs = tree_cons (NULL_TREE, selector_type, sc_spec);	  var_decl = name;	  /* The `decl' that is returned from start_decl is the one that we	     forward declared in `build_selector_reference'  */	  decl = start_decl (var_decl, decl_specs, 1, NULL_TREE, NULL_TREE);	}      /* add one for the '\0' character */      offset += IDENTIFIER_LENGTH (TREE_VALUE (chain)) + 1;      if (flag_next_runtime)	finish_decl (decl, expr, NULL_TREE);      else 	{	  if (flag_typed_selectors)	    {	      tree eltlist = NULL_TREE;	      tree encoding = get_proto_encoding (TREE_PURPOSE (chain));	      eltlist = tree_cons (NULL_TREE, expr, NULL_TREE);	      eltlist = tree_cons (NULL_TREE, encoding, eltlist);	      expr = build_constructor (objc_selector_template,					nreverse (eltlist));	    }	  initlist = tree_cons (NULL_TREE, expr, initlist);	  	}    }  if (! flag_next_runtime)    {      /* Cause the variable and its initial value to be actually output.  */      DECL_EXTERNAL (UOBJC_SELECTOR_TABLE_decl) = 0;      TREE_STATIC (UOBJC_SELECTOR_TABLE_decl) = 1;      /* NULL terminate the list and fix the decl for output.  */      initlist = tree_cons (NULL_TREE, build_int_2 (0, 0), initlist);      DECL_INITIAL (UOBJC_SELECTOR_TABLE_decl) = (tree) 1;      initlist = build_constructor (TREE_TYPE (UOBJC_SELECTOR_TABLE_decl),				    nreverse (initlist));      finish_decl (UOBJC_SELECTOR_TABLE_decl, initlist, NULL_TREE);      current_function_decl = NULL_TREE;    }}static treeget_proto_encoding (proto)     tree proto;{  tree encoding;  if (proto)    {      tree tmp_decl;      if (! METHOD_ENCODING (proto))	{	    tmp_decl = build_tmp_function_decl ();	    hack_method_prototype (proto, tmp_decl);	    encoding = encode_method_prototype (proto, tmp_decl);	    METHOD_ENCODING (proto) = encoding;	  }      else	encoding = METHOD_ENCODING (proto);      return add_objc_string (encoding, meth_var_types);    }  else    return build_int_2 (0, 0);}/* sel_ref_chain is a list whose "value" fields will be instances of   identifier_node that represent the selector.  */static treebuild_typed_selector_reference (ident, proto)     tree ident, proto;{  tree *chain = &sel_ref_chain;  tree expr;  int index = 0;  while (*chain)    {      if (TREE_PURPOSE (*chain) == ident && TREE_VALUE (*chain) == proto)	goto return_at_index;      index++;      chain = &TREE_CHAIN (*chain);    }  *chain = perm_tree_cons (proto, ident, NULL_TREE); return_at_index:  expr = build_unary_op (ADDR_EXPR,			 build_array_ref (UOBJC_SELECTOR_TABLE_decl,					  build_int_2 (index, 0)),			 1);  return build_c_cast (selector_type, expr);}static treebuild_selector_reference (ident)     tree ident;{  tree *chain = &sel_ref_chain;  tree expr;  int index = 0;  while (*chain)    {      if (TREE_VALUE (*chain) == ident)	return (flag_next_runtime		? TREE_PURPOSE (*chain)		: build_array_ref (UOBJC_SELECTOR_TABLE_decl,				   build_int_2 (index, 0)));      index++;      chain = &TREE_CHAIN (*chain);    }  expr = build_selector_reference_decl (ident);  *chain = perm_tree_cons (expr, ident, NULL_TREE);  return (flag_next_runtime	  ? expr	  : build_array_ref (UOBJC_SELECTOR_TABLE_decl,			     build_int_2 (index, 0)));}static treebuild_class_reference_decl (name)      tree name;{  tree decl, ident;  char buf[256];  static int idx = 0;  sprintf (buf, "_OBJC_CLASS_REFERENCES_%d", idx++);  push_obstacks_nochange ();  end_temporary_allocation ();  ident = get_identifier (buf);  decl = build_decl (VAR_DECL, ident, objc_class_type);  DECL_EXTERNAL (decl) = 1;  TREE_PUBLIC (decl) = 1;  TREE_USED (decl) = 1;  TREE_READONLY (decl) = 1;  DECL_CONTEXT (decl) = 0;  DECL_ARTIFICIAL (decl) = 1;  make_decl_rtl (decl, 0, 1);  pushdecl_top_level (decl);  pop_obstacks ();  return decl;}/* Create a class reference, but don't create a variable to reference   it.  */static voidadd_class_reference (ident)     tree ident;{  tree chain;  if ((chain = cls_ref_chain))    {      tree tail;      do        {	  if (ident == TREE_VALUE (chain))	    return;	  tail = chain;	  chain = TREE_CHAIN (chain);        }      while (chain);      /* Append to the end of the list */      TREE_CHAIN (tail) = perm_tree_cons (NULL_TREE, ident, NULL_TREE);    }  else    cls_ref_chain = perm_tree_cons (NULL_TREE, ident, NULL_TREE);}/* Get a class reference, creating it if necessary.  Also create the   reference variable.  */treeget_class_reference (ident)    tree ident;{  if (flag_next_runtime)    {      tree *chain;      tree decl;      for (chain = &cls_ref_chain; *chain; chain = &TREE_CHAIN (*chain))	if (TREE_VALUE (*chain) == ident)	  {	    if (! TREE_PURPOSE (*chain))	      TREE_PURPOSE (*chain) = build_class_reference_decl (ident);	    return TREE_PURPOSE (*chain);	  }      decl = build_class_reference_decl (ident);      *chain = perm_tree_cons (decl, ident, NULL_TREE);      return decl;    }  else    {      tree params;      add_class_reference (ident);      params = build_tree_list (NULL_TREE,				my_build_string (IDENTIFIER_LENGTH (ident) + 1,						 IDENTIFIER_POINTER (ident)));      assemble_external (objc_get_class_decl);      return build_function_call (objc_get_class_decl, params);    }}/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产精品视频| 成人国产一区二区三区精品| 蜜臀av一区二区| 久久久久久久久伊人| 一区二区中文视频| 色婷婷亚洲综合| 亚洲一区二区三区爽爽爽爽爽| 在线观看视频91| 图片区小说区国产精品视频| 欧美人与z0zoxxxx视频| 美女久久久精品| 国产精品美女视频| 91黄色激情网站| 蜜臀精品久久久久久蜜臀| 久久免费看少妇高潮| 99久久777色| 亚洲mv在线观看| 久久久久国产精品厨房| 91在线视频官网| 琪琪久久久久日韩精品| 亚洲国产精品二十页| 欧美午夜一区二区| 国产成人av自拍| 亚洲国产成人av| 国产嫩草影院久久久久| 欧美专区日韩专区| 国产精品一区二区在线看| 亚洲激情自拍视频| 久久嫩草精品久久久久| 91激情在线视频| 国产一区二区在线电影| 亚洲一区二区三区爽爽爽爽爽| 欧美精品一区二区三区视频| 91福利视频网站| 国产成人精品亚洲午夜麻豆| 午夜精品久久久久久久99水蜜桃 | 欧美片在线播放| 高清av一区二区| 一区二区日韩电影| 亚洲国产精品成人综合| 欧美一级在线视频| 欧美综合欧美视频| 成人黄色av网站在线| 青椒成人免费视频| 亚洲图片欧美综合| 亚洲天堂a在线| 久久久久久久久久电影| 欧美美女一区二区在线观看| av午夜一区麻豆| 国产精品一区二区三区四区 | 亚洲日本丝袜连裤袜办公室| 亚洲精品一线二线三线无人区| 欧美日韩一区二区三区不卡| 不卡影院免费观看| 国产成人综合亚洲网站| 国内不卡的二区三区中文字幕| 亚洲国产aⅴ天堂久久| 亚洲九九爱视频| 国产精品丝袜久久久久久app| 欧美成人性战久久| 日韩欧美激情一区| 宅男在线国产精品| 欧美视频一区二区| 91精彩视频在线| 一本色道久久加勒比精品| 成人av网站在线观看| 国产成人在线视频免费播放| 黄一区二区三区| 国产一区二区看久久| 久久99久久精品欧美| 麻豆国产一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎 | 欧美一级免费观看| 欧美日韩亚洲高清一区二区| 欧美丝袜丝交足nylons| 欧美午夜精品一区二区三区 | 91精品欧美综合在线观看最新| 欧美性生活影院| 欧美日韩电影一区| 欧美日韩国产区一| 欧美精品一卡二卡| 欧美精品日韩综合在线| 欧美精品亚洲二区| 欧美一区二区三区四区在线观看| 欧美高清性hdvideosex| 91精品国产综合久久香蕉麻豆 | 亚洲国产精品欧美一二99| 一区二区三区视频在线观看 | 天堂va蜜桃一区二区三区| 亚洲与欧洲av电影| 五月激情综合婷婷| 青青草国产成人av片免费| 麻豆精品在线看| 福利91精品一区二区三区| 成人av在线播放网址| 色噜噜狠狠色综合中国| 欧美精品1区2区3区| 精品久久久久一区| 国产精品午夜春色av| 亚洲制服欧美中文字幕中文字幕| 亚洲高清视频中文字幕| 美女视频网站黄色亚洲| 成人免费的视频| 欧美吻胸吃奶大尺度电影| 欧美一区二区三区男人的天堂| 26uuu国产电影一区二区| 中文字幕精品在线不卡| 亚洲精品成人精品456| 日本视频免费一区| 丁香天五香天堂综合| 欧美性色综合网| 久久久av毛片精品| 亚洲第一二三四区| 国产大片一区二区| 欧美日本高清视频在线观看| 久久久精品免费网站| 亚洲国产欧美日韩另类综合| 国产在线精品免费av| 欧洲一区二区三区免费视频| 久久你懂得1024| 午夜精品福利久久久| 成人精品在线视频观看| 欧美一区二区三区四区五区| 中文字幕在线不卡| 韩日av一区二区| 欧美三级日韩三级| 国产精品卡一卡二| 极品美女销魂一区二区三区免费 | 亚洲国产日韩一级| 成人午夜在线播放| 日韩三级在线免费观看| 亚洲欧美一区二区三区国产精品 | 一区二区三区久久| 成人av网站大全| 精品福利一区二区三区免费视频| 亚洲精品乱码久久久久| 国产成人夜色高潮福利影视| 欧美猛男男办公室激情| 亚洲日本在线a| 成人一级片网址| 久久在线观看免费| 日韩国产一二三区| 欧美三级午夜理伦三级中视频| 国产精品电影一区二区三区| 国内精品视频一区二区三区八戒 | 精品99久久久久久| 日本视频中文字幕一区二区三区| 色视频一区二区| 亚洲欧洲av一区二区三区久久| 国产精品自拍av| 精品入口麻豆88视频| 日韩av电影免费观看高清完整版| 日本韩国精品一区二区在线观看| 国产精品色哟哟| 国产乱理伦片在线观看夜一区| 91精品国产美女浴室洗澡无遮挡| 亚洲与欧洲av电影| 欧美三级欧美一级| 亚洲高清一区二区三区| 欧美视频一区二区三区四区| 有码一区二区三区| 日本高清不卡视频| 亚洲伊人色欲综合网| 在线观看欧美精品| 亚洲尤物在线视频观看| 欧美三级电影一区| 日韩精品电影一区亚洲| 8v天堂国产在线一区二区| 日韩电影在线免费| 日韩欧美另类在线| 国模冰冰炮一区二区| 26uuu色噜噜精品一区二区| 国产九色精品成人porny| 日本一区二区综合亚洲| 97精品久久久午夜一区二区三区| 亚洲婷婷在线视频| 欧美亚洲尤物久久| 秋霞午夜鲁丝一区二区老狼| 欧美va在线播放| 国产成人免费av在线| 中文字幕视频一区| 欧美在线视频日韩| 蜜臀av性久久久久蜜臀aⅴ流畅 | 黄页网站大全一区二区| 国产亚洲欧美一区在线观看| 成人污污视频在线观看| 亚洲男人天堂av网| 这里只有精品免费| 国产成人午夜99999| 亚洲欧美另类在线| 88在线观看91蜜桃国自产| 韩国女主播成人在线| 亚洲人成精品久久久久久| 欧美色手机在线观看| 韩国欧美一区二区| 综合分类小说区另类春色亚洲小说欧美| 色婷婷精品久久二区二区蜜臀av| 日韩电影免费一区| 中文字幕精品一区二区三区精品| 欧美亚洲综合久久|