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

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

?? core.c

?? 早期freebsd實現
?? C
?? 第 1 頁 / 共 3 頁
字號:
  assert (initialized);  /* Objective-C allows messages to be sent to a nil object.  */  if (receiver) {    /* Check for common programmer error.  */    if (!receiver->class_pointer) {      fprintf (stderr, "method %s sent to deallocated object %#x\n", 	       sel_getName (sel), receiver);      abort ();    }        /* Initialize the class if need be.  */    if (!(receiver->class_pointer->info & CLS_INITIALIZED))      initialize_class (receiver->class_pointer->name);    /*     * If we're passed a object then its class_pointer is a Class.  If     * we're passed a Class then its class_pointer is a MetaClass.      * Therefore, searching for a instance or class method     * requires no special decision making here.      *     * Look for the method.      */    imp = get_imp (receiver->class_pointer, sel);    /* If the method cannot be found then perform error handling.  */    if (!imp)      imp = handle_runtime_error (receiver, sel);  }  /* Nice debugging messages if enabled.  */  if (objc_trace) {    printf ("trace: objc_msgSend , obj=%#x, class=%s, method=%s\n",	    receiver, 	    receiver->class_pointer->name, 	    sel_getName (sel));    fflush (stdout);  }    return imp;}IMP objc_msgSendSuper (Super_t super, SEL sel){  IMP	imp;  assert (initialized);  if (!(super->class->info & CLS_INITIALIZED))    initialize_class (super->class->name);  if (!(super->receiver->class_pointer->info & CLS_INITIALIZED))    initialize_class (super->receiver->class_pointer->name);  imp = get_imp (super->class, sel);    if (!imp)    imp = handle_runtime_error (super->receiver, sel);  if (objc_trace) {    printf ("trace: objc_msgSendSuper , obj=%#x, class=%s, method=%s\n",	    super->receiver, 	    super->receiver->class_pointer->name, 	    sel_getName (sel));    fflush (stdout);  }  return imp;}/* * This function is called by objc_msgSend or objc_msgSendSuper when a * message is sent to a object which it does not recognize.  */static IMP  handle_runtime_error (id object, SEL sel){  IMP	imp;  /*   * If the object recognizes the doesNotRecognize: method then we're   * going to send it.    */  imp = get_imp (object->class_pointer, sel_getUid ("doesNotRecognize:"));  if (imp)    error_static = (*imp)(object, sel_getUid ("doesNotRecognize:"), sel);  else {    /*     * The object doesn't recognize the method.  Check for     * responding to error:.  If it does then sent it.      */    char msg[256 + strlen (sel_getName (sel)) 	     + strlen (object->class_pointer->name)];            sprintf (msg, "%s does not recognize %s", 	     object->class_pointer->name, sel_getName (sel));            imp = get_imp (object->class_pointer, sel_getUid ("error:"));    if (imp)      error_static = (*imp)(object, sel_getUid ("error:"), msg);    else {      /*       * The object doesn't respond to doesNotRecognize: or       * error:;  Therefore, a default action is taken.        */      fprintf (stderr, "%s\n", msg);      abort ();    }  }  /*   * Either doesNotRecognize: or error: has been overridden.  We have   * to return that value as the default action.    */  return return_error_static;}/* * This function is used by the run-time to provide a method where nil * objects can receive messages.  * * This method simply returns self.  */static id  nil_method (id object, SEL sel, ...){  return object;}/* * This function is used by the run-time to provide a method where nil * objects can receive messages.  * * This method simply returns self.  * * Note: multiple thread problem area.  */static id  return_error_static (id object, SEL sel, ...){  return error_static;}/* * These variables provide a way for the defalut methods of object * allocation, destruction, and reallocation to be overridden.  */id    (*_alloc)(Class_t)                  = objc_object_create;id    (*_dealloc)(id)                     = objc_object_dispose;id    (*_realloc)(id, unsigned int)              = objc_object_realloc;id    (*_copy)(id)                        = objc_object_copy;void  (*_error)(id, const char*, va_list) = objc_error;id objc_object_create (Class_t class){  id     object;  assert (class);  /*   * Allocate memory for the object, initialize the memory to 0, and   * set the object's class_pointer.    *   * The object's class_pointer is the class's TEXT image.  It is used by   * the messager as the key to the class hash for methods.    *   * No need to initialize the class.  That was done in objcInit.    */  object = (id) xcalloc (1, class->instance_size);  object->class_pointer = class;  return object;}id  objc_object_dispose (id object){  object->class_pointer = NULL;  free (object);  return nil;}id  objc_object_realloc (id object, unsigned int length){  id  obj;  /* Can't resize a object smaller than its instance size.  */  /* Don't use assert here;     checks for user errors shouldn't depend on NDEBUG.  */  if (length < object->class_pointer->instance_size)    abort ();  obj = (id) realloc (object, length);  bzero ((char*)obj + object->class_pointer->instance_size,  	 length - object->class_pointer->instance_size);    return obj;}id  objc_object_copy (id object){  id  obj;  obj = class_createInstance (object->class_pointer);  bcopy (object, obj, objc_classSize (object));    return obj;}void  objc_error (id object, const char *fmt, va_list ap){  vfprintf (stderr, fmt, ap);  abort ();}/* Silly function to skip past a sequence of digits in a string.  */static inline const char *skip_digits (const char *str){  while (isdigit (*str))    ++str;  return str;}unsigned int method_getNumberOfArguments (Method_t method){  unsigned int       num = 0;  const char *args = &method->method_types[1];      while (*args) {      /* Skip past size info.  */    args = skip_digits (args);        /* Argument type next.  */    assert (*args);    ++num;        /* Step to next arg.  */    ++args;  }    assert (num >= 2);  return num;}unsigned int method_getArgumentInfo (Method_t method, int indx, const char **type, 			int *offset){  const char *args = skip_digits (&method->method_types[1]);  int         i;    assert (method_getNumberOfArguments (method) >= indx);  /* Step to arg.  */  for (i = 0; i < indx; ++i) {    ++args;    args = skip_digits (args);  }    /* Return arg data.  */  *type = args++;  *offset = atoi (args);    return indx;}/* This function is not thread safe.  */Ivar_t  object_getIvarAddress (id object, const char *name){  Class_t class = object->class_pointer; /* Here is the thread safe problem.  */  Ivar_t  ivar = NULL;    do {    IvarList_t  ivars = class->ivars;    int         i;          /* Look at all of the ivar names.  */    for (i = 0; i < ivars->ivar_count; ++i)      if (!strcmp (name, ivars->ivar_list[i].ivar_name))        ivar = &ivars->ivar_list[i];               /*     * If the ivar wasn't found then lets look to the     * super class.      *     * If the class is Object then the super class is NULL     * and we're done.      */    class = class->super_class;          } while (!ivar && class);  return ivar;}/* * 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.  */Method_t  searchForMethodInHierarchy (Class_t class, SEL sel){  Method_t  	method = NULL;  const char*	name;  if (sel == 0)    return NULL;  name = sel_getName (sel);  if (name == 0)    return NULL;  /*   * Scan the method list of the class.  If the method isn't found in   * the list then step to its super class.    */  do {        method = searchForMethodInList (class->methods, name);    class = class->super_class;  } while (!method && class);      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.  */Method_t  searchForMethodInList (MethodList_t list, const char *name){  MethodList_t  method_list = list;    /* Check for bumbling.  */  /* ??? Who generates the name?  Is it the user, or part of this file?     If we crash here, whose fault is it?  */  assert (name);  /* 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 (!strcmp (method->method_name, name))	  return method;    }            /* The method wasn't found.  Follow the link to the next list of        methods.  */    method_list = method_list->method_next;  }    return NULL;}/* * 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.   */void  addMethodsToClass (Class_t class, MethodList_t list){  int i;      /* 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 */      if (searchForMethodInList (class->methods, method->method_name)) {	/*	 * Duplication. Print a error message an change the	 * method name to NULL. 	 */	fprintf (stderr, "attempt to add a existing method: %s\n",		 method->method_name);	method->method_name = NULL;      }  }    /* Add the methods to the class's method list.  */  list->method_next = class->methods;  class->methods = list;}/* * This function removes the instance and factory methods in the passed list * from a class.   * * Methods are removed from a class by replacing the method's name with NULL.  * * * This function is typically called by another function specific to the * run-time.  As such this function does not worry about thread safe issued.   */void  class_removeMethods (Class_t class, MethodList_t method_list){  int i;      /* Passing of a linked list is not allowed.  Do multiple calls.  */  assert (!method_list->method_next);  /*   * For each method in the list search the method lists erasing any   * entries found. 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品影音先锋| 成人妖精视频yjsp地址| 蜜臀av国产精品久久久久| 国产精品99久久久久| 在线亚洲免费视频| 国产日韩在线不卡| 日本特黄久久久高潮| 91免费视频观看| 国产欧美一区视频| 久久av中文字幕片| 欧美日韩精品一区二区三区| 久久新电视剧免费观看| 首页亚洲欧美制服丝腿| 日本黄色一区二区| 日本一区二区三区在线观看| 麻豆国产91在线播放| 欧美日韩中字一区| 亚洲综合色婷婷| eeuss鲁一区二区三区| 久久亚洲精品国产精品紫薇| 男人的j进女人的j一区| 欧美日韩一区二区三区四区| 亚洲精品日日夜夜| 色婷婷综合久久久久中文一区二区| 精品国内二区三区| 无码av免费一区二区三区试看| 99久久国产综合精品女不卡| 久久精品亚洲国产奇米99| 久久99热99| 日韩欧美一级在线播放| 日本欧美一区二区三区| 欧美三级日韩三级国产三级| 亚洲美女视频在线观看| 色综合久久久久久久久| 成人免费小视频| 97se亚洲国产综合自在线观| 中文字幕一区免费在线观看| 高清视频一区二区| 国产欧美一区二区精品秋霞影院| 国产美女在线观看一区| 欧美精品一区二区久久久| 久久精品二区亚洲w码| 精品国产亚洲在线| 国产精品一二二区| 国产精品色在线| 99久久精品情趣| 一区二区三区精品视频| 欧美吞精做爰啪啪高潮| 午夜精品久久久久影视| 8x8x8国产精品| 九九九精品视频| 国产欧美日韩另类一区| 99久久99久久综合| 性久久久久久久久| 136国产福利精品导航| 久久久另类综合| 91国模大尺度私拍在线视频| 亚洲视频网在线直播| 欧美午夜精品理论片a级按摩| 午夜电影网亚洲视频| 日韩久久久精品| 懂色av一区二区夜夜嗨| 亚洲精品美国一| 91麻豆精品国产91久久久更新时间 | 中文字幕欧美区| 成人av集中营| 亚洲观看高清完整版在线观看 | 天天综合日日夜夜精品| 欧美α欧美αv大片| 成人性生交大片| 亚洲国产wwwccc36天堂| 久久精品一区八戒影视| 欧美日韩一区中文字幕| 成人激情开心网| 亚洲va国产天堂va久久en| 久久久亚洲精品石原莉奈| 一本在线高清不卡dvd| 极品尤物av久久免费看| 一区二区高清免费观看影视大全| 日韩视频中午一区| 91原创在线视频| 精品综合久久久久久8888| 亚洲人xxxx| 久久久噜噜噜久噜久久综合| 欧美日韩激情在线| 成人黄色电影在线| 久久er精品视频| 午夜欧美大尺度福利影院在线看| 国产喂奶挤奶一区二区三区| 69堂精品视频| 一本一道久久a久久精品综合蜜臀| 黄色成人免费在线| 亚洲高清视频中文字幕| 国产精品国产自产拍高清av| 日韩精品一区二区三区在线| 欧美日韩综合一区| 在线亚洲免费视频| 91在线看国产| 成人小视频免费在线观看| 另类欧美日韩国产在线| 五月天亚洲婷婷| 亚洲综合在线第一页| 亚洲欧洲成人自拍| 国产欧美视频在线观看| 337p日本欧洲亚洲大胆色噜噜| 91精品国产综合久久精品图片| 一本一道综合狠狠老| 99精品视频在线播放观看| 国产一区二区三区精品欧美日韩一区二区三区| 亚洲精品中文在线| 亚洲激情五月婷婷| 亚洲综合一区在线| 亚洲欧美日韩国产综合在线| 中文字幕欧美三区| 国产精品久久久久aaaa樱花| 国产精品久久99| 国产精品女同一区二区三区| 欧美激情自拍偷拍| 国产精品视频一二| 国产精品久久久久一区二区三区| 麻豆精品在线播放| 国产精品网站在线观看| 日韩一区在线播放| 欧美日韩亚州综合| 欧美精品日韩一区| 91精选在线观看| 91麻豆精品国产综合久久久久久| 5566中文字幕一区二区电影| 欧美精品一级二级| 日韩免费一区二区| 久久免费国产精品 | 91啪在线观看| 在线视频国内自拍亚洲视频| 欧美性猛片xxxx免费看久爱| 欧美精品日韩精品| 精品欧美一区二区久久| 久久久久9999亚洲精品| 亚洲日本免费电影| 午夜精品福利久久久| 男女男精品视频| 国产精品77777竹菊影视小说| 成人午夜私人影院| 色菇凉天天综合网| 欧美精品乱码久久久久久| 欧美大片在线观看一区| 国产精品日日摸夜夜摸av| 亚洲乱码中文字幕综合| 日韩精品欧美精品| 大美女一区二区三区| 在线观看成人免费视频| 精品三级在线看| 亚洲欧洲性图库| 麻豆成人久久精品二区三区小说| 国产精品18久久久久久久久久久久 | 欧美性感一类影片在线播放| 欧美一区二区三区四区视频| 国产网站一区二区| 亚洲制服丝袜av| 国产美女娇喘av呻吟久久| 91在线小视频| 精品久久久久久久一区二区蜜臀| 国产日产欧美精品一区二区三区| 樱桃视频在线观看一区| 九九视频精品免费| 欧美性一级生活| 国产欧美综合在线| 日本女人一区二区三区| av高清不卡在线| 精品久久国产老人久久综合| 一区二区三区在线看| 国产麻豆精品95视频| 欧美日韩在线直播| 国产精品女主播在线观看| 免费观看久久久4p| 在线一区二区三区四区五区| 久久久噜噜噜久噜久久综合| 亚洲成人7777| 精品一区二区免费看| 欧美一级黄色录像| 色天使久久综合网天天| 久久黄色级2电影| 欧美一级一区二区| 男女男精品视频| 久久久久久免费毛片精品| www.一区二区| 亚洲一二三专区| 久久久99精品免费观看不卡| 丁香婷婷综合五月| 国产精品二三区| 日韩一区二区三区视频在线| 欧美日免费三级在线| 日韩免费视频一区| 亚洲成国产人片在线观看| 色一区在线观看| 亚洲视频一区在线| 99在线热播精品免费| 国产精品入口麻豆九色| 国产精品99久久久| 久久久影视传媒| 高清国产午夜精品久久久久久|