Numworks Epsilon  1.4.1
Graphing Calculator Operating System
Poincare::DynamicHierarchy Class Reference

#include <dynamic_hierarchy.h>

Inheritance diagram for Poincare::DynamicHierarchy:
Poincare::Expression Poincare::Addition Poincare::Matrix Poincare::Multiplication

Public Types

typedef int(* ExpressionOrder) (const Expression *e1, const Expression *e2, bool canBeInterrupted)
 
- Public Types inherited from Poincare::Expression
enum  Type : uint8_t {
  Type::Undefined = 0, Type::Rational = 1, Type::Decimal, Type::Multiplication,
  Type::Power, Type::Addition, Type::Factorial, Type::Division,
  Type::Store, Type::Sine, Type::Cosine, Type::Tangent,
  Type::AbsoluteValue, Type::ArcCosine, Type::ArcSine, Type::ArcTangent,
  Type::BinomialCoefficient, Type::Ceiling, Type::ComplexArgument, Type::Conjugate,
  Type::Derivative, Type::Determinant, Type::DivisionQuotient, Type::DivisionRemainder,
  Type::Factor, Type::Floor, Type::FracPart, Type::GreatCommonDivisor,
  Type::HyperbolicArcCosine, Type::HyperbolicArcSine, Type::HyperbolicArcTangent, Type::HyperbolicCosine,
  Type::HyperbolicSine, Type::HyperbolicTangent, Type::ImaginaryPart, Type::Integral,
  Type::LeastCommonMultiple, Type::Logarithm, Type::MatrixTrace, Type::NaperianLogarithm,
  Type::NthRoot, Type::Opposite, Type::Parenthesis, Type::PermuteCoefficient,
  Type::Product, Type::Random, Type::Randint, Type::RealPart,
  Type::Round, Type::SquareRoot, Type::Subtraction, Type::Sum,
  Type::Symbol, Type::Complex, Type::Matrix, Type::ConfidenceInterval,
  Type::MatrixDimension, Type::MatrixInverse, Type::MatrixTranspose, Type::PredictionInterval,
  Type::SimplificationRoot
}
 
enum  ComplexFormat { ComplexFormat::Cartesian = 0, ComplexFormat::Polar = 1, ComplexFormat::Default = 2 }
 
enum  AngleUnit { AngleUnit::Degree = 0, AngleUnit::Radian = 1, AngleUnit::Default = 2 }
 
enum  Sign { Sign::Negative = -1, Sign::Unknown = 0, Sign::Positive = 1 }
 
typedef bool(* CircuitBreaker) ()
 
typedef bool(* ExpressionTest) (const Expression *e, Context &context)
 

Public Member Functions

 DynamicHierarchy ()
 
 DynamicHierarchy (const Expression *const *operands, int numberOfOperands, bool cloneOperands=true)
 
 DynamicHierarchy (const Expression *operand1, const Expression *operand2, bool cloneOperands=true)
 
 ~DynamicHierarchy ()
 
 DynamicHierarchy (const DynamicHierarchy &other)=delete
 
 DynamicHierarchy (DynamicHierarchy &&other)=delete
 
DynamicHierarchyoperator= (const DynamicHierarchy &other)=delete
 
DynamicHierarchyoperator= (DynamicHierarchy &&other)=delete
 
int numberOfOperands () const override
 
const Expression *const * operands () const override
 
void removeOperand (const Expression *e, bool deleteAfterRemoval=true)
 
void addOperands (const Expression *const *operands, int numberOfOperands)
 
void addOperand (Expression *operand)
 
void addOperandAtIndex (Expression *operand, int index)
 
void mergeOperands (DynamicHierarchy *d)
 
void sortOperands (ExpressionOrder order, bool canBeInterrupted)
 
ExpressionsquashUnaryHierarchy ()
 
- Public Member Functions inherited from Poincare::Expression
virtual ~Expression ()=default
 
virtual Expressionclone () const =0
 
virtual Type type () const =0
 
const Expressionoperand (int i) const
 
ExpressioneditableOperand (int i)
 
ExpressionreplaceWith (Expression *newOperand, bool deleteAfterReplace=true)
 
void replaceOperand (const Expression *oldOperand, Expression *newOperand, bool deleteOldOperand=true)
 
void detachOperand (const Expression *e)
 
void detachOperands ()
 
void swapOperands (int i, int j)
 
Expressionparent () const
 
void setParent (Expression *parent)
 
bool hasAncestor (const Expression *e) const
 
virtual Sign sign () const
 
bool recursivelyMatches (ExpressionTest test, Context &context) const
 
bool isApproximate (Context &context) const
 
virtual float characteristicXRange (Context &context, AngleUnit angleUnit=AngleUnit::Default) const
 
virtual int polynomialDegree (char symbolName) const
 
bool isIdenticalTo (const Expression *e) const
 
ExpressionLayoutcreateLayout (PrintFloat::Mode floatDisplayMode=PrintFloat::Mode::Default, ComplexFormat complexFormat=ComplexFormat::Default) const
 
virtual int writeTextInBuffer (char *buffer, int bufferSize, int numberOfSignificantDigits=PrintFloat::k_numberOfStoredSignificantDigits) const =0
 
template<typename T >
Expressionapproximate (Context &context, AngleUnit angleUnit=AngleUnit::Default) const
 
template<typename T >
T approximateToScalar (Context &context, AngleUnit angleUnit=AngleUnit::Default) const
 

Protected Attributes

