My Project
MatrixNode Class Referenceabstract

a generic class from which we derive matrix constructors (BaseMatrix, MatrixElements, MatrixTransformation and MatrixBlocks) as well as matrix types (OSMatrix and MatrixBlock). More...

#include <OSMatrix.h>

Inheritance diagram for MatrixNode:
MatrixConstructor MatrixType BaseMatrix MatrixBlocks MatrixElements MatrixTransformation MatrixBlock OSMatrix ConReferenceMatrixElements ConstantMatrixElements GeneralMatrixElements LinearMatrixElements MixedRowReferenceMatrixElements ObjReferenceMatrixElements VarReferenceMatrixElements OSMatrixWithMatrixConIdx OSMatrixWithMatrixObjIdx OSMatrixWithMatrixVarIdx

Public Member Functions

 MatrixNode ()
 default constructor
 
virtual ~MatrixNode ()
 destructor
 
virtual ENUM_MATRIX_CONSTRUCTOR_TYPE getNodeType ()
 
virtual ENUM_MATRIX_TYPE getMatrixType ()=0
 
virtual std::string getNodeName ()=0
 
virtual std::string getMatrixNodeInXML ()=0
 
std::vector< MatrixNode * > getPrefixFromNodeTree ()
 
std::vector< MatrixNode * > preOrderMatrixNodeTraversal (std::vector< MatrixNode * > *prefixVector)
 
std::vector< MatrixNode * > getPostfixFromNodeTree ()
 
std::vector< MatrixNode * > postOrderMatrixNodeTraversal (std::vector< MatrixNode * > *postfixVector)
 
virtual MatrixNodecloneMatrixNode ()=0
 
virtual bool alignsOnBlockBoundary (int firstRow, int firstColumn, int nRows, int nCols)=0
 Check whether a submatrix aligns with the block partition of a matrix or block or other constructor.
 
virtual bool IsEqual (MatrixNode *that)
 A function to check for the equality of two objects.
 
bool setRandom (double density, bool conformant, int iMin, int iMax)
 A function to make a random instance of this class.
 
bool deepCopyFrom (MatrixNode *that)
 A function to make a deep copy of an instance of this class.
 

Public Attributes

ENUM_MATRIX_TYPE matrixType
 matrixType tracks the type of elements contained in this MatrixNode, which may be useful in solver selection For an enumeration of the possible types see OSParameters.h
 
ENUM_MATRIX_CONSTRUCTOR_TYPE nType
 nType is a unique integer assigned to each type of matrix node (see OSParameters.h)
 
unsigned int inumberOfChildren
 inumberOfChildren is the number of MatrixNode child elements For the matrix types (OSMatrix and MatrixBlock) this number is not fixed and is temporarily set to 0
 
MatrixNode ** m_mChildren
 m_mChildren holds all the children, that is, nodes used in the definition or construction of the current node.
 

Detailed Description

a generic class from which we derive matrix constructors (BaseMatrix, MatrixElements, MatrixTransformation and MatrixBlocks) as well as matrix types (OSMatrix and MatrixBlock).

Definition at line 50 of file OSMatrix.h.

Constructor & Destructor Documentation

◆ MatrixNode()

MatrixNode::MatrixNode ( )

default constructor

-------— Methods for class MatrixNode -------—

Definition at line 40 of file OSMatrix.cpp.

◆ ~MatrixNode()

MatrixNode::~MatrixNode ( )
virtual

destructor

Definition at line 50 of file OSMatrix.cpp.

Member Function Documentation

◆ getNodeType()

◆ getMatrixType()

◆ getNodeName()

◆ getMatrixNodeInXML()

std::string MatrixNode::getMatrixNodeInXML ( )
pure virtual

The following method writes a matrix node in OSgL format. it is used by OSgLWriter to write a <matrix> element.

Returns
the MatrixNode and its children as an OSgL string.

Implemented in BaseMatrix, ConReferenceMatrixElements, ConstantMatrixElements, GeneralMatrixElements, LinearMatrixElements, MatrixBlock, MatrixBlocks, MatrixTransformation, MixedRowReferenceMatrixElements, ObjReferenceMatrixElements, OSMatrix, OSMatrixWithMatrixConIdx, OSMatrixWithMatrixObjIdx, OSMatrixWithMatrixVarIdx, and VarReferenceMatrixElements.

Definition at line 89 of file OSMatrix.cpp.

◆ getPrefixFromNodeTree()

std::vector< MatrixNode * > MatrixNode::getPrefixFromNodeTree ( )

Get a vector of pointers to OSnLNodes and OSnLMNodes that correspond to the MatrixNode tree in prefix format.

Returns
the node tree as a vector of MatrixNodes in prefix.

