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

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

?? sendmsg.c

?? gcc庫的原代碼,對編程有很大幫助.
?? C
字號:
/* GNU Objective C Runtime message lookup    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 "../tconfig.h"#include "runtime.h"#include "sarray.h"#include "encoding.h"/* this is how we hack STRUCT_VALUE to be 1 or 0 */#define gen_rtx(args...) 1#define rtx int#if STRUCT_VALUE == 0#define INVISIBLE_STRUCT_RETURN 1#else#define INVISIBLE_STRUCT_RETURN 0#endif/* The uninstalled dispatch table */struct sarray* __objc_uninstalled_dtable = 0;/* Send +initialize to class */static void __objc_send_initialize(Class);static void __objc_install_dispatch_table_for_class (Class);/* Forward declare some functions */static void __objc_init_install_dtable(id, SEL);static id __objc_word_forward(id, SEL, ...);typedef struct { id many[8]; } __big;#if INVISIBLE_STRUCT_RETURN static __big #elsestatic id#endif__objc_block_forward(id, SEL, ...);static Method_t search_for_method_in_hierarchy (Class class, SEL sel);static Method_t search_for_method_in_list(MethodList_t list, SEL op);id nil_method(id, SEL, ...);idnil_method(id receiver, SEL op, ...){  return receiver;}/* Given a class and selector, return the selector's implementation.  */__inline__IMPget_imp (Class class, SEL sel){  IMP impl;  void* res = sarray_get (class->dtable, (size_t) sel->sel_id);  if(res == __objc_init_install_dtable)    {      __objc_install_dispatch_table_for_class (class);      res = sarray_get (class->dtable, (size_t) sel->sel_id);    }  if (res == 0)    {      const char *t = sel->sel_types;      if (t && (*t == '[' || *t == '(' || *t == '{'))	res = (IMP)__objc_block_forward;      else	res = (IMP)__objc_word_forward;    }  return res;}__inline__ BOOL__objc_responds_to (id object, SEL sel){  void* res = sarray_get (object->class_pointer->dtable, (size_t) sel->sel_id);  if(res == __objc_init_install_dtable)    {      __objc_install_dispatch_table_for_class (object->class_pointer);      res = sarray_get (object->class_pointer->dtable, (size_t) sel->sel_id);    }  return (res != 0);}/* This is the lookup function.  All entries in the table are either a    valid method *or* one of `__objc_missing_method' which calls   forward:: etc, or `__objc_init_install_dtable' which installs the   real dtable */__inline__ IMPobjc_msg_lookup(id receiver, SEL op){  IMP result;  if(receiver)    {      result = sarray_get(receiver->class_pointer->dtable, (sidx)op->sel_id);      if (result == 0)	{	  const char *t = op->sel_types;	  if (t && (*t == '[' || *t == '(' || *t == '{'))	    result = (IMP)__objc_block_forward;	  else	    result = (IMP)__objc_word_forward;	}      return result;    }  else    return nil_method;}IMPobjc_msg_lookup_super (Super_t super, SEL sel){  if (super->self)    return get_imp (super->class, sel);  else    return nil_method;}int method_get_sizeof_arguments (Method*);retval_tobjc_msg_sendv(id object, SEL op, arglist_t arg_frame){  Method* m = class_get_instance_method(object->class_pointer, op);  const char *type;  *((id*)method_get_first_argument (m, arg_frame, &type)) = object;  *((SEL*)method_get_next_argument (arg_frame, &type)) = op;  return __builtin_apply((apply_t)m->method_imp, 			 arg_frame,			 method_get_sizeof_arguments (m));}void __objc_init_dispatch_tables(){  __objc_uninstalled_dtable    = sarray_new(200, __objc_init_install_dtable);}/* This one is a bit hairy.  This function is installed in the    premature dispatch table, and thus called once for each class,   namely when the very first message is send to it.  */static void __objc_init_install_dtable(id receiver, SEL op){  __label__ already_initialized;  IMP imp;  void* args;  void* result;  /* This may happen, if the programmer has taken the address of a      method before the dtable was initialized... too bad for him! */  if(receiver->class_pointer->dtable != __objc_uninstalled_dtable)    goto already_initialized;  if(CLS_ISCLASS(receiver->class_pointer))    {      /* receiver is an ordinary object */      assert(CLS_ISCLASS(receiver->class_pointer));      /* install instance methods table */      __objc_install_dispatch_table_for_class (receiver->class_pointer);      /* call +initialize -- this will in turn install the factory 	 dispatch table if not already done :-) */      __objc_send_initialize(receiver->class_pointer);    }  else    {      /* receiver is a class object */      assert(CLS_ISCLASS((Class)receiver));      assert(CLS_ISMETA(receiver->class_pointer));      /* Install real dtable for factory methods */      __objc_install_dispatch_table_for_class (receiver->class_pointer);      if (strcmp (sel_get_name (op), "initialize"))	__objc_send_initialize((Class)receiver);      else	CLS_SETINITIALIZED((Class)receiver);    }already_initialized:    /* Get real method for this in newly installed dtable */  imp = get_imp(receiver->class_pointer, op);  args = __builtin_apply_args();  result = __builtin_apply((apply_t)imp, args, 96);  if (result)    __builtin_return (result);  else    return;  }/* Install dummy table for class which causes the first message to   that class (or instances hereof) to be initialized properly */void __objc_install_premature_dtable(Class class){  assert(__objc_uninstalled_dtable);  class->dtable = __objc_uninstalled_dtable;}   /* Send +initialize to class if not already done */static void __objc_send_initialize(Class class){  /* This *must* be a class object */  assert(CLS_ISCLASS(class));  assert(!CLS_ISMETA(class));  if (!CLS_ISINITIALIZED(class))    {      CLS_SETINITIALIZED(class);      CLS_SETINITIALIZED(class->class_pointer);            if(class->super_class)	__objc_send_initialize(class->super_class);      {	SEL 	op = sel_register_name ("initialize");	Class	tmpclass = class;	IMP	imp = 0;	while (!imp && tmpclass) {	  MethodList_t method_list = tmpclass->class_pointer->methods;	  while(!imp && method_list) {	    int i;	    Method_t method;	    for (i=0;i<method_list->method_count;i++) {	      method = &(method_list->method_list[i]);	      if (method->method_name->sel_id == op->sel_id) {	        imp = method->method_imp;	        break;	      }	    }	    method_list = method_list->method_next;	  }	  tmpclass = tmpclass->super_class;	}	if (imp)	    (*imp)((id)class, op);		      }    }}  static void__objc_install_dispatch_table_for_class (Class class){  Class super;  MethodList_t mlist;  int counter;  /* If the class has not yet had it's class links resolved, we must      re-compute all class links */  if(!CLS_ISRESOLV(class))    __objc_resolve_class_links();  super = class->super_class;  if (super != 0 && (super->dtable == __objc_uninstalled_dtable))    __objc_install_dispatch_table_for_class (super);  /* Allocate dtable if necessary */  if (super == 0)    {      class->dtable = sarray_new (__objc_selector_max_index, 0);    }  else    class->dtable = sarray_lazy_copy (super->dtable);  for (mlist = class->methods; mlist; mlist = mlist->method_next)    {      counter = mlist->method_count - 1;      while (counter >= 0)        {          Method_t method = &(mlist->method_list[counter]);	  sarray_at_put_safe (class->dtable,			      (sidx) method->method_name->sel_id,			      method->method_imp);          counter -= 1;        }    }}void __objc_update_dispatch_table_for_class (Class class){  Class next;  /* not yet installed -- skip it */  if (class->dtable == __objc_uninstalled_dtable)     return;  sarray_free (class->dtable);	/* release memory */  __objc_install_premature_dtable (class); /* someone might require it... */  __objc_install_dispatch_table_for_class (class); /* could have been lazy... */  if (class->subclass_list)	/* Traverse subclasses */    for (next = class->subclass_list; next; next = next->sibling_class)      __objc_update_dispatch_table_for_class (next);}/* This function adds a method list to a class.  This function is   typically called by another function specific to the run-time.  As   such this function does not worry about thread safe issued.   This one is only called for categories. Class objects have their   methods installed right away, and their selectors are made into   SEL's by the function __objc_register_selectors_from_class. */ voidclass_add_method_list (Class class, MethodList_t list){  int i;  static SEL initialize_sel = 0;  if (!initialize_sel)    initialize_sel = sel_register_name ("initialize");  /* Passing of a linked list is not allowed.  Do multiple calls.  */  assert (!list->method_next);  /* Check for duplicates.  */  for (i = 0; i < list->method_count; ++i)    {      Method_t method = &list->method_list[i];      if (method->method_name)  /* Sometimes these are NULL */	{	  /* This is where selector names are transmogrified to SEL's */	  method->method_name = 	    sel_register_typed_name ((const char*)method->method_name,				     method->method_types);	  if (search_for_method_in_list (class->methods, method->method_name)	      && method->method_name->sel_id != initialize_sel->sel_id)	    {	      /* Duplication. Print a error message an change the method name		 to NULL. */	      fprintf (stderr, "attempt to add a existing method: %s\n",		       sel_get_name(method->method_name));	      method->method_name = 0;	    }	}    }  /* Add the methods to the class's method list.  */  list->method_next = class->methods;  class->methods = list;}Method_tclass_get_instance_method(Class class, SEL op){  return search_for_method_in_hierarchy(class, op);}Method_tclass_get_class_method(MetaClass class, SEL op){  return search_for_method_in_hierarchy(class, op);}/* Search for a method starting from the current class up its hierarchy.   Return a pointer to the method's method structure if found.  NULL   otherwise. */   static Method_tsearch_for_method_in_hierarchy (Class cls, SEL sel){  Method_t method = NULL;  Class class;  if (! sel_is_mapped (sel))    return NULL;  /* Scan the method list of the class.  If the method isn't found in the     list then step to its super class. */  for (class = cls; ((! method) && class); class = class->super_class)    method = search_for_method_in_list (class->methods, sel);  return method;}/* Given a linked list of method and a method's name.  Search for the named   method's method structure.  Return a pointer to the method's method   structure if found.  NULL otherwise. */  static Method_tsearch_for_method_in_list (MethodList_t list, SEL op){  MethodList_t method_list = list;  if (! sel_is_mapped (op))    return NULL;  /* If not found then we'll search the list.  */  while (method_list)    {      int i;      /* Search the method list.  */      for (i = 0; i < method_list->method_count; ++i)        {          Method_t method = &method_list->method_list[i];          if (method->method_name)            if (method->method_name->sel_id == op->sel_id)              return method;        }      /* The method wasn't found.  Follow the link to the next list of         methods.  */      method_list = method_list->method_next;    }  return NULL;}static retval_t __objc_forward (id object, SEL sel, arglist_t args);static id__objc_word_forward (id rcv, SEL op, ...){  void *args, *res;  args = __builtin_apply_args ();  res = __objc_forward (rcv, op, args);  if (res)    __builtin_return (res);  else    return res;}#if INVISIBLE_STRUCT_RETURNstatic __big#elsestatic id#endif__objc_block_forward (id rcv, SEL op, ...){  void *args, *res;  args = __builtin_apply_args ();  res = __objc_forward (rcv, op, args);  if (res)    __builtin_return (res);}/* This function is installed in the dispatch table for all methods which are   not implemented.  Thus, it is called when a selector is not recognized. */static retval_t__objc_forward (id object, SEL sel, arglist_t args){  IMP imp;  static SEL frwd_sel = 0;  SEL err_sel;  /* first try if the object understands forward:: */  if (!frwd_sel)    frwd_sel = sel_get_any_uid("forward::");  if (__objc_responds_to (object, frwd_sel))    {      imp = get_imp(object->class_pointer, frwd_sel);      return (*imp)(object, frwd_sel, sel, args);    }  /* If the object recognizes the doesNotRecognize: method then we're going     to send it. */  err_sel = sel_get_any_uid ("doesNotRecognize:");  if (__objc_responds_to (object, err_sel))    {      imp = get_imp (object->class_pointer, err_sel);      return (*imp) (object, err_sel, sel);    }    /* The object doesn't recognize the method.  Check for responding to     error:.  If it does then sent it. */  {    size_t strlen (const char*);    char msg[256 + strlen ((const char*)sel_get_name (sel))             + strlen ((const char*)object->class_pointer->name)];    sprintf (msg, "(%s) %s does not recognize %s",	     (CLS_ISMETA(object->class_pointer)	      ? "class"	      : "instance" ),             object->class_pointer->name, sel_get_name (sel));    err_sel = sel_get_any_uid ("error:");    if (__objc_responds_to (object, err_sel))      {	imp = get_imp (object->class_pointer, err_sel);	return (*imp) (object, sel_get_any_uid ("error:"), msg);      }    /* The object doesn't respond to doesNotRecognize: or error:;  Therefore,       a default action is taken. */    fprintf (stderr, "fatal: %s\n", msg);    abort ();  }}void __objc_print_dtable_stats(){  int total = 0;  printf("memory usage: (%s)\n",#ifdef OBJC_SPARSE2	 "2-level sparse arrays"#else	 "3-level sparse arrays"#endif	 );  printf("arrays: %d = %ld bytes\n", narrays, (int)narrays*sizeof(struct sarray));  total += narrays*sizeof(struct sarray);  printf("buckets: %d = %ld bytes\n", nbuckets, (int)nbuckets*sizeof(struct sbucket));  total += nbuckets*sizeof(struct sbucket);  printf("idxtables: %d = %ld bytes\n", idxsize, (int)idxsize*sizeof(void*));  total += idxsize*sizeof(void*);  printf("-----------------------------------\n");  printf("total: %d bytes\n", total);  printf("===================================\n");}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91福利国产精品| 亚洲精品中文在线影院| 亚洲美女免费视频| 麻豆国产精品视频| 日本电影亚洲天堂一区| 久久久国产一区二区三区四区小说| 亚洲欧美偷拍另类a∨色屁股| 国内精品写真在线观看| 欧美精品丝袜久久久中文字幕| 国产精品国产成人国产三级| 久久爱另类一区二区小说| 在线观看一区二区视频| 欧美国产综合色视频| 精品午夜一区二区三区在线观看| 精品视频免费在线| 一区二区三区毛片| 色一区在线观看| 亚洲色图制服丝袜| 97久久超碰国产精品电影| 欧美激情自拍偷拍| 高清免费成人av| 欧美国产日韩亚洲一区| 国产成人综合亚洲91猫咪| 精品久久久久久久久久久久包黑料 | 国产欧美一区二区三区在线老狼| 午夜不卡av免费| 欧美三级一区二区| 一区二区久久久| 欧美亚洲国产一卡| 亚洲妇女屁股眼交7| 欧美性色aⅴ视频一区日韩精品| 国产精品不卡在线观看| 99久久99久久精品免费观看| 中文字幕日韩欧美一区二区三区| 风流少妇一区二区| 国产精品黄色在线观看| 99热精品一区二区| 亚洲精品成人a在线观看| 97se狠狠狠综合亚洲狠狠| 一区二区中文字幕在线| 91麻豆精品在线观看| 亚洲成人你懂的| 日韩欧美中文字幕公布| 国产精品一区专区| 亚洲欧洲日韩女同| 欧美性大战久久久久久久| 日韩精彩视频在线观看| 久久亚洲捆绑美女| av电影在线观看完整版一区二区| 亚洲欧美偷拍三级| 欧美一区二区观看视频| 国产原创一区二区| 亚洲色图在线看| 欧美日韩电影在线| 国产精品 欧美精品| 一区精品在线播放| 欧美一区二区三区性视频| 久久99国内精品| 自拍偷拍亚洲综合| 欧美一区二区黄色| 99精品偷自拍| 欧美bbbbb| 亚洲欧美激情小说另类| 日韩午夜在线观看| 91丨porny丨国产| 蜜桃视频一区二区| 亚洲美女免费视频| 久久久精品tv| 欧美日韩国产高清一区| 丁香六月久久综合狠狠色| 午夜精品福利在线| 中文字幕永久在线不卡| 欧美大片在线观看一区二区| 99久久国产综合精品女不卡| 美女国产一区二区| 一区二区三区免费| 国产婷婷色一区二区三区在线| 91成人在线免费观看| 国产精品主播直播| 免费成人av资源网| 亚洲国产精品影院| 中文av一区二区| 欧美不卡在线视频| 91精品久久久久久久91蜜桃| 91视视频在线直接观看在线看网页在线看| 日本不卡一二三| 夜夜嗨av一区二区三区| 国产精品美女久久福利网站| 精品久久人人做人人爱| 91精品国产日韩91久久久久久| 99re视频精品| 成人午夜精品在线| 国内精品久久久久影院色| 奇米精品一区二区三区四区| 亚洲夂夂婷婷色拍ww47| 国产精品久久久久久久裸模| 精品国产露脸精彩对白| 欧美一区二区日韩一区二区| 欧美日韩亚洲国产综合| 色狠狠av一区二区三区| 99精品视频在线免费观看| 国产精品一区二区在线播放| 国内精品国产三级国产a久久 | 91.com在线观看| 欧美午夜一区二区三区免费大片| 北岛玲一区二区三区四区| 国产99久久久久久免费看农村| 久久精品噜噜噜成人av农村| 麻豆精品在线播放| 精品在线播放免费| 日本亚洲三级在线| 久久国内精品视频| 国产一区在线观看视频| 国产精品 日产精品 欧美精品| 九九在线精品视频| 国内精品视频666| 国产成人精品一区二| 成人丝袜高跟foot| 成a人片国产精品| 在线免费观看一区| 制服丝袜亚洲网站| 久久夜色精品国产欧美乱极品| 精品久久一区二区三区| 国产视频一区在线播放| 国产精品久久久久久久久动漫| 中文字幕一区视频| 亚洲va国产va欧美va观看| 蜜桃精品在线观看| 粉嫩嫩av羞羞动漫久久久| 91丨porny丨中文| 51精品国自产在线| 国产日韩在线不卡| 怡红院av一区二区三区| 免费成人小视频| 国产成人免费视频 | 国产suv一区二区三区88区| 国产成a人亚洲| 在线这里只有精品| 日韩免费在线观看| 国产精品天干天干在观线| 一区二区三区国产精华| 久久99精品久久只有精品| 99久久精品国产一区二区三区| 欧美系列亚洲系列| 国产丝袜美腿一区二区三区| 伊人一区二区三区| 国产麻豆视频一区| 色哟哟精品一区| 26uuu欧美日本| 香蕉影视欧美成人| 成人午夜在线播放| 91精品国产乱| 亚洲免费在线观看| 麻豆精品一二三| 在线中文字幕一区二区| 久久日一线二线三线suv| 一区二区三区成人在线视频| 久久66热re国产| 欧美日韩成人在线| 中文字幕日韩欧美一区二区三区| 午夜不卡av免费| 色婷婷精品久久二区二区蜜臀av| 日韩一区二区电影网| 亚洲另类中文字| 成人免费视频app| 欧美mv日韩mv国产网站| 亚洲成人黄色小说| 一本色道久久综合精品竹菊| 久久综合精品国产一区二区三区 | 国产视频一区不卡| 婷婷中文字幕综合| 99久久久国产精品免费蜜臀| 亚洲精品一区二区三区香蕉| 亚洲一区二区三区在线看| 不卡av在线网| 国产三级一区二区| 黄色精品一二区| 日韩一区二区三区三四区视频在线观看| 亚洲免费观看高清完整版在线观看 | 国产91丝袜在线播放| 欧美一卡二卡三卡| 亚洲成a人片在线不卡一二三区 | 欧美精品九九99久久| 亚洲另类春色国产| 不卡av在线免费观看| 久久女同精品一区二区| 久久国产尿小便嘘嘘尿| 欧美一区二区三区色| 日韩精品一二三四| 欧美肥胖老妇做爰| 三级成人在线视频| 制服丝袜亚洲色图| 亚洲1区2区3区视频| 欧美午夜精品久久久久久超碰| 亚洲欧美影音先锋| 色综合久久天天综合网| 亚洲精品成人悠悠色影视| 色婷婷精品大在线视频| 一区二区三区在线观看动漫| 欧美午夜不卡在线观看免费|