📄 ch-tree.h
字号:
CH_ALL_CLASS, CH_NULL_CLASS, CH_VALUE_CLASS, CH_DERIVED_CLASS, CH_REFERENCE_CLASS};typedef struct ch_class { enum ch_class_kind kind; tree mode; /* The 'M' in M-value, M-derived, or M-reference. */} ch_class;struct mode_chain; /* Forward reference */#define CH_IS_REFERENCE_MODE(MODE) (TREE_CODE (MODE) == POINTER_TYPE)#define CH_IS_BOUND_REFERENCE_MODE(MODE) \ (TREE_CODE (MODE) == POINTER_TYPE && TREE_TYPE(MODE) != void_type_node)#define CH_IS_PROCEDURE_MODE(MODE) (TREE_CODE (MODE) == FUNCTION_TYPE)#define CH_IS_INSTANCE_MODE(MODE) (CH_SIMILAR (MODE, instance_type_node))#define CH_IS_BUFFER_MODE(MODE) (TYPE_LANG_FLAG_3(MODE))#define CH_IS_EVENT_MODE(MODE) (TYPE_LANG_FLAG_4(MODE))/* This is TRUE if the set is numbered, which makes pred/succ unusable */#define CH_ENUM_IS_NUMBERED(MODE) (TYPE_LANG_FLAG_5(MODE))/* for ACCESS, and TEXT mode */#define CH_IS_ACCESS_MODE(MODE) (TYPE_LANG_FLAG_2(MODE))#define CH_IS_TEXT_MODE(MODE) (TYPE_LANG_FLAG_6(MODE))#define CH_IS_ASSOCIATION_MODE(MODE) (CH_SIMILAR (MODE, association_type_node))#define CH_IS_USAGE_MODE(MODE) (CH_SIMILAR (MODE, usage_type_node))#define CH_IS_WHERE_MODE(MODE) (CH_SIMILAR (MODE, where_type_node))/* for RECORD or ARRAY type */#define CH_TYPE_NONVALUE_P(MODE) (TYPE_LANG_FLAG_0(MODE))/* CH_NOVELTY is the novelty of a mode: NULL_TREE means the novelty is nil; otherwise a TYPE_DECL matching the defining occurrence of a newmode. */#define CH_NOVELTY(MODE) TYPE_CONTEXT(MODE)/* Set the novelty of MODE to NOVELTY (which is assumed to be non-nil). */#define SET_CH_NOVELTY(MODE, NOVELTY) (CH_NOVELTY (MODE) = (NOVELTY))#define SET_CH_NOVELTY_NONNIL(MODE, NOVELTY) (CH_NOVELTY (MODE) = (NOVELTY))/* CH_DERIVED_FLAG is true the class of EXPR is X-derived for some X. */#define CH_DERIVED_FLAG(EXPR) TREE_LANG_FLAG_5(EXPR)#define CH_HAS_REFERENCING_PROPERTY(MODE) \ (TREE_CODE (MODE) == POINTER_TYPE) /* incomplete FIXME! *//* CH_COMPATIBLE(EXPR, MODE) is true if the class of EXPR is "compatible" with the type MODE. */#define CH_COMPATIBLE(EXPR, MODE) chill_compatible(EXPR, MODE)#define CH_COMPATIBLE_CLASSES(EXPR1, EXPR2) chill_compatible_classes(EXPR1, EXPR2)#define CH_STATIC_MODE(MODE) 1 /* for now */#define CH_SIMILAR(MODE1, MODE2) chill_similar(MODE1, MODE2, 0)#define CH_ROOT_MODE(MODE) chill_root_mode(MODE)#define CH_RESULTING_CLASS(C1, C2) chill_resulting_class(C1, C2)#define CH_ROOT_RESULTING_CLASS(E1, E2) \ CH_RESULTING_CLASS (chill_expr_class(E1), chill_expr_class(E2))#define CH_RESULTING_MODE(MODE1, MODE2) chill_resulting_mode(MODE1, MODE2)#define CH_V_EQUIVALENT(MODE1, MODE2) (CH_SIMILAR(MODE1, MODE2) \ && CH_NOVELTY(MODE1) == CH_NOVELTY(MODE2))#define CH_EQUIVALENT(MODE1, MODE2) \ (!integer_zerop (chill_equivalent (MODE1, MODE2, 0)))#define CH_RESTRICTABLE_TO(MODE1, MODE2) \ CH_EQUIVALENT(MODE1, MODE2) /* && some more stuff FIXME! *//* pass an OFFSET_TYPE or REFERENCE_TYPE's underlying type to SCALAR_P */#define CH_READ_COMPATIBLE(modeM, modeN) chill_read_compatible(modeM, modeN)#define SCALAR_P(TYPE) (TYPE != NULL_TREE \ && (TREE_CODE (TYPE) == INTEGER_TYPE \ || TREE_CODE (TYPE) == REAL_TYPE \ || TREE_CODE (TYPE) == ENUMERAL_TYPE \ || TREE_CODE (TYPE) == BOOLEAN_TYPE \ || TREE_CODE (TYPE) == CHAR_TYPE \ || TREE_CODE (TYPE) == POINTER_TYPE \ || TREE_CODE (TYPE) == INSTANCE_TYPE))#define CH_REFERABLE(EXPR) chill_referable(EXPR)#define CH_LOCATION_P(EXPR) chill_location (EXPR)extern int maybe_objc_comptypes ();extern tree maybe_building_objc_message_expr ();/* Standard named or nameless data types of the C compiler. *//* 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;/* Nonzero means warn about implicit declarations. */extern int warn_implicit;/* Nonzero means give string constants the type `const char *' to get extra warnings from them. These warnings will be too numerous to be useful, except in thoroughly ANSIfied programs. */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 for all old-style non-prototype function decls. */extern int warn_strict_prototypes;/* Nonzero means warn about multiple (redundant) decls for the same single variable or function. */extern int warn_redundant_decls;/* Nonzero means warn about extern declarations of objects not at file-scope level and about *all* declarations of functions (whether extern or static) not at file-scope level. Note that we exclude implicit function declarations. To get warnings about those, use -Wimplicit. */extern int warn_nested_externs;/* Nonzero means warn about pointer casts that can drop a type qualifier from the pointer target type. */extern int warn_cast_qual;/* Warn about traditional constructs whose meanings changed in ANSI C. */extern int warn_traditional;/* Warn about *printf or *scanf format/argument anomalies. */extern int warn_format;/* Warn about a subscript that has type char. */extern int warn_char_subscripts;/* Warn if a type conversion is done that might have confusing results. */extern int warn_conversion;/* Warn if switch labels aren't complete, or are duplicated */extern int warn_switch;/* Nonzero means do some things the same way PCC does. */extern int flag_traditional;/* Nonzero means warn about suggesting putting in ()'s. */extern int warn_parentheses;/* Nonzero means this is a function to call to perform comptypes on two record types. */extern int (*comptypes_record_hook) ();/* Nonzero means we are reading code that came from a system header file. */extern int system_header_p;/* One means range checking is on; <= 0 off; -1 permanently off. */extern int range_checking;/* 0 means empty checking is off, else it is on */extern int empty_checking;/* 1 means -fruntime-checking specified (default), o means -fno-runtime-checking */extern int runtime_checking_flag;/* Type node for boolean types. */extern tree boolean_type_node;extern tree signed_boolean_type_node;extern tree string_one_type_node;extern tree bitstring_one_type_node, bit_zero_node, bit_one_node;extern tree float_type_node, double_type_node;extern tree void_type_node, ptr_type_node, const_ptr_type_node;/* a VOID_TYPE node, packaged in a TREE_LIST. */extern tree void_list_node;/* Chill language-specific tree codes. */#define DEFTREECODE(SYM, NAME, TYPE, LENGTH) SYM,enum chill_tree_code { __DUMMY = LAST_AND_UNUSED_TREE_CODE,#include "ch-tree.def" LAST_CHILL_TREE_CODE};#undef DEFTREECODEenum chill_built_in_function{ DUMMY_FIRST_CHILL_BUILT_IN = END_BUILTINS, BUILT_IN_CH_ABS, BUILT_IN_ABSTIME, BUILT_IN_ADDR, BUILT_IN_ALLOCATE, BUILT_IN_ALLOCATE_GLOBAL_MEMORY, BUILT_IN_ALLOCATE_MEMORY, BUILT_IN_ARCCOS, BUILT_IN_ARCSIN, BUILT_IN_ARCTAN, BUILT_IN_ASSOCIATE, BUILT_IN_CARD, BUILT_IN_CONNECT, BUILT_IN_COPY_NUMBER, BUILT_IN_CH_COS, BUILT_IN_CREATE, BUILT_IN_DAYS, BUILT_IN_CH_DELETE, BUILT_IN_DESCR, BUILT_IN_DISCONNECT, BUILT_IN_DISSOCIATE, BUILT_IN_EOLN, BUILT_IN_EXP, BUILT_IN_EXPIRED, BUILT_IN_EXISTING, BUILT_IN_GEN_CODE, BUILT_IN_GEN_INST, BUILT_IN_GEN_PTYPE, BUILT_IN_GETASSOCIATION, BUILT_IN_GETSTACK, BUILT_IN_GETTEXTACCESS, BUILT_IN_GETTEXTINDEX, BUILT_IN_GETTEXTRECORD, BUILT_IN_GETUSAGE, BUILT_IN_HOURS, BUILT_IN_INDEXABLE, BUILT_IN_INTTIME, BUILT_IN_ISASSOCIATED, BUILT_IN_LENGTH, BUILT_IN_LOG, BUILT_IN_LOWER, BUILT_IN_LN, BUILT_IN_MAX, BUILT_IN_MILLISECS, BUILT_IN_MIN, BUILT_IN_MINUTES, BUILT_IN_MODIFY, BUILT_IN_NUM, BUILT_IN_OUTOFFILE, BUILT_IN_PRED, BUILT_IN_PROC_TYPE, BUILT_IN_QUEUE_LENGTH, BUILT_IN_READABLE, BUILT_IN_READRECORD, BUILT_IN_READTEXT, BUILT_IN_RETURN_MEMORY, BUILT_IN_SECS, BUILT_IN_SETTEXTACCESS, BUILT_IN_SETTEXTINDEX, BUILT_IN_SETTEXTRECORD, BUILT_IN_SEQUENCIBLE, BUILT_IN_SIZE, BUILT_IN_SQRT, BUILT_IN_SUCC, BUILT_IN_CH_SIN, BUILT_IN_TAN, BUILT_IN_TRUNC, BUILT_IN_TERMINATE, BUILT_IN_UPPER, BUILT_IN_VARIABLE, BUILT_IN_WAIT, BUILT_IN_WRITEABLE, BUILT_IN_WRITERECORD, BUILT_IN_WRITETEXT,};/* name of additional (compiler generated) arguments for functions which may propagate exceptions. */#define CALLER_FILE "__CALLER_FILE__"#define CALLER_LINE "__CALLER_LINE__"/* field-name strings for the fields of the structure which represents a CHILL VARYING array. The angle brackets assure that no user-defined structure can match this one. This field holds, at runtime, the current length of the array, in UNITS, not including the length itself. It's an integer_type_node */#define VAR_LENGTH "__var_length"/* This field is statically allocated to the user-defined size, but contains valid array entries starting from the first allocated space, proceeding for VAR_LENGTH bytes. There are no holes in the data; the user isn't allowed
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -