Abstract base class for expression evaluators.
Classes | |
class | Context |
Contextual information for evaluating the expression. More... | |
Public Member Functions | |
Constructors, destructor, assignment. | |
cExpression () | |
cExpression (const cExpression &other)=default | |
virtual | ~cExpression () |
cExpression & | operator= (const cExpression &other) |
virtual cExpression * | dup () const =0 |
virtual std::string | str () const |
Evaluator methods. | |
virtual cValue | evaluate (Context *context) const =0 |
virtual bool | boolValue (Context *context) const =0 |
virtual intval_t | intValue (Context *context, const char *expectedUnit=nullptr) const =0 |
virtual double | doubleValue (Context *context, const char *expectedUnit=nullptr) const =0 |
virtual std::string | stringValue (Context *context) const =0 |
virtual cXMLElement * | xmlValue (Context *context) const =0 |
virtual cValue | evaluate (cComponent *contextComponent=nullptr) const |
virtual bool | boolValue (cComponent *contextComponent=nullptr) const |
virtual intval_t | intValue (cComponent *contextComponent=nullptr, const char *expectedUnit=nullptr) const |
virtual double | doubleValue (cComponent *contextComponent=nullptr, const char *expectedUnit=nullptr) const |
virtual std::string | stringValue (cComponent *contextComponent=nullptr) const |
virtual cXMLElement * | xmlValue (cComponent *contextComponent=nullptr) const |
Miscellaneous utility functions. | |
virtual void | parse (const char *text)=0 |
virtual int | compare (const cExpression *other) const =0 |
virtual bool | isAConstant () const |
virtual std::string | getSourceLocation () const =0 |
|
inlineexplicit |
Constructor.
|
default |
Copy constructor.
|
inlinevirtual |
Destructor.
|
inline |
Assignment operator.
|
pure virtual |
Duplication.
Implemented in cOwnedDynamicExpression, and cDynamicExpression.
|
inlinevirtual |
Converts the expression to string.
Reimplemented in cOwnedDynamicExpression, and cDynamicExpression.
Evaluate the expression and return the result in a cValue. The context parameter cannot be nullptr.
Implemented in cDynamicExpression.
|
pure virtual |
Evaluate the expression and convert the result to bool if possible; throw an error if conversion from that type is not supported.
Implemented in cDynamicExpression.
|
pure virtual |
Evaluate the expression and convert the result to intval_t if possible; throw an error if conversion from that type is not supported. Also throws an error if the actual unit does not match the expected unit.
Implemented in cDynamicExpression.
|
pure virtual |
Evaluate the expression and convert the result to double if possible; throw an error if conversion from that type is not supported. Also throws an error if the actual unit does not match the expected unit.
Implemented in cDynamicExpression.
|
pure virtual |
Evaluate the expression and convert the result to string if possible; throw an error if conversion from that type is not supported.
Implemented in cDynamicExpression.
|
pure virtual |
Evaluate the expression and convert the result to an XML tree if possible; throw an error if conversion from that type is not supported.
Implemented in cDynamicExpression.
|
virtual |
|
virtual |
Evaluate the expression and convert the result to bool if possible; throw an error if conversion from that type is not supported. This method creates a Context from contextComponent, and delegates to boolValue(Context*).
|
virtual |
Evaluate the expression and convert the result to intval_t if possible; throw an error if conversion from that type is not supported. Also throws an error if the actual unit does not match the expected unit. This method creates a Context from contextComponent, and delegates to intValue(Context*,const char*).
|
virtual |
Evaluate the expression and convert the result to double if possible; throw an error if conversion from that type is not supported. Also throws an error if the actual unit does not match the expected unit. This method creates a Context from contextComponent, and delegates to doubleValue(Context*,const char*).
|
virtual |
Evaluate the expression and convert the result to string if possible; throw an error if conversion from that type is not supported. This method creates a Context from contextComponent, and delegates to stringValue(Context*).
|
virtual |
Evaluate the expression and convert the result to an XML tree if possible; throw an error if conversion from that type is not supported. This method creates a Context from contextComponent, and delegates to xmlValue(Context*).
|
pure virtual |
Interprets the string as an expression, and store it. If the text cannot be parsed, an exception is thrown, which can be caught as std::runtime_error& if necessary. An exception is also thrown if the particular cExpression subclass does not support parsing.
Implemented in cDynamicExpression.
|
pure virtual |
Compares two expressions. Makes it possible to use cExpression as (part of) a key in std::map or std::set.
Implemented in cDynamicExpression.
|
inlinevirtual |
Returns true if the expression is just a literal (or equivalent to one, like "2+2"). This can be used for optimization.
Reimplemented in cDynamicExpression.
|
pure virtual |
Returns the file:line info where this expression was parsed from. Returns empty string if such info is not available.
Implemented in cDynamicExpression.