PostOrderNode

/** * Most of Expression and part of Statement nodes are post order nodes, * the visit order of PostOrderNode is that: * 1. visit it's child, ordered by child index * 2. visit node itself * * PostOrderNode consist of AST nodes with the following properties: * 1. the visit order of node's immediate children is sequential * 2. the control flow edge label between node's immdediate children * only contain NormalCompletion * * This is a convenient way to model a node, if the node can be treat as * PostOrderNode; the necessory control flow information including first, * last and successor are generated automatically. */ 

Inherit from ControlFlowNode

Primary key: id: int

schema PostOrderNode extends ControlFlowNode { @primary id: int } 

PostOrderNode::getRelativePath

/** * Get the relative path of this control flow node. */ 
pub fn getRelativePath(self: PostOrderNode) -> string; 

PostOrderNode::getAPredecessor

/** * Get an immediate predecessor of this node. */ 
pub fn getAPredecessor(self: PostOrderNode) -> *ControlFlowNode; 

PostOrderNode::getChildNode

/** * Gets child node with index, start from 0. */ 
pub fn getChildNode(self: PostOrderNode, index: int) -> ControlFlowNode; 

PostOrderNode::getPredecessorCount

/** * Get the count of immediate predecessor nodes/ */ 
pub fn getPredecessorCount(self: PostOrderNode) -> int; 

PostOrderNode::mayCompleteNormally

/** * Holds whether this node can finish with a normalCompletion. */ 
pub fn mayCompleteNormally(self: PostOrderNode) -> bool; 

PostOrderNode::getChildCount

/** * Gets the count of the children. */ 
pub fn getChildCount(self: PostOrderNode) -> int; 

PostOrderNode::getAllChild

pub fn getAllChild(self: PostOrderNode) -> *ControlFlowNode; 

PostOrderNode::firstChild

/** * Gets the first child of this node. */ 
pub fn firstChild(self: PostOrderNode) -> ControlFlowNode; 

PostOrderNode::getBasicBlock

/** * Get the basic block that contains this node. */ 
pub fn getBasicBlock(self: PostOrderNode) -> BasicBlock; 

PostOrderNode::isAstNode

pub fn isAstNode(self: PostOrderNode) -> bool; 

PostOrderNode::getASuccessor

/** * Get an immediate successor of this node. */ 
pub fn getASuccessor(self: PostOrderNode) -> *ControlFlowNode; 

PostOrderNode::__all__

Data constraint method.

pub fn __all__(db: JavascriptDB) -> *PostOrderNode; 

PostOrderNode::getLocation

/** * Get the location of this control flow node. */ 
pub fn getLocation(self: PostOrderNode) -> Location; 

PostOrderNode::isLeafNode

/** * Hold whether this node is leaf node. */ 
pub fn isLeafNode(self: PostOrderNode) -> bool; 

PostOrderNode::getSuccessorCount

/** * Get the count of immediate successor nodes. */ 
pub fn getSuccessorCount(self: PostOrderNode) -> int; 

PostOrderNode::getASuccessorRecursive

/** * Gets the successor of this node, and query successors recursively */ 
pub fn getASuccessorRecursive(self: PostOrderNode) -> *ControlFlowNode; 

PostOrderNode::getText

/** * Get the text of this control flow node. */ 
pub fn getText(self: PostOrderNode) -> string; 

PostOrderNode::isEntryNode

pub fn isEntryNode(self: PostOrderNode) -> bool; 

PostOrderNode::getASuccessorWithCompletion

/** * Get an immediate successor of this node with the given * type of Completion. */ 
pub fn getASuccessorWithCompletion(self: PostOrderNode, c: Completion) -> *ControlFlowNode; 

PostOrderNode::isSyntheticNode

pub fn isSyntheticNode(self: PostOrderNode) -> bool; 

PostOrderNode::getEnclosingFunction

/** * Get the enclosing function of node. * CfgEntryNode or CfgExitNode return belongs to function. */ 
pub fn getEnclosingFunction(self: PostOrderNode) -> FunctionLikeDeclaration; 

PostOrderNode::getFile

/** * Get the file of this control flow node. */ 
pub fn getFile(self: PostOrderNode) -> File; 

PostOrderNode::isExitNode

pub fn isExitNode(self: PostOrderNode) -> bool; 

PostOrderNode::getKindName

/** * Get the kind name of node. * If node is ast node, just return ast node kind name; otherwise * return node name as CfgEntryNode or CfgExitNode. */ 
pub fn getKindName(self: PostOrderNode) -> string;