Ilwis-Objects  1.0
GIS and Remote Sensing framework for data access and processing
 All Classes Functions Enumerations Pages
operationmetadata.h
1 #ifndef OPERATIONMETADATA_H
2 #define OPERATIONMETADATA_H
3 
4 #include <QString>
5 #include <memory>
6 #include "Kernel_global.h"
7 
8 namespace Ilwis {
9 
10 class KERNELSHARED_EXPORT OperationResource : public Resource{
11 public:
12  OperationResource(const QUrl& url, const QString& nmspace="ilwis");
13  void setLongName(const QString& longname);
14  void setSyntax(const QString& syntax);
15  void setInParameterCount(const std::vector<quint32>& counts);
16  void setOutParameterCount(const std::vector<quint32>& counts);
17  void addInParameter(quint32 order, IlwisTypes type, const QString& name=sUNDEF, const QString& description=sUNDEF);
18  void addOutParameter(quint32 order, IlwisTypes type, const QString& name=sUNDEF, const QString& description=sUNDEF);
19  void setKeywords(const QString &words);
20 };
21 
22 class KERNELSHARED_EXPORT OperationParameter : public Identity
23 {
24 public:
25  friend class OperationMetaData;
26  enum ParameterNature{ptINPUT, ptOUTPUT};
27  IlwisTypes type() const;
28  OperationParameter::ParameterNature nature() const;
29  quint16 index() const;
30  QString domainName() const;
31 
32 private:
33  OperationParameter(quint16 index, ParameterNature kind, const QString& name, IlwisTypes type, const QString& domain=sUNDEF );
34 
35  quint16 _index;
36  ParameterNature _nature;
37  IlwisTypes _type;
38  QString _domainName;
39 };
40 
41 class KERNELSHARED_EXPORT OperationMetaData : public IlwisObject
42 {
43 public:
45  OperationMetaData(const Resource& resource);
47  IlwisTypes ilwisType() const;
48 
49  std::unique_ptr<OperationParameter>& newParameter(OperationParameter::ParameterNature kind, const QString& name, IlwisTypes type, const QString& domain=sUNDEF);
50  QString npace() const;
51 
52 private:
53  std::vector<std::unique_ptr<OperationParameter>> _inputParameters;
54  std::vector<std::unique_ptr<OperationParameter>> _outputParameters;
55  QString _namespace;
56  QString _longName;
57  QStringList _keywords;
58 
59  void parmfromResource(const Resource &resource, int n, const QString &base);
60 
61 };
62 
63 typedef std::unique_ptr<OperationParameter> UPOperationParameter;
65 }
66 
67 #endif // OPERATIONMETADATA_H