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

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

?? objc-act.c

?? GUN開源阻止下的編譯器GCC
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* Implement classes and message passing for Objective C.   Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.   Contributed by 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, 59 Temple Place - Suite 330,Boston, MA 02111-1307, 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  */#include <stdio.h>#include "config.h"#include "tree.h"#include "c-tree.h"#include "c-lex.h"#include "flags.h"#include "objc-act.h"#include "input.h"#include "function.h"/* This is the default way of generating a method name.  *//* I am not sure it is really correct.   Perhaps there's a danger that it will make name conflicts   if method names contain underscores. -- rms.  */#ifndef OBJC_GEN_METHOD_LABEL#define OBJC_GEN_METHOD_LABEL(BUF, IS_INST, CLASS_NAME, CAT_NAME, SEL_NAME, NUM) \  do {					    \    char *temp;				    \    sprintf ((BUF), "_%s_%s_%s_%s",	    \	     ((IS_INST) ? "i" : "c"),	    \	     (CLASS_NAME),		    \	     ((CAT_NAME)? (CAT_NAME) : ""), \	     (SEL_NAME));		    \    for (temp = (BUF); *temp; temp++)	    \      if (*temp == ':') *temp = '_';	    \  } while (0)#endif/* These need specifying.  */#ifndef OBJC_FORWARDING_STACK_OFFSET#define OBJC_FORWARDING_STACK_OFFSET 0#endif#ifndef OBJC_FORWARDING_MIN_OFFSET#define OBJC_FORWARDING_MIN_OFFSET 0#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;/* List of classes with list of their static instances.  */static tree objc_static_instances;/* The declaration of the array administrating the static instances.  */static tree static_instances_decl;/* for encode_method_def */#include "rtl.h"#include "c-parse.h"#define OBJC_VERSION	(flag_next_runtime ? 5 : 7)#define PROTOCOL_VERSION 2#define OBJC_ENCODE_INLINE_DEFS 	0#define OBJC_ENCODE_DONT_INLINE_DEFS	1/*** Private Interface (procedures) ***//* Used by compile_file. */static void init_objc				PROTO((void));static void finish_objc				PROTO((void));/* Code generation. */static void synth_module_prologue		PROTO((void));static tree build_constructor			PROTO((tree, tree));static char *build_module_descriptor		PROTO((void));static tree init_module_descriptor		PROTO((tree));static tree build_objc_method_call		PROTO((int, tree, tree,						       tree, tree, tree));static void generate_strings			PROTO((void));static tree get_proto_encoding 			PROTO((tree));static void build_selector_translation_table	PROTO((void));static tree build_ivar_chain			PROTO((tree, int));static tree objc_add_static_instance		PROTO((tree, tree));static tree build_ivar_template			PROTO((void));static tree build_method_template		PROTO((void));static tree build_private_template		PROTO((tree));static void build_class_template		PROTO((void));static void build_selector_template		PROTO((void));static void build_category_template		PROTO((void));static tree build_super_template		PROTO((void));static tree build_category_initializer		PROTO((tree, tree, tree,						       tree, tree, tree));static tree build_protocol_initializer		PROTO((tree, tree, tree,						       tree, tree));static void synth_forward_declarations		PROTO((void));static void generate_ivar_lists			PROTO((void));static void generate_dispatch_tables		PROTO((void));static void generate_shared_structures		PROTO((void));static tree generate_protocol_list		PROTO((tree));static void generate_forward_declaration_to_string_table PROTO((void));static void build_protocol_reference		PROTO((tree));static tree init_selector			PROTO((int));static tree build_keyword_selector		PROTO((tree));static tree synth_id_with_class_suffix		PROTO((char *, tree));/* From expr.c */extern int apply_args_register_offset           PROTO((int));/* Misc. bookkeeping */typedef struct hashed_entry 	*hash;typedef struct hashed_attribute  *attr;struct hashed_attribute{  attr next;  tree value;};struct hashed_entry{  attr list;  hash next;  tree key;};static void hash_init				PROTO((void));static void hash_enter				PROTO((hash *, tree));static hash hash_lookup				PROTO((hash *, tree));static void hash_add_attr			PROTO((hash, tree));static tree lookup_method			PROTO((tree, tree));static tree lookup_instance_method_static	PROTO((tree, tree));static tree lookup_class_method_static		PROTO((tree, tree));static tree add_class				PROTO((tree));static void add_category			PROTO((tree, tree));enum string_section{  class_names,		/* class, category, protocol, module names */  meth_var_names,	/* method and variable names */  meth_var_types	/* method and variable type descriptors */};static tree add_objc_string			PROTO((tree,						       enum string_section));static tree build_objc_string_decl		PROTO((tree,						       enum string_section));static tree build_selector_reference_decl	PROTO((tree));/* Protocol additions. */static tree add_protocol			PROTO((tree));static tree lookup_protocol			PROTO((tree));static tree lookup_and_install_protocols	PROTO((tree));/* Type encoding. */static void encode_type_qualifiers		PROTO((tree));static void encode_pointer			PROTO((tree, int, int));static void encode_array			PROTO((tree, int, int));static void encode_aggregate			PROTO((tree, int, int));static void encode_bitfield			PROTO((int, int));static void encode_type				PROTO((tree, int, int));static void encode_field_decl			PROTO((tree, int, int));static void really_start_method			PROTO((tree, tree));static int comp_method_with_proto		PROTO((tree, tree));static int comp_proto_with_proto		PROTO((tree, tree));static tree get_arg_type_list			PROTO((tree, int, int));static tree expr_last				PROTO((tree));/* Utilities for debugging and error diagnostics. */static void warn_with_method			PROTO((char *, int, tree));static void error_with_ivar			PROTO((char *, tree, tree));static char *gen_method_decl			PROTO((tree, char *));static char *gen_declaration			PROTO((tree, char *));static char *gen_declarator			PROTO((tree, char *, char *));static int is_complex_decl			PROTO((tree));static void adorn_decl				PROTO((tree, char *));static void dump_interface			PROTO((FILE *, tree));/* Everything else. */static void objc_fatal				PROTO((void));static tree define_decl				PROTO((tree, tree));static tree lookup_method_in_protocol_list	PROTO((tree, tree, int));static tree lookup_protocol_in_reflist		PROTO((tree, tree));static tree create_builtin_decl			PROTO((enum tree_code,						       tree, char *));static tree my_build_string			PROTO((int, char *));static void build_objc_symtab_template		PROTO((void));static tree init_def_list			PROTO((tree));static tree init_objc_symtab			PROTO((tree));static void forward_declare_categories		PROTO((void));static void generate_objc_symtab_decl		PROTO((void));static tree build_selector			PROTO((tree));static tree build_msg_pool_reference		PROTO((int));static tree build_typed_selector_reference     	PROTO((tree, tree));static tree build_selector_reference		PROTO((tree));static tree build_class_reference_decl		PROTO((tree));static void add_class_reference			PROTO((tree));static tree objc_copy_list			PROTO((tree, tree *));static tree build_protocol_template		PROTO((void));static tree build_descriptor_table_initializer	PROTO((tree, tree));static tree build_method_prototype_list_template PROTO((tree, int));static tree build_method_prototype_template	PROTO((void));static int forwarding_offset			PROTO((tree));static tree encode_method_prototype		PROTO((tree, tree));static tree generate_descriptor_table		PROTO((tree, char *, int, tree, tree));static void generate_method_descriptors		PROTO((tree));static tree build_tmp_function_decl		PROTO((void));static void hack_method_prototype		PROTO((tree, tree));static void generate_protocol_references	PROTO((tree));static void generate_protocols			PROTO((void));static void check_ivars				PROTO((tree, tree));static tree build_ivar_list_template		PROTO((tree, int));static tree build_method_list_template		PROTO((tree, int));static tree build_ivar_list_initializer		PROTO((tree, tree));static tree generate_ivars_list			PROTO((tree, char *,						       int, tree));static tree build_dispatch_table_initializer	PROTO((tree, tree));static tree generate_dispatch_table		PROTO((tree, char *,						       int, tree));static tree build_shared_structure_initializer	PROTO((tree, tree, tree, tree,						       tree, int, tree, tree,						       tree));static void generate_category			PROTO((tree));static int is_objc_type_qualifier		PROTO((tree));static tree adjust_type_for_id_default		PROTO((tree));static tree check_duplicates			PROTO((hash));static tree receiver_is_class_object		PROTO((tree));static int check_methods			PROTO((tree, tree, int));static int conforms_to_protocol			PROTO((tree, tree));static void check_protocols			PROTO((tree, char *, char *));static tree encode_method_def			PROTO((tree));static void gen_declspecs			PROTO((tree, char *, int));static void generate_classref_translation_entry	PROTO((tree));static void handle_class_ref			PROTO((tree));/*** 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 UTAG_CLASS		"_objc_class"#define UTAG_IVAR		"_objc_ivar"#define UTAG_IVAR_LIST		"_objc_ivar_list"#define UTAG_METHOD		"_objc_method"#define UTAG_METHOD_LIST	"_objc_method_list"#define UTAG_CATEGORY		"_objc_category"#define UTAG_MODULE		"_objc_module"#define UTAG_STATICS		"_objc_statics"#define UTAG_SYMTAB		"_objc_symtab"#define UTAG_SUPER		"_objc_super"#define UTAG_SELECTOR		"_objc_selector"#define UTAG_PROTOCOL		"_objc_protocol"#define UTAG_PROTOCOL_LIST	"_objc_protocol_list"#define UTAG_METHOD_PROTOTYPE	"_objc_method_prototype"#define UTAG_METHOD_PROTOTYPE_LIST "_objc__method_prototype_list"#define STRING_OBJECT_CLASS_NAME "NXConstantString"#define PROTOCOL_OBJECT_CLASS_NAME "Protocol"static char *TAG_GETCLASS;static char *TAG_GETMETACLASS;static char *TAG_MSGSEND;static char *TAG_MSGSENDSUPER;static char *TAG_EXECCLASS;/* 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, ucmd_id;static tree unused_list;static tree self_decl, umsg_decl, umsg_super_decl;static tree objc_get_class_decl, objc_get_meta_class_decl;static tree super_type, selector_type, id_type, objc_class_type;static tree instance_type, protocol_type;/* Type checking macros.  */#define IS_ID(TYPE) \  (TYPE_MAIN_VARIANT (TYPE) == TYPE_MAIN_VARIANT (id_type))#define IS_PROTOCOL_QUALIFIED_ID(TYPE) \  (IS_ID (TYPE) && TYPE_PROTOCOL_LIST (TYPE))#define IS_SUPER(TYPE) \  (super_type && TYPE_MAIN_VARIANT (TYPE) == TYPE_MAIN_VARIANT (super_type))static tree class_chain = NULL_TREE;static tree alias_chain = NULL_TREE;static tree interface_chain = NULL_TREE;static tree protocol_chain = NULL_TREE;/* Chains to manage selectors that are referenced and defined in the module. */static tree cls_ref_chain = NULL_TREE;	/* Classes referenced. */static tree sel_ref_chain = NULL_TREE;	/* Selectors referenced. *//* Chains to manage uniquing of strings. */static tree class_names_chain = NULL_TREE;static tree meth_var_names_chain = NULL_TREE;static tree meth_var_types_chain = NULL_TREE;/* Hash tables to manage the global pool of method prototypes. */static hash *nst_method_hash_list = 0;static hash *cls_method_hash_list = 0;/* Backend data declarations. */static tree UOBJC_SYMBOLS_decl;static tree UOBJC_INSTANCE_VARIABLES_decl, UOBJC_CLASS_VARIABLES_decl;static tree UOBJC_INSTANCE_METHODS_decl, UOBJC_CLASS_METHODS_decl;static tree UOBJC_CLASS_decl, UOBJC_METACLASS_decl;static tree UOBJC_SELECTOR_TABLE_decl;static tree UOBJC_MODULES_decl;static tree UOBJC_STRINGS_decl;/* The following are used when compiling a class implementation.   implementation_template will normally be an interface, however if   none exists this will be equal to implementation_context...it is   set in start_class.  */static tree implementation_context = NULL_TREE;static tree implementation_template = NULL_TREE;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 void handle_impent			PROTO((struct imp_entry *));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, uprivate_record;static tree objc_protocol_template, objc_selector_template;static tree ucls_super_ref, uucls_super_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, objc_id_id;static tree constant_string_id;static tree constant_string_type;static tree UOBJC_SUPER_decl;static tree method_context = NULL_TREE;static int  method_slot = 0;	/* Used by start_method_def, */#define BUFSIZE		1024static char *errbuf;	/* Buffer for error diagnostics *//* Data imported from tree.c. */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
678五月天丁香亚洲综合网| 国产精品影视在线| 国产精品网站在线观看| 久久99精品久久久久久动态图| 欧美高清你懂得| 美女视频免费一区| 久久久久久免费毛片精品| 高潮精品一区videoshd| 国产精品网曝门| 在线看一区二区| 天堂蜜桃一区二区三区| 精品国产伦一区二区三区观看方式 | 欧美日韩国产另类一区| 日韩电影在线一区| 精品国产髙清在线看国产毛片| 国产一区二三区好的| 国产精品午夜免费| 欧美日韩久久久久久| 国内精品伊人久久久久av影院 | 91豆麻精品91久久久久久| 亚洲欧美日韩久久| 欧美另类变人与禽xxxxx| 国产在线播放一区三区四| 国产精品污污网站在线观看| 91美女在线看| 久久福利资源站| 中文字幕五月欧美| 欧美一级一区二区| 暴力调教一区二区三区| 秋霞成人午夜伦在线观看| 国产精品久久久久影院| 欧美色图一区二区三区| 国产精品1024久久| 亚洲成a人片在线观看中文| 精品国产a毛片| 欧美亚洲自拍偷拍| 国产大陆亚洲精品国产| 视频一区视频二区中文字幕| 国产精品你懂的| 欧美一区2区视频在线观看| 成人在线视频首页| 久久精品噜噜噜成人av农村| 亚洲精品国产无套在线观| 久久亚洲精品小早川怜子| 欧美精品第一页| 91蜜桃免费观看视频| 国产成人精品三级麻豆| 欧美aaa在线| 亚洲一卡二卡三卡四卡无卡久久 | 蜜桃av一区二区三区| 亚洲免费在线看| 欧美国产精品一区| 日韩三级高清在线| 欧美日韩国产123区| 99re这里都是精品| 成人免费视频视频在线观看免费| 久草在线在线精品观看| 午夜精彩视频在线观看不卡| 综合久久久久综合| 中文字幕欧美区| 国产欧美日韩精品一区| 欧美va亚洲va香蕉在线| 678五月天丁香亚洲综合网| 在线观看国产一区二区| 99精品一区二区| 成人午夜av在线| 国产精一品亚洲二区在线视频| 美女网站色91| 美女国产一区二区三区| 日韩高清不卡一区二区| 婷婷中文字幕一区三区| 午夜在线成人av| 婷婷国产在线综合| 日韩avvvv在线播放| 日韩在线观看一区二区| 丝袜美腿一区二区三区| 日本不卡一区二区三区高清视频| 日韩中文字幕av电影| 免费高清在线视频一区·| 久久av中文字幕片| 国产综合久久久久影院| 国产福利精品导航| 北岛玲一区二区三区四区| 成年人午夜久久久| 一本色道久久综合亚洲91| 在线看不卡av| 欧美疯狂性受xxxxx喷水图片| 欧美乱妇一区二区三区不卡视频| 91精品国产综合久久福利| 日韩精品专区在线影院重磅| 精品国精品自拍自在线| 国产精品视频一二三| 一区二区三区日本| 婷婷久久综合九色综合伊人色| 麻豆一区二区三区| 高清久久久久久| 色视频欧美一区二区三区| 欧美日本一区二区三区| 精品国产亚洲一区二区三区在线观看| 久久久电影一区二区三区| 中文字幕五月欧美| 午夜精品爽啪视频| 国产一区二区三区四区五区入口| 国产成人精品网址| 欧美性色aⅴ视频一区日韩精品| 在线91免费看| 国产三级精品三级| 亚洲网友自拍偷拍| 国产一区二区三区免费在线观看| 成人毛片视频在线观看| 欧美日韩高清影院| 国产女人18毛片水真多成人如厕| 亚洲精品国产无套在线观| 久久精品国产久精国产爱| 99久久久久免费精品国产| 欧美福利视频一区| 最新国产精品久久精品| 日韩电影在线一区| 91香蕉国产在线观看软件| 日韩一区国产二区欧美三区| 中文字幕一区三区| 麻豆精品新av中文字幕| 91美女视频网站| 久久久综合精品| 亚洲大片免费看| 99久久99久久精品免费观看| 精品少妇一区二区三区视频免付费 | 六月丁香综合在线视频| 一本色道久久加勒比精品| 26uuu国产电影一区二区| 亚洲国产三级在线| 成人午夜激情视频| 26uuu欧美日本| 天天色综合天天| 91免费国产在线| 国产亚洲福利社区一区| 奇米精品一区二区三区在线观看| 99久久精品国产导航| 精品国产免费视频| 视频在线观看一区二区三区| 99久久婷婷国产综合精品电影| 2021国产精品久久精品| 日韩av一级电影| 欧美日韩亚洲国产综合| 亚洲蜜桃精久久久久久久| 岛国精品在线播放| 久久影院电视剧免费观看| 蜜臀久久99精品久久久久宅男| 欧美午夜免费电影| 亚洲综合丝袜美腿| 91片黄在线观看| 日韩一区有码在线| 成人综合婷婷国产精品久久蜜臀| 精品国产3级a| 极品少妇xxxx精品少妇偷拍| 91麻豆精品国产| 三级成人在线视频| 欧美另类z0zxhd电影| 五月天亚洲精品| 欧美日韩精品欧美日韩精品一综合| 一区二区三区四区亚洲| 在线一区二区三区四区五区| 亚洲免费在线观看| 91在线播放网址| 亚洲欧洲中文日韩久久av乱码| 91小视频免费看| 一区二区三区国产豹纹内裤在线| 97se亚洲国产综合自在线| 国产精品区一区二区三区| 成人精品在线视频观看| 国产精品久久一级| 91香蕉视频污| 一区二区三区在线播放| 欧美性猛交xxxxxxxx| 日日噜噜夜夜狠狠视频欧美人| 91精品免费在线观看| 国产一区在线不卡| 欧美高清在线精品一区| 波波电影院一区二区三区| 亚洲精品视频在线看| 欧美日韩一区二区三区在线看 | 性做久久久久久久久| 欧美一区二区免费视频| 狠狠色丁香久久婷婷综合_中| 久久婷婷成人综合色| 成人高清av在线| 亚洲愉拍自拍另类高清精品| 欧美日韩www| 国产一区视频网站| 1024成人网| 欧美色欧美亚洲另类二区| 日本不卡视频在线观看| 久久九九全国免费| 色综合天天综合| 日本 国产 欧美色综合| 欧美激情中文字幕一区二区| 在线免费精品视频| 激情成人午夜视频| 一区二区三区在线免费| 精品久久久久久久久久久久久久久久久|