Basic Polynomial Algebra Subprograms (BPAS)
v. 1.791
|
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... | |
ExprTreeNode * | deepCopy () const |
Get a deep copy of the tree rooted at root. More... | |
Static Public Member Functions | |
static ExprTreeNode * | combineExprTreeNodes (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 | |
ExprTreeNode * | left |
ExprTreeNode * | right |
ExprTreeType | type |
ExprTreeVal | val |
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.
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.
|
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).
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
bool ExprTreeNode::findChildType | ( | ExprTreeType | searchType | ) |
Determine if *this or any of it's children is of type searchType.
returns true iff searchType found.
bool ExprTreeNode::isConstant | ( | ) | const |
Check to see if the expression rooted at *this encodes a constant.
That is, an integer, a rational number, etc.
bool ExprTreeNode::isPolynomialTerm | ( | ) | const |
Check to see if the expression rooted at *this encodes a monomial.
returns true iff *this encodes a monomial.
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.