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

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

?? objc-actions.c

?? 早期freebsd實現
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* Implement classes and message passing for Objective C.   Copyright (C) 1992 Free Software Foundation, Inc.   Author: Steve Naroff.This 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, 675 Mass Ave, Cambridge, MA 02139, USA.  *//* *      Purpose: This module implements the Objective-C 4.0 language. * *      compatibility issues (with the Stepstone translator): * *	- does not recognize the following 3.3 constructs. *	  @requires, @classes, @messages, = (...) *	- methods with variable arguments must conform to ANSI standard. *	- tagged structure definitions that appear in BOTH the interface *	  and implementation are not allowed. *      - public/private: all instance variables are public within the *        context of the implementation...I consider this to be a bug in *        the translator. *      - statically allocated objects are not supported. the user will *        receive an error if this service is requested. * *      code generation `options': * *      - OBJC_INT_SELECTORS, OBJC_SELECTORS_WITHOUT_LABELS, NEXT_OBJC_RUNTIME */#include <stdio.h>#include "config.h"#include "tree.h"#include "c-tree.h"#include "c-lex.h"#include "flags.h"#include "objc-actions.h"#include "input.h"/* The GNU run time requires the selectors in a vector   so it can store the operation numbers in them.  */#ifndef NEXT_OBJC_RUNTIME#define OBJC_SELECTORS_WITHOUT_LABELS#endif/* Define the special tree codes that we use.  *//* Table indexed by tree code giving a string containing a character   classifying the tree code.  Possibilities are   t, d, s, c, r, <, 1 and 2.  See objc-tree.def for details.  */#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) TYPE,char *objc_tree_code_type[] = {  "x",#include "objc-tree.def"};#undef DEFTREECODE/* Table indexed by tree code giving number of expression   operands beyond the fixed part of the node structure.   Not used for types or decls.  */#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) LENGTH,int objc_tree_code_length[] = {  0,#include "objc-tree.def"};#undef DEFTREECODE/* Names of tree components.   Used for printing out the tree and error messages.  */#define DEFTREECODE(SYM, NAME, TYPE, LEN) NAME,char *objc_tree_code_name[] = {  "@@dummy",#include "objc-tree.def"};#undef DEFTREECODE/* Set up for use of obstacks.  */#include "obstack.h"#define obstack_chunk_alloc xmalloc#define obstack_chunk_free free/* This obstack is used to accumulate the encoding of a data type.  */static struct obstack util_obstack;/* This points to the beginning of obstack contents,   so we can free the whole contents.  */char *util_firstobj;/* for encode_method_def */#include "rtl.h"#define OBJC_VERSION	2#define NULLT	(tree) 0#define OBJC_ENCODE_INLINE_DEFS 	0#define OBJC_ENCODE_DONT_INLINE_DEFS	1/*** Private Interface (procedures) ***//* code generation */static void synth_module_prologue ();static char *build_module_descriptor ();static tree init_module_descriptor ();static void build_module_entry ();static tree build_objc_method_call ();static void build_message_selector_pool ();static void build_selector_translation_table ();static tree build_ivar_chain ();static tree build_ivar_template ();static tree build_method_template ();static tree build_private_template ();static void build_class_template ();static void build_category_template ();static tree build_super_template ();static void synth_forward_declarations ();static void generate_ivar_lists ();static void generate_dispatch_tables ();static void generate_shared_structures ();static tree build_msg_pool_reference ();static tree init_selector ();static tree build_keword_selector ();static tree synth_id_with_class_suffix ();/* misc. bookkeeping */typedef struct hashedEntry 	*hash;typedef struct hashedAttribute  *attr;struct hashedAttribute {        attr    next;        tree    value;};struct hashedEntry {        attr    list;	hash	next;	tree 	key;};static void hash_init ();static void hash_enter ();static hash hash_lookup ();static void hash_add_attr ();static tree lookup_method ();static tree lookup_instance_method_static ();static tree lookup_class_method_static ();static tree add_class ();static int  add_selector_reference ();static void add_class_reference ();static int  add_objc_string ();/* type encoding */static void encode_aggregate ();static void encode_bitfield ();static void encode_type ();static void encode_field_decl ();static void really_start_method ();static int  comp_method_with_proto ();static int  comp_proto_with_proto ();static tree get_arg_type_list ();static tree expr_last ();/* utilities for debugging and error diagnostics: */static void warn_with_method ();static void error_with_method ();static void error_with_ivar ();static char *gen_method_decl ();static char *gen_declaration ();static char *gen_declarator ();static int is_complex_decl ();static void adorn_decl ();static void dump_interfaces ();/*** Private Interface (data) ***//* reserved tag definitions: */#define TYPE_ID			"id"#define TAG_OBJECT		"objc_object"#define TAG_CLASS		"objc_class"#define TAG_SUPER		"objc_super"#define TAG_SELECTOR		"objc_selector"#define _TAG_CLASS		"_objc_class"#define _TAG_IVAR		"_objc_ivar"#define _TAG_IVAR_LIST		"_objc_ivar_list"#define _TAG_METHOD		"_objc_method"#define _TAG_METHOD_LIST	"_objc_method_list"#define _TAG_CATEGORY		"_objc_category"#define _TAG_MODULE		"_objc_module"#define _TAG_SYMTAB		"_objc_symtab"#define _TAG_SUPER		"_objc_super"/* set by `continue_class ()' and checked by `is_public ()' */#define TREE_STATIC_TEMPLATE(record_type) (TREE_PUBLIC(record_type))#define TYPED_OBJECT(type) \       (TREE_CODE (type) == RECORD_TYPE && TREE_STATIC_TEMPLATE (type))/* some commonly used instances of "identifier_node". */static tree self_id, _cmd_id;static tree self_decl, _msg_decl, _msgSuper_decl;static tree objc_getClass_decl, objc_getMetaClass_decl;static tree super_type, selector_type, id_type, class_type;static tree instance_type;static tree interface_chain = NULLT;/* chains to manage selectors that are referenced and defined in the module */static tree cls_ref_chain = NULLT;	/* classes referenced */static tree sel_ref_chain = NULLT;	/* selectors referenced */static tree sel_refdef_chain = NULLT;	/* selectors references & defined */static int  max_selector_index;		/* total # of selector referenced *//* hash tables to manage the global pool of method prototypes */static hash *nst_method_hash_list = 0;static hash *cls_method_hash_list = 0;/* the following are used when compiling a class implementation. * * implementation_template will normally be an anInterface, however if * none exists this will be equal to implementation_context...it is * set in start_class. *//* backend data declarations */static tree _OBJC_SYMBOLS_decl;static tree 	_OBJC_INSTANCE_VARIABLES_decl, _OBJC_CLASS_VARIABLES_decl;static tree 	_OBJC_INSTANCE_METHODS_decl, _OBJC_CLASS_METHODS_decl;static tree 	_OBJC_CLASS_decl, _OBJC_METACLASS_decl;#ifdef OBJC_SELECTORS_WITHOUT_LABELSstatic tree 	_OBJC_SELECTOR_REFERENCES_decl;#endifstatic tree _OBJC_MODULES_decl;static tree _OBJC_STRINGS_decl;static tree implementation_context = NULLT,	    implementation_template = NULLT;struct imp_entry {  struct imp_entry *next;  tree imp_context;  tree imp_template;  tree class_decl;		/* _OBJC_CLASS_<my_name>; */  tree meta_decl;		/* _OBJC_METACLASS_<my_name>; */};static struct imp_entry *imp_list = 0;static int imp_count = 0;	/* `@implementation' */static int cat_count = 0;	/* `@category' */static tree objc_class_template, objc_category_template, _PRIVATE_record;static tree _clsSuper_ref, __clsSuper_ref;static tree objc_method_template, objc_ivar_template;static tree objc_symtab_template, objc_module_template;static tree objc_super_template, objc_object_reference;static tree objc_object_id, objc_class_id;static tree _OBJC_SUPER_decl;static tree method_context = NULLT;static int  method_slot = 0;	/* used by start_method_def */#define BUFSIZE		512static char *errbuf;	/* a buffer for error diagnostics */extern char *strcpy (), *strcat ();extern tree groktypename_in_parm_context ();extern struct obstack permanent_obstack, *current_obstack,  *rtl_obstack;/* data imported from toplev.c  */extern char *dump_base_name;/* Open and close the file for outputting class declarations, if requested.  */int flag_gen_declaration = 0;FILE *gen_declaration_file;/* Warn if multiple methods are seen for the same selector, but with   different argument types. */int warn_selector = 0;voidlang_init (){  /* the beginning of the file is a new line; check for # */  /* With luck, we discover the real source file's name from that     and put it in input_filename.  */  ungetc (check_newline (), finput);  /* If gen_declaration desired, open the output file.  */  if (flag_gen_declaration)    {      int dump_base_name_length = strlen (dump_base_name);      register char *dumpname = (char *) xmalloc (dump_base_name_length + 7);      strcpy (dumpname, dump_base_name);      strcat (dumpname, ".decl");      gen_declaration_file = fopen (dumpname, "w");      if (gen_declaration_file == 0)	pfatal_with_name (dumpname);    }  if (doing_objc_thang)    init_objc ();}voidobjc_finish (){  if (doing_objc_thang)    finish_objc ();		/* Objective-C finalization */  if (gen_declaration_file)    fclose (gen_declaration_file);}voidlang_finish (){}intlang_decode_option (p)     char *p;{  if (!strcmp (p, "-lang-objc"))    doing_objc_thang = 1;  else if (!strcmp (p, "-gen-decls"))    flag_gen_declaration = 1;  else if (!strcmp (p, "-Wselector"))    warn_selector = 1;  else if (!strcmp (p, "-Wno-selector"))    warn_selector = 0;  else    return c_decode_option (p);  return 1;}static treedefine_decl (declarator, declspecs)     tree declarator;     tree declspecs;{  tree decl = start_decl (declarator, declspecs, 0);  finish_decl (decl, NULLT, NULLT);  return decl;}/* * rules for statically typed objects...called from `c-typeck.comptypes'. * * an assignment of the form `a' = `b' is permitted if: * *   - `a' is of type "id". *   - `a' and `b' are the same class type. *   - `a' and `b' are of class types A and B such that B is a descendant *     of A. */intmaybe_objc_comptypes (lhs, rhs)     tree lhs, rhs;{  if (doing_objc_thang)    return objc_comptypes (lhs, rhs);  return 0;}intobjc_comptypes (lhs, rhs)     tree lhs;     tree rhs;{  /* `id' = `<class> *', `<class> *' = `id' */  if ((TYPE_NAME (lhs) == objc_object_id && TYPED_OBJECT (rhs))      || (TYPED_OBJECT (lhs) && TYPE_NAME (rhs) == objc_object_id))    return 1;  /* `id' = `Class', `Class' = `id' */  else if ((TYPE_NAME (lhs) == objc_object_id &&	    TYPE_NAME (rhs) == objc_class_id) ||	   (TYPE_NAME (lhs) == objc_class_id &&	    TYPE_NAME (rhs) == objc_object_id))    return 1;  /* `<class> *' = `<class> *' */  else if (TYPED_OBJECT (lhs) && TYPED_OBJECT (rhs))    {      tree lname = TYPE_NAME (lhs), rname = TYPE_NAME (rhs);      if (lname == rname)	return 1;      else	{	  /* if the left hand side is a super class of the right hand side,	     allow it...	     */	  tree rinter = lookup_interface (rname);	  while (rinter)	    {	      if (lname == CLASS_SUPER_NAME (rinter))		return 1;	      rinter = lookup_interface (CLASS_SUPER_NAME (rinter));	    }	  return 0;	}    }  else    return 0;}/* Called from c-decl.c before all calls to rest_of_decl_compilation.  */voidmaybe_objc_check_decl (decl)     tree decl;{  if (doing_objc_thang)    objc_check_decl (decl);}voidobjc_check_decl (decl)     tree decl;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一卡二卡三卡| 久久网这里都是精品| 日韩欧美的一区二区| 国产精品国产a级| 手机精品视频在线观看| 91亚洲精品乱码久久久久久蜜桃| 欧美一区二区三区爱爱| 亚洲精品国产一区二区三区四区在线| 老司机午夜精品| 欧美日韩一二区| 亚洲欧洲无码一区二区三区| 九一久久久久久| 欧美美女直播网站| 自拍偷在线精品自拍偷无码专区 | 日韩美女视频19| 韩国精品在线观看| 日韩免费性生活视频播放| 亚洲电影中文字幕在线观看| 国产91在线观看丝袜| 久久一区二区三区国产精品| 欧美aaaaaa午夜精品| 精品视频在线看| 亚洲精品国久久99热| 91免费观看在线| 国产精品久久午夜夜伦鲁鲁| 国产一区二区三区在线观看精品| 欧美精品 日韩| 亚洲成人黄色影院| 在线精品视频一区二区三四| 亚洲少妇中出一区| 91丝袜国产在线播放| 国产精品国产a| eeuss国产一区二区三区| 国产精品免费看片| 成人午夜短视频| 国产精品系列在线| 不卡影院免费观看| 综合久久国产九一剧情麻豆| 91在线高清观看| 一区二区三区 在线观看视频| 91香蕉视频在线| 亚洲图片自拍偷拍| 精品视频一区二区不卡| 日韩极品在线观看| 欧美电视剧在线看免费| 激情五月婷婷综合| 欧美激情综合在线| 色综合天天在线| 午夜影院久久久| 欧美一区二区三区系列电影| 久久国产精品99久久久久久老狼 | 欧美一级精品在线| 久久av中文字幕片| 国产婷婷色一区二区三区四区| 国产精品538一区二区在线| 久久久国产精华| 色成人在线视频| 日韩成人一区二区三区在线观看| 精品久久久久久久久久久久久久久 | 国v精品久久久网| 一卡二卡欧美日韩| 日韩一二三区不卡| 成人99免费视频| 日韩vs国产vs欧美| 国产精品久久一卡二卡| 欧美精品欧美精品系列| 国产精品888| 午夜电影网亚洲视频| wwww国产精品欧美| 欧美影院午夜播放| 国产在线精品国自产拍免费| 亚洲欧美经典视频| 日韩精品一区二区三区三区免费| 9i在线看片成人免费| 日本大胆欧美人术艺术动态| 国产精品天天看| 欧美精品一级二级| av日韩在线网站| 美国十次了思思久久精品导航| 亚洲欧美综合色| 日韩欧美一区二区视频| 色婷婷国产精品| 国产美女视频91| 日韩精品亚洲专区| 国产精品国产三级国产普通话99| 日韩一区二区三区高清免费看看| 99综合影院在线| 黄色小说综合网站| 亚洲h在线观看| 亚洲天堂a在线| 久久精品视频免费| 91麻豆精品久久久久蜜臀| 91美女片黄在线观看91美女| 久久福利视频一区二区| 亚洲成国产人片在线观看| 中文字幕一区二区在线播放| 精品国产乱子伦一区| 欧美午夜精品一区二区三区| 99v久久综合狠狠综合久久| 久久99精品久久久久久国产越南 | 精品一区二区三区影院在线午夜| 一区二区三区四区高清精品免费观看| 久久美女高清视频| 5月丁香婷婷综合| 91在线你懂得| 成人一区二区三区视频| 国产一区二区三区最好精华液| 石原莉奈一区二区三区在线观看| 一区二区在线观看不卡| 国产精品理伦片| 中文字幕在线观看不卡| 国产精品日韩成人| 欧美国产精品劲爆| 国产精品美女久久久久久久| 国产欧美久久久精品影院| 久久久国产综合精品女国产盗摄| 亚洲精品一区二区三区福利| 欧美电视剧免费全集观看| 日韩女优毛片在线| 精品乱人伦小说| 久久久三级国产网站| 国产亚洲精品aa午夜观看| 国产亚洲va综合人人澡精品| 久久精品视频一区二区| 国产精品美女久久久久aⅴ| 中文字幕制服丝袜成人av| 日韩一区在线播放| 亚洲视频一二三区| 午夜伦理一区二区| 久久精品72免费观看| 国产一区二区三区四区五区美女 | 中文字幕一区二区三区不卡在线| 国产精品久久久久7777按摩| 一区二区三区中文字幕电影| 亚洲v精品v日韩v欧美v专区| 免费观看久久久4p| 成人va在线观看| 欧美主播一区二区三区美女| 欧美高清精品3d| 国产亚洲短视频| 亚洲与欧洲av电影| 韩国v欧美v日本v亚洲v| 91丝袜美女网| 精品噜噜噜噜久久久久久久久试看 | 欧美日韩成人在线| 欧美日韩精品欧美日韩精品一综合| 成人h精品动漫一区二区三区| 国产不卡在线视频| 成人18视频日本| 日本道精品一区二区三区| 国产一区二区0| 91理论电影在线观看| 欧美在线高清视频| 91精品国产色综合久久不卡电影 | 成人免费高清在线| 97se亚洲国产综合自在线观| 色综合久久久久综合| 欧美日韩精品专区| 国产精品久久久久久久裸模| 亚洲免费观看高清完整版在线 | 不卡av电影在线播放| 99久久精品免费观看| 日本精品视频一区二区三区| 精品国产免费久久| 一色屋精品亚洲香蕉网站| 亚洲国产日韩av| 国产精品亚洲成人| 欧美一区二区免费| 中文字幕电影一区| 视频一区二区欧美| 国产高清在线精品| 欧美一区二区三区四区高清| 中文字幕不卡三区| 日本亚洲电影天堂| 成人激情免费电影网址| 日韩欧美美女一区二区三区| 亚洲欧洲色图综合| 蜜臀va亚洲va欧美va天堂| 99久久久久久| 国产精品少妇自拍| 日韩高清不卡在线| 91视频在线观看| 欧美变态tickle挠乳网站| 日韩二区三区四区| 色综合中文字幕国产| 91.xcao| 成人欧美一区二区三区小说| 日韩黄色一级片| 91国偷自产一区二区三区观看| 精品欧美一区二区在线观看| 亚洲精品乱码久久久久久久久| 久久99久久久久久久久久久| 67194成人在线观看| 亚洲欧美综合色| 风间由美性色一区二区三区| 欧美一区二区三区在线看| 日韩va欧美va亚洲va久久| 欧美自拍丝袜亚洲| 国产精品第一页第二页第三页| 久久国产尿小便嘘嘘尿|