Ilwis-Objects  1.0
GIS and Remote Sensing framework for data access and processing
 All Classes Functions Enumerations Pages
operationExpression.h
1 #ifndef EXPRESSION_H
2 #define EXPRESSION_H
3 
4 #include <QList>
5 #include "Kernel_global.h"
6 
7 namespace Ilwis {
8  class SymbolTable;
9 
10  enum OperationType{otUnknown=0,otFunction=1, otCommand=2, otSelection=4};
11 
12 class KERNELSHARED_EXPORT Parameter : public Identity{
13 public:
14 
15  Parameter();
16  Parameter(const QString& name, const QString& value, IlwisTypes ,const SymbolTable& );
17  Parameter(const QString& value, IlwisTypes, const SymbolTable &);
18  virtual ~Parameter();
19  QString value() const;
20  QString domain() const;
21  void domain(const QString& dom);
22  IlwisTypes valuetype() const;
23  bool isEqual(const Parameter& parm) const;
24  bool isValid() const;
25  static IlwisTypes determineType(const QString &value, const SymbolTable& symtab) ;
26 
27 private:
28  QString _key;
29  QString _value;
30  IlwisTypes _type;
31  QString _domain;
32 };
33 
38 class KERNELSHARED_EXPORT OperationExpression
39 {
40 public:
55  OperationExpression(const QString& expr, const SymbolTable& symtab=SymbolTable());
62  Parameter parm(int index, bool in=true) const;
71  Parameter parm(const QString key, bool toLower=true, bool in=true) const;
77  QString name(bool toLower=true) const;
83  int parameterCount(bool in=true) const;
90  bool isValid() const;
91  QUrl metaUrl(bool simple=true) const;
92  void setExpression(const QString &e, const SymbolTable &symtab);
93  bool matchesParameterCount(const QString &match, bool in=true) const;
94  QString toString() const;
95 private:
96  QString _name;
97  QList<Parameter> _inParameters;
98  QList<Parameter> _outParameters;
99  OperationType _type;
100  QString _selection;
101 
102  void parseFunctionExpression(const QString &txt, const SymbolTable &symtab);
103  void parseCommandExpression(const QString &expr, const SymbolTable &symtab);
104  void parseSelectors(const QString& selectors, const SymbolTable &symtab);
105  void specialExpressions(const QString &e, const SymbolTable &symtab);
106 };
107 
108 
109 
110 }
111 
112 #endif // EXPRESSION_H