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 } |
Public Types inherited from App::Expression | |
typedef std::vector< Component * > | ComponentList |
enum | DepOption { DepNormal , DepHidden , DepAll } |
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=nullptr, Expression *_left=nullptr, Operator _op=NONE, Expression *_right=nullptr) | |
virtual int | priority () const override |
Return the operators priority. More... | |
virtual Expression * | simplify () const override |
Simplify the expression. More... | |
virtual | ~OperatorExpression () |
Public Member Functions inherited from App::UnitExpression | |
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... | |
virtual Expression * | simplify () const override |
Simplify the expression. More... | |
UnitExpression (const App::DocumentObject *_owner=nullptr, const Base::Quantity &_quantity=Base::Quantity(), const std::string &_unitStr=std::string()) | |
~UnitExpression () | |
Public Member Functions inherited from App::Expression | |
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::map< App::DocumentObject *, bool > &, std::vector< std::string > *labels=nullptr) const |
std::map< App::DocumentObject *, bool > | getDepObjects (std::vector< std::string > *labels=nullptr) const |
void | getDeps (ExpressionDeps &deps, int option=DepNormal) const |
ExpressionDeps | getDeps (int option=DepNormal) const |
std::map< App::ObjectIdentifier, bool > | getIdentifiers () const |
void | getIdentifiers (std::map< App::ObjectIdentifier, bool > &) 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, bool checkComment=true) const |
virtual bool | isTouched () const |
virtual int | priority () const |
ExpressionPtr | replaceObject (const App::DocumentObject *parent, App::DocumentObject *oldObj, App::DocumentObject *newObj) const |
virtual Expression * | simplify () const =0 |
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 () |
Public Member Functions inherited from Base::BaseClass | |
BaseClass () | |
Construction. More... | |
BaseClass (const BaseClass &)=default | |
virtual PyObject * | getPyObject () |
This method returns the Python wrapper for a C++ object. More... | |
virtual Type | getTypeId () const |
bool | isDerivedFrom (const Type type) const |
BaseClass & | operator= (const BaseClass &)=default |
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... | |
Protected Attributes inherited from App::UnitExpression | |
PyObject * | cache = nullptr |
Protected Attributes inherited from App::Expression | |
ComponentList | components |
App::DocumentObject * | owner |
The document object used to access unqualified variables (i.e local scope) More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from App::Expression | |
static Component * | createComponent (const std::string &n) |
static Component * | createComponent (Expression *e1, Expression *e2=nullptr, Expression *e3=nullptr, bool isRange=false) |
static Expression * | parse (const App::DocumentObject *owner, const std::string &buffer) |
Static Public Member Functions inherited from Base::BaseClass | |
static void * | create () |
static Type | getClassTypeId () |
static void | init () |
Public Attributes inherited from App::Expression | |
std::string | comment |
friend | ExpressionVisitor |
Static Protected Member Functions inherited from Base::BaseClass | |
static void | initSubclass (Base::Type &toInit, const char *ClassName, const char *ParentName, Type::instantiationMethod method=nullptr) |
Class implementing an infix expression.
OperatorExpression::OperatorExpression | ( | const App::DocumentObject * | _owner = nullptr , |
Expression * | _left = nullptr , |
||
Operator | _op = NONE , |
||
Expression * | _right = nullptr |
||
) |
|
virtual |
Expression * App::OperatorExpression::getLeft | ( | ) | const |
Referenced by App::ExpressionParser::parseUnit().
Operator App::OperatorExpression::getOperator | ( | ) | const |
Referenced by App::ExpressionParser::parseUnit().
Expression * App::OperatorExpression::getRight | ( | ) | const |
Referenced by App::ExpressionParser::parseUnit().
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
|
overridevirtual |
Determine whether the expression is touched or not, i.e relies on properties that are touched.
Reimplemented from App::Expression.
|
overridevirtual |
Return the operators priority.
This is used to add parentheses where needed when creating a string representation of the expression.
Reimplemented from App::Expression.
|
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.
Reimplemented from App::UnitExpression.
References App::Expression::eval(), App::Expression::owner, App::Expression::simplify(), and draftgeoutils.general::v1().
|
protected |
Left operand.
|
protected |
Operator working on left and right.
|
protected |
Right operand.