clang 24.0.0git
clang::syntax::Declarator Class Reference

Covers a name, an initializer and a part of the type outside declaration specifiers. More...

#include "clang/Tooling/Syntax/Nodes.h"

Inheritance diagram for clang::syntax::Declarator:
[legend]

Public Member Functions

 Declarator (NodeKind K)
Public Member Functions inherited from clang::syntax::Tree
Node * getFirstChild ()
const Node * getFirstChild () const
Node * getLastChild ()
const Node * getLastChild () const
const Leaf * findFirstLeaf () const
Leaf * findFirstLeaf ()
const Leaf * findLastLeaf () const
Leaf * findLastLeaf ()
llvm::iterator_range< ChildIterator > getChildren ()
llvm::iterator_range< ConstChildIterator > getChildren () const
const Node * findChild (NodeRole R) const
 Find the first node with a corresponding role.
Node * findChild (NodeRole R)
Public Member Functions inherited from clang::syntax::Node
 Node (const Node &)=delete
 Nodes cannot simply be copied without violating tree invariants.
Node & operator= (const Node &)=delete
 Node (Node &&)=delete
 Idiomatically, nodes are allocated on an Arena and never moved.
Node & operator= (Node &&)=delete
NodeKind getKind () const
NodeRole getRole () const
bool isDetached () const
 Whether the node is detached from a tree, i.e. does not have a parent.
bool isOriginal () const
 Whether the node was created from the AST backed by the source code rather than added later through mutation APIs or created with factory functions.
bool canModify () const
 If this function return false, the tree cannot be modified because there is no reasonable way to produce the corresponding textual replacements.
const Tree * getParent () const
Tree * getParent ()
const Node * getNextSibling () const
Node * getNextSibling ()
const Node * getPreviousSibling () const
Node * getPreviousSibling ()
std::string dump (const TokenManager &SM) const
 Dumps the structure of a subtree. For debugging and testing purposes.
std::string dumpTokens (const TokenManager &SM) const
 Dumps the tokens forming this subtree.
void assertInvariants () const
 Asserts invariants on this node of the tree and its immediate children.
void assertInvariantsRecursive () const
 Runs checkInvariants on all nodes in the subtree. No-op if NDEBUG is set.

Static Public Member Functions

static bool classof (const Node *N)
Static Public Member Functions inherited from clang::syntax::Tree
static bool classof (const Node *N)

Additional Inherited Members

Protected Member Functions inherited from clang::syntax::Tree
 Node (NodeKind Kind)
 Newly created nodes are detached from a tree, parent and sibling links are set when the node is added as a child to another one.
 Node (const Node &)=delete
 Nodes cannot simply be copied without violating tree invariants.
 Node (Node &&)=delete
 Idiomatically, nodes are allocated on an Arena and never moved.
Protected Member Functions inherited from clang::syntax::Node
 Node (NodeKind Kind)
 Newly created nodes are detached from a tree, parent and sibling links are set when the node is added as a child to another one.
 ~Node ()=default
 Nodes are allocated on Arenas; the destructor is never called.

Detailed Description

Covers a name, an initializer and a part of the type outside declaration specifiers.

Examples are: *a in int *a a[10] in int a[10] *a = nullptr in int *a = nullptr Declarators can be unnamed too: ** in new int** * = nullptr in void foo(int* = nullptr) Most declarators you encounter are instances of SimpleDeclarator. They may contain an inner declarator inside parentheses, we represent it as ParenDeclarator. E.g. (*a) in int (*a) = 10

Definition at line 486 of file Nodes.h.

Constructor & Destructor Documentation

◆ Declarator()

clang::syntax::Declarator::Declarator ( NodeKind K)
inline

Member Function Documentation

◆ classof()

bool clang::syntax::Declarator::classof ( const Node * N)
static

The documentation for this class was generated from the following file: