Basic Polynomial Algebra Subprograms (BPAS)  v. 1.652
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
ExprTreeNode Struct Reference

ExprTreeNode is a single node in the bianry tree of an ExpressionTree. More...

#include <ExprTreeNode.hpp>

Public Member Functions

 ExprTreeNode ()
 Construct a default, empty ExprTreeNode.
 
 ExprTreeNode (ExprTreeType type, ExprTreeVal *val, ExprTreeNode *lNode, ExprTreeNode *rNode)
 Construct an ExprTreeNode given its type, value, and left and right children. More...
 
 ExprTreeNode (const std::string &s)
 Construct an ExprTreeNode of type EXPR_VAR with a copy of s as data.
 
 ExprTreeNode (long int i)
 Construct an ExprTreeNode of type EXPR_INT with i as data.
 
 ExprTreeNode (const mpz_class &z)
 Construct an ExprTreeNode of type EXPR_MPZ with a copy of z as data.
 
 ExprTreeNode (const mpq_class &q)
 Construct an ExprTreeNode of type EXPR_MPQ with a copy of q as data.
 
 ExprTreeNode (const Symbol &s)
 Construct an ExpeTreeNode of type EXPR_SYM with a copy of s as data.
 
 ~ExprTreeNode ()
 ExprTreeNode destructor.
 
bool findChildType (ExprTreeType searchType)
 Determine if *this or any of it's children is of type searchType. More...
 
std::string toString () const
 Covnert *this to a string, depending on it's type and data. More...
 
bool isVar () const
 Check to see if the expression rooted at *this encodes a variable or a variable to a power.
 
bool isConstant () const
 Check to see if the expression rooted at *this encodes a constant. More...
 
bool isPolynomialTerm () const
 Check to see if the expression rooted at *this encodes a monomial. More...
 
ExprTreeNodedeepCopy () const
 Get a deep copy of the tree rooted at root. More...
 

Static Public Member Functions

static ExprTreeNodecombineExprTreeNodes (ExprTreeNode *lNode, ExprTreeNode *rNode, ExprTreeType tType, ExprTreeVal *vVal=NULL)
 Creates a new ExprTreeNode and combines two sub-trees (lNode and rNode) by adjoining them to the newly created node as their root. More...
 

Public Attributes

ExprTreeNodeleft
 
ExprTreeNoderight
 
ExprTreeType type
 
ExprTreeVal val
 

Detailed Description

ExprTreeNode is a single node in the bianry tree of an ExpressionTree.

Nodes have a recursive structure, where each node is the root of a sub-tree with edges connecting *this node to the left and right sub-trees.

Each tree has a type and a val. The type is used to specify how the val should interpreted.

See Also, The enum ExprTreeType, and the union ExprTreeVal.

Constructor & Destructor Documentation

◆ ExprTreeNode()

ExprTreeNode::ExprTreeNode ( ExprTreeType  type,
ExprTreeVal val,
ExprTreeNode lNode,
ExprTreeNode rNode 
)

Construct an ExprTreeNode given its type, value, and left and right children.

Value and children can be NULL.

Member Function Documentation

◆ combineExprTreeNodes()

static ExprTreeNode* ExprTreeNode::combineExprTreeNodes ( ExprTreeNode lNode,
ExprTreeNode rNode,
ExprTreeType  tType,
ExprTreeVal vVal = NULL 
)
static

Creates a new ExprTreeNode and combines two sub-trees (lNode and rNode) by adjoining them to the newly created node as their root.

The newly created node has type tType and val vVal (if vVal is not NULL).

◆ deepCopy()

ExprTreeNode* ExprTreeNode::deepCopy ( ) const

Get a deep copy of the tree rooted at root.

Node that if the node or any its children hold data as a void* then that data will NOT be deeply copied.

returns the new root

◆ findChildType()

bool ExprTreeNode::findChildType ( ExprTreeType  searchType)

Determine if *this or any of it's children is of type searchType.

returns true iff searchType found.

◆ isConstant()

bool ExprTreeNode::isConstant ( ) const

Check to see if the expression rooted at *this encodes a constant.

That is, an integer, a rational number, etc.

◆ isPolynomialTerm()

bool ExprTreeNode::isPolynomialTerm ( ) const

Check to see if the expression rooted at *this encodes a monomial.

returns true iff *this encodes a monomial.

◆ toString()

std::string ExprTreeNode::toString ( ) const

Covnert *this to a string, depending on it's type and data.

Only convert this particular node, not it's children. This allows for different tree traversals.


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