stromx  0.8.0
Description.h
1 /*
2  * Copyright 2015 Matthias Fuchs
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #ifndef STROMX_RUNTIME_DESCRIPTIONBASE_H
18 #define STROMX_RUNTIME_DESCRIPTIONBASE_H
19 
20 #include <vector>
21 
22 #include <string>
23 #include "stromx/runtime/Config.h"
24 #include "stromx/runtime/VariantHandle.h"
25 #include "stromx/runtime/Enum.h"
26 #include "stromx/runtime/None.h"
27 
28 namespace stromx
29 {
30  namespace runtime
31  {
34  {
35  public:
37  explicit EnumDescription(const Enum & value)
38  : m_value(value)
39  {}
40 
42  EnumDescription(const Enum & value, const std::string & title)
43  : m_value(value),
44  m_title(title)
45  {}
46 
48  const Enum value() const { return m_value; }
49 
51  const std::string & title() const { return m_title; }
52 
53  private:
54  Enum m_value;
55  std::string m_title;
56  };
57 
69  class STROMX_RUNTIME_API Description
70  {
71  public:
73  enum Type
74  {
82  OUTPUT
83  };
84 
87  {
121  INTERNAL
122  };
123 
125  Description(const unsigned int id, const VariantHandle& variant);
126 
127  virtual ~Description() {}
128 
130  const std::string & title() const { return m_title; }
131 
133  unsigned int id() const { return m_id; }
134 
136  const VariantHandle & variant() const { return m_variant; }
137 
139  void setTitle(const std::string & title) { m_title = title; }
140 
142  const VariantHandle & visualization() const { return m_visualization; }
143 
145  void setVisualization(const VariantHandle & visualization);
146 
148  virtual const Data& max() const { return NONE; }
149 
151  virtual const Data& min() const { return NONE; }
152 
157  virtual const Data& step() const { return NONE; }
158 
160  virtual const std::vector<EnumDescription> & descriptions() const { return NO_DESCRIPTIONS; }
161 
166  virtual unsigned int rows() const { return 0; }
167 
172  virtual unsigned int cols() const { return 0; }
173 
181  virtual Type originalType() const { return NO_TYPE; }
182 
189  virtual Type currentType() const { return NO_TYPE; }
190 
191  private:
192  static const std::vector<EnumDescription> NO_DESCRIPTIONS;
193  static const None NONE;
194 
195  std::string m_title;
196  unsigned int m_id;
197  VariantHandle m_variant;
198  VariantHandle m_visualization;
199  };
200  }
201 }
202 
203 #endif // STROMX_RUNTIME_DESCRIPTIONBASE_H
Abstract description of an ID to variant map.
Definition: Description.h:69
virtual Type currentType() const
Definition: Description.h:189
EnumDescription(const Enum &value, const std::string &title)
Definition: Description.h:42
Abstract data object.
Definition: Data.h:53
Definition: VariantHandle.h:34
Definition: Description.h:107
Definition: Description.h:78
Description of an enumeration value.
Definition: Description.h:33
virtual const Data & min() const
Definition: Description.h:151
Type
Definition: Description.h:73
Definition: Description.h:80
virtual Type originalType() const
Definition: Description.h:181
const VariantHandle & variant() const
Definition: Description.h:136
UpdateBehavior
Definition: Description.h:86
The stromx class library.
Definition: AdjustRgbChannels.cpp:29
const std::string & title() const
Definition: Description.h:130
virtual const Data & step() const
Definition: Description.h:157
virtual const Data & max() const
Definition: Description.h:148
Definition: Description.h:115
const Enum value() const
Definition: Description.h:48
Undefined and empty data object.
Definition: None.h:27
virtual const std::vector< EnumDescription > & descriptions() const
Definition: Description.h:160
Definition: Description.h:76
virtual unsigned int rows() const
Definition: Description.h:166
EnumDescription(const Enum &value)
Definition: Description.h:37
unsigned int id() const
Definition: Description.h:133
const VariantHandle & visualization() const
Definition: Description.h:142
void setTitle(const std::string &title)
Definition: Description.h:139
const std::string & title() const
Definition: Description.h:51
virtual unsigned int cols() const
Definition: Description.h:172
Value of an enumeration.
Definition: Enum.h:27
Definition: Description.h:99