32 #pragma warning( disable:4251 )
59 QtxEvalExpr(
const bool,
const QString& = QString() );
62 QVariant calculate(
const QString& = QString() );
64 QString expression()
const;
65 void setExpression(
const QString& );
70 bool autoDeleteOperationSets()
const;
71 void setAutoDeleteOperationSets(
const bool );
74 QtxEvalSet* operationSet(
const QString& )
const;
76 void insertOperationSet(
QtxEvalSet*,
const int = -1 );
79 void intialize(
const bool,
const QString& );
93 QVariant calculate(
const QString& );
94 bool setExpression(
const QString& );
97 QtxEvalSet* operationSet(
const QString& )
const;
99 void insertOperationSet(
QtxEvalSet*,
const int = -1 );
101 bool autoDeleteOperationSets()
const;
102 void setAutoDeleteOperationSets(
const bool );
104 virtual void clearParameters();
105 virtual bool removeParameter(
const QString& name );
106 virtual QVariant parameter(
const QString& name )
const;
107 virtual bool hasParameter(
const QString& name )
const;
108 virtual void setParameter(
const QString& name,
const QVariant& value );
109 QStringList parameters()
const;
113 bool firstInvalid( QString& )
const;
114 void removeInvalids();
115 QString dump()
const;
144 QString dump(
const Postfix& )
const;
145 virtual bool prepare(
const QString&,
Postfix& );
146 virtual bool setOperationTypes(
Postfix& );
148 const QStringList&,
int f = -1,
int l = -1 );
150 virtual bool parse(
const QString& );
153 bool calculate(
const QString&, QVariant&, QVariant& );
155 static int search(
const QStringList&,
const QString&,
156 int offset,
int& matchLen,
int& listind );
157 static QString note(
const QString& str,
int pos,
int len );
158 static int globalBrackets(
const Postfix&,
int,
int );
161 void operationList( QStringList& )
const;
162 void bracketsList( QStringList&,
bool )
const;
163 bool createValue(
const QString&, QVariant& )
const;
164 int priority(
const QString&,
bool isBin )
const;
169 bool checkOperations()
const;
185 virtual QString
name()
const = 0;
191 virtual bool createValue(
const QString&, QVariant& )
const;
193 virtual int priority(
const QString&,
bool isBin )
const = 0;
207 virtual void operationList( QStringList& )
const;
208 virtual void bracketsList( QStringList&,
bool open )
const;
216 void addOperations(
const QStringList& );
229 virtual bool createValue(
const QString&, QVariant& )
const;
230 virtual int priority(
const QString&,
bool isBin )
const;
233 static QString Name();
234 virtual QString name()
const;
243 virtual bool createValue(
const QString&, QVariant& )
const;
244 virtual int priority(
const QString&,
bool isBin )
const;
247 static QString Name();
248 virtual QString name()
const;
251 int intValue(
const QVariant& v )
const;
260 virtual bool createValue(
const QString&, QVariant& )
const;
261 virtual int priority(
const QString&,
bool isBin )
const;
264 static QString Name();
265 virtual QString name()
const;
274 virtual bool createValue(
const QString&, QVariant& )
const;
275 virtual int priority(
const QString&,
bool isBin )
const;
278 static QString Name();
279 virtual QString name()
const;
291 virtual void bracketsList( QStringList&,
bool open )
const;
292 virtual int priority(
const QString&,
bool isBin )
const;
297 static void add(
ValueSet&,
const QVariant& );
299 static void remove(
ValueSet&,
const QVariant& );
302 static QString Name();
303 virtual QString name()
const;
312 static QString Name();
313 virtual QString name()
const;
315 virtual bool createValue(
const QString&, QVariant& )
const;
317 virtual void operationList( QStringList& )
const;
318 virtual void bracketsList( QStringList&,
bool open )
const;
319 virtual int priority(
const QString&,
bool isBin )
const;
#define QTX_EXPORT
Definition: Qtx.h:36
bool isValid(const QPolygon *thePoints, const QPoint &theCurrent)
Definition: SVTK_InteractorStyle.cxx:1746
String expression evaluator.
Definition: QtxEvalExpr.h:39
QtxEvalParser * myParser
Definition: QtxEvalExpr.h:83
QString myExpr
Definition: QtxEvalExpr.h:82
Error
Parsing error type.
Definition: QtxEvalExpr.h:43
@ OperandsNotMatch
Types of arguments are invalid for this operation.
Definition: QtxEvalExpr.h:45
@ StackUnderflow
There are no arguments in the stack for the operation.
Definition: QtxEvalExpr.h:53
@ InvalidToken
Invalid token (neither operation, nor parameter of value)
Definition: QtxEvalExpr.h:49
@ InvalidResult
Operation cannot find result (for example, division by zero)
Definition: QtxEvalExpr.h:46
@ CloseExpected
Closing bracket is expected.
Definition: QtxEvalExpr.h:50
@ ExcessClose
Extra closing bracket is found.
Definition: QtxEvalExpr.h:51
@ BracketsNotMatch
Opening and closing brackets are of different type, e.g. [)
Definition: QtxEvalExpr.h:52
@ OK
No errors found.
Definition: QtxEvalExpr.h:44
@ OperationsNull
Internal operations pointer of parser is null.
Definition: QtxEvalExpr.h:48
@ InvalidOperation
Unknown operation.
Definition: QtxEvalExpr.h:47
Expression parser.
Definition: QtxEvalExpr.h:87
QtxEvalExpr::Error myError
Definition: QtxEvalExpr.h:173
ParamMap myParams
Definition: QtxEvalExpr.h:174
QList< PostfixItem > Postfix
postfix representation
Definition: QtxEvalExpr.h:139
QList< QtxEvalSet * > SetList
list of operations
Definition: QtxEvalExpr.h:140
PostfixItemType
Types of postfix representation elements.
Definition: QtxEvalExpr.h:122
@ Value
Value (number, string, etc.)
Definition: QtxEvalExpr.h:123
@ Param
Parameter.
Definition: QtxEvalExpr.h:124
@ Close
Close bracket.
Definition: QtxEvalExpr.h:126
@ Post
Unary postfix operation.
Definition: QtxEvalExpr.h:128
@ Pre
Unary prefix operation.
Definition: QtxEvalExpr.h:127
@ Open
Open bracket.
Definition: QtxEvalExpr.h:125
Postfix myPostfix
Definition: QtxEvalExpr.h:175
bool myAutoDel
Definition: QtxEvalExpr.h:176
SetList mySets
Definition: QtxEvalExpr.h:172
QMap< QString, QVariant > ParamMap
parameter-to-value map
Definition: QtxEvalExpr.h:141
Provides set of arithmetical operations for the parser.
Definition: QtxEvalExpr.h:224
Generic class. Provides functionality for standard operations sets.
Definition: QtxEvalExpr.h:202
ListOfTypes myTypes
Definition: QtxEvalExpr.h:220
QStringList myOpers
Definition: QtxEvalExpr.h:219
QList< QVariant::Type > ListOfTypes
Definition: QtxEvalExpr.h:213
Provides different standard constants.
Definition: QtxEvalExpr.h:307
Provides set of logical operations for the parser.
Definition: QtxEvalExpr.h:238
Provides a set of more complex operations (mathematical functions) for the parser (sqrt,...
Definition: QtxEvalExpr.h:255
Provides set of operations with sequences for the parser.
Definition: QtxEvalExpr.h:283
QList< QVariant > ValueSet
Definition: QtxEvalExpr.h:285
Provides set of string operations for the parser.
Definition: QtxEvalExpr.h:269
Generic class for all the operations sets used in expressions.
Definition: QtxEvalExpr.h:180
virtual QString name() const =0
Get unique operations set name.
virtual QtxEvalExpr::Error isValid(const QString &, const QVariant::Type, const QVariant::Type) const =0
Check operation validity.
virtual void operationList(QStringList &) const =0
Get the list of possible operations.
virtual QtxEvalExpr::Error calculate(const QString &, QVariant &, QVariant &) const =0
Calculate the operation.
virtual void bracketsList(QStringList &, bool open) const =0
Get list of brackets.
virtual int priority(const QString &, bool isBin) const =0
Get the operation priority.
int Type
Definition: VTKViewer_Actor.h:62
Postfix representation element.
Definition: QtxEvalExpr.h:134
QVariant myValue
Definition: QtxEvalExpr.h:135
PostfixItemType myType
Definition: QtxEvalExpr.h:136