23#ifndef KEXIDB_EXPRESSION_H
24#define KEXIDB_EXPRESSION_H
27#include "queryschema.h"
35#define KexiDBExpr_Unknown 0
36#define KexiDBExpr_Unary 1
37#define KexiDBExpr_Arithm 2
38#define KexiDBExpr_Logical 3
39#define KexiDBExpr_Relational 4
40#define KexiDBExpr_SpecialBinary 5
41#define KexiDBExpr_Const 6
42#define KexiDBExpr_Variable 7
43#define KexiDBExpr_Function 8
44#define KexiDBExpr_Aggregation 9
45#define KexiDBExpr_TableList 10
46#define KexiDBExpr_QueryParameter 11
61class QueryParameterExpr;
62class QuerySchemaParameterValueListIterator;
69 typedef TQPtrList<BaseExpr> List;
70 typedef TQPtrListIterator<BaseExpr> ListIterator;
79 int token() const { return m_token; }
83 BaseExpr* parent() const { return m_par; }
85 virtual void setParent(BaseExpr *p) { m_par = p; }
87 virtual bool validate(ParseInfo& parseInfo);
98 inline void debug() { KexiDBDbg << debugString() << endl; }
100 virtual TQString debugString();
106 static TQString tokenToDebugString( int token);
109 virtual TQString tokenToString();
111 int exprClass() const { return m_cl; }
115 UnaryExpr* toUnary();
116 BinaryExpr* toBinary();
117 ConstExpr* toConst();
118 VariableExpr* toVariable();
119 FunctionExpr* toFunction();
120 QueryParameterExpr* toQueryParameter();
141 virtual TQString debugString();
143 virtual void getQueryParameters(QuerySchemaParameterList& params);
144 virtual bool validate(ParseInfo& parseInfo);
158 virtual TQString debugString();
160 virtual void getQueryParameters(QuerySchemaParameterList& params);
161 BaseExpr *arg() const { return m_arg; }
162 virtual bool validate(ParseInfo& parseInfo);
184 virtual TQString debugString();
186 virtual void getQueryParameters(QuerySchemaParameterList& params);
187 BaseExpr *left() const { return m_larg; }
188 BaseExpr *right() const { return m_rarg; }
189 virtual bool validate(ParseInfo& parseInfo);
190 virtual TQString tokenToString();
202 ConstExpr( int token, const TQVariant& val);
208 virtual TQString debugString();
210 virtual void getQueryParameters(QuerySchemaParameterList& params);
211 virtual bool validate(ParseInfo& parseInfo);
235 virtual TQString debugString();
237 virtual void getQueryParameters(QuerySchemaParameterList& params);
238 virtual bool validate(ParseInfo& parseInfo);
253 virtual TQString debugString();
255 virtual void getQueryParameters(QuerySchemaParameterList& params);
260 virtual bool validate(ParseInfo& parseInfo);
277 int tablePositionForField;
297 virtual TQString debugString();
299 virtual void getQueryParameters(QuerySchemaParameterList& params);
300 virtual bool validate(ParseInfo& parseInfo);
302 static TQValueList<TQCString> builtInAggregates();
303 static bool isBuiltInAggregate( const TQCString& fname);
A base class for all expressions.
virtual TQString toString(QuerySchemaParameterValueListIterator *params=0)=0
virtual void getQueryParameters(QuerySchemaParameterList ¶ms)=0
virtual BaseExpr * copy() const =0
TQString tokenToDebugString()
BaseExpr * m_par parent expression
A base class N-argument operation.
Query parameter used to getting user input of constant values.
An iteratof for a list of values of query schema parameters providing Allows to iterate over paramete...
An unary argument operation: + - NOT (or !) ~ "IS NULL" "IS NOT NULL".
Variables like fieldname or tablename.fieldname
TableSchema * tableForQueryAsterisk
High-level database connectivity library with database backend drivers.
KEXI_DB_EXPORT TQString exprClassName(int c) Custom tokens are not used in parser but used as extension in expression classes.
KEXI_DB_EXPORT void debug(const QuerySchemaParameterList &list) Shows debug information for list.
|