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

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

?? encoding.c

?? GCC編譯器源代碼
?? C
字號(hào):
/* Encoding of types for Objective C.   Copyright (C) 1993, 1995, 1996, 1997 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 modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2, or (at your option)any later version.GNU CC is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with GNU CC; see the file COPYING.  If not, write tothe Free Software Foundation, 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 "encoding.h"#define MAX(X, Y)                    \  ({ typeof(X) __x = (X), __y = (Y); \     (__x > __y ? __x : __y); })#define MIN(X, Y)                    \  ({ typeof(X) __x = (X), __y = (Y); \     (__x < __y ? __x : __y); })#define ROUND(V, A) \  ({ typeof(V) __v=(V); typeof(A) __a=(A); \     __a*((__v+__a-1)/__a); })static inline intatoi (const char* str){  int res = 0;    while (isdigit (*str))    res *= 10, res += (*str++ - '0');  return res;}/*  return the size of an object specified by type */intobjc_sizeof_type(const char* type){  switch(*type) {  case _C_ID:    return sizeof(id);    break;  case _C_CLASS:    return sizeof(Class);    break;  case _C_SEL:    return sizeof(SEL);    break;  case _C_CHR:    return sizeof(char);    break;      case _C_UCHR:    return sizeof(unsigned char);    break;  case _C_SHT:    return sizeof(short);    break;  case _C_USHT:    return sizeof(unsigned short);    break;  case _C_INT:    return sizeof(int);    break;  case _C_UINT:    return sizeof(unsigned int);    break;  case _C_LNG:    return sizeof(long);    break;  case _C_ULNG:    return sizeof(unsigned long);    break;  case _C_FLT:    return sizeof(float);    break;  case _C_DBL:    return sizeof(double);    break;  case _C_PTR:  case _C_ATOM:  case _C_CHARPTR:    return sizeof(char*);    break;  case _C_ARY_B:    {      int len = atoi(type+1);      while (isdigit(*++type));      return len*objc_aligned_size (type);    }    break;   case _C_STRUCT_B:    {      int acc_size = 0;      int align;      while (*type != _C_STRUCT_E && *type++ != '='); /* skip "<name>=" */      while (*type != _C_STRUCT_E)	{	  align = objc_alignof_type (type);       /* padd to alignment */	  acc_size = ROUND (acc_size, align);	  acc_size += objc_sizeof_type (type);   /* add component size */	  type = objc_skip_typespec (type);	         /* skip component */	}      return acc_size;    }  case _C_UNION_B:    {      int max_size = 0;      while (*type != _C_UNION_E && *type++ != '=') /* do nothing */;      while (*type != _C_UNION_E)	{	  max_size = MAX (max_size, objc_sizeof_type (type));	  type = objc_skip_typespec (type);	}      return max_size;    }      default:    {      objc_error(nil, OBJC_ERR_BAD_TYPE, "unknown type %s\n", type);      return 0;    }  }}/*  Return the alignment of an object specified by type */intobjc_alignof_type(const char* type){  switch(*type) {  case _C_ID:    return __alignof__(id);    break;  case _C_CLASS:    return __alignof__(Class);    break;      case _C_SEL:    return __alignof__(SEL);    break;  case _C_CHR:    return __alignof__(char);    break;      case _C_UCHR:    return __alignof__(unsigned char);    break;  case _C_SHT:    return __alignof__(short);    break;  case _C_USHT:    return __alignof__(unsigned short);    break;  case _C_INT:    return __alignof__(int);    break;  case _C_UINT:    return __alignof__(unsigned int);    break;  case _C_LNG:    return __alignof__(long);    break;  case _C_ULNG:    return __alignof__(unsigned long);    break;  case _C_FLT:    return __alignof__(float);    break;  case _C_DBL:    return __alignof__(double);    break;  case _C_PTR:  case _C_ATOM:  case _C_CHARPTR:    return __alignof__(char*);    break;  case _C_ARY_B:    while (isdigit(*++type)) /* do nothing */;    return objc_alignof_type (type);        case _C_STRUCT_B:    {      struct { int x; double y; } fooalign;      while(*type != _C_STRUCT_E && *type++ != '=') /* do nothing */;      if (*type != _C_STRUCT_E)	return MAX (objc_alignof_type (type), __alignof__ (fooalign));      else	return __alignof__ (fooalign);    }  case _C_UNION_B:    {      int maxalign = 0;      while (*type != _C_UNION_E && *type++ != '=') /* do nothing */;      while (*type != _C_UNION_E)	{	  maxalign = MAX (maxalign, objc_alignof_type (type));	  type = objc_skip_typespec (type);	}      return maxalign;    }      default:    {      objc_error(nil, OBJC_ERR_BAD_TYPE, "unknown type %s\n", type);      return 0;    }  }}/*  The aligned size if the size rounded up to the nearest alignment.*/intobjc_aligned_size (const char* type){  int size = objc_sizeof_type (type);  int align = objc_alignof_type (type);  return ROUND (size, align);}/*  The size rounded up to the nearest integral of the wordsize, taken  to be the size of a void*.*/int objc_promoted_size (const char* type){  int size = objc_sizeof_type (type);  int wordsize = sizeof (void*);  return ROUND (size, wordsize);}/*  Skip type qualifiers.  These may eventually precede typespecs  occurring in method prototype encodings.*/inline const char*objc_skip_type_qualifiers (const char* type){  while (*type == _C_CONST	 || *type == _C_IN 	 || *type == _C_INOUT	 || *type == _C_OUT 	 || *type == _C_BYCOPY	 || *type == _C_ONEWAY)    {      type += 1;    }  return type;}  /*  Skip one typespec element.  If the typespec is prepended by type  qualifiers, these are skipped as well.*/const char* objc_skip_typespec (const char* type){  type = objc_skip_type_qualifiers (type);    switch (*type) {  case _C_ID:    /* An id may be annotated by the actual type if it is known       with the @"ClassName" syntax */    if (*++type != '"')      return type;    else      {	while (*++type != '"') /* do nothing */;	return type + 1;      }    /* The following are one character type codes */  case _C_CLASS:  case _C_SEL:  case _C_CHR:  case _C_UCHR:  case _C_CHARPTR:  case _C_ATOM:  case _C_SHT:  case _C_USHT:  case _C_INT:  case _C_UINT:  case _C_LNG:  case _C_ULNG:  case _C_FLT:  case _C_DBL:  case _C_VOID:  case _C_UNDEF:    return ++type;    break;  case _C_ARY_B:    /* skip digits, typespec and closing ']' */        while(isdigit(*++type));    type = objc_skip_typespec(type);    if (*type == _C_ARY_E)      return ++type;    else      {	objc_error(nil, OBJC_ERR_BAD_TYPE, "bad array type %s\n", type);	return 0;      }  case _C_STRUCT_B:    /* skip name, and elements until closing '}'  */        while (*type != _C_STRUCT_E && *type++ != '=');    while (*type != _C_STRUCT_E) { type = objc_skip_typespec (type); }    return ++type;  case _C_UNION_B:    /* skip name, and elements until closing ')'  */        while (*type != _C_UNION_E && *type++ != '=');    while (*type != _C_UNION_E) { type = objc_skip_typespec (type); }    return ++type;  case _C_PTR:    /* Just skip the following typespec */        return objc_skip_typespec (++type);      default:    {      objc_error(nil, OBJC_ERR_BAD_TYPE, "unknown type %s\n", type);      return 0;    }  }}/*  Skip an offset as part of a method encoding.  This is prepended by a  '+' if the argument is passed in registers.*/inline const char* objc_skip_offset (const char* type){  if (*type == '+') type++;  while(isdigit(*++type));  return type;}/*  Skip an argument specification of a method encoding.*/const char*objc_skip_argspec (const char* type){  type = objc_skip_typespec (type);  type = objc_skip_offset (type);  return type;}/*  Return the number of arguments that the method MTH expects.  Note that all methods need two implicit arguments `self' and  `_cmd'. */intmethod_get_number_of_arguments (struct objc_method* mth){  int i = 0;  const char* type = mth->method_types;  while (*type)    {      type = objc_skip_argspec (type);      i += 1;    }  return i - 1;}/*  Return the size of the argument block needed on the stack to invoke  the method MTH.  This may be zero, if all arguments are passed in  registers.*/intmethod_get_sizeof_arguments (struct objc_method* mth){  const char* type = objc_skip_typespec (mth->method_types);  return atoi (type);}/*  Return a pointer to the next argument of ARGFRAME.  type points to  the last argument.  Typical use of this look like:  {    char *datum, *type;     for (datum = method_get_first_argument (method, argframe, &type);         datum; datum = method_get_next_argument (argframe, &type))      {        unsigned flags = objc_get_type_qualifiers (type);        type = objc_skip_type_qualifiers (type);	if (*type != _C_PTR)          [portal encodeData: datum ofType: type];	else	  {	    if ((flags & _F_IN) == _F_IN)              [portal encodeData: *(char**)datum ofType: ++type];	  }      }  }*/  char*method_get_next_argument (arglist_t argframe,			  const char **type){  const char *t = objc_skip_argspec (*type);  if (*t == '\0')    return 0;  *type = t;  t = objc_skip_typespec (t);  if (*t == '+')    return argframe->arg_regs + atoi (++t);  else    return argframe->arg_ptr + atoi (t);}/*  Return a pointer to the value of the first argument of the method   described in M with the given argumentframe ARGFRAME.  The type  is returned in TYPE.  type must be passed to successive calls of   method_get_next_argument.*/char*method_get_first_argument (struct objc_method* m,			   arglist_t argframe, 			   const char** type){  *type = m->method_types;  return method_get_next_argument (argframe, type);}/*   Return a pointer to the ARGth argument of the method   M from the frame ARGFRAME.  The type of the argument   is returned in the value-result argument TYPE */char*method_get_nth_argument (struct objc_method* m,			 arglist_t argframe, int arg, 			 const char **type){  const char* t = objc_skip_argspec (m->method_types);  if (arg > method_get_number_of_arguments (m))    return 0;  while (arg--)    t = objc_skip_argspec (t);    *type = t;  t = objc_skip_typespec (t);  if (*t == '+')    return argframe->arg_regs + atoi (++t);  else    return argframe->arg_ptr + atoi (t);}unsignedobjc_get_type_qualifiers (const char* type){  unsigned res = 0;  BOOL flag = YES;  while (flag)    switch (*type++)      {      case _C_CONST:  res |= _F_CONST; break;      case _C_IN:     res |= _F_IN; break;      case _C_INOUT:  res |= _F_INOUT; break;      case _C_OUT:    res |= _F_OUT; break;      case _C_BYCOPY: res |= _F_BYCOPY; break;      case _C_ONEWAY: res |= _F_ONEWAY; break;      default: flag = NO;    }  return res;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产va精品久久久不卡综合| 成人国产精品免费观看视频| 激情综合五月婷婷| 91蝌蚪porny| 精品久久国产97色综合| 一区二区三区欧美激情| 国产一区二区三区四区在线观看| 色诱视频网站一区| 中文字幕国产一区| 美女免费视频一区| 欧美图区在线视频| 中文字幕一区二区三中文字幕| 日韩电影一区二区三区| 一本色道a无线码一区v| 国产精品视频你懂的| 美国精品在线观看| 欧美视频在线一区| 伊人色综合久久天天| 国产1区2区3区精品美女| 欧美一卡在线观看| 亚洲午夜激情网站| 欧美综合天天夜夜久久| 亚洲免费观看在线观看| 国产成人午夜片在线观看高清观看| 欧美日韩激情一区二区三区| 亚洲色图在线播放| jvid福利写真一区二区三区| 久久久精品黄色| 国产美女av一区二区三区| 91精品国产免费| 七七婷婷婷婷精品国产| 欧美精品久久天天躁| 无码av免费一区二区三区试看| 91九色02白丝porn| 亚洲丶国产丶欧美一区二区三区| 欧洲亚洲国产日韩| 午夜影院久久久| 欧美一区二区三区在线电影| 日韩成人一级片| 日韩精品最新网址| 国产成人在线影院| 亚洲视频一区在线观看| 91在线高清观看| 亚洲激情第一区| 91麻豆精品国产91| 久久国产视频网| 国产嫩草影院久久久久| 99re这里都是精品| 五月综合激情婷婷六月色窝| 欧美一区二区三区白人| 激情综合网av| 国产精品免费免费| 在线精品视频小说1| 五月天一区二区三区| 欧美成人精品1314www| 福利电影一区二区三区| 一区二区三区免费看视频| 51精品国自产在线| 国产一区视频网站| 亚洲婷婷国产精品电影人久久| 91国产福利在线| 麻豆91免费看| 国产精品久久久久影院亚瑟| 色嗨嗨av一区二区三区| 蜜桃传媒麻豆第一区在线观看| 国产日韩欧美激情| 欧美亚洲国产一区二区三区va | 欧美欧美欧美欧美| 蜜桃av一区二区| 中文字幕一区二区三区不卡在线| 91成人免费在线视频| 毛片基地黄久久久久久天堂| 国产精品天美传媒| 欧美日韩国产中文| 丁香婷婷综合五月| 午夜久久电影网| 国产精品久久久久影视| 宅男在线国产精品| 色综合久久久网| 久久97超碰国产精品超碰| 亚洲精品国产a久久久久久| 精品国产青草久久久久福利| 一本一道波多野结衣一区二区 | 亚洲一区二区三区中文字幕在线| 精品国产1区二区| 欧美做爰猛烈大尺度电影无法无天| 九九九久久久精品| 午夜视频一区二区| 亚洲欧洲精品一区二区三区| 欧美不卡123| 91超碰这里只有精品国产| 99久久精品国产精品久久| 国产在线国偷精品产拍免费yy| 亚洲妇女屁股眼交7| 亚洲免费观看高清| 国产精品视频一二| 久久久久久麻豆| 精品国产精品网麻豆系列| 欧美日韩免费观看一区三区| 91香蕉视频污| jiyouzz国产精品久久| 国产成人精品三级| 精品一区二区三区免费毛片爱| 亚洲国产成人91porn| 亚洲综合色网站| 亚洲美女免费视频| 日韩美女视频一区| 国产精品对白交换视频| 欧美激情在线一区二区三区| 久久久综合网站| 久久久99久久| 欧美激情一区三区| 国产精品丝袜久久久久久app| 久久婷婷综合激情| 久久美女艺术照精彩视频福利播放 | 欧美日韩高清一区二区| 欧美性大战久久久久久久 | **网站欧美大片在线观看| 国产欧美日韩精品在线| 中文天堂在线一区| 亚洲国产精品v| 日韩毛片视频在线看| 亚洲综合清纯丝袜自拍| 亚洲一区二区三区四区的 | 免费观看成人鲁鲁鲁鲁鲁视频| 日韩电影在线一区二区三区| 日本免费新一区视频| 蜜臀av性久久久久av蜜臀妖精| 美女视频网站久久| 国产一区二区三区精品欧美日韩一区二区三区 | 男人操女人的视频在线观看欧美| 日韩av在线免费观看不卡| 日韩国产欧美在线视频| 精品在线播放午夜| 国产激情一区二区三区四区| 成人午夜伦理影院| 91国偷自产一区二区三区观看| 欧洲精品一区二区三区在线观看| 欧美日韩国产三级| 日韩午夜激情视频| 国产日韩在线不卡| 亚洲精品中文在线影院| 一区二区三区国产| 蜜臀精品久久久久久蜜臀| 国产精品1区2区3区| 99r国产精品| 日韩一区二区三区三四区视频在线观看| 日韩精品一区二区在线观看| 国产精品日日摸夜夜摸av| 亚欧色一区w666天堂| 国产麻豆精品久久一二三| 99久久免费精品高清特色大片| 欧美色综合天天久久综合精品| 欧美一区二区三区视频| 中文字幕欧美国产| 亚洲成人av免费| 国产精品1区2区| 欧美高清激情brazzers| 国产精品人妖ts系列视频| 日韩经典一区二区| 成人高清视频在线| 日韩欧美在线一区二区三区| 国产精品伦理一区二区| 免费在线观看日韩欧美| 91麻豆免费看片| 久久久久久久久久看片| 午夜欧美电影在线观看| 国产精品一卡二卡在线观看| 欧美日本在线播放| 国产精品你懂的在线| 精品一区二区三区免费视频| 欧美日韩在线播放三区四区| 国产女人18毛片水真多成人如厕 | 中文字幕中文字幕中文字幕亚洲无线| 一区二区三区在线视频观看| 精品一区二区在线免费观看| 91丨porny丨首页| 国产欧美一区二区精品久导航 | 国产麻豆精品视频| 91精品国产色综合久久不卡电影| 亚洲日本在线a| 不卡视频一二三| 久久精品视频一区二区| 日本成人在线看| 欧美片在线播放| 一区二区在线看| 色婷婷av一区二区三区软件 | 亚洲午夜视频在线| 91免费视频网址| 中文字幕综合网| 91在线porny国产在线看| 国产免费观看久久| 国产精品自拍网站| 精品国产麻豆免费人成网站| 奇米精品一区二区三区在线观看一| 欧美日本不卡视频| 丝袜a∨在线一区二区三区不卡| 欧美视频一区二区三区| 亚洲高清免费观看 | 97久久久精品综合88久久|