◆ preOrderMatrixNodeTraversal()

std::vector< MatrixNode * > MatrixNode::preOrderMatrixNodeTraversal ( std::vector< MatrixNode * > * prefixVector)

◆ getPostfixFromNodeTree()

std::vector< MatrixNode * > MatrixNode::getPostfixFromNodeTree ( )

Get a vector of pointers to MatrixNodes that correspond to the MatrixNode tree in postfix format

Returns
the node tree as a vector of MatrixNodes in postfix.

◆ postOrderMatrixNodeTraversal()

std::vector< MatrixNode * > MatrixNode::postOrderMatrixNodeTraversal ( std::vector< MatrixNode * > * postfixVector)

Called by getPostfixFromNodeTree(). This method calls itself recursively and generates a vector of pointers to MatrixNodes in postfix.

Parameters
apointer postfixVector to a vector of pointers of MatrixNodes
Returns
a vector of pointers to MatrixNodes in postfix.

◆ cloneMatrixNode()

virtual MatrixNode * MatrixNode::cloneMatrixNode ( )
pure virtual

Create or clone a node of this type. This is an abstract method which is required to be implemented by the concrete operator nodes that derive or extend from this class.

Implemented in BaseMatrix, ConReferenceMatrixElements, ConstantMatrixElements, GeneralMatrixElements, LinearMatrixElements, MatrixBlock, MatrixBlocks, MatrixTransformation, MixedRowReferenceMatrixElements, ObjReferenceMatrixElements, OSMatrix, OSMatrixWithMatrixConIdx, OSMatrixWithMatrixObjIdx, OSMatrixWithMatrixVarIdx, and VarReferenceMatrixElements.

◆ alignsOnBlockBoundary()

bool MatrixNode::alignsOnBlockBoundary ( int firstRow,
int firstColumn,
int nRows,
int nCols )
pure virtual

Check whether a submatrix aligns with the block partition of a matrix or block or other constructor.

Parameters
firstRowgives the number of the first row in the submatrix (zero-based)
firstColumngives the number of the first column in the submatrix (zero-based)
nRowsgives the number of rows in the submatrix
nColumnsgives the number of columns in the submatrix
Returns
true if the submatrix aligns with the boundaries of a block This is an abstract method which is required to be implemented by the concrete operator nodes that derive or extend from this class.

Implemented in BaseMatrix, ConReferenceMatrixElements, ConstantMatrixElements, GeneralMatrixElements, LinearMatrixElements, MatrixBlock, MatrixBlocks, MatrixTransformation, MatrixType, MixedRowReferenceMatrixElements, ObjReferenceMatrixElements, OSMatrix, and VarReferenceMatrixElements.

Definition at line 94 of file OSMatrix.cpp.

◆ IsEqual()

bool MatrixNode::IsEqual ( MatrixNode * that)
virtual

A function to check for the equality of two objects.

Definition at line 99 of file OSMatrix.cpp.

◆ setRandom()

bool MatrixNode::setRandom ( double density,
bool conformant,
int iMin,
int iMax )

A function to make a random instance of this class.

Parameters
densitycorresponds to the probability that a particular child element is created
conformantif true enforces side constraints not enforceable in the schema (e.g., agreement of "numberOfXXX" attributes and <XXX> children)
iMinlowest index value (inclusive) that a variable reference in this matrix can take
iMaxgreatest index value (inclusive) that a variable reference in this matrix can take

◆ deepCopyFrom()

bool MatrixNode::deepCopyFrom ( MatrixNode * that)

A function to make a deep copy of an instance of this class.

Parameters
thatthe instance from which information is to be copied
Returns
whether the copy was created successfully

Member Data Documentation

◆ matrixType

ENUM_MATRIX_TYPE MatrixNode::matrixType

matrixType tracks the type of elements contained in this MatrixNode, which may be useful in solver selection For an enumeration of the possible types see OSParameters.h

Definition at line 58 of file OSMatrix.h.

◆ nType

ENUM_MATRIX_CONSTRUCTOR_TYPE MatrixNode::nType

nType is a unique integer assigned to each type of matrix node (see OSParameters.h)

Definition at line 64 of file OSMatrix.h.

◆ inumberOfChildren

unsigned int MatrixNode::inumberOfChildren

inumberOfChildren is the number of MatrixNode child elements For the matrix types (OSMatrix and MatrixBlock) this number is not fixed and is temporarily set to 0

Definition at line 70 of file OSMatrix.h.

◆ m_mChildren

MatrixNode** MatrixNode::m_mChildren

m_mChildren holds all the children, that is, nodes used in the definition or construction of the current node.

Definition at line 76 of file OSMatrix.h.


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