📄 cp-tree.h
字号:
extern int warn_overloaded_virtual;/* in cp-decl{2}.c */extern tree void_list_node;extern tree void_zero_node;extern tree default_function_type;extern tree define_function ();extern tree build_member_type ();extern tree build_push_scope ();extern void finish_builtin_type ();extern tree vtable_entry_type;extern tree __t_desc_type_node, __i_desc_type_node, __m_desc_type_node;extern tree class_star_type_node;extern tree build_vtable_entry ();extern tree build_vfn_ref ();extern tree finish_table ();extern tree typedecl_for_tag ();extern tree identifier_class_value ();extern tree constructor_name ();extern int complete_array_type ();extern tree coerce_new_type (), coerce_delete_type ();/* A node that is a list (length 1) of error_mark_nodes. */extern tree error_mark_list;extern tree ptr_type_node;extern tree class_type_node, record_type_node, union_type_node, enum_type_node;extern tree exception_type_node, unknown_type_node;extern tree get_temp_name (), get_temp_aggr (), get_temp_regvar ();extern tree cleanup_after_call ();extern tree build_type_conversion ();extern tree convert_force ();extern tree maybe_convert_decl_to_const ();extern char *lang_printable_name ();extern char *fndecl_as_string ();extern char *build_overload_name ();/* The largest size a virtual function table can be. Must be a (power of 2). */#ifndef VINDEX_MAX#define VINDEX_MAX ((unsigned)128)/* This is the integer ~ (vindex_max - 1). */#endifextern tree vtbl_mask;/* Array type `(void *)[]' */extern tree vtbl_type_node;extern tree get_parm_types ();extern tree grokopexpr (), getaggrs (), groktypefield ();extern tree grok_method_quals (), grok_enum_decls ();extern void finish_anon_union();extern tree long_long_integer_type_node, long_long_unsigned_type_node;/* For building calls to `delete'. */extern tree integer_two_node, integer_three_node;extern tree get_first_matching_virtual (), get_abstract_virtuals ();/* in cp-typeck.c */extern tree build_x_conditional_expr ();extern tree merge_component_comparisons ();extern tree build_x_unary_op (), build_x_binary_op ();extern tree build_component_addr ();extern tree build_x_function_call ();extern tree require_complete_type ();extern tree build_x_indirect_ref (), build_x_array_ref ();extern tree build_x_modify_expr (), build_x_modify_op_expr ();extern tree build_m_component_ref ();extern tree build_component_type_expr ();extern tree build_x_arrow ();extern tree build_component_ref_1 ();extern tree datatype (), unary_complex_lvalue (), target_type ();extern tree build_return_stmt ();extern tree convert_arguments (), commonparms ();extern tree cplus_size_in_bytes ();extern tree cplus_sizeof (), cplus_sizeof_nowarn ();extern tree error_not_base_type ();/* in cp-type2.c */extern tree binfo_or_else ();extern void my_friendly_abort ();extern void error_with_aggr_type ();/* in tree.c */extern tree build_let ();extern tree decl_type_context ();/* in cp-tree.c */extern tree build1 ();extern tree build_cplus_new ();extern tree build_cplus_array_type ();extern tree build_cplus_method_type ();extern tree build_classtype_variant ();extern tree hash_tree_cons (), hash_tree_chain (), hash_chainon ();extern tree list_hash_lookup_or_cons ();extern tree layout_basetypes ();extern tree copy_to_permanent ();extern tree get_decl_list ();extern tree break_out_cleanups ();extern tree break_out_calls ();extern tree array_type_nelts_total ();extern tree array_type_nelts_top ();/* in cp-except.c */extern tree current_exception_type;extern tree current_exception_decl;extern tree current_exception_object;extern tree build_exception_variant ();extern tree lookup_exception_type (), lookup_exception_cname ();extern tree lookup_exception_object ();extern tree cplus_expand_start_catch ();extern tree cplus_expand_end_try ();extern void finish_exception_decl ();/* in cp-class.c */extern tree current_class_name;extern tree current_class_type;extern tree current_lang_name, lang_name_cplusplus, lang_name_c;extern tree convert_pointer_to (), convert_pointer_to_vbase ();extern tree convert_to_reference (), convert_to_aggr (), convert_aggr ();extern tree build_x_new (), build_x_delete ();extern tree build_new (), build_vec_new (), build_delete (), build_vec_delete ();extern tree make_destructor_name ();extern tree build_scoped_ref (), build_vfield_ref ();extern tree build_method_call (), build_overload_call ();extern tree build_type_pathname ();extern tree start_method ();extern tree finish_method ();extern tree lookup_field (), lookup_nested_field (), lookup_fnfields ();void pushclass (), popclass (), pushclasstype ();extern tree build_operator_fnname (), build_opfncall (), build_type_conversion ();/* Points to the name of that function. May not be the DECL_NAME of CURRENT_FUNCTION_DECL due to overloading */extern tree original_function_name;# define IS_AGGR_TYPE(t) (TYPE_LANG_FLAG_5 (t))# define IS_AGGR_TYPE_CODE(t) \ (t == RECORD_TYPE || t == UNION_TYPE)extern tree build_decl_overload (), build_typename_overload ();extern tree build_destructor_call ();extern tree resolve_scope_to_name ();extern tree build_scoped_method_call ();extern tree current_class_name, current_class_type, current_class_decl, C_C_D;extern tree current_vtable_decl;/* in cp-init.c */extern tree resolve_offset_ref ();extern void check_base_init ();extern void do_member_init ();extern tree global_base_init_list;extern tree current_base_init_list, current_member_init_list;#ifdef SOSextern tree get_linktable_name (), get_dtable_name (), get_sos_dtable ();#endifextern tree get_member_function ();extern tree build_member_call (), build_offset_ref ();extern tree build_virtual_init ();extern int current_function_assigns_this;extern int current_function_just_assigned_this;extern int current_function_parms_stored;/* Here's where we control how name mangling takes place. */#define OPERATOR_ASSIGN_FORMAT "__a%s"#define OPERATOR_FORMAT "__%s"#define OPERATOR_TYPENAME_FORMAT "__op"/* Cannot use '$' up front, because this confuses gdb (names beginning with '$' are gdb-local identifiers). Note that all forms in which the '$' is significant are long enough for direct indexing (meaning that if we know there is a '$' at a particular location, we can index into the string at any other location that provides distinguishing characters). *//* Define NO_DOLLAR_IN_LABEL in your favorite tm file if your assembler doesn't allow '$' in symbol names. */#ifndef NO_DOLLAR_IN_LABEL#define JOINER '$'#define VPTR_NAME "$v"#define THROW_NAME "$eh_throw"#define DESTRUCTOR_DECL_PREFIX "_$_"#define IN_CHARGE_NAME "__in$chrg"#define AUTO_VTABLE_NAME "__vtbl$me__"#define AUTO_TEMP_NAME "_$tmp_"#define AUTO_TEMP_FORMAT "_$tmp_%d"#define VTBL_PTR_TYPE "$vtbl_ptr_type"#define VTABLE_BASE "$vb"#define VTABLE_NAME_FORMAT "_vt$%s"#define VFIELD_BASE "$vf"#define VFIELD_NAME "_vptr$"#define VFIELD_NAME_FORMAT "_vptr$%s"#define VBASE_NAME "_vb$"#define VBASE_NAME_FORMAT "_vb$%s"#define STATIC_NAME_FORMAT "_%s$%s"#define FILE_FUNCTION_FORMAT "_GLOBAL_$D$%s"#define ANON_AGGRNAME_FORMAT "$_%d"#else /* NO_DOLLAR_IN_LABEL */#define JOINER '.'#define VPTR_NAME ".v"#define THROW_NAME ".eh_throw"#define DESTRUCTOR_DECL_PREFIX "_._"#define IN_CHARGE_NAME "__in.chrg"#define AUTO_VTABLE_NAME "__vtbl.me__"#define AUTO_TEMP_NAME "_.tmp_"#define AUTO_TEMP_FORMAT "_.tmp_%d"#define VTBL_PTR_TYPE ".vtbl_ptr_type"#define VTABLE_BASE ".vb"#define VTABLE_NAME_FORMAT "_vt.%s"#define VFIELD_BASE ".vf"#define VFIELD_NAME "_vptr."#define VFIELD_NAME_FORMAT "_vptr.%s"#define VBASE_NAME "_vb."#define VBASE_NAME_FORMAT "_vb.%s"#define STATIC_NAME_FORMAT "_%s.%s"#define FILE_FUNCTION_FORMAT "_GLOBAL_.D.%s"#define ANON_AGGRNAME_FORMAT "._%d"#endif /* NO_DOLLAR_IN_LABEL */#define THIS_NAME "this"#define DESTRUCTOR_NAME_FORMAT "~%s"#define FILE_FUNCTION_PREFIX_LEN 9#define VTABLE_DELTA_NAME "delta"#define VTABLE_DELTA2_NAME "delta2"#define VTABLE_INDEX_NAME "index"#define VTABLE_PFN_NAME "pfn"#define EXCEPTION_CLEANUP_NAME "exception cleanup"#define THIS_NAME_P(ID_NODE) (strcmp(IDENTIFIER_POINTER (ID_NODE), "this") == 0)#define VPTR_NAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[0] == JOINER \ && IDENTIFIER_POINTER (ID_NODE)[1] == 'v')#define DESTRUCTOR_NAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[1] == JOINER)#define VTABLE_NAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[3] == JOINER \ && IDENTIFIER_POINTER (ID_NODE)[2] == 't'\ && IDENTIFIER_POINTER (ID_NODE)[1] == 'v')#define VBASE_NAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[3] == JOINER \ && IDENTIFIER_POINTER (ID_NODE)[2] == 'b'\ && IDENTIFIER_POINTER (ID_NODE)[1] == 'v')#define OPERATOR_TYPENAME_P(ID_NODE) \ (IDENTIFIER_POINTER (ID_NODE)[0] == '_' \ && IDENTIFIER_POINTER (ID_NODE)[1] == '_' \ && IDENTIFIER_POINTER (ID_NODE)[2] == 'o' \ && IDENTIFIER_POINTER (ID_NODE)[3] == 'p')#define TEMP_NAME_P(ID_NODE) (!strncmp (IDENTIFIER_POINTER (ID_NODE), AUTO_TEMP_NAME, sizeof (AUTO_TEMP_NAME)-1))#define VFIELD_NAME_P(ID_NODE) (!strncmp (IDENTIFIER_POINTER (ID_NODE), VFIELD_NAME, sizeof(VFIELD_NAME)-1))/* For anonymous aggregate types, we need some sort of name to hold on to. In practice, this should not appear, but it should not be harmful if it does. */#define ANON_AGGRNAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[0] == JOINER \ && IDENTIFIER_POINTER (ID_NODE)[1] == '_')#define ANON_PARMNAME_FORMAT "_%d"#define ANON_PARMNAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[0] == '_' \ && IDENTIFIER_POINTER (ID_NODE)[1] <= '9')/* Define the sets of attributes that member functions and baseclasses can have. These are sensible combinations of {public,private,protected} cross {virtual,non-virtual}. */enum visibility_type { visibility_default, visibility_public, visibility_private, visibility_protected, visibility_default_virtual, visibility_public_virtual, visibility_private_virtual};enum visibility_type compute_visibility ();/* in cp-lex.c */extern tree current_unit_name, current_unit_language;extern char *operator_name_string ();/* Things for handling inline functions. */struct pending_inline{ struct pending_inline *next; /* pointer to next in chain */ int lineno; /* line number we got the text from */ char *filename; /* name of file we were processing */ tree fndecl; /* FUNCTION_DECL that brought us here */ int token; /* token we were scanning */ int token_value; /* value of token we were scanning (YYSTYPE) */ char *buf; /* pointer to character stream */ int len; /* length of stream */ tree parm_vec, bindin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -