26 #ifndef PDCOM_VARIABLE_H 27 #define PDCOM_VARIABLE_H 84 const uint64_t*
const* time,
85 const char*
const* data);
105 virtual void cancel()
const = 0;
126 template <
typename T>
142 void print(std::ostream& os,
char delimiter)
const;
149 const char*
const *
const data;
158 const std::string&
alias,
189 virtual std::string
name()
const = 0;
192 virtual std::string
path()
const = 0;
195 const std::vector<size_t>
dim;
225 template <
typename T>
227 size_t offset,
size_t nelem)
const;
236 bool read(std::istream& is)
const;
243 virtual bool poll(
const Subscription*)
const {
return true; }
246 virtual bool setValue(
const void*,
size_t ,
247 size_t ,
size_t )
const {
252 void copyValue(
char* dst,
const void* src,
253 size_t UserTypeIdx,
size_t n)
const;
256 void printValue(std::ostream& os,
const char* buf,
char delim)
const;
262 typedef void (
Variable::*GetValueFunc_T)
263 (
void* dst,
size_t nelem,
const char* src,
size_t offset)
const;
264 const GetValueFunc_T*
const getValueFunc;
266 typedef void (
Variable::*CopyValueFunc_T)
267 (
char* dst,
const void* src,
size_t nelem)
const;
268 const CopyValueFunc_T*
const copyValueFunc;
270 typedef void (
Variable::*PrintValueFunc_T)
271 (std::ostream& os,
const char* data,
char delim)
const;
272 const PrintValueFunc_T printValueFunc;
274 template <
class CType>
276 std::ostream& os,
const char* buf,
char delim)
const;
277 static const PrintValueFunc_T printValueFuncList[];
279 template <
class CType>
280 bool readFcn(std::istream& is)
const;
281 typedef bool (
Variable::*ReadValueFunc_T)
282 (std::istream& is)
const;
283 const ReadValueFunc_T readValueFunc;
284 static const ReadValueFunc_T readValueFuncList[];
286 template <
class CType,
class UserType>
287 void copyValue(
char* dst,
const void* src,
size_t nelem)
const;
288 template <
class CType,
class UserType>
289 void getValue(
void* dst,
size_t nelem,
290 const char* src,
size_t offset)
const;
291 template <
class CType>
292 struct DataConverter {
293 static const GetValueFunc_T getValueFunc[];
294 static const CopyValueFunc_T copyValueFunc[];
296 static const GetValueFunc_T*
const getValueFuncList[];
297 static const CopyValueFunc_T*
const copyValueFuncList[];
310 #endif //PDCOM_VARIABLE_H Type
Variable's type.
Definition: Variable.h:47
bool setValue(const T *val, size_t offset, size_t nelem) const
Set a parameter's value.
Subscription(Process *process, int id, const Variable *v, int decimation, const uint64_t *const *time, const char *const *data)
Constructor.
Variable(Type type, double sampleTime, size_t task, bool writeable, const std::string &alias, size_t ndim, const size_t *dims)
Constructor.
const bool writeable
Can be written to, for parameters.
Definition: Variable.h:184
bool setStringValue(const std::string &value) const
Set a parameter's value.
const size_t bytes
memory required to store everything
Definition: Variable.h:197
std::istream & operator>>(std::istream &is, const PdCom::Variable &variable)
Stream operator to write a value to a Variable.
const size_t nelem
Number of elements.
Definition: Variable.h:194
const int id
id supplied during Process::subscribe()
Definition: Variable.h:88
size_t isVector() const
Test for a vector.
bool poll() const
Poll a subscription.
virtual std::string path() const =0
complete path, including name()
const size_t typeWidth
sizeof(datatype)
Definition: Variable.h:196
const size_t task
Task id of signals.
Definition: Variable.h:180
Process variable.
Definition: Variable.h:43
const double sampleTime
sample time of variable; 0 for parameters
Definition: Variable.h:178
Process *const process
pointer to process
Definition: Variable.h:87
const uint64_t *const *const time_ns
Time of value in nanoseconds since epoch.
Definition: Variable.h:98
Base class for PdCom protocol handler.
Definition: Process.h:93
const Type type
Data type.
Definition: Variable.h:164
Subscription class.
Definition: Variable.h:77
std::string getStringValue(char delimiter=',') const
Get the entire value as a linear string.
void print(std::ostream &os, char delimiter) const
Write the value to std::ostream.
const char *const ctype
c-type string One of:
Definition: Variable.h:165
bool isScalar() const
Scalar test.
const int decimation
Subscription decimation.
Definition: Variable.h:90
std::ostream & operator<<(std::ostream &os, const PdCom::Variable::Subscription &subscription)
Stream operator to dump a Subscription to std::ostream.
const std::string alias
Optional alias.
Definition: Variable.h:186
bool read(std::istream &is) const
Set a parameter's value.
virtual std::string name() const =0
Short name without leading path.
const std::vector< size_t > dim
Dimension array.
Definition: Variable.h:195
virtual void cancel() const =0
Cancel subscription.
const Variable *const variable
Actual variable.
Definition: Variable.h:89
void getValue(T *val, size_t index, size_t nelem) const
Retrieve subscriptions value in any data type.