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

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

?? objc-act.c

?? GCC編譯器源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* Implement classes and message passing for Objective C.   Copyright (C) 1992, 1993, 1994, 1995, 1997 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 "config.h"#include <stdio.h>#include "tree.h"#include "c-tree.h"#include "c-lex.h"#include "flags.h"#include "objc-act.h"#include "input.h"#include "except.h"#include "function.h"#include <string.h>#include "output.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 = NULL_TREE;/* The declaration of the array administrating the static instances.  */static tree static_instances_decl = NULL_TREE;/* for encode_method_def */#include "rtl.h"#include "c-parse.h"#define OBJC_VERSION	(flag_next_runtime ? 5 : 8)#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));static void generate_static_references		PROTO((void));static int check_methods_accessible		PROTO((tree, tree,						       int));static void encode_aggregate_within		PROTO((tree, int, int,					               char, char));/* We handle printing method names ourselves for ObjC */extern char *(*decl_printable_name) ();/* 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 get_objc_string_decl		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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一区在线| 久久超碰97中文字幕| 亚洲色图都市小说| 国产精品久久久久久亚洲伦| 国产网站一区二区| 日本一区二区三区高清不卡| 久久精品欧美一区二区三区不卡 | 色婷婷综合久久久中文字幕| www.亚洲色图.com| 99re这里只有精品首页| 色婷婷综合久久久久中文一区二区| av在线不卡观看免费观看| 91丨porny丨中文| 在线视频国产一区| 欧美日韩一本到| 91麻豆精品国产自产在线观看一区| 日韩色在线观看| 精品国产乱码久久| 久久精品人人做| 日韩理论片在线| 性久久久久久久久| 久久99国产乱子伦精品免费| 国模大尺度一区二区三区| 成人午夜免费av| 91美女视频网站| 欧美日韩国产一级片| 日韩欧美精品在线视频| 国产亚洲欧洲一区高清在线观看| 国产精品蜜臀在线观看| 一区二区三区在线免费| 亚洲成a人片在线观看中文| 男人的天堂亚洲一区| 国产成人综合亚洲91猫咪| 91亚洲精品一区二区乱码| 欧美日韩在线不卡| 欧美精品一区二区三区视频| 国产精品热久久久久夜色精品三区 | 另类小说一区二区三区| 成人午夜视频在线| 欧美日韩国产免费一区二区| 欧美xxxxx裸体时装秀| 一色屋精品亚洲香蕉网站| 香蕉久久一区二区不卡无毒影院| 韩国午夜理伦三级不卡影院| 色综合咪咪久久| 日韩欧美中文字幕精品| 国产精品久久久久久妇女6080| 午夜精品免费在线| 国产成人综合在线观看| 欧美卡1卡2卡| 久久精品网站免费观看| 午夜不卡av免费| www.亚洲色图| 欧美一二区视频| 18成人在线观看| 久久精品免费看| 在线一区二区视频| 久久久久国产精品麻豆ai换脸 | 亚洲大片精品永久免费| 国产成人啪免费观看软件| 欧美性色黄大片| 国产午夜精品理论片a级大结局| 亚洲444eee在线观看| 高清成人免费视频| 欧美一区二区视频观看视频| 亚洲天堂精品视频| 国产高清亚洲一区| 日韩午夜电影在线观看| 亚洲综合免费观看高清完整版| 国产精品亚洲专一区二区三区 | 综合电影一区二区三区 | 成人国产精品免费网站| 欧美zozozo| 香蕉久久夜色精品国产使用方法| 成人蜜臀av电影| 久久综合九色综合97婷婷女人| 午夜久久久久久久久久一区二区| 色综合一个色综合| 国产欧美日韩视频在线观看| 另类中文字幕网| 6080亚洲精品一区二区| 亚洲最快最全在线视频| 一本到三区不卡视频| 国产欧美在线观看一区| 经典三级在线一区| 欧美一区二区视频免费观看| 亚洲成精国产精品女| 色噜噜偷拍精品综合在线| 中文在线一区二区| 国产一区福利在线| 精品欧美黑人一区二区三区| 免费视频最近日韩| 欧美人成免费网站| 亚洲成人黄色影院| 91黄色激情网站| 亚洲日本在线a| 成人不卡免费av| 国产精品理论在线观看| 东方欧美亚洲色图在线| 久久精品视频网| 国产不卡视频在线观看| 国产亚洲制服色| 国产精品99久久久久久久vr| 国产欧美视频在线观看| 大尺度一区二区| 国产亚洲精品资源在线26u| 国产乱码精品一区二区三区av | 亚洲精品在线电影| 激情六月婷婷久久| 亚洲精品在线观看网站| 国产精品综合在线视频| 久久婷婷国产综合精品青草| 美洲天堂一区二卡三卡四卡视频| 欧美一区二区久久| 激情久久久久久久久久久久久久久久| 日韩欧美三级在线| 国产精品系列在线观看| 国产精品久久久久一区二区三区 | 国产精品女人毛片| 99re热这里只有精品视频| 一区二区三区免费| 91精品久久久久久久久99蜜臂| 久久99精品国产麻豆婷婷| 久久久不卡影院| aaa欧美色吧激情视频| 亚洲精品免费在线| 欧美高清视频一二三区 | 日韩电影在线看| 日韩欧美不卡一区| 风间由美中文字幕在线看视频国产欧美| 国产日韩欧美不卡| 色综合欧美在线| 麻豆国产精品官网| 亚洲欧洲日韩综合一区二区| 在线观看免费成人| 蜜桃久久精品一区二区| 国产精品青草久久| 欧美日韩大陆在线| 国产一区二区剧情av在线| 日韩美女视频一区二区| 在线播放国产精品二区一二区四区 | 亚洲婷婷国产精品电影人久久| 欧美日韩一二三区| 国产91精品精华液一区二区三区| 亚洲免费av高清| 精品久久久久一区二区国产| www.性欧美| 日韩成人dvd| 亚洲欧洲三级电影| 日韩欧美国产一区二区三区 | 色素色在线综合| 久久精品99国产精品日本| 国产精品午夜电影| 91麻豆精品国产91久久久更新时间| 国产丶欧美丶日本不卡视频| 亚洲国产精品久久人人爱蜜臀| www久久久久| 欧美亚洲一区二区在线观看| 国产麻豆精品一区二区| 一区二区三区在线观看视频| 久久嫩草精品久久久精品| 日本电影欧美片| 国产精品一区三区| 亚洲成人免费在线| 最新成人av在线| 精品裸体舞一区二区三区| 91福利国产成人精品照片| 国产成人精品一区二区三区四区 | 自拍av一区二区三区| 精品成人在线观看| 欧美日韩国产小视频在线观看| 国产999精品久久久久久绿帽| 日韩高清不卡一区二区三区| 亚洲激情成人在线| 国产欧美一区在线| 欧美电影免费提供在线观看| 欧美在线视频日韩| 成人av高清在线| 国内精品第一页| 日韩不卡一区二区三区| 亚洲综合视频在线观看| 国产精品久久久久三级| 久久久亚洲精华液精华液精华液| 欧美精品777| 欧洲av在线精品| 99久久综合精品| 国产91清纯白嫩初高中在线观看| 久久精品av麻豆的观看方式| 日韩精品电影一区亚洲| 亚洲成人第一页| 一区二区三区中文免费| 最新热久久免费视频| 欧美国产97人人爽人人喊| 精品国产91乱码一区二区三区 | 国产日产亚洲精品系列| 久久综合色之久久综合| 欧美日韩国产一二三| 欧美久久免费观看| 欧美日本不卡视频| 欧美日韩亚洲另类|