⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objc-act.h

📁 gcc的组件
💻 H
📖 第 1 页 / 共 2 页
字号:
/* Declarations for objc-act.c.   Copyright (C) 1990, 2000, 2001, 2002, 2003, 2004, 2005   Free Software Foundation, Inc.This file is part of GCC.GCC 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.GCC 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 GCC; see the file COPYING.  If not, write tothe Free Software Foundation, 51 Franklin Street, Fifth Floor,Boston, MA 02110-1301, USA.  */#ifndef GCC_OBJC_ACT_H#define GCC_OBJC_ACT_H/* For enum gimplify_status */#include "tree-gimple.h"/*** Language hooks ***/bool objc_init (void);const char *objc_printable_name (tree, int);tree objc_get_callee_fndecl (tree);void objc_finish_file (void);tree objc_fold_obj_type_ref (tree, tree);enum gimplify_status objc_gimplify_expr (tree *, tree *, tree *);/* NB: The remaining public functions are prototyped in c-common.h, for the   benefit of stub-objc.c and objc-act.c.  *//* Objective-C structures */#define CLASS_LANG_SLOT_ELTS		5#define PROTOCOL_LANG_SLOT_ELTS		2#define OBJC_INFO_SLOT_ELTS		2/* KEYWORD_DECL */#define KEYWORD_KEY_NAME(DECL) ((DECL)->decl_minimal.name)#define KEYWORD_ARG_NAME(DECL) ((DECL)->decl_non_common.arguments)/* INSTANCE_METHOD_DECL, CLASS_METHOD_DECL */#define METHOD_SEL_NAME(DECL) ((DECL)->decl_minimal.name)#define METHOD_SEL_ARGS(DECL) ((DECL)->decl_non_common.arguments)#define METHOD_ADD_ARGS(DECL) ((DECL)->decl_non_common.result)#define METHOD_ADD_ARGS_ELLIPSIS_P(DECL) ((DECL)->decl_common.lang_flag_0)#define METHOD_DEFINITION(DECL) ((DECL)->decl_common.initial)#define METHOD_ENCODING(DECL) ((DECL)->decl_minimal.context)/* CLASS_INTERFACE_TYPE, CLASS_IMPLEMENTATION_TYPE,   CATEGORY_INTERFACE_TYPE, CATEGORY_IMPLEMENTATION_TYPE,   PROTOCOL_INTERFACE_TYPE */#define CLASS_NAME(CLASS) ((CLASS)->type.name)#define CLASS_SUPER_NAME(CLASS) (TYPE_CHECK (CLASS)->type.context)#define CLASS_IVARS(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 0)#define CLASS_RAW_IVARS(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 1)#define CLASS_NST_METHODS(CLASS) ((CLASS)->type.minval)#define CLASS_CLS_METHODS(CLASS) ((CLASS)->type.maxval)#define CLASS_STATIC_TEMPLATE(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 2)#define CLASS_CATEGORY_LIST(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 3)#define CLASS_PROTOCOL_LIST(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 4)#define PROTOCOL_NAME(CLASS) ((CLASS)->type.name)#define PROTOCOL_LIST(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 0)#define PROTOCOL_NST_METHODS(CLASS) ((CLASS)->type.minval)#define PROTOCOL_CLS_METHODS(CLASS) ((CLASS)->type.maxval)#define PROTOCOL_FORWARD_DECL(CLASS) TREE_VEC_ELT (TYPE_LANG_SLOT_1 (CLASS), 1)#define PROTOCOL_DEFINED(CLASS) TREE_USED (CLASS)/* ObjC-specific information pertaining to RECORD_TYPEs are stored in   the LANG_SPECIFIC structures, which may itself need allocating first.  *//* The following three macros must be overridden (in objcp/objcp-decl.h)   for Objective-C++.  */#define TYPE_OBJC_INFO(TYPE) TYPE_LANG_SPECIFIC (TYPE)->objc_info#define SIZEOF_OBJC_TYPE_LANG_SPECIFIC sizeof (struct lang_type)#define ALLOC_OBJC_TYPE_LANG_SPECIFIC(NODE)				\  do {									\    TYPE_LANG_SPECIFIC (NODE) = GGC_CNEW (struct lang_type);		\  } while (0)#define TYPE_HAS_OBJC_INFO(TYPE)				\	(TYPE_LANG_SPECIFIC (TYPE) && TYPE_OBJC_INFO (TYPE))#define TYPE_OBJC_INTERFACE(TYPE) TREE_VEC_ELT (TYPE_OBJC_INFO (TYPE), 0)#define TYPE_OBJC_PROTOCOL_LIST(TYPE) TREE_VEC_ELT (TYPE_OBJC_INFO (TYPE), 1)#define INIT_TYPE_OBJC_INFO(TYPE)				\	do							\	  {							\	    if (!TYPE_LANG_SPECIFIC (TYPE))			\	      ALLOC_OBJC_TYPE_LANG_SPECIFIC(TYPE);		\	    if (!TYPE_OBJC_INFO (TYPE))				\	      TYPE_OBJC_INFO (TYPE)				\		= make_tree_vec (OBJC_INFO_SLOT_ELTS);		\	  }							\	while (0)#define DUP_TYPE_OBJC_INFO(DST, SRC)				\	do							\	  {							\	    ALLOC_OBJC_TYPE_LANG_SPECIFIC(DST);			\	    if (TYPE_LANG_SPECIFIC (SRC))			\	      memcpy (TYPE_LANG_SPECIFIC (DST),			\		      TYPE_LANG_SPECIFIC (SRC),			\		      SIZEOF_OBJC_TYPE_LANG_SPECIFIC);		\	    TYPE_OBJC_INFO (DST)				\	      = make_tree_vec (OBJC_INFO_SLOT_ELTS);		\	  }							\	while (0)#define TYPED_OBJECT(TYPE)					\	(TREE_CODE (TYPE) == RECORD_TYPE			\	 && TYPE_HAS_OBJC_INFO (TYPE)				\	 && TYPE_OBJC_INTERFACE (TYPE))#define OBJC_TYPE_NAME(TYPE) TYPE_NAME(TYPE)#define OBJC_SET_TYPE_NAME(TYPE, NAME) (TYPE_NAME (TYPE) = NAME)/* Define the Objective-C or Objective-C++ language-specific tree codes.  */#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) SYM,enum objc_tree_code {#if defined (GCC_CP_TREE_H)  LAST_BASE_TREE_CODE = LAST_CPLUS_TREE_CODE,#else #if defined (GCC_C_TREE_H)  LAST_BASE_TREE_CODE = LAST_C_TREE_CODE,#else  #error You must include <c-tree.h> or <cp/cp-tree.h> before <objc/objc-act.h>#endif#endif#include "objc-tree.def"  LAST_OBJC_TREE_CODE};#undef DEFTREECODE/* Hash tables to manage the global pool of method prototypes.  */typedef struct hashed_entry	*hash;typedef struct hashed_attribute	*attr;struct hashed_attribute GTY(()){  attr next;  tree value;};struct hashed_entry GTY(()){  attr list;  hash next;  tree key;};extern GTY ((length ("SIZEHASHTABLE"))) hash *nst_method_hash_list;extern GTY ((length ("SIZEHASHTABLE"))) hash *cls_method_hash_list;#define SIZEHASHTABLE		257/* Objective-C/Objective-C++ @implementation list.  */struct imp_entry GTY(()){  struct imp_entry *next;  tree imp_context;  tree imp_template;  tree class_decl;		/* _OBJC_CLASS_<my_name>; */  tree meta_decl;		/* _OBJC_METACLASS_<my_name>; */  BOOL_BITFIELD has_cxx_cdtors : 1;};extern GTY(()) struct imp_entry *imp_list;extern GTY(()) int imp_count;	/* `@implementation' */extern GTY(()) int cat_count;	/* `@category' */extern GTY(()) enum tree_code objc_inherit_code;extern GTY(()) int objc_public_flag;/* Objective-C/Objective-C++ global tree enumeration.  */enum objc_tree_index{    OCTI_STATIC_NST,    OCTI_STATIC_NST_DECL,    OCTI_SELF_ID,    OCTI_UCMD_ID,    OCTI_SELF_DECL,    OCTI_UMSG_DECL,    OCTI_UMSG_FAST_DECL,    OCTI_UMSG_SUPER_DECL,    OCTI_UMSG_STRET_DECL,    OCTI_UMSG_SUPER_STRET_DECL,    OCTI_GET_CLASS_DECL,    OCTI_GET_MCLASS_DECL,    OCTI_SUPER_TYPE,    OCTI_SEL_TYPE,    OCTI_ID_TYPE,    OCTI_CLS_TYPE,    OCTI_NST_TYPE,    OCTI_PROTO_TYPE,    OCTI_CLS_CHAIN,    OCTI_ALIAS_CHAIN,    OCTI_INTF_CHAIN,    OCTI_PROTO_CHAIN,    OCTI_IMPL_CHAIN,    OCTI_CLS_REF_CHAIN,    OCTI_SEL_REF_CHAIN,    OCTI_IVAR_CHAIN,    OCTI_CLS_NAMES_CHAIN,    OCTI_METH_VAR_NAMES_CHAIN,    OCTI_METH_VAR_TYPES_CHAIN,    OCTI_SYMBOLS_DECL,    OCTI_NST_VAR_DECL,    OCTI_CLS_VAR_DECL,    OCTI_NST_METH_DECL,    OCTI_CLS_METH_DECL,    OCTI_CLS_DECL,    OCTI_MCLS_DECL,    OCTI_SEL_TABLE_DECL,    OCTI_MODULES_DECL,    OCTI_GNU_INIT_DECL,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -