Ilwis-Objects  1.0
GIS and Remote Sensing framework for data access and processing
 All Classes Functions Enumerations Pages
commandhandler.h
1 #ifndef COMMANDHANDLER_H
2 #define COMMANDHANDLER_H
3 
4 #include <QObject>
5 #include <QVector>
6 #include <QVariant>
7 #include <map>
8 #include "Kernel_global.h"
9 #include "ilwis.h"
10 #include "symboltable.h"
11 
12 namespace Ilwis {
13 
14 class OperationExpression;
15 class OperationImplementation;
16 class Resource;
17 
18 typedef std::function<OperationImplementation *(quint64 metaid, const OperationExpression&)> CreateOperation;
19 
20 struct KERNELSHARED_EXPORT ExecutionContext {
21  void clear(bool resultsOnly=false);
22  ExecutionContext(bool threaded=false);
23  bool _silent;
24  bool _threaded;
25  qint16 _scope=1000;
26  std::vector<QString> _results;
27  std::map<QString, QString> _additionalInfo;
28  QString _masterGeoref;
29  QString _masterCsy;
30  std::ostream *_out;
31  void setOutput(SymbolTable &tbl, const QVariant &var, const QString &nme, quint64 tp, const Ilwis::Resource &resource, const QString &addInfo=sUNDEF);
32  void addOutput(SymbolTable &tbl, const QVariant &var, const QString &nme, quint64 tp, const Resource &resource, const QString &addInfo=sUNDEF);
33 
34 };
35 
36 class KERNELSHARED_EXPORT CommandHandler : public QObject
37 {
38  Q_OBJECT
39 public:
40  friend KERNELSHARED_EXPORT CommandHandler* commandhandler();
41 
42  explicit CommandHandler(QObject *parent);
43  ~CommandHandler();
44 
45  bool execute(const QString &command, ExecutionContext *ctx);
46  bool execute(const QString &command, ExecutionContext *ctx, SymbolTable& symTable);
47  void addOperation(quint64 id, CreateOperation op);
49  quint64 findOperationId(const OperationExpression &expr) const;
50 
51 private:
52  std::map<quint64, CreateOperation> _commands;
53  static CommandHandler *_commandHandler;
54 
55 
56 signals:
57 
58 public slots:
59 
60 };
61 
62 KERNELSHARED_EXPORT CommandHandler* commandhandler();
63 }
64 
65 #endif // COMMANDHANDLER_H