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> 2017-07-06 Jason Merrill <jason@redhat.com>
PR c++/81204 - parse error with dependent template-name PR c++/81204 - parse error with dependent template-name
......
...@@ -206,8 +206,19 @@ extern GTY(()) tree cp_global_trees[CPTI_MAX]; ...@@ -206,8 +206,19 @@ extern GTY(()) tree cp_global_trees[CPTI_MAX];
/* std::align_val_t */ /* std::align_val_t */
#define align_type_node cp_global_trees[CPTI_ALIGN_TYPE] #define align_type_node cp_global_trees[CPTI_ALIGN_TYPE]
/* We cache these tree nodes so as to call get_identifier less /* We cache these tree nodes so as to call get_identifier less frequently.
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 /* The name of a constructor that takes an in-charge parameter to
decide whether or not to construct virtual base classes. */ decide whether or not to construct virtual base classes. */
...@@ -228,6 +239,18 @@ extern GTY(()) tree cp_global_trees[CPTI_MAX]; ...@@ -228,6 +239,18 @@ extern GTY(()) tree cp_global_trees[CPTI_MAX];
/* The name of a destructor that destroys virtual base classes, and /* The name of a destructor that destroys virtual base classes, and
then deletes the entire object. */ then deletes the entire object. */
#define deleting_dtor_identifier cp_global_trees[CPTI_DELETING_DTOR_IDENTIFIER] #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 delta_identifier cp_global_trees[CPTI_DELTA_IDENTIFIER]
#define in_charge_identifier cp_global_trees[CPTI_IN_CHARGE_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 /* The name of the parameter that contains a pointer to the VTT to use
...@@ -1768,11 +1791,6 @@ struct GTY(()) language_function { ...@@ -1768,11 +1791,6 @@ struct GTY(()) language_function {
#define current_function_auto_return_pattern \ #define current_function_auto_return_pattern \
(cp_function_chain->x_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. */ /* In parser.c. */
extern tree cp_literal_operator_id (const char *); 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