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

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

?? objc-act.c

?? 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一区二区三区免费野_久草精品视频
一区二区三区不卡视频| 丰满亚洲少妇av| 成人性生交大合| 在线播放欧美女士性生活| 国产精品美女久久久久久| 日产国产高清一区二区三区| 99久久伊人精品| 久久久久久久精| 轻轻草成人在线| 欧美丝袜自拍制服另类| 亚洲视频一区在线观看| 国产福利一区二区三区视频在线| 欧美日韩一区 二区 三区 久久精品| 欧美国产日韩亚洲一区| 国产在线精品一区二区三区不卡| 在线电影一区二区三区| 亚洲午夜视频在线| 在线观看视频欧美| 一个色在线综合| 99精品黄色片免费大全| 亚洲欧洲www| 成人性生交大片免费看在线播放| 久久伊99综合婷婷久久伊| 免费人成在线不卡| 日韩一级大片在线| 日韩电影在线免费观看| 欧美精品xxxxbbbb| 日日夜夜一区二区| 欧美精品乱码久久久久久| 亚洲第一搞黄网站| 欧美亚洲国产一区在线观看网站| 一卡二卡欧美日韩| 精品视频一区三区九区| 丝袜国产日韩另类美女| 91精品综合久久久久久| 美女网站一区二区| 久久精品视频免费观看| 国产盗摄精品一区二区三区在线| 国产日韩高清在线| 91一区二区在线| 亚洲图片欧美视频| 91精品国产91热久久久做人人| 日韩国产欧美一区二区三区| 精品国产伦一区二区三区观看方式| 免费成人在线观看视频| 国产日产精品1区| 菠萝蜜视频在线观看一区| 亚洲免费观看高清| 91福利区一区二区三区| 全部av―极品视觉盛宴亚洲| 精品99久久久久久| 播五月开心婷婷综合| 一区二区视频免费在线观看| 欧美精品色一区二区三区| 精品一区二区三区不卡| 中文字幕一区三区| 538在线一区二区精品国产| 国产在线一区观看| 自拍偷拍亚洲激情| 欧美一区午夜精品| 成人综合婷婷国产精品久久蜜臀 | 日韩一级片在线观看| 国产毛片一区二区| 亚洲综合在线免费观看| 精品蜜桃在线看| 色诱亚洲精品久久久久久| 免费在线观看成人| 亚洲欧美日韩国产中文在线| 欧美久久久久久久久中文字幕| 国模大尺度一区二区三区| 综合色中文字幕| 欧美大片国产精品| 91蜜桃在线免费视频| 久久91精品国产91久久小草 | av电影在线观看完整版一区二区| 亚洲综合久久久久| 国产欧美精品区一区二区三区| 91久久精品一区二区三区| 狠狠色丁香久久婷婷综合_中| 亚洲精品国产成人久久av盗摄| 精品免费99久久| 欧美日韩高清影院| 99精品欧美一区二区三区小说 | 日本特黄久久久高潮| 中文字幕av一区二区三区| 欧美一区二区在线免费观看| 不卡视频一二三四| 经典三级在线一区| 日韩精品一级中文字幕精品视频免费观看 | 亚洲第一福利一区| 国产精品久久久99| 337p日本欧洲亚洲大胆色噜噜| 在线观看不卡一区| 成+人+亚洲+综合天堂| 国产在线精品一区二区不卡了| 亚洲不卡av一区二区三区| 亚洲免费观看在线观看| 国产精品久久久久久福利一牛影视| 日韩午夜三级在线| 欧美日韩久久一区二区| 色狠狠桃花综合| 91视频.com| 懂色av噜噜一区二区三区av| 久久99精品国产.久久久久久 | 麻豆视频观看网址久久| 午夜视频在线观看一区二区| 亚洲精品高清在线观看| 中文字幕五月欧美| 国产精品久久久久aaaa樱花 | 欧美午夜电影网| 欧美中文字幕一区二区三区 | 这里只有精品免费| 欧美日韩国产精品成人| 色激情天天射综合网| 91在线观看免费视频| 成人精品视频.| 99久久免费视频.com| 99re6这里只有精品视频在线观看| 丁香亚洲综合激情啪啪综合| 成人午夜免费av| 99热这里都是精品| 色先锋久久av资源部| 欧美日韩一区视频| 91精品国产综合久久小美女| 日韩一区二区在线免费观看| 91精品国产欧美一区二区成人| 国产亚洲1区2区3区| 国产三级精品三级在线专区| 国产精品视频免费看| 亚洲日本在线a| 亚洲一区二区3| 欧美aaa在线| 国产乱码字幕精品高清av| 国产精品资源站在线| 粉嫩aⅴ一区二区三区四区五区| 成人av午夜电影| 欧美日精品一区视频| 日韩欧美精品在线视频| 国产精品亲子伦对白| 亚洲综合一二三区| 久草热8精品视频在线观看| 国产成a人亚洲精品| 色噜噜狠狠一区二区三区果冻| 欧美日韩激情一区| 久久综合狠狠综合久久激情| 最新高清无码专区| 日韩在线观看一区二区| 国产69精品一区二区亚洲孕妇| 色哟哟一区二区| 精品剧情在线观看| 亚洲精品国产无天堂网2021 | 国产美女一区二区三区| 99热在这里有精品免费| 日韩亚洲欧美在线观看| 国产精品视频九色porn| 香蕉加勒比综合久久| 国产丶欧美丶日本不卡视频| 欧美日韩精品免费观看视频| 国产日韩av一区二区| 日本中文字幕一区| caoporn国产精品| 精品国产乱码久久久久久闺蜜| 亚洲日本va午夜在线电影| 久久精品国产在热久久| 欧美中文字幕一二三区视频| 精品国产乱码久久久久久久| 亚洲免费在线观看| 国产精品小仙女| 日韩一区二区免费电影| 夜夜精品视频一区二区| 国产东北露脸精品视频| 日韩美女一区二区三区四区| 亚洲色图在线视频| 国产成人欧美日韩在线电影| 久久久精品日韩欧美| 亚洲成a人片综合在线| 成人av小说网| 国产欧美va欧美不卡在线| 久久er精品视频| 欧美一区二区日韩| 午夜精品国产更新| 欧美日韩在线综合| 亚洲精品ww久久久久久p站| 成人性色生活片免费看爆迷你毛片| 日韩精品专区在线影院观看| 日本三级韩国三级欧美三级| 在线观看日韩高清av| 亚洲精品一二三| av激情亚洲男人天堂| 国产精品蜜臀在线观看| 国产精品亚洲综合一区在线观看| 欧美大尺度电影在线| 青草av.久久免费一区| 91精品欧美久久久久久动漫| 丝袜亚洲另类欧美| 欧美一区二区在线免费播放| 偷拍与自拍一区| 欧美肥妇bbw| 日本视频中文字幕一区二区三区| 欧美丰满美乳xxx高潮www|