19 #include <shared_mutex>
20 #include <type_traits>
22 #include "../Core/owned_mutex.h"
30 type_void, type_int8, type_uint8, type_int16, type_uint16, type_int32, type_uint32, type_int64, type_uint64, type_float, type_double
33 static constexpr
inline const char * enumtostr(
const NativeType t)
37 case NativeType::type_void:
39 case NativeType::type_int8:
41 case NativeType::type_uint8:
43 case NativeType::type_int16:
45 case NativeType::type_uint16:
47 case NativeType::type_int32:
49 case NativeType::type_uint32:
51 case NativeType::type_int64:
53 case NativeType::type_uint64:
55 case NativeType::type_float:
57 case NativeType::type_double:
65 constexpr NativeType _getNativeType();
68 constexpr NativeType _getNativeType<int8_t>()
70 return NativeType::type_int8;
73 constexpr NativeType _getNativeType<uint8_t>()
75 return NativeType::type_uint8;
78 constexpr NativeType _getNativeType<int16_t>()
80 return NativeType::type_int16;
83 constexpr NativeType _getNativeType<uint16_t>()
85 return NativeType::type_uint16;
88 constexpr NativeType _getNativeType<int32_t>()
90 return NativeType::type_int32;
93 constexpr NativeType _getNativeType<uint32_t>()
95 return NativeType::type_uint32;
98 constexpr NativeType _getNativeType<int64_t>()
100 return NativeType::type_int64;
103 constexpr NativeType _getNativeType<uint64_t>()
105 return NativeType::type_uint64;
108 constexpr NativeType _getNativeType<float>()
110 return NativeType::type_float;
113 constexpr NativeType _getNativeType<double>()
115 return NativeType::type_double;
125 virtual NativeType getNativeType() = 0;
127 virtual uint8_t as_uint8_t() = 0;
128 virtual int8_t as_int8_t() = 0;
129 virtual uint16_t as_uint16_t() = 0;
130 virtual int16_t as_int16_t() = 0;
131 virtual uint32_t as_uint32_t() = 0;
132 virtual int32_t as_int32_t() = 0;
133 virtual uint64_t as_uint64_t() = 0;
134 virtual int64_t as_int64_t() = 0;
135 virtual float as_float() = 0;
136 virtual double as_double() = 0;
137 virtual std::string as_string() = 0;
142 template<
typename T>
friend class ValueImpl;
146 Value(
const std::string name);
152 void SetBuffer(
unsigned char *buffer);
154 virtual NativeType getNativeType() = 0;
156 virtual uint8_t as_uint8_t() = 0;
157 virtual int8_t as_int8_t() = 0;
158 virtual uint16_t as_uint16_t() = 0;
159 virtual int16_t as_int16_t() = 0;
160 virtual uint32_t as_uint32_t() = 0;
161 virtual int32_t as_int32_t() = 0;
162 virtual uint64_t as_uint64_t() = 0;
163 virtual int64_t as_int64_t() = 0;
164 virtual float as_float() = 0;
165 virtual double as_double() = 0;
166 virtual std::string as_string() = 0;
168 virtual uint8_t as_uint8_t(uint32_t index) = 0;
169 virtual int8_t as_int8_t(uint32_t index) = 0;
170 virtual uint16_t as_uint16_t(uint32_t index) = 0;
171 virtual int16_t as_int16_t(uint32_t index) = 0;
172 virtual uint32_t as_uint32_t(uint32_t index) = 0;
173 virtual int32_t as_int32_t(uint32_t index) = 0;
174 virtual uint64_t as_uint64_t(uint32_t index) = 0;
175 virtual int64_t as_int64_t(uint32_t index) = 0;
176 virtual float as_float(uint32_t index) = 0;
177 virtual double as_double(uint32_t index) = 0;
180 const std::string& getName();
182 virtual uint32_t getSize()
const = 0;
183 virtual size_t getElementSize()
const = 0;
184 virtual void* getBuffer() = 0;
186 virtual bool isValid()
const = 0;
187 virtual bool isArray()
const = 0;
189 virtual void copyTo(
Parameter* parm)
const = 0;
191 mutable std::shared_timed_mutex _rwMutex;
204 virtual void set(
const uint8_t val) = 0;
205 virtual void set(
const int8_t val) = 0;
206 virtual void set(
const uint16_t val) = 0;
207 virtual void set(
const int16_t val) = 0;
208 virtual void set(
const uint32_t val) = 0;
209 virtual void set(
const int32_t val) = 0;
210 virtual void set(
const uint64_t val) = 0;
211 virtual void set(
const int64_t val) = 0;
212 virtual void set(
const float val) = 0;
213 virtual void set(
const double val) = 0;
214 virtual void set(
const Value& val) = 0;
216 virtual void set(
const uint8_t * vals,
const uint32_t size) = 0;
217 virtual void set(
const int8_t * vals,
const uint32_t size) = 0;
218 virtual void set(
const uint16_t * vals,
const uint32_t size) = 0;
219 virtual void set(
const int16_t * vals,
const uint32_t size) = 0;
220 virtual void set(
const uint32_t * vals,
const uint32_t size) = 0;
221 virtual void set(
const int32_t * vals,
const uint32_t size) = 0;
222 virtual void set(
const uint64_t * vals,
const uint32_t size) = 0;
223 virtual void set(
const int64_t * vals,
const uint32_t size) = 0;
224 virtual void set(
const float * vals,
const uint32_t size) = 0;
225 virtual void set(
const double * vals,
const uint32_t size) = 0;
227 virtual void set(
const std::vector<uint8_t>& vals) = 0;
228 virtual void set(
const std::vector<int8_t>& vals) = 0;
229 virtual void set(
const std::vector<uint16_t>& vals) = 0;
230 virtual void set(
const std::vector<int16_t>& vals) = 0;
231 virtual void set(
const std::vector<uint32_t>& vals) = 0;
232 virtual void set(
const std::vector<int32_t>& vals) = 0;
233 virtual void set(
const std::vector<uint64_t>& vals) = 0;
234 virtual void set(
const std::vector<int64_t>& vals) = 0;
235 virtual void set(
const std::vector<float>& vals) = 0;
236 virtual void set(
const std::vector<double>& vals) = 0;
238 virtual void setActuatorMutex(
owned_mutex * actuatorMutex);
240 virtual Scalar& getMin() = 0;
241 virtual Scalar& getMax() = 0;
250 bool isModified()
const;
251 void resetModified();
271 virtual NativeType getNativeType()
override;
273 virtual uint8_t as_uint8_t()
override;
274 virtual int8_t as_int8_t()
override;
275 virtual uint16_t as_uint16_t()
override;
276 virtual int16_t as_int16_t()
override;
277 virtual uint32_t as_uint32_t()
override;
278 virtual int32_t as_int32_t()
override;
279 virtual uint64_t as_uint64_t()
override;
280 virtual int64_t as_int64_t()
override;
281 virtual float as_float()
override;
282 virtual double as_double()
override;
283 virtual std::string as_string()
override;
285 virtual void set(
const T val);
288 mutable std::shared_timed_mutex _rwMutex;
301 void operator delete(
void *)
310 virtual NativeType getNativeType()
override;
312 virtual uint8_t as_uint8_t()
override;
313 virtual int8_t as_int8_t()
override;
314 virtual uint16_t as_uint16_t()
override;
315 virtual int16_t as_int16_t()
override;
316 virtual uint32_t as_uint32_t()
override;
317 virtual int32_t as_int32_t()
override;
318 virtual uint64_t as_uint64_t()
override;
319 virtual int64_t as_int64_t()
override;
320 virtual float as_float()
override;
321 virtual double as_double()
override;
322 virtual std::string as_string()
override;
324 virtual uint8_t as_uint8_t(uint32_t index)
override;
325 virtual int8_t as_int8_t(uint32_t index)
override;
326 virtual uint16_t as_uint16_t(uint32_t index)
override;
327 virtual int16_t as_int16_t(uint32_t index)
override;
328 virtual uint32_t as_uint32_t(uint32_t index)
override;
329 virtual int32_t as_int32_t(uint32_t index)
override;
330 virtual uint64_t as_uint64_t(uint32_t index)
override;
331 virtual int64_t as_int64_t(uint32_t index)
override;
332 virtual float as_float(uint32_t index)
override;
333 virtual double as_double(uint32_t index)
override;
335 virtual void set(
const uint8_t val)
override;
336 virtual void set(
const int8_t val)
override;
337 virtual void set(
const uint16_t val)
override;
338 virtual void set(
const int16_t val)
override;
339 virtual void set(
const uint32_t val)
override;
340 virtual void set(
const int32_t val)
override;
341 virtual void set(
const uint64_t val)
override;
342 virtual void set(
const int64_t val)
override;
343 virtual void set(
const float val)
override;
344 virtual void set(
const double val)
override;
345 virtual void set(
const Value&)
override
349 virtual void set(
const uint8_t * vals,
const uint32_t size)
override;
350 virtual void set(
const int8_t * vals,
const uint32_t size)
override;
351 virtual void set(
const uint16_t * vals,
const uint32_t size)
override;
352 virtual void set(
const int16_t * vals,
const uint32_t size)
override;
353 virtual void set(
const uint32_t * vals,
const uint32_t size)
override;
354 virtual void set(
const int32_t * vals,
const uint32_t size)
override;
355 virtual void set(
const uint64_t * vals,
const uint32_t size)
override;
356 virtual void set(
const int64_t * vals,
const uint32_t size)
override;
357 virtual void set(
const float * vals,
const uint32_t size)
override;
358 virtual void set(
const double * vals,
const uint32_t size)
override;
360 virtual void set(
const std::vector<uint8_t>& vals)
override;
361 virtual void set(
const std::vector<int8_t>& vals)
override;
362 virtual void set(
const std::vector<uint16_t>& vals)
override;
363 virtual void set(
const std::vector<int16_t>& vals)
override;
364 virtual void set(
const std::vector<uint32_t>& vals)
override;
365 virtual void set(
const std::vector<int32_t>& vals)
override;
366 virtual void set(
const std::vector<uint64_t>& vals)
override;
367 virtual void set(
const std::vector<int64_t>& vals)
override;
368 virtual void set(
const std::vector<float>& vals)
override;
369 virtual void set(
const std::vector<double>& vals)
override;
371 virtual Scalar& getMin()
override;
372 virtual Scalar& getMax()
override;
374 virtual bool isValid()
const override;
375 virtual bool isArray()
const override;
377 virtual uint32_t getSize()
const override;
378 virtual size_t getElementSize()
const override;
379 virtual void* getBuffer()
override;
384 virtual void copyTo(
Parameter*)
const override
405 #include "../Core/ValueImpl.h"
406 #include "../Core/ArrayValue.h"
Definition: ValueImpl.h:21
Definition: ArrayValue.h:21
A mutex with the concept of 'ownership'.
Definition: owned_mutex.h:27