21#ifndef DATA_MANAGEMENT_DATA_IO_HPP
22#define DATA_MANAGEMENT_DATA_IO_HPP
26#if CLOCKWERK_ALLOW_STD_STRING
29#if CLOCKWERK_ALLOW_VECTOR
107#if CLOCKWERK_ALLOW_STD_STRING
108#if CLOCKWERK_ALLOW_VECTOR
109 int16 log(
void* logger);
114 int16 header(
void* logger);
146 if(strlen(val) < size) {
154 template <
typename Tn,
size_t N>
155 int16
_asString(
const std::array<Tn, N>& val,
char* retval,
size_t size) {
158#if CLOCKWERK_ALLOW_VECTOR
159 template <
typename Tn>
160 int16
_asString(
const std::vector<Tn>& val,
char* retval,
size_t size) {
163 bool dimensions_error =
false;
165 int num_chars_filled = 0;
166 while (val_idx < val.size() && !dimensions_error) {
168 int16 err =
numberToString(val[val_idx], retval + num_chars_filled, size - num_chars_filled);
169 if(err) {dimensions_error =
true;}
171 if(!dimensions_error) {
173 num_chars_filled =
strnlen(retval, size);
176 if(size - num_chars_filled > 1) {
177 if(val_idx < val.size() - 1) {
178 strcpy(retval + num_chars_filled,
",");
179 num_chars_filled += 1;
182 dimensions_error =
true;
193 template <u
int32 R, u
int32 C>
195 return val.
str(retval, size);
197#if CLOCKWERK_ALLOW_STD_STRING
198 int16
_asString(
const std::string val,
char* retval,
size_t size) {
199 if(val.size() < size) {
200 strcpy(retval, val.c_str());
210 int16
_fromString(
const char* setval, int8& retval);
211 int16
_fromString(
const char* setval, int16& retval);
212 int16
_fromString(
const char* setval, int32& retval);
213 int16
_fromString(
const char* setval, int64& retval);
214 int16
_fromString(
const char* setval, uint8& retval);
215 int16
_fromString(
const char* setval, uint16& retval);
216 int16
_fromString(
const char* setval, uint32& retval);
217 int16
_fromString(
const char* setval, uint64& retval);
218 int16
_fromString(
const char* setval,
float& retval);
219 int16
_fromString(
const char* setval,
double& retval);
220 int16
_fromString(
const char* setval,
void* retval);
223 template <u
int32 R, u
int32 C>
227 template <
typename Tn,
long unsigned int N>
228 int16
_fromString(
const char* setval, std::array<Tn, N>& retval) {
231#if CLOCKWERK_ALLOW_VECTOR
232 template <
typename Tn>
233 int16
_fromString(
const char* setval, std::vector<Tn>& retval) {
237#if CLOCKWERK_ALLOW_STD_STRING
238 int16
_fromString(
const char* setval, std::string& retval) {retval = std::string(setval);
return NO_ERROR;}
242 template <
typename T>
256 template <
typename T>
261 template <
typename T>
277 template <
typename T>
293 template <
typename T>
312 template <
typename T>
323 template <
typename T>
328#if CLOCKWERK_ALLOW_STD_STRING
329#if CLOCKWERK_ALLOW_VECTOR
330 template <
typename T>
332 return ((SimLogger*)logger)->writeToBuffer(*getRootDataPointer());
335 template <
typename T>
336 int16 DataIO<T>::header(
void* logger) {
337 return ((SimLogger*)logger)->writeHeaders(*getRootDataPointer());
342 template <
typename T>
344 return _asString(
operator()(), retval, size);
347 template <
typename T>
351 if(err) {
return err;}
357 template <
typename T>
361 if(err) {
return err;}
362 retval =
static_cast<bool>(tmp);
366 template <
typename T>
370 if(err) {
return err;}
371 retval =
static_cast<int8
>(tmp);
375 template <
typename T>
379 if(err) {
return err;}
380 retval =
static_cast<int16
>(tmp);
384 template <
typename T>
388 if(err) {
return err;}
389 retval =
static_cast<int32
>(tmp);
393 template <
typename T>
397 template <
typename T>
401 if(err) {
return err;}
402 retval =
static_cast<uint8
>(tmp);
406 template <
typename T>
410 if(err) {
return err;}
411 retval =
static_cast<uint16
>(tmp);
415 template <
typename T>
419 if(err) {
return err;}
420 retval =
static_cast<uint32
>(tmp);
424 template <
typename T>
426 uint64 tmp = atoi(setval);
432 template <
typename T>
437 template <
typename T>
442 template <
typename T>
444 int64 tmp = atoi(setval);
450 template <
typename T>
DataIOBase()
Default constructor.
Definition DataIOBase.h:66
void * writePtr()
Function to write value to mapped location – root data or map.
Definition DataIOBase.cpp:20
void * read() const
Function to read value from mapped location – root data or map.
Definition DataIOBase.cpp:32
DataIOBase * _data
Definition DataIOBase.h:147
std::enable_if< std::is_integral< T >::value >::type _typeID(T var)
Overloaded functions to identify type held by DataIO.
Definition DataIOBase.h:168
void resetMap()
Definition DataIOBase.h:89
bool _root
Definition DataIOBase.h:159
bool _writeAllowed
Definition DataIOBase.h:155
void * _data_ptr
Definition DataIOBase.h:151
dataio_types_e _type_id
Definition DataIOBase.h:164
Class for inter-object communication.
Definition DataIO.hpp:60
int16 _asString(const GraphTreeObject &val, char *retval, size_t size)
Definition DataIO.hpp:153
int16 _asString(uint32 val, char *retval, size_t size)
Definition DataIO.hpp:142
int16 _asString(int64 val, char *retval, size_t size)
Definition DataIO.hpp:139
int16 _fromString(const char *setval, Matrix< R, C > &retval)
Definition DataIO.hpp:224
int16 _asString(bool val, char *retval, size_t size)
Definition DataIO.hpp:135
void resetMap()
Definition DataIO.hpp:98
int16 _asString(int32 val, char *retval, size_t size)
Definition DataIO.hpp:138
int16 _asString(double val, char *retval, size_t size)
Definition DataIO.hpp:134
virtual int16 setValueFromString(const char *value) override
Set the value held by the DataIO object from a string.
Definition DataIO.hpp:348
DataIO()
Definition DataIO.hpp:313
int16 _asString(uint8 val, char *retval, size_t size)
Definition DataIO.hpp:140
int16 _asString(char *val, char *retval, size_t size)
Definition DataIO.hpp:145
const T & operator()() const
Overloaded operator to return value of DataIO object.
Definition DataIO.hpp:257
int16 _asString(const std::array< Tn, N > &val, char *retval, size_t size)
Definition DataIO.hpp:155
void mapToPointer(T *data_source)
Function to map the DataIO object to a pointer, rather than another of its kind.
Definition DataIO.hpp:80
int16 _asString(const Matrix< R, C > &val, char *retval, size_t size)
Definition DataIO.hpp:194
int dataSize() override
Return the size of the value held by the dataio object.
Definition DataIO.hpp:76
int16 _asString(void *val, char *retval, size_t size)
Definition DataIO.hpp:144
int16 operator()(const T &new_value)
Function to set the value of the DataIO object.
Definition DataIO.hpp:243
T * getRootDataPointer()
Function to return a handle to the root data held in THIS object.
Definition DataIO.hpp:324
DataIO(GraphTreeObject *data_parent, const char *data_name, T initial_value)
Constructor for the DataIO object.
Definition DataIO.hpp:262
int16 _fromString(const char *setval, char *retval)
Definition DataIO.hpp:221
int16 _fromString(const char *setval, std::array< Tn, N > &retval)
Definition DataIO.hpp:228
int16 _fromString(const char *setval, bool &retval)
Definition DataIO.hpp:358
int16 _asString(int16 val, char *retval, size_t size)
Definition DataIO.hpp:137
int16 _asString(uint16 val, char *retval, size_t size)
Definition DataIO.hpp:141
void * tmp_ptr
Temporary pointer to hold our stuff internally.
Definition DataIO.hpp:131
int16 _asString(int8 val, char *retval, size_t size)
Definition DataIO.hpp:136
~DataIO()
Definition DataIO.hpp:72
int16 _asString(uint64 val, char *retval, size_t size)
Definition DataIO.hpp:143
T _root_data
Definition DataIO.hpp:128
virtual int16 getValueAsString(char *retval, size_t size) override
Function to log data to a logger.
Definition DataIO.hpp:343
Base class for object organization.
Definition GraphTreeObject.h:98
virtual int16 fromStr(const char *val)
Set value of graphtreeobject from string.
Definition GraphTreeObject.h:163
bool _loggable
Variable to indicate whether the selected object is loggable. Set to false by default.
Definition GraphTreeObject.h:273
GraphTreeObject * parent()
Functions to get object's parent/children.
Definition GraphTreeObject.h:107
virtual int16 str(char *output, size_t size) const
Get object represented as string.
Definition GraphTreeObject.h:157
const char * name() const
Getter and setter for object name.
Definition GraphTreeObject.h:135
Matrix math implementation.
Definition Matrix.hpp:55
int16 str(char *output, size_t size) const
Function to dump information on matrix.
Definition Matrix.hpp:299
int16 fromStr(const char *val)
Set value of matrix from string in same format as str().
Definition Matrix.hpp:341
#define NO_ERROR
Error code in the case where matrix math executed successfully.
Definition clockwerkerrors.h:34
#define ERROR_NULLPTR
Error code in case of a null pointer.
Definition clockwerkerrors.h:60
#define ERROR_MAX_MSG_SIZE
Definition clockwerkerrors.h:100
#define ERROR_DIMENSIONS
Definition clockwerkerrors.h:41
#define ERROR_WRITE_PERMISSION
Error code for attempting to write to a signal/DataIO object without permission.
Definition clockwerkerrors.h:116
#define ERROR_BUFFER_NOT_IMPLEMENTED
Variable to raise an error if an appropriate buffer is not in place.
Definition clockwerkerrors.h:126
Definition CircularBuffer.hpp:28
@ UNDEFINED
Definition DataIOBase.h:49
@ POINTER
Definition DataIOBase.h:47
int16 numberFromString(const char *s, uint8 &num)
Overloaded - convert string to number.
Definition stringutils.cpp:318
int16 numberToString(int64 num, char *out, size_t out_size)
Definition stringutils.cpp:156
size_t strnlen(const char *s, size_t maxlen)
Function to calculate the string length with a length bound.
Definition stringutils.cpp:428
int16 setArrayFromString(const char *s, T *array, size_t array_size)
Converts a bracket-enclosed comma-separated string to a float array.
Definition stringutils.hpp:230