Commit b2221d2b by Martin Sebor Committed by Martin Sebor

cp-tree.h (cp_operator_id, [...]): Document.


gcc/cp/ChangeLog:

	* cp-tree.h (cp_operator_id, cp_assignment_operator_id): Document.

From-SVN: r250105
parent 281ac396
2017-07-10 Martin Sebor <msebor@redhat.com>
* cp-tree.h (cp_operator_id, cp_assignment_operator_id): Document.
2017-07-06 Jason Merrill <jason@redhat.com>
PR c++/81204 - parse error with dependent template-name
......
......@@ -206,8 +206,19 @@ extern GTY(()) tree cp_global_trees[CPTI_MAX];
/* std::align_val_t */
#define align_type_node cp_global_trees[CPTI_ALIGN_TYPE]
/* We cache these tree nodes so as to call get_identifier less
frequently. */
/* We cache these tree nodes so as to call get_identifier less frequently.
For identifiers for functions, including special member functions such
as ctors and assignment operators, the nodes can be used (among other
things) to iterate over their overloads defined by/for a type. For
example:
tree ovlid = cp_assignment_operator_id (NOP_EXPR);
tree overloads = lookup_fnfields_slot (type, ovlid);
for (ovl_iterator it (overloads); it; ++it) { ... }
iterates over the set of implicitly and explicitly defined overloads
of the assignment operator for type (including the copy and move
assignment operators, whether deleted or not). */
/* The name of a constructor that takes an in-charge parameter to
decide whether or not to construct virtual base classes. */
......@@ -228,6 +239,18 @@ extern GTY(()) tree cp_global_trees[CPTI_MAX];
/* The name of a destructor that destroys virtual base classes, and
then deletes the entire object. */
#define deleting_dtor_identifier cp_global_trees[CPTI_DELETING_DTOR_IDENTIFIER]
/* The name of the identifier used internally to represent operator CODE. */
#define cp_operator_id(CODE) \
(operator_name_info[(int) (CODE)].identifier)
/* The name of the identifier used to represent assignment operator CODE,
both simple (i.e., operator= with CODE == NOP_EXPR) and compound (e.g.,
operator+= with CODE == PLUS_EXPR). Includes copy and move assignment.
Use copy_fn_p() to test specifically for copy assignment. */
#define cp_assignment_operator_id(CODE) \
(assignment_operator_name_info[(int) (CODE)].identifier)
#define delta_identifier cp_global_trees[CPTI_DELTA_IDENTIFIER]
#define in_charge_identifier cp_global_trees[CPTI_IN_CHARGE_IDENTIFIER]
/* The name of the parameter that contains a pointer to the VTT to use
......@@ -1768,11 +1791,6 @@ struct GTY(()) language_function {
#define current_function_auto_return_pattern \
(cp_function_chain->x_auto_return_pattern)
#define cp_operator_id(CODE) \
(operator_name_info[(int) (CODE)].identifier)
#define cp_assignment_operator_id(CODE) \
(assignment_operator_name_info[(int) (CODE)].identifier)
/* In parser.c. */
extern tree cp_literal_operator_id (const char *);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment