FreeTensor
Loading...
Searching...
No Matches
Public Member Functions | List of all members
freetensor::StmtNode Class Reference

#include <ast.h>

Inheritance diagram for freetensor::StmtNode:
Inheritance graph
[legend]
Collaboration diagram for freetensor::StmtNode:
Collaboration graph
[legend]

Public Member Functions

void setId (const ID &id=ID::make())
 
ID id () const
 
const Metadatametadata () const
 
Metadatametadata ()
 
bool isStmt () const override
 
virtual bool isCtrlFlow () const
 
virtual std::vector< Ref< StmtNode > > children () const
 
Ref< StmtNodeprevLeafStmtInDFSOrder () const
 
Ref< StmtNodenextLeafStmtInDFSOrder () const
 
Ref< StmtNodeprevStmtInDFSPostOrder () const
 
Ref< StmtNodenextStmtInDFSPreOrder () const
 
Ref< StmtNodeancestorById (const ID &lookup) const
 
bool isAncestorOf (const Stmt &other) const
 
bool isBefore (const Stmt &other) const
 
 DEFINE_NODE_ACCESS (Stmt)
 
Ref< StmtNodeparentStmt () const
 
Ref< StmtNodeparentStmtByFilter (const std::function< bool(const Stmt &)> &filter) const
 
Ref< StmtNodeprevStmt () const
 
Ref< StmtNodenextStmt () const
 
Ref< StmtNodeparentCtrlFlow () const
 
Ref< StmtNodeprevInCtrlFlow () const
 
Ref< StmtNodenextInCtrlFlow () const
 
- Public Member Functions inherited from freetensor::ASTNode
virtual ~ASTNode ()
 
virtual ASTNodeType nodeType () const =0
 
bool isAST () const override
 
virtual bool isFunc () const
 
virtual bool isStmt () const
 
virtual bool isExpr () const
 
Ref< ASTNodeparentAST () const
 
std::source_location debugBlame () const
 
void setDebugBlame (std::source_location loc)
 
 DEFINE_NODE_ACCESS (AST)
 
- Public Member Functions inherited from freetensor::ASTPart
virtual ~ASTPart ()
 
 ASTPart (ASTPart &&other)
 
 ASTPart (const ASTPart &other)
 
ASTPartoperator= (ASTPart &&)
 
ASTPartoperator= (const ASTPart &)
 
bool trySetParent (const Ref< ASTPart > &parent)
 
void resetParent ()
 
Ref< ASTPartparent () const
 
bool isSubTree () const
 
int depth () const
 
virtual void modifiedHook ()
 
size_t hash ()
 
virtual bool isAST () const
 
- Public Member Functions inherited from freetensor::EnableSelf< ASTPart >
Ref< ASTPartself () const
 

Additional Inherited Members

- Public Types inherited from freetensor::EnableSelf< ASTPart >
typedef ASTPart Self
 
- Protected Member Functions inherited from freetensor::ASTPart
void lock ()
 
void unlock ()
 
virtual void compHash ()=0
 
void resetHash ()
 
- Protected Attributes inherited from freetensor::ASTPart
size_t hash_ = ~0ull
 
std::atomic_flag lock_ = ATOMIC_FLAG_INIT
 

Detailed Description

Base class of all statement nodes in an AST

Member Function Documentation

◆ ancestorById()

Stmt freetensor::StmtNode::ancestorById ( const ID lookup) const

Find an ancestor by ID. this itself is also considered

◆ children()

virtual std::vector< Ref< StmtNode > > freetensor::StmtNode::children ( ) const
inlinevirtual

◆ DEFINE_NODE_ACCESS()

freetensor::StmtNode::DEFINE_NODE_ACCESS ( Stmt  )

◆ id()

ID freetensor::StmtNode::id ( ) const

◆ isAncestorOf()

bool freetensor::StmtNode::isAncestorOf ( const Stmt other) const

Check whether this node is an ancestoer of other

◆ isBefore()

bool freetensor::StmtNode::isBefore ( const Stmt other) const

Check whether this node is before other in DFS order

◆ isCtrlFlow()

virtual bool freetensor::StmtNode::isCtrlFlow ( ) const
inlinevirtual

For, If and Assert are control flow, while StmtSeq, VarDef and Assume are not

Reimplemented in freetensor::ForNode, freetensor::IfNode, and freetensor::AssertNode.

◆ isStmt()

bool freetensor::StmtNode::isStmt ( ) const
inlineoverridevirtual

Reimplemented from freetensor::ASTNode.

◆ metadata() [1/2]

Metadata & freetensor::StmtNode::metadata ( )
inline

◆ metadata() [2/2]

const Metadata & freetensor::StmtNode::metadata ( ) const
inline

◆ nextInCtrlFlow()

Stmt freetensor::StmtNode::nextInCtrlFlow ( ) const

◆ nextLeafStmtInDFSOrder()

Stmt freetensor::StmtNode::nextLeafStmtInDFSOrder ( ) const

◆ nextStmt()

Stmt freetensor::StmtNode::nextStmt ( ) const

◆ nextStmtInDFSPreOrder()

Stmt freetensor::StmtNode::nextStmtInDFSPreOrder ( ) const

◆ parentCtrlFlow()

Stmt freetensor::StmtNode::parentCtrlFlow ( ) const

Parent, next or previous statment, ignoring VarDef, StmtSeq or Assume nodes

◆ parentStmt()

Stmt freetensor::StmtNode::parentStmt ( ) const

Parent, next or previous statement

NOTE: For an If node, the "then" case is considered before the "else" case

◆ parentStmtByFilter()

Ref< StmtNode > freetensor::StmtNode::parentStmtByFilter ( const std::function< bool(const Stmt &)> &  filter) const

◆ prevInCtrlFlow()

Stmt freetensor::StmtNode::prevInCtrlFlow ( ) const

◆ prevLeafStmtInDFSOrder()

Stmt freetensor::StmtNode::prevLeafStmtInDFSOrder ( ) const

Previous or next statement in DFS order

◆ prevStmt()

Stmt freetensor::StmtNode::prevStmt ( ) const

◆ prevStmtInDFSPostOrder()

Stmt freetensor::StmtNode::prevStmtInDFSPostOrder ( ) const

◆ setId()

void freetensor::StmtNode::setId ( const ID id = ID::make())

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