clang  14.0.0git
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Friends | List of all members
clang::syntax::Tree Class Reference

A node that has children and represents a syntactic language construct. More...

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

Inheritance diagram for clang::syntax::Tree:
Inheritance graph
[legend]
Collaboration diagram for clang::syntax::Tree:
Collaboration graph
[legend]

Classes

struct  ChildIterator
 child_iterator is not invalidated by mutations. More...
 
struct  ConstChildIterator
 

Public Member Functions

NodegetFirstChild ()
 
const NodegetFirstChild () const
 
NodegetLastChild ()
 
const NodegetLastChild () const
 
const LeaffindFirstLeaf () const
 
LeaffindFirstLeaf ()
 
const LeaffindLastLeaf () const
 
LeaffindLastLeaf ()
 
llvm::iterator_range< ChildIteratorgetChildren ()
 
llvm::iterator_range< ConstChildIteratorgetChildren () const
 
const NodefindChild (NodeRole R) const
 Find the first node with a corresponding role. More...
 
NodefindChild (NodeRole R)
 
- Public Member Functions inherited from clang::syntax::Node
 Node (const Node &)=delete
 Nodes cannot simply be copied without violating tree invariants. More...
 
Nodeoperator= (const Node &)=delete
 
 Node (Node &&)=delete
 Idiomatically, nodes are allocated on an Arena and never moved. More...
 
Nodeoperator= (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. More...
 
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. More...
 
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. More...
 
const TreegetParent () const
 
TreegetParent ()
 
const NodegetNextSibling () const
 
NodegetNextSibling ()
 
const NodegetPreviousSibling () const
 
NodegetPreviousSibling ()
 
std::string dump (const SourceManager &SM) const
 Dumps the structure of a subtree. For debugging and testing purposes. More...
 
std::string dumpTokens (const SourceManager &SM) const
 Dumps the tokens forming this subtree. More...
 
void assertInvariants () const
 Asserts invariants on this node of the tree and its immediate children. More...
 
void assertInvariantsRecursive () const
 Runs checkInvariants on all nodes in the subtree. No-op if NDEBUG is set. More...
 

Static Public Member Functions

static bool classof (const Node *N)
 

Protected Member Functions

 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. More...
 
 Node (const Node &)=delete
 Nodes cannot simply be copied without violating tree invariants. More...
 
 Node (Node &&)=delete
 Idiomatically, nodes are allocated on an Arena and never moved. More...
 
- 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. More...
 
 ~Node ()=default
 Nodes are allocated on Arenas; the destructor is never called. More...
 

Friends

class TreeBuilder
 
class FactoryImpl
 
class MutationsImpl
 

Detailed Description

A node that has children and represents a syntactic language construct.

Definition at line 169 of file Tree.h.

Member Function Documentation

◆ classof()

static bool clang::syntax::Tree::classof ( const Node N)
static

◆ findChild() [1/2]

Node* clang::syntax::Tree::findChild ( NodeRole  R)
inline

Definition at line 236 of file Tree.h.

References findChild().

◆ findChild() [2/2]

const syntax::Node * syntax::Tree::findChild ( NodeRole  R) const

Find the first node with a corresponding role.

Definition at line 332 of file Tree.cpp.

Referenced by findChild().

◆ findFirstLeaf() [1/2]

Leaf* clang::syntax::Tree::findFirstLeaf ( )
inline

Definition at line 207 of file Tree.h.

References findFirstLeaf().

◆ findFirstLeaf() [2/2]

const syntax::Leaf * syntax::Tree::findFirstLeaf ( ) const

Definition at line 312 of file Tree.cpp.

Referenced by findFirstLeaf().

◆ findLastLeaf() [1/2]

Leaf* clang::syntax::Tree::findLastLeaf ( )
inline

Definition at line 212 of file Tree.h.

References findLastLeaf().

◆ findLastLeaf() [2/2]

const syntax::Leaf * syntax::Tree::findLastLeaf ( ) const

Definition at line 322 of file Tree.cpp.

Referenced by findLastLeaf().

◆ getChildren() [1/2]

llvm::iterator_range<ChildIterator> clang::syntax::Tree::getChildren ( )
inline

Definition at line 227 of file Tree.h.

References getFirstChild().

◆ getChildren() [2/2]

llvm::iterator_range<ConstChildIterator> clang::syntax::Tree::getChildren ( ) const
inline

Definition at line 230 of file Tree.h.

References getFirstChild().

◆ getFirstChild() [1/2]

Node* clang::syntax::Tree::getFirstChild ( )
inline

Definition at line 201 of file Tree.h.

Referenced by getChildren().

◆ getFirstChild() [2/2]

const Node* clang::syntax::Tree::getFirstChild ( ) const
inline

Definition at line 202 of file Tree.h.

◆ getLastChild() [1/2]

Node* clang::syntax::Tree::getLastChild ( )
inline

Definition at line 203 of file Tree.h.

◆ getLastChild() [2/2]

const Node* clang::syntax::Tree::getLastChild ( ) const
inline

Definition at line 204 of file Tree.h.

◆ Node() [1/3]

clang::syntax::Node::Node
protecteddelete

Nodes cannot simply be copied without violating tree invariants.

◆ Node() [2/3]

clang::syntax::Node::Node
protecteddelete

Idiomatically, nodes are allocated on an Arena and never moved.

◆ Node() [3/3]

syntax::Node::Node
protected

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.

Definition at line 55 of file Tree.cpp.

Friends And Related Function Documentation

◆ FactoryImpl

friend class FactoryImpl
friend

Definition at line 257 of file Tree.h.

◆ MutationsImpl

friend class MutationsImpl
friend

Definition at line 266 of file Tree.h.

◆ TreeBuilder

friend class TreeBuilder
friend

Definition at line 256 of file Tree.h.


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