📄 cp-tree.h
字号:
/* Record in each node resulting from a binary operator what operator was specified for it. */#define C_EXP_ORIGINAL_CODE(exp) ((enum tree_code) TREE_COMPLEXITY (exp))/* Store a value in that field. */#define C_SET_EXP_ORIGINAL_CODE(exp, code) \ (TREE_COMPLEXITY (exp) = (int)(code))/* If non-zero, a VAR_DECL whose cleanup will cause a throw to the next exception handler. */extern tree exception_throw_decl;extern tree double_type_node, long_double_type_node, float_type_node;extern tree char_type_node, unsigned_char_type_node, signed_char_type_node;extern tree ptrdiff_type_node;extern tree short_integer_type_node, short_unsigned_type_node;extern tree long_integer_type_node, long_unsigned_type_node;extern tree long_long_integer_type_node, long_long_unsigned_type_node;extern tree unsigned_type_node;extern tree string_type_node, char_array_type_node, int_array_type_node;extern tree wchar_array_type_node;extern tree wchar_type_node, signed_wchar_type_node, unsigned_wchar_type_node;extern tree complex_integer_type_node;extern tree complex_float_type_node;extern tree complex_double_type_node;extern tree complex_long_double_type_node;extern tree intQI_type_node, unsigned_intQI_type_node;extern tree intHI_type_node, unsigned_intHI_type_node;extern tree intSI_type_node, unsigned_intSI_type_node;extern tree intDI_type_node, unsigned_intDI_type_node;#if HOST_BITS_PER_WIDE_INT >= 64extern tree intTI_type_node, unsigned_intTI_type_node;#endifextern tree java_byte_type_node;extern tree java_short_type_node;extern tree java_int_type_node;extern tree java_long_type_node;extern tree java_float_type_node;extern tree java_double_type_node;extern tree java_char_type_node;extern tree java_boolean_type_node;extern int current_function_returns_value;extern int current_function_returns_null;extern tree current_function_return_value;extern tree current_namespace;extern tree global_namespace;extern tree ridpointers[];extern tree ansi_opname[];extern tree ansi_assopname[];/* Nonzero means `$' can be in an identifier. */extern int dollars_in_ident;/* Nonzero means allow type mismatches in conditional expressions; just make their values `void'. */extern int flag_cond_mismatch;/* Nonzero means don't recognize the keyword `asm'. */extern int flag_no_asm;/* For cross referencing. */extern int flag_gnu_xref;/* For environments where you can use GNU binutils (as, ld in particular). */extern int flag_gnu_binutils;/* Nonzero means warn about implicit declarations. */extern int warn_implicit;/* Nonzero means warn about usage of long long when `-pedantic'. */extern int warn_long_long;/* Nonzero means warn when all ctors or dtors are private, and the class has no friends. */extern int warn_ctor_dtor_privacy;/* Nonzero means warn about function definitions that default the return type or that use a null return and have a return-type other than void. */extern int warn_return_type;/* Nonzero means give string constants the type `const char *', as mandated by the standard. */extern int flag_const_strings;/* Nonzero means warn about deprecated conversion from string constant to `char *'. */extern int warn_write_strings;/* Nonzero means warn about sizeof(function) or addition/subtraction of function pointers. */extern int warn_pointer_arith;/* Nonzero means warn about suggesting putting in ()'s. */extern int warn_parentheses;/* Nonzero means warn about multiple (redundant) decls for the same single variable or function. */extern int warn_redundant_decls;/* Warn if initializer is not completely bracketed. */extern int warn_missing_braces;/* Warn about comparison of signed and unsigned values. */extern int warn_sign_compare;/* Warn about a subscript that has type char. */extern int warn_char_subscripts;/* Nonzero means warn about pointer casts that can drop a type qualifier from the pointer target type. */extern int warn_cast_qual;/* Warn about *printf or *scanf format/argument anomalies. */extern int warn_format;/* Nonzero means warn about non virtual destructors in classes that have virtual functions. */extern int warn_nonvdtor;/* Non-zero means warn when we convert a pointer to member function into a pointer to (void or function). */extern int warn_pmf2ptr;/* Nonzero means warn about violation of some Effective C++ style rules. */extern int warn_ecpp;/* Nonzero means warn where overload resolution chooses a promotion from unsigned to signed over a conversion to an unsigned of the same size. */extern int warn_sign_promo;/* Non-zero means warn when a function is declared extern and later inline. */extern int warn_extern_inline;/* Non-zero means warn when an old-style cast is used. */extern int warn_old_style_cast;/* Nonzero means to treat bitfields as unsigned unless they say `signed'. */extern int flag_signed_bitfields;/* 3 means write out only virtuals function tables `defined' in this implementation file. 2 means write out only specific virtual function tables and give them (C) public access. 1 means write out virtual function tables and give them (C) public access. 0 means write out virtual function tables and give them (C) static access (default). -1 means declare virtual function tables extern. */extern int write_virtuals;/* True for more efficient but incompatible (not fully tested) vtable implementation (using thunks). 0 is old behavior; 1 is new behavior; 3 adds vlist arguments; 2 is 3 plus backwards-compatibility to 1. */extern int flag_vtable_thunks, flag_vtable_thunks_compat;/* INTERFACE_ONLY nonzero means that we are in an "interface" section of the compiler. INTERFACE_UNKNOWN nonzero means we cannot trust the value of INTERFACE_ONLY. If INTERFACE_UNKNOWN is zero and INTERFACE_ONLY is zero, it means that we are responsible for exporting definitions that others might need. */extern int interface_only, interface_unknown;/* Nonzero means we should attempt to elide constructors when possible. */extern int flag_elide_constructors;/* Nonzero means enable obscure ANSI features and disable GNU extensions that might cause ANSI-compliant code to be miscompiled. */extern int flag_ansi;/* Nonzero means recognize and handle signature language constructs. */extern int flag_handle_signatures;/* Nonzero means that member functions defined in class scope are inline by default. */extern int flag_default_inline;/* The name-mangling scheme to use. Versions of gcc before 2.8 use version 0. */extern int name_mangling_version;/* Nonzero means that guiding declarations are allowed. */extern int flag_guiding_decls;/* Nonzero if squashed mangling is to be performed. This uses the B and K codes to reference previously seen class types and class qualifiers. */extern int flag_do_squangling;/* Nonzero means generate separate instantiation control files and juggle them at link time. */extern int flag_use_repository;/* Nonzero if we want to issue diagnostics that the standard says are not required. */extern int flag_optional_diags;/* Nonzero means do not consider empty argument prototype to mean function takes no arguments. */extern int flag_strict_prototype;/* Nonzero means output .vtable_{entry,inherit} for use in doing vtable gc. */extern int flag_vtable_gc;/* Nonzero means make the default pedwarns warnings instead of errors. The value of this flag is ignored if -pedantic is specified. */extern int flag_permissive;/* Nonzero if we want to obey access control semantics. */extern int flag_access_control;/* C++ language-specific tree codes. */#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) SYM,enum cplus_tree_code { __DUMMY = LAST_AND_UNUSED_TREE_CODE,#include "cp-tree.def" LAST_CPLUS_TREE_CODE};#undef DEFTREECODEenum languages { lang_c, lang_cplusplus, lang_java };/* Macros to make error reporting functions' lives easier. */#define TYPE_IDENTIFIER(NODE) (DECL_NAME (TYPE_NAME (NODE)))#define TYPE_NAME_STRING(NODE) (IDENTIFIER_POINTER (TYPE_IDENTIFIER (NODE)))#define TYPE_NAME_LENGTH(NODE) (IDENTIFIER_LENGTH (TYPE_IDENTIFIER (NODE)))#define TYPE_ASSEMBLER_NAME_STRING(NODE) (IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (TYPE_NAME (NODE))))#define TYPE_ASSEMBLER_NAME_LENGTH(NODE) (IDENTIFIER_LENGTH (DECL_ASSEMBLER_NAME (TYPE_NAME (NODE))))/* The _DECL for this _TYPE. */#define TYPE_MAIN_DECL(NODE) (TYPE_STUB_DECL (TYPE_MAIN_VARIANT (NODE)))/* Nonzero if T is a class (or struct or union) type. Also nonzero for template type parameters and typename types. Despite its name, this macro has nothing to do with the definition of aggregate given in the standard. Think of this macro as MAYBE_CLASS_TYPE_P. */#define IS_AGGR_TYPE(t) \ (TREE_CODE (t) == TEMPLATE_TYPE_PARM \ || TREE_CODE (t) == TYPENAME_TYPE \ || TREE_CODE (t) == TYPEOF_TYPE \ || TYPE_LANG_FLAG_5 (t))/* Set IS_AGGR_TYPE for T to VAL. T must be a class, struct, or union type. */ #define SET_IS_AGGR_TYPE(T, VAL) \ (TYPE_LANG_FLAG_5 (T) = (VAL))/* Nonzero if T is a class type. Zero for template type parameters, typename types, and so forth. */#define CLASS_TYPE_P(t) \ (IS_AGGR_TYPE_CODE (TREE_CODE (t)) && IS_AGGR_TYPE (t))#define IS_AGGR_TYPE_CODE(t) (t == RECORD_TYPE || t == UNION_TYPE)#define IS_AGGR_TYPE_2(TYPE1,TYPE2) \ (TREE_CODE (TYPE1) == TREE_CODE (TYPE2) \ && IS_AGGR_TYPE (TYPE1)&IS_AGGR_TYPE (TYPE2))#define IS_OVERLOAD_TYPE(t) \ (IS_AGGR_TYPE (t) || TREE_CODE (t) == ENUMERAL_TYPE)/* In a *_TYPE, nonzero means a built-in type. */#define TYPE_BUILT_IN(NODE) TYPE_LANG_FLAG_6(NODE)/* True if this a "Java" type, defined in 'extern "Java"'. */#define TYPE_FOR_JAVA(NODE) TYPE_LANG_FLAG_3(NODE)/* The type qualifiers for this type, including the qualifiers on the elements for an array type. */#define CP_TYPE_QUALS(NODE) \ ((TREE_CODE (NODE) != ARRAY_TYPE) \ ? TYPE_QUALS (NODE) : cp_type_quals (NODE))/* Nonzero if this type is const-qualified. */#define CP_TYPE_CONST_P(NODE) \ ((CP_TYPE_QUALS (NODE) & TYPE_QUAL_CONST) != 0)/* Nonzero if this type is volatile-qualified. */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -