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

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

?? objc-actions.c

?? 早期freebsd實現(xiàn)
?? C
?? 第 1 頁 / 共 5 頁
字號:
	*q = 0;      }    /* Make the constructor name from the name we have found.  */    buf = (char *) xmalloc (sizeof (CONSTRUCTOR_NAME_FORMAT)			    + strlen (global_object_name));    sprintf (buf, CONSTRUCTOR_NAME_FORMAT, global_object_name);    /* Declare void __objc_execClass (void*); */    void_list_node = build_tree_list (NULL_TREE, void_type_node);    function_type      = build_function_type (void_type_node,  			     tree_cons (NULL_TREE, ptr_type_node,  					void_list_node));    function_decl = build_decl (FUNCTION_DECL,  				get_identifier ("__objc_execClass"),  				function_type);    DECL_EXTERNAL (function_decl) = 1;    TREE_PUBLIC (function_decl) = 1;    pushdecl (function_decl);    rest_of_decl_compilation (function_decl, 0, 0, 0);    parms      = build_tree_list (NULLT,			 build_unary_op (ADDR_EXPR, _OBJC_MODULES_decl, 0));    decelerator = build_function_call (function_decl, parms);    /* void __objc_file_init () {objc_execClass(&L_OBJC_MODULES);}  */    start_function (void_list_node,		    build_parse_node (CALL_EXPR, get_identifier (buf),				      /* This has the format of the output					 of get_parm_info.  */				      tree_cons (NULL_TREE, NULL_TREE,						 void_list_node),				      NULL_TREE),		    0, 0);#if 0 /* This should be turned back on later	 for the systems where collect is not needed.  */    /* Make these functions nonglobal       so each file can use the same name.  */    TREE_PUBLIC (current_function_decl) = 0;#endif    TREE_USED (current_function_decl) = 1;    store_parm_decls ();    assemble_external (function_decl);    c_expand_expr_stmt (decelerator);    finish_function (0);    /* Return the name of the constructor function.  */    return buf;  }#else /* NEXT_OBJC_RUNTIME */  return 0;#endif /* NEXT_OBJC_RUNTIME */}/* extern const char _OBJC_STRINGS[]; */static voidgenerate_forward_declaration_to_string_table (){  tree sc_spec, decl_specs, expr_decl;  sc_spec = tree_cons (NULLT, ridpointers[(int) RID_EXTERN], NULLT);  decl_specs = tree_cons (NULLT, ridpointers[(int) RID_CHAR], sc_spec);  expr_decl = build_nt (ARRAY_REF, get_identifier ("_OBJC_STRINGS"), NULLT);  _OBJC_STRINGS_decl = define_decl (expr_decl, decl_specs);}/* static char _OBJC_STRINGS[] = "..."; */static voidbuild_message_selector_pool (){  tree sc_spec, decl_specs, expr_decl;  tree chain, string_expr;  int goolengthtmp = 0, msg_pool_size = 0;  char *string_goo;  sc_spec = tree_cons (NULLT, ridpointers[(int) RID_STATIC], NULLT);  decl_specs = tree_cons (NULLT, ridpointers[(int) RID_CHAR], sc_spec);  expr_decl = build_nt (ARRAY_REF, get_identifier ("_OBJC_STRINGS"), NULLT);  _OBJC_STRINGS_decl = start_decl (expr_decl, decl_specs, 1);  for (chain = sel_refdef_chain; chain; chain = TREE_CHAIN (chain))    msg_pool_size += IDENTIFIER_LENGTH (TREE_VALUE (chain)) + 1;  msg_pool_size++;  string_goo = (char *)xmalloc (msg_pool_size);  bzero (string_goo, msg_pool_size);  for (chain = sel_refdef_chain; chain; chain = TREE_CHAIN (chain))    {      strcpy (string_goo + goolengthtmp, IDENTIFIER_POINTER (TREE_VALUE (chain)));      goolengthtmp += IDENTIFIER_LENGTH (TREE_VALUE (chain)) + 1;    }  string_expr = my_build_string (msg_pool_size, string_goo);  finish_decl (_OBJC_STRINGS_decl, string_expr, NULLT);}/* * 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 (_OBJC_STRINGS_decl, expr);  expr = build_unary_op (ADDR_EXPR, expr, 0);  cast = build_tree_list (build_tree_list (NULLT, ridpointers[(int) RID_CHAR]),			  build1 (INDIRECT_REF, NULLT, NULLT));  TREE_TYPE (expr) = groktypename (cast);  return expr;}#ifndef OBJC_SELECTORS_WITHOUT_LABELSstatic treebuild_selector_reference (idx)      int idx;{  tree ref, decl, name, ident;  char buf[256];  struct obstack *save_current_obstack = current_obstack;  struct obstack *save_rtl_obstack = rtl_obstack;  sprintf (buf, "_OBJC_SELECTOR_REFERENCES_%d", idx);  /* new stuff */  rtl_obstack = current_obstack = &permanent_obstack;  ident = get_identifier (buf);  if (IDENTIFIER_GLOBAL_VALUE (ident))    decl = IDENTIFIER_GLOBAL_VALUE (ident); /* set by pushdecl() */  else     {      decl = build_decl (VAR_DECL, ident, selector_type);      DECL_EXTERNAL (decl) = 1;      TREE_PUBLIC (decl) = 1;      TREE_USED (decl) = 1;        make_decl_rtl (decl, 0, 1); /* usually called from `rest_of_decl_compilation' */      pushdecl_top_level (decl);  /* our `extended/custom' pushdecl in c-decl.c */    }  current_obstack = save_current_obstack;  rtl_obstack = save_rtl_obstack;  return decl;}#endifstatic treeinit_selector (offset)     int offset;{  tree expr = build_msg_pool_reference (offset);  TREE_TYPE (expr) = selector_type; /* cast */  return expr;}static voidbuild_selector_translation_table (){  tree sc_spec, decl_specs, expr_decl;  tree chain, initlist = NULLT;  int offset = 0;#ifndef OBJC_SELECTORS_WITHOUT_LABELS  tree decl, var_decl;  int idx = 0;  char buf[256];#else  /* The corresponding pop_obstacks is in finish_decl,     called at the end of this function.  */  push_obstacks_nochange ();#endif  for (chain = sel_ref_chain; chain; chain = TREE_CHAIN (chain))    {      tree expr;#ifndef OBJC_SELECTORS_WITHOUT_LABELS      sprintf (buf, "_OBJC_SELECTOR_REFERENCES_%d", idx);      sc_spec = build_tree_list (NULLT, ridpointers[(int) RID_STATIC]);      /* static SEL _OBJC_SELECTOR_REFERENCES_n = ...; */      decl_specs = tree_cons (NULLT, selector_type, sc_spec);      var_decl = get_identifier (buf);      /* 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); #endif      expr = init_selector (offset);      /* add one for the '\0' character */      offset += IDENTIFIER_LENGTH (TREE_VALUE (chain)) + 1;#ifndef OBJC_SELECTORS_WITHOUT_LABELS      finish_decl (decl, expr, NULLT);      idx++;#else      initlist = tree_cons (NULLT, expr, initlist);#endif    }#ifdef OBJC_SELECTORS_WITHOUT_LABELS  /* Cause the variable and its initial value to be actually output.  */  DECL_EXTERNAL (_OBJC_SELECTOR_REFERENCES_decl) = 0;  TREE_STATIC (_OBJC_SELECTOR_REFERENCES_decl) = 1;  /* NULL terminate the list and fix the decl for output. */  initlist = tree_cons (NULLT, build_int_2 (0, 0), initlist);  DECL_INITIAL (_OBJC_SELECTOR_REFERENCES_decl) = (tree) 1;  initlist = build_nt (CONSTRUCTOR, NULLT, nreverse (initlist));  finish_decl (_OBJC_SELECTOR_REFERENCES_decl, initlist, NULLT);#endif}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 (NULLT, ident, NULLT);    }  else    cls_ref_chain = perm_tree_cons (NULLT, ident, NULLT);}/* * sel_ref_chain is a list whose "value" fields will be instances of * identifier_node that represent the selector. */static intadd_selector_reference (ident)     tree ident;{  tree chain;  int index = 0;  /* this adds it to sel_refdef_chain, the global pool of selectors */  add_objc_string (ident);  if (chain = sel_ref_chain)    {      tree tail;      do        {	  if (ident == TREE_VALUE (chain))	    return index;	  index++;	  tail = chain;	  chain = TREE_CHAIN (chain);        }      while (chain);      /* append to the end of the list */      TREE_CHAIN (tail) = perm_tree_cons (NULLT, ident, NULLT);    }  else    sel_ref_chain = perm_tree_cons (NULLT, ident, NULLT);  max_selector_index++;  return index;}/* * sel_refdef_chain is a list whose "value" fields will be instances of * identifier_node that represent the selector. It returns the offset of * the selector from the beginning of the _OBJC_STRINGS pool. This offset * is typically used by "init_selector ()" during code generation. */static intadd_objc_string (ident)     tree ident;{  tree chain;  int offset = 0;  if (chain = sel_refdef_chain)    {      tree tail;      do        {	  if (ident == TREE_VALUE (chain))	    return offset;	  /* add one for the '\0' character */	  offset += IDENTIFIER_LENGTH (TREE_VALUE (chain)) + 1;	  tail = chain;	  chain = TREE_CHAIN (chain);        }      while (chain);      /* append to the end of the list */      TREE_CHAIN (tail) = perm_tree_cons (NULLT, ident, NULLT);    }  else    sel_refdef_chain = perm_tree_cons (NULLT, ident, NULLT);  return offset;}treelookup_interface (ident)     tree ident;{  tree chain;  for (chain = interface_chain; chain; chain = TREE_CHAIN (chain))    {      if (ident == CLASS_NAME (chain))	return chain;    }  return NULLT;}static treeobjc_copy_list (list, head)     tree list;     tree *head;{  tree newlist = NULL_TREE, tail = NULL_TREE;  while (list)    {      tail = copy_node (list);      /* the following statement fixes a bug when inheriting instance	 variables that are declared to be bitfields. finish_struct () expects	 to find the width of the bitfield in DECL_INITIAL (), which it	 nulls out after processing the decl of the super class...rather	 than change the way finish_struct () works (which is risky),	 I create the situation it expects...s.naroff (7/23/89).	 */      if (DECL_BIT_FIELD (tail) && DECL_INITIAL (tail) == 0)	DECL_INITIAL (tail) = build_int_2 (DECL_FIELD_SIZE (tail), 0);      newlist = chainon (newlist, tail);      list = TREE_CHAIN (list);    }  *head = newlist;  return tail;}/* used by: * build_private_template (), get_class_ivars (), and get_static_reference (). */static treebuild_ivar_chain (interface)     tree interface;{  tree my_name, super_name, ivar_chain;  my_name = CLASS_NAME (interface);  super_name = CLASS_SUPER_NAME (interface);  /* "leaf" ivars never get copied...there is no reason to. */  ivar_chain = CLASS_IVARS (interface);  while (super_name)    {      tree op1;      tree super_interface = lookup_interface (super_name);      if (!super_interface)        {	  /* fatal did not work with 2 args...should fix */	  error ("Cannot find interface declaration for `%s', superclass of `%s'",		 IDENTIFIER_POINTER (super_name), IDENTIFIER_POINTER (my_name));	  exit (34);        }      if (super_interface == interface)        {          fatal ("Circular inheritance in interface declaration for `%s'",                 IDENTIFIER_POINTER (super_name));        }      interface = super_interface;      my_name = CLASS_NAME (interface);      super_name = CLASS_SUPER_NAME (interface);      op1 = CLASS_IVARS (interface);      if (op1)        {	  tree head, tail = objc_copy_list (op1, &head);	  /* prepend super class ivars...make a copy of the list, we	   * do not want to alter the original.	   */	  TREE_CHAIN (tail) = ivar_chain;	  ivar_chain = head;        }    }  return ivar_chain;}/* *  struct <classname> { *    struct objc_class *isa; *    ... *  }; */static treebuild_private_template (class)     tree class;{  tree ivar_context;  if (CLASS_STATIC_TEMPLATE (class))    {      _PRIVATE_record = CLASS_STATIC_TEMPLATE (class);      ivar_context = TYPE_FIELDS (CLASS_STATIC_TEMPLATE (class));    }  else    {      _PRIVATE_record = start_struct (RECORD_TYPE, CLASS_NAME (class));      ivar_context = build_ivar_chain (class);      finish_struct (_PRIVATE_record, ivar_context);      CLASS_STATIC_TEMPLATE (class) = _PRIVATE_record;      /* mark this record as class template - for class type checking */      TREE_STATIC_TEMPLATE (_PRIVATE_record) = 1;    }  instance_type = groktypename (				build_tree_list (build_tree_list (NULLT, _PRIVATE_record),						 build1 (INDIRECT_REF, NULLT, NULLT)));  return ivar_context;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品午夜免费| 日韩欧美成人激情| 国产精品久久久久久久久搜平片 | 日韩欧美成人一区二区| 青青草原综合久久大伊人精品| 日韩欧美一二三区| 国产a视频精品免费观看| 日韩美女精品在线| 在线观看91视频| 免费精品视频在线| 欧美激情中文字幕| 欧美视频一区在线| 韩国成人在线视频| **欧美大码日韩| 91精品福利在线一区二区三区| 精品一区二区三区免费| 亚洲图片激情小说| 欧美日韩日日骚| 国产成人免费高清| 亚洲国产美国国产综合一区二区| 日韩一二三区视频| eeuss鲁一区二区三区| 五月激情丁香一区二区三区| 欧美sm极限捆绑bd| 91福利小视频| 激情欧美日韩一区二区| 依依成人综合视频| 欧美成人a∨高清免费观看| 99久久亚洲一区二区三区青草| 视频一区二区三区在线| 中文天堂在线一区| 日韩欧美中文字幕精品| 91蜜桃在线免费视频| 精品一区二区在线播放| 亚洲欧美aⅴ...| 久久天天做天天爱综合色| 91在线porny国产在线看| 美女尤物国产一区| 一区二区三区中文字幕精品精品| 欧美精品一区二区蜜臀亚洲| 欧美日韩国产首页| 91小视频免费观看| 高清在线不卡av| 免费高清视频精品| 午夜欧美在线一二页| 国产精品久久久久一区二区三区共 | a4yy欧美一区二区三区| 免费在线成人网| 亚洲美女免费在线| 亚洲国产精品传媒在线观看| 日韩午夜电影av| 欧美亚洲动漫另类| 91偷拍与自偷拍精品| 国产精品中文字幕日韩精品| 日韩经典中文字幕一区| 亚洲一二三四在线观看| 亚洲青青青在线视频| 中文字幕精品三区| 国产人久久人人人人爽| 欧美一区二区三区在线观看视频| 在线观看成人小视频| 91在线观看一区二区| 成人动漫在线一区| 成人在线一区二区三区| 国产成人免费视频一区| 国产成人一区二区精品非洲| 精品亚洲porn| 国产美女在线精品| 国产福利一区二区三区在线视频| 精品无人码麻豆乱码1区2区 | 精品久久久久久久人人人人传媒| 欧美一区二区视频观看视频| 欧美日韩精品免费观看视频| 欧美三区在线视频| 欧美日韩你懂得| 欧美一区国产二区| 91精品国产乱| 精品国产91亚洲一区二区三区婷婷| 日韩欧美一二三区| 精品88久久久久88久久久| 久久先锋影音av| 欧美国产在线观看| 亚洲欧美中日韩| 亚洲美女视频在线| 五月天亚洲婷婷| 久久精品国产一区二区| 国产黑丝在线一区二区三区| 国产盗摄一区二区| 91啪九色porn原创视频在线观看| 91麻豆国产自产在线观看| 欧美亚洲动漫另类| 日韩亚洲欧美高清| 中文字幕免费不卡| 一区二区三区四区高清精品免费观看| 一区二区国产视频| 蜜桃一区二区三区在线| 国产电影精品久久禁18| 91亚洲永久精品| 3d动漫精品啪啪| 久久久美女毛片| 亚洲免费av高清| 日本伊人色综合网| 韩国v欧美v日本v亚洲v| 91亚洲大成网污www| 666欧美在线视频| 国产女同性恋一区二区| 亚洲精品日日夜夜| 麻豆精品视频在线观看视频| 国产a区久久久| 欧美日韩一区小说| 久久免费偷拍视频| 亚洲一级电影视频| 国产精品一区二区在线观看不卡 | 亚洲丝袜精品丝袜在线| 亚洲高清在线精品| 国产成人av电影免费在线观看| 在线视频一区二区免费| 久久这里只有精品视频网| 亚洲三级在线看| 精品一区二区三区免费视频| 99v久久综合狠狠综合久久| 日韩一级大片在线| 一区二区成人在线| 国产麻豆成人传媒免费观看| 91国在线观看| 欧美激情在线免费观看| 青青草伊人久久| 91精彩视频在线| 国产欧美精品国产国产专区| 日韩电影在线观看一区| 色狠狠色狠狠综合| 国产欧美一区二区三区沐欲| 日韩精品欧美精品| 色综合久久久久久久久久久| 久久久久久久综合日本| 免费亚洲电影在线| 欧美色欧美亚洲另类二区| 中文字幕一区二区三区不卡在线| 久久国产精品99精品国产| 精品视频一区二区不卡| 亚洲视频在线一区二区| 国产精品一区专区| 欧美哺乳videos| 日韩经典中文字幕一区| 欧美亚洲免费在线一区| 亚洲乱码中文字幕综合| 成人午夜在线视频| 久久精品亚洲精品国产欧美kt∨ | 国产喷白浆一区二区三区| 免费观看在线色综合| 欧美巨大另类极品videosbest| 玉足女爽爽91| 99精品视频在线免费观看| 国产精品乱人伦一区二区| 国产福利精品一区| 国产日韩精品视频一区| 国产一区二区三区四区五区入口| 欧美大片一区二区三区| 久久精品国产第一区二区三区| 91精品国产欧美一区二区18| 视频在线观看一区二区三区| 欧美日韩国产成人在线91| 亚洲电影一区二区| 欧美夫妻性生活| 日韩中文字幕1| 日韩一区二区三区三四区视频在线观看 | 国产精品女同一区二区三区| 久久99精品国产91久久来源| 欧美不卡一区二区三区| 国产最新精品精品你懂的| 久久这里都是精品| 国产精品99久久久| 中文字幕电影一区| 91在线精品秘密一区二区| 亚洲免费观看在线视频| 欧美在线观看18| 日本中文字幕一区二区有限公司| 日韩欧美一级二级| 国产成人在线观看| 亚洲人成网站色在线观看| 在线观看一区二区视频| 日韩精品视频网| 久久久99久久精品欧美| av电影天堂一区二区在线观看| 亚洲色图欧美激情| 欧美人狂配大交3d怪物一区| 美腿丝袜在线亚洲一区| 国产欧美日韩亚州综合| 91在线精品一区二区三区| 午夜精品国产更新| 久久久久97国产精华液好用吗| 99久久精品免费看国产免费软件| 一区二区三区日韩欧美| 精品久久久久久久人人人人传媒 | 国产亚洲精品免费| 色狠狠色噜噜噜综合网| 久久国产视频网| 亚洲日本免费电影| 欧美一级二级在线观看| 成人精品一区二区三区中文字幕 |