stromx  0.8.0
Variant.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_VARIANT_H
18 #define STROMX_RUNTIME_VARIANT_H
19 
20 #include "stromx/runtime/VariantHandle.h"
21 
22 #ifdef __GNUG__
23  #include <tr1/cstdint>
24 #else
25  #include <cstdint>
26 #endif
27 
28 namespace stromx
29 {
30  namespace runtime
31  {
33  class STROMX_RUNTIME_API Variant : public VariantInterface
34  {
35  template <class T>
36  friend T toNativeType(const Data & data);
37 
38  public:
40  const static VariantHandle NONE;
41 
43  const static VariantHandle DATA;
44 
46  const static VariantHandle TRIGGER;
47 
49  const static VariantHandle PRIMITIVE;
50 
52  const static VariantHandle BOOL;
53 
55  const static VariantHandle TRIBOOL;
56 
58  const static VariantHandle ENUM;
59 
61  const static VariantHandle INT;
62 
64  const static VariantHandle UINT;
65 
67  const static VariantHandle INT_8;
68 
70  const static VariantHandle UINT_8;
71 
73  const static VariantHandle INT_16;
74 
76  const static VariantHandle UINT_16;
77 
79  const static VariantHandle INT_32;
80 
82  const static VariantHandle UINT_32;
83 
85  const static VariantHandle INT_64;
86 
88  const static VariantHandle UINT_64;
89 
91  const static VariantHandle FLOAT;
92 
94  const static VariantHandle FLOAT_32;
95 
97  const static VariantHandle FLOAT_64;
98 
100  const static VariantHandle STRING;
101 
103  const static VariantHandle LIST;
104 
106  const static VariantHandle MATRIX;
107 
113  const static VariantHandle INT_MATRIX;
114 
117 
120 
123 
126 
129 
132 
135 
138 
141 
144 
146  const static VariantHandle IMAGE;
147 
149  const static VariantHandle MONO_IMAGE;
150 
155  const static VariantHandle RGB_IMAGE;
156 
159 
162 
165 
168 
171 
174 
177 
180 
183 
186 
188  const static VariantHandle FILE;
189 
192 
194  const static VariantHandle TEXT_FILE;
195 
196  unsigned int id() const { return m_id; }
197 
198  const std::string & package() const { return m_package; }
199 
200  virtual const std::string title() const;
201 
202  virtual bool isVariant(const VariantInterface& variant) const;
203 
204  protected:
205  Variant(const unsigned int id)
206  : m_id(id),
207  m_package(STROMX_RUNTIME_PACKAGE_NAME)
208  {}
209 
210  enum Types
211  {
212  NONE_ID,
213  DATA_ID,
214  TRIGGER_ID,
215  PRIMITIVE_ID,
216  BOOL_ID,
217  ENUM_ID,
218  INT_ID,
219  UINT_ID,
220  INT_8_ID,
221  UINT_8_ID,
222  INT_16_ID,
223  UINT_16_ID,
224  INT_32_ID,
225  UINT_32_ID,
226  INT_64_ID,
227  UINT_64_ID,
228  FLOAT_ID,
229  FLOAT_32_ID,
230  FLOAT_64_ID,
231  STRING_ID,
232  LIST_ID,
233  MATRIX_ID,
234  INT_MATRIX_ID,
235  UINT_MATRIX_ID,
236  INT_8_MATRIX_ID,
237  UINT_8_MATRIX_ID,
238  INT_16_MATRIX_ID,
239  UINT_16_MATRIX_ID,
240  INT_32_MATRIX_ID,
241  UINT_32_MATRIX_ID,
242  FLOAT_MATRIX_ID,
243  FLOAT_32_MATRIX_ID,
244  FLOAT_64_MATRIX_ID,
245  IMAGE_ID,
246  MONO_IMAGE_ID,
247  RGB_IMAGE_ID,
248  MONO_8_IMAGE_ID,
249  RGB_24_IMAGE_ID,
250  BGR_24_IMAGE_ID,
251  BAYERBG_8_IMAGE_ID,
252  BAYERGB_8_IMAGE_ID,
253  BAYERBG_16_IMAGE_ID,
254  BAYERGB_16_IMAGE_ID,
255  MONO_16_IMAGE_ID,
256  RGB_48_IMAGE_ID,
257  BGR_48_IMAGE_ID,
258  FILE_ID,
259  BINARY_FILE_ID,
260  TEXT_FILE_ID,
261  TRIBOOL_ID,
262  NUM_VARIANTS
263  };
264 
265  private:
266  unsigned int m_id;
267  std::string m_package;
268  };
269  }
270 }
271 
272 #endif // STROMX_RUNTIME_VARIANT_H
static const VariantHandle FLOAT_64_MATRIX
Definition: Variant.h:143
static const VariantHandle FILE
Definition: Variant.h:188
static const VariantHandle BGR_24_IMAGE
Definition: Variant.h:164
Abstract data object.
Definition: Data.h:53
Definition: VariantHandle.h:34
static const VariantHandle MONO_8_IMAGE
Definition: Variant.h:158
static const VariantHandle FLOAT_32_MATRIX
Definition: Variant.h:140
static const VariantHandle BAYERGB_16_IMAGE
Definition: Variant.h:176
Abstract description of a data variant.
Definition: VariantInterface.h:40
static const VariantHandle RGB_24_IMAGE
Definition: Variant.h:161
static const VariantHandle INT
Definition: Variant.h:61
static const VariantHandle NONE
Definition: Variant.h:40
static const VariantHandle MATRIX
Definition: Variant.h:106
static const VariantHandle UINT_32_MATRIX
Definition: Variant.h:134
static const VariantHandle TEXT_FILE
Definition: Variant.h:194
static const VariantHandle INT_32_MATRIX
Definition: Variant.h:131
static const VariantHandle MONO_IMAGE
Definition: Variant.h:149
static const VariantHandle RGB_48_IMAGE
Definition: Variant.h:182
static const VariantHandle INT_16_MATRIX
Definition: Variant.h:125
static const VariantHandle BAYERGB_8_IMAGE
Definition: Variant.h:170
static const VariantHandle FLOAT
Definition: Variant.h:91
static const VariantHandle MONO_16_IMAGE
Definition: Variant.h:179
static const VariantHandle UINT_32
Definition: Variant.h:82
static const VariantHandle BAYERBG_8_IMAGE
Definition: Variant.h:167
static const VariantHandle INT_64
Definition: Variant.h:85
static const VariantHandle INT_8
Definition: Variant.h:67
The stromx class library.
Definition: AdjustRgbChannels.cpp:29
static const VariantHandle BINARY_FILE
Definition: Variant.h:191
static const VariantHandle UINT_8
Definition: Variant.h:70
static const VariantHandle UINT_16
Definition: Variant.h:76
static const VariantHandle FLOAT_MATRIX
Definition: Variant.h:137
static const VariantHandle RGB_IMAGE
Definition: Variant.h:155
static const VariantHandle IMAGE
Definition: Variant.h:146
VariantInterface implementation of the runtime package.
Definition: Variant.h:33
static const VariantHandle PRIMITIVE
Definition: Variant.h:49
const std::string & package() const
Definition: Variant.h:198
static const VariantHandle ENUM
Definition: Variant.h:58
unsigned int id() const
Definition: Variant.h:196
static const VariantHandle UINT_64
Definition: Variant.h:88
static const VariantHandle UINT_MATRIX
Definition: Variant.h:116
static const VariantHandle FLOAT_64
Definition: Variant.h:97
static const VariantHandle LIST
Definition: Variant.h:103
static const VariantHandle UINT
Definition: Variant.h:64
static const VariantHandle INT_MATRIX
Definition: Variant.h:113
static const VariantHandle DATA
Definition: Variant.h:43
static const VariantHandle UINT_8_MATRIX
Definition: Variant.h:122
static const VariantHandle BOOL
Definition: Variant.h:52
static const VariantHandle FLOAT_32
Definition: Variant.h:94
static const VariantHandle TRIBOOL
Definition: Variant.h:55
static const VariantHandle INT_32
Definition: Variant.h:79
static const VariantHandle UINT_16_MATRIX
Definition: Variant.h:128
static const VariantHandle STRING
Definition: Variant.h:100
static const VariantHandle INT_16
Definition: Variant.h:73
static const VariantHandle INT_8_MATRIX
Definition: Variant.h:119
static const VariantHandle TRIGGER
Definition: Variant.h:46
static const VariantHandle BGR_48_IMAGE
Definition: Variant.h:185
static const VariantHandle BAYERBG_16_IMAGE
Definition: Variant.h:173