Class implementing an infix expression. More...
#include <ExpressionParser.h>
Public Types | |
enum Operator { NONE, ADD, SUB, MUL, DIV, MOD, POW, EQ, NEQ, LT, GT, LTE, GTE, UNIT, NEG, POS } | |
![]() | |
typedef std::vector< Component * > ComponentList | |
Public Member Functions | |
Expression * getLeft () const | |
Operator getOperator () const | |
Expression * getRight () const | |
virtual bool isTouched () const override | |
Determine whether the expression is touched or not, i.e relies on properties that are touched. More... | |
OperatorExpression (const App::DocumentObject *_owner=0, Expression *_left=0, Operator _op=NONE, Expression *_right=0) | |
virtual int priority () const override | |
Return the operators priority. More... | |
virtual Expression * simplify () const override | |
Simplify the expression. More... | |
virtual ~OperatorExpression () | |
![]() | |
const Base::Quantity & getQuantity () const | |
double getScaler () const | |
const Base::Unit & getUnit () const | |
const std::string getUnitString () const | |
double getValue () const | |
void setQuantity (const Base::Quantity &_quantity) | |
void setUnit (const Base::Quantity &_quantity) | |
Set unit information. More... | |
UnitExpression (const App::DocumentObject *_owner=0, const Base::Quantity &_quantity=Base::Quantity(), const std::string &_unitStr=std::string()) | |
~UnitExpression () | |
![]() | |
virtual void addComponent (Component *component) | |
bool adjustLinks (const std::set< App::DocumentObject * > &inList) | |
Expression * copy () const | |
Expression * eval () const | |
Expression (const App::DocumentObject *_owner) | |
void getDepObjects (std::set< App::DocumentObject * > &, std::vector< std::string > *labels=0) const | |
std::set< App::DocumentObject * > getDepObjects (std::vector< std::string > *labels=0) const | |
ExpressionDeps getDeps () const | |
void getDeps (ExpressionDeps &deps) const | |
std::set< App::ObjectIdentifier > getIdentifiers () const | |
void getIdentifiers (std::set< App::ObjectIdentifier > &) const | |
App::DocumentObject * getOwner () const | |
Py::Object getPyValue () const | |
boost::any getValueAsAny () const | |
bool hasComponent () const | |
ExpressionPtr importSubNames (const std::map< std::string, std::string > &nameMap) const | |
bool isSame (const Expression &other) const | |
ExpressionPtr replaceObject (const App::DocumentObject *parent, App::DocumentObject *oldObj, App::DocumentObject *newObj) const | |
std::string toString (bool persistent=false, bool checkPriority=false, int indent=0) const | |
void toString (std::ostream &os, bool persistent=false, bool checkPriority=false, int indent=0) const | |
ExpressionPtr updateLabelReference (App::DocumentObject *obj, const std::string &ref, const char *newLabel) const | |
void visit (ExpressionVisitor &v) | |
virtual ~Expression () | |
![]() | |
BaseClass () | |
Construction. More... | |
virtual PyObject * getPyObject (void) | |
This method returns the Python wrapper for a C++ object. More... | |
virtual Type getTypeId (void) const | |
bool isDerivedFrom (const Type type) const | |
virtual void setPyObject (PyObject *) | |
virtual ~BaseClass () | |
Destruction. More... | |
Protected Member Functions | |
virtual bool isCommutative () const | |
virtual bool isLeftAssociative () const | |
virtual bool isRightAssociative () const | |
Protected Attributes | |
Expression * left | |
Left operand. More... | |
Operator op | |
Operator working on left and right. More... | |
Expression * right | |
Right operand. More... | |
![]() | |
PyObject * cache = 0 | |
![]() | |
ComponentList components | |
App::DocumentObject * owner | |
The document object used to access unqualified variables (i.e local scope) More... | |
Additional Inherited Members | |
![]() | |
static Component * createComponent (const std::string &n) | |
static Component * createComponent (Expression *e1, Expression *e2=0, Expression *e3=0, bool isRange=false) | |
static Expression * parse (const App::DocumentObject *owner, const std::string &buffer) | |
![]() | |
static void * create (void) | |
static Type getClassTypeId (void) | |
static void init (void) | |
![]() | |
std::string comment | |
friend ExpressionVisitor | |
![]() | |
static void initSubclass (Base::Type &toInit, const char *ClassName, const char *ParentName, Type::instantiationMethod method=nullptr) | |
Detailed Description
Class implementing an infix expression.
Member Enumeration Documentation
◆ Operator
Constructor & Destructor Documentation
◆ OperatorExpression()
OperatorExpression::OperatorExpression | ( | const App::DocumentObject * | _owner = 0 , |
Expression * | _left = 0 , |
||
Operator | _op = NONE , |
||
Expression * | _right = 0 |
||
) |
◆ ~OperatorExpression()
|
virtual |
Member Function Documentation
◆ getLeft()
Expression* App::OperatorExpression::getLeft | ( | ) | const |
Referenced by App::ExpressionParser::parseUnit().
◆ getOperator()
Operator App::OperatorExpression::getOperator | ( | ) | const |
Referenced by App::ExpressionParser::parseUnit().
◆ getRight()
Expression* App::OperatorExpression::getRight | ( | ) | const |
Referenced by App::ExpressionParser::parseUnit().
◆ isCommutative()
|
protectedvirtual |
◆ isLeftAssociative()
|
protectedvirtual |
◆ isRightAssociative()
|
protectedvirtual |
◆ isTouched()
|
overridevirtual |
Determine whether the expression is touched or not, i.e relies on properties that are touched.
Reimplemented from App::Expression.
◆ priority()
|
overridevirtual |
Return the operators priority.
This is used to add parentheses where needed when creating a string representation of the expression.
- Returns
- The operator's priority.
Reimplemented from App::Expression.
◆ simplify()
|
overridevirtual |
Simplify the expression.
For OperatorExpressions, we return a NumberExpression if both the left and right side can be simplified to NumberExpressions. In this case we can calculate the final value of the expression.
- Returns
- Simplified expression.
Reimplemented from App::UnitExpression.
References App::Expression::eval(), App::Expression::owner, and App::Expression::simplify().
Member Data Documentation
◆ left
|
protected |
Left operand.
◆ op
|
protected |
Operator working on left and right.
◆ right
|
protected |
Right operand.
The documentation for this class was generated from the following files:
- src/App/ExpressionParser.h
- src/App/Expression.cpp