GCC主要数据结构之attribute_spec
2017-03-18 12:10
288 查看
/* Structure describing an attribute and a function to handle it. */ struct attribute_spec { /* The name of the attribute (without any leading or trailing __), or NULL to mark the end of a table of attributes. */ const char *name; /* The minimum length of the list of arguments of the attribute. */ int min_length; /* The maximum length of the list of arguments of the attribute (-1 for no maximum). */ int max_length; /* Whether this attribute requires a DECL. If it does, it will be passed from types of DECLs, function return types and array element types to the DECLs, function types and array types respectively; but when applied to a type in any other circumstances, it will be ignored with a warning. (If greater control is desired for a given attribute, this should be false, and the flags argument to the handler may be used to gain greater control in that case.) */ bool decl_required; /* Whether this attribute requires a type. If it does, it will be passed from a DECL to the type of that DECL. */ bool type_required; /* Whether this attribute requires a function (or method) type. If it does, it will be passed from a function pointer type to the target type, and from a function return type (which is not itself a function pointer type) to the function type. */ bool function_type_required; /* Function to handle this attribute. NODE points to the node to which the attribute is to be applied. If a DECL, it should be modified in place; if a TYPE, a copy should be created. NAME is the name of the attribute (possibly with leading or trailing __). ARGS is the TREE_LIST of the arguments (which may be NULL). FLAGS gives further information about the context of the attribute. Afterwards, the attributes will be added to the DECL_ATTRIBUTES or TYPE_ATTRIBUTES, as appropriate, unless *NO_ADD_ATTRS is set to true (which should be done on error, as well as in any other cases when the attributes should not be added to the DECL or TYPE). Depending on FLAGS, any attributes to be applied to another type or DECL later may be returned; otherwise the return value should be NULL_TREE. This pointer may be NULL if no special handling is required beyond the checks implied by the rest of this structure. */ tree (*handler) (tree *node, tree name, tree args, int flags, bool *no_add_attrs); /* Specifies if attribute affects type's identity. */ bool affects_type_identity; };
相关文章推荐
- GCC主要数据结构之spec_list
- GCC主要数据结构之stmt_tree_s
- GCC主要数据结构之pretty_printer
- GCC主要数据结构之cxx_dialect
- GCC主要数据结构之diagnostic_context
- GCC主要数据结构之c_parser
- GCC主要数据结构之record_layout_info_s
- GCC主要数据结构之c_token
- GCC主要数据结构之c_language_kind
- GCC主要数据结构之cpp_reader
- GCC主要数据结构之tree_node
- GCC主要数据结构之cpp_buffer
- GCC主要数据结构之GTY
- GCC主要数据结构之rid
- GCC主要数据结构之cpp_options
- GCC主要数据结构之c_declspec_word
- GCC主要数据结构之cpp_token
- GCC主要数据结构之c_tree_index
- GCC主要数据结构之c_lang
- GCC主要数据结构之tree_base