const Expression ** m_operands
 
int m_numberOfOperands
 

Additional Inherited Members

- Static Public Member Functions inherited from Poincare::Expression
static Expressionparse (char const *string)
 
static void ReplaceSymbolWithExpression (Expression **expressionAddress, char symbol, Expression *expression)
 
static void setCircuitBreaker (CircuitBreaker cb)
 
static bool shouldStopProcessing ()
 
static bool IsMatrix (const Expression *e, Context &context)
 
static ExpressionParseAndSimplify (const char *text, Context &context, AngleUnit angleUnit=AngleUnit::Default)
 
static void Simplify (Expression **expressionAddress, Context &context, AngleUnit angleUnit=AngleUnit::Default)
 
template<typename T >
static T approximateToScalar (const char *text, Context &context, AngleUnit angleUnit=AngleUnit::Default)
 
- Protected Types inherited from Poincare::Expression
typedef float SinglePrecision
 
typedef double DoublePrecision
 
- Protected Member Functions inherited from Poincare::Expression
 Expression ()
 
void detachOperandAtIndex (int i)
 
- Static Protected Member Functions inherited from Poincare::Expression
template<typename T >
static T epsilon ()
 
static int SimplificationOrder (const Expression *e1, const Expression *e2, bool canBeInterrupted=false)
 
- Static Protected Attributes inherited from Poincare::Expression
static constexpr int k_maxNumberOfSteps = 10000
 

Detailed Description

Definition at line 10 of file dynamic_hierarchy.h.

Member Typedef Documentation

◆ ExpressionOrder

typedef int(* Poincare::DynamicHierarchy::ExpressionOrder) (const Expression *e1, const Expression *e2, bool canBeInterrupted)

Definition at line 30 of file dynamic_hierarchy.h.

Constructor & Destructor Documentation

◆ DynamicHierarchy() [1/5]

Poincare::DynamicHierarchy::DynamicHierarchy ( )

Definition at line 9 of file dynamic_hierarchy.cpp.

◆ DynamicHierarchy() [2/5]

Poincare::DynamicHierarchy::DynamicHierarchy ( const Expression *const *  operands,
int  numberOfOperands,
bool  cloneOperands = true 
)

Definition at line 16 of file dynamic_hierarchy.cpp.

◆ DynamicHierarchy() [3/5]

Poincare::DynamicHierarchy::DynamicHierarchy ( const Expression operand1,
const Expression operand2,
bool  cloneOperands = true 
)
inline

Definition at line 14 of file dynamic_hierarchy.h.

◆ ~DynamicHierarchy()

Poincare::DynamicHierarchy::~DynamicHierarchy ( )

Definition at line 33 of file dynamic_hierarchy.cpp.

◆ DynamicHierarchy() [4/5]

Poincare::DynamicHierarchy::DynamicHierarchy ( const DynamicHierarchy other)
delete

◆ DynamicHierarchy() [5/5]

Poincare::DynamicHierarchy::DynamicHierarchy ( DynamicHierarchy &&  other)
delete

Member Function Documentation

◆ addOperand()

void Poincare::DynamicHierarchy::addOperand ( Expression operand)

Definition at line 66 of file dynamic_hierarchy.cpp.

◆ addOperandAtIndex()

void Poincare::DynamicHierarchy::addOperandAtIndex ( Expression operand,
int  index 
)

Definition at line 70 of file dynamic_hierarchy.cpp.

◆ addOperands()

void Poincare::DynamicHierarchy::addOperands ( const Expression *const *  operands,
int  numberOfOperands 
)

Definition at line 44 of file dynamic_hierarchy.cpp.

◆ mergeOperands()

void Poincare::DynamicHierarchy::mergeOperands ( DynamicHierarchy d)

Definition at line 59 of file dynamic_hierarchy.cpp.

◆ numberOfOperands()

int Poincare::DynamicHierarchy::numberOfOperands ( ) const
inlineoverridevirtual

Implements Poincare::Expression.

Definition at line 22 of file dynamic_hierarchy.h.

◆ operands()

const Expression* const* Poincare::DynamicHierarchy::operands ( ) const
inlineoverridevirtual

Implements Poincare::Expression.

Definition at line 23 of file dynamic_hierarchy.h.

◆ operator=() [1/2]

DynamicHierarchy& Poincare::DynamicHierarchy::operator= ( const DynamicHierarchy other)
delete

◆ operator=() [2/2]

DynamicHierarchy& Poincare::DynamicHierarchy::operator= ( DynamicHierarchy &&  other)
delete

◆ removeOperand()

void Poincare::DynamicHierarchy::removeOperand ( const Expression e,
bool  deleteAfterRemoval = true 
)

Definition at line 87 of file dynamic_hierarchy.cpp.

◆ sortOperands()

void Poincare::DynamicHierarchy::sortOperands ( ExpressionOrder  order,
bool  canBeInterrupted 
)

Definition at line 99 of file dynamic_hierarchy.cpp.

◆ squashUnaryHierarchy()

Expression * Poincare::DynamicHierarchy::squashUnaryHierarchy ( )

Definition at line 120 of file dynamic_hierarchy.cpp.

Member Data Documentation

◆ m_numberOfOperands

int Poincare::DynamicHierarchy::m_numberOfOperands
protected

Definition at line 35 of file dynamic_hierarchy.h.

◆ m_operands

const Expression** Poincare::DynamicHierarchy::m_operands
protected

Definition at line 34 of file dynamic_hierarchy.h.


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