WarpTwin
Documentation for WarpTwin models and classes.
Loading...
Searching...
No Matches
clockwerk::DataIO< T > Class Template Reference

Class for inter-object communication. More...

#include <DataIO.hpp>

Inheritance diagram for clockwerk::DataIO< T >:

Public Member Functions

 DataIO (GraphTreeObject *data_parent, const char *data_name, T initial_value)
 Constructor for the DataIO object.
 DataIO (GraphTreeObject *data_parent, const char *data_name)
 DataIO (GraphTreeObject *data_parent)
 DataIO ()
 ~DataIO ()
int dataSize () override
 Return the size of the value held by the dataio object.
void mapToPointer (T *data_source)
 Function to map the DataIO object to a pointer, rather than another of its kind.
int16 operator() (const T &new_value)
 Function to set the value of the DataIO object.
T * getRootDataPointer ()
 Function to return a handle to the root data held in THIS object.
void resetMap ()
const T & operator() () const
 Overloaded operator to return value of DataIO object.
virtual int16 getValueAsString (char *retval, size_t size) override
 Function to log data to a logger.
virtual int16 setValueFromString (const char *value) override
 Set the value held by the DataIO object from a string.
Public Member Functions inherited from clockwerk::DataIOBase
 DataIOBase ()
 Default constructor.
 ~DataIOBase ()
virtual int16 syncExternal ()
 Synchronize DataIO to some external source – Socket, shared memory, etc.
void allowWrite ()
 Functions to manipulate write permissions on DataIO object.
void blockWrite ()
bool writeAllowed ()
void mapTo (DataIOBase &data_source)
 Function to map DataIO object to new upstream data source.
void resetMap ()
DataIOBasedataSource ()
 Access the target to which the DataIO is mapped.
void * writePtr ()
 Function to write value to mapped location – root data or map.
void * read () const
 Function to read value from mapped location – root data or map.
uint8 dataType ()
 Function to return the type of data held by the DataIO.
Public Member Functions inherited from clockwerk::GraphTreeObject
 GraphTreeObject (const char *gt_nme="", GraphTreeObject **storage_array=nullptr, uint32 storage_size=0)
 Name-based constructor for GraphTreeObject which will have no children by default.
virtual ~GraphTreeObject ()
 Destructor.
GraphTreeObjectparent ()
 Functions to get object's parent/children.
GraphTreeObject ** children ()
GraphTreeObjectchildAtIndex (uint8 i) const
int16 parent (GraphTreeObject *new_parent)
 Function to assign the node's parent via pointer.
int16 parent (GraphTreeObject &new_parent)
 Function to assign the node's parent via reference.
uint8 nChildren () const
 Getters for number of children and descendants.
uint16 nDescendants () const
uint8 capacity () const
const char * name () const
 Getter and setter for object name.
int16 name (const char *new_name)
uint8 rank ()
 Getter for the object rank.
int8 type ()
 Function to indicate type – -1 by default unless implemented downstream.
bool loggable ()
 Getter for object logability flag – note no setter because should only be set by this or a derived class in its definition.
GraphTreeObjectgetRootDataPointer ()
 Get the pointer to the highest object in the graph tree.
virtual int16 str (char *output, size_t size) const
 Get object represented as string.
virtual int16 fromStr (const char *val)
 Set value of graphtreeobject from string.

Protected Member Functions

int16 _asString (double val, char *retval, size_t size)
int16 _asString (bool val, char *retval, size_t size)
int16 _asString (int8 val, char *retval, size_t size)
int16 _asString (int16 val, char *retval, size_t size)
int16 _asString (int32 val, char *retval, size_t size)
int16 _asString (int64 val, char *retval, size_t size)
int16 _asString (uint8 val, char *retval, size_t size)
int16 _asString (uint16 val, char *retval, size_t size)
int16 _asString (uint32 val, char *retval, size_t size)
int16 _asString (uint64 val, char *retval, size_t size)
int16 _asString (void *val, char *retval, size_t size)
int16 _asString (char *val, char *retval, size_t size)
int16 _asString (const GraphTreeObject &val, char *retval, size_t size)
template<typename Tn, size_t N>
int16 _asString (const std::array< Tn, N > &val, char *retval, size_t size)
template<uint32 R, uint32 C>
int16 _asString (const Matrix< R, C > &val, char *retval, size_t size)
int16 _fromString (const char *setval, bool &retval)
int16 _fromString (const char *setval, int8 &retval)
int16 _fromString (const char *setval, int16 &retval)
int16 _fromString (const char *setval, int32 &retval)
int16 _fromString (const char *setval, int64 &retval)
int16 _fromString (const char *setval, uint8 &retval)
int16 _fromString (const char *setval, uint16 &retval)
int16 _fromString (const char *setval, uint32 &retval)
int16 _fromString (const char *setval, uint64 &retval)
int16 _fromString (const char *setval, float &retval)
int16 _fromString (const char *setval, double &retval)
int16 _fromString (const char *setval, void *retval)
int16 _fromString (const char *setval, char *retval)
int16 _fromString (const char *setval, GraphTreeObject &retval)
template<uint32 R, uint32 C>
int16 _fromString (const char *setval, Matrix< R, C > &retval)
template<typename Tn, long unsigned int N>
int16 _fromString (const char *setval, std::array< Tn, N > &retval)
Protected Member Functions inherited from clockwerk::DataIOBase
template<typename T>
std::enable_if< std::is_integral< T >::value >::type _typeID (T var)
 Overloaded functions to identify type held by DataIO.
template<typename T>
std::enable_if< std::is_floating_point< T >::value >::type _typeID (T var)
template<typename T, long unsigned int N>
void _typeID (std::array< T, N > var)
template<uint32 R, uint32 C>
void _typeID (Matrix< R, C > var)
void _typeID (const GraphTreeObject &var)
void _typeID (const Time &var)
void _typeID (void *var)
void _typeID (int8 var)
void _typeID (int16 var)
void _typeID (int32 var)
void _typeID (int64 var)
void _typeID (uint8 var)
void _typeID (uint16 var)
void _typeID (uint32 var)
void _typeID (uint64 var)
void _typeID (char *var)
Protected Member Functions inherited from clockwerk::GraphTreeObject
int16 _setStorage (GraphTreeObject **storage_array, uint8 storage_size)
 Getter for object's string address.
void _recalculateDescendants ()
 Function to recursively re-calculate the number of descendants of a given node on the tree.
void _recalculateRank ()
 Function to recursively re-calculate the rank of a given node on the tree.
int16 _addChild (GraphTreeObject *child)
 Function to decompose a string into a series of substrings via indexing.
int16 _removeChild (GraphTreeObject *child)
 Function to remove a child from the graph node's children.

Protected Attributes

_root_data
void * tmp_ptr
 Temporary pointer to hold our stuff internally.
Protected Attributes inherited from clockwerk::DataIOBase
DataIOBase_data
void * _data_ptr = nullptr
bool _writeAllowed
bool _root
dataio_types_e _type_id = UNDEFINED
Protected Attributes inherited from clockwerk::GraphTreeObject
GraphTreeObject_parent = nullptr
GraphTreeObject ** _children_ptr = nullptr
uint32 _max_num_children = 0
uint16 _num_descendants = 0
char _name [MAXIMUM_NAME_CHARS] = ""
 String name for object.
uint8 _num_children = 0
 Number of direct children of the tree (not including the tree itself).
uint8 _rank = 0
int8 _graph_tree_type = BASE_GRAPH_TREE
 Variable to store graph tree object type.
bool _loggable = false
 Variable to indicate whether the selected object is loggable. Set to false by default.
uint32 _index = 0
 Index pointing to the next write location for the graph tree children.

Detailed Description

template<typename T>
class clockwerk::DataIO< T >

Class for inter-object communication.

The data IO object is a flexible input/output object for interfacing between models, tasks, events, and so on. It is templated to work with nearly any data type, provided that type can be passed and returned via function.

DataIO operates by abstracting data using a pointer. It holds an internal value of type T, and a pointer to the data source to use. By default, that data source is itself, but it may point16 to another DataIO object if commanded to do so via the mapTo function. In that case, DataIO will recursively call DataIO objects until it finds the root object, then return the value held by the root object.

Note
The DataIO object, while a child of GraphTreeObject, cannot have any children as no space is allocated for them. Therefore it must lie at the end of the tree.

Constructor & Destructor Documentation

◆ DataIO() [1/4]

template<typename T>
clockwerk::DataIO< T >::DataIO ( GraphTreeObject * data_parent,
const char * data_name,
T initial_value )

Constructor for the DataIO object.

Parameters
data_parentPointer to parent graph tree object
data_nameString name for the DataIO object
initial_valueThe initial value of the data IO object
Note
Constructor is overloaded – object can be created from many configurations but it is on the developer to ensure it is handled correctly

◆ DataIO() [2/4]

template<typename T>
clockwerk::DataIO< T >::DataIO ( GraphTreeObject * data_parent,
const char * data_name )

◆ DataIO() [3/4]

template<typename T>
clockwerk::DataIO< T >::DataIO ( GraphTreeObject * data_parent)

◆ DataIO() [4/4]

template<typename T>
clockwerk::DataIO< T >::DataIO ( )

◆ ~DataIO()

template<typename T>
clockwerk::DataIO< T >::~DataIO ( )
inline

Member Function Documentation

◆ _asString() [1/15]

template<typename T>
int16 clockwerk::DataIO< T >::_asString ( bool val,
char * retval,
size_t size )
inlineprotected

◆ _asString() [2/15]

template<typename T>
int16 clockwerk::DataIO< T >::_asString ( char * val,
char * retval,
size_t size )
inlineprotected

◆ _asString() [3/15]

template<typename T>
int16 clockwerk::DataIO< T >::_asString ( const GraphTreeObject & val,
char * retval,
size_t size )
inlineprotected

◆ _asString() [4/15]

template<typename T>
template<uint32 R, uint32 C>
int16 clockwerk::DataIO< T >::_asString ( const Matrix< R, C > & val,
char * retval,
size_t size )
inlineprotected

◆ _asString() [5/15]

template<typename T>
template<typename Tn, size_t N>
int16 clockwerk::DataIO< T >::_asString ( const std::array< Tn, N > & val,
char * retval,
size_t size )
inlineprotected

◆ _asString() [6/15]

template<typename T>
int16 clockwerk::DataIO< T >::_asString ( double val,
char * retval,
size_t size )
inlineprotected

◆ _asString() [7/15]

template<typename T>
int16 clockwerk::DataIO< T >::_asString ( int16 val,
char * retval,
size_t size )
inlineprotected

◆ _asString() [8/15]

template<typename T>
int16 clockwerk::DataIO< T >::_asString ( int32 val,
char * retval,
size_t size )
inlineprotected

◆ _asString() [9/15]

template<typename T>
int16 clockwerk::DataIO< T >::_asString ( int64 val,
char * retval,
size_t size )
inlineprotected

◆ _asString() [10/15]

template<typename T>
int16 clockwerk::DataIO< T >::_asString ( int8 val,
char * retval,
size_t size )
inlineprotected

◆ _asString() [11/15]

template<typename T>
int16 clockwerk::DataIO< T >::_asString ( uint16 val,
char * retval,
size_t size )
inlineprotected

◆ _asString() [12/15]

template<typename T>
int16 clockwerk::DataIO< T >::_asString ( uint32 val,
char * retval,
size_t size )
inlineprotected

◆ _asString() [13/15]

template<typename T>
int16 clockwerk::DataIO< T >::_asString ( uint64 val,
char * retval,
size_t size )
inlineprotected

◆ _asString() [14/15]

template<typename T>
int16 clockwerk::DataIO< T >::_asString ( uint8 val,
char * retval,
size_t size )
inlineprotected

◆ _asString() [15/15]

template<typename T>
int16 clockwerk::DataIO< T >::_asString ( void * val,
char * retval,
size_t size )
inlineprotected

◆ _fromString() [1/16]

template<typename T>
int16 clockwerk::DataIO< T >::_fromString ( const char * setval,
bool & retval )
protected

◆ _fromString() [2/16]

template<typename T>
int16 clockwerk::DataIO< T >::_fromString ( const char * setval,
char * retval )
inlineprotected

◆ _fromString() [3/16]

template<typename T>
int16 clockwerk::DataIO< T >::_fromString ( const char * setval,
double & retval )
protected

◆ _fromString() [4/16]

template<typename T>
int16 clockwerk::DataIO< T >::_fromString ( const char * setval,
float & retval )
protected

◆ _fromString() [5/16]

template<typename T>
int16 clockwerk::DataIO< T >::_fromString ( const char * setval,
GraphTreeObject & retval )
protected

◆ _fromString() [6/16]

template<typename T>
int16 clockwerk::DataIO< T >::_fromString ( const char * setval,
int16 & retval )
protected

◆ _fromString() [7/16]

template<typename T>
int16 clockwerk::DataIO< T >::_fromString ( const char * setval,
int32 & retval )
protected

◆ _fromString() [8/16]

template<typename T>
int16 clockwerk::DataIO< T >::_fromString ( const char * setval,
int64 & retval )
protected

◆ _fromString() [9/16]

template<typename T>
int16 clockwerk::DataIO< T >::_fromString ( const char * setval,
int8 & retval )
protected

◆ _fromString() [10/16]

template<typename T>
template<uint32 R, uint32 C>
int16 clockwerk::DataIO< T >::_fromString ( const char * setval,
Matrix< R, C > & retval )
inlineprotected

◆ _fromString() [11/16]

template<typename T>
template<typename Tn, long unsigned int N>
int16 clockwerk::DataIO< T >::_fromString ( const char * setval,
std::array< Tn, N > & retval )
inlineprotected

◆ _fromString() [12/16]

template<typename T>
int16 clockwerk::DataIO< T >::_fromString ( const char * setval,
uint16 & retval )
protected

◆ _fromString() [13/16]

template<typename T>
int16 clockwerk::DataIO< T >::_fromString ( const char * setval,
uint32 & retval )
protected

◆ _fromString() [14/16]

template<typename T>
int16 clockwerk::DataIO< T >::_fromString ( const char * setval,
uint64 & retval )
protected

◆ _fromString() [15/16]

template<typename T>
int16 clockwerk::DataIO< T >::_fromString ( const char * setval,
uint8 & retval )
protected

◆ _fromString() [16/16]

template<typename T>
int16 clockwerk::DataIO< T >::_fromString ( const char * setval,
void * retval )
protected

◆ dataSize()

template<typename T>
int clockwerk::DataIO< T >::dataSize ( )
inlineoverridevirtual

Return the size of the value held by the dataio object.

Returns
The size of the object

Reimplemented from clockwerk::DataIOBase.

◆ getRootDataPointer()

template<typename T>
T * clockwerk::DataIO< T >::getRootDataPointer ( )

Function to return a handle to the root data held in THIS object.

Returns
A pointer to root data if write is allowed, nullptr if not
Note
DANGER! This method bypasses a lot of safeties in the signal system and breaks traceability on pointer. Using this could allow a write to the wrong location or read from the wrong location. It should be not be used in models and should be reserved exclusively for built-in functions.

◆ getValueAsString()

template<typename T>
int16 clockwerk::DataIO< T >::getValueAsString ( char * retval,
size_t size )
overridevirtual

Function to log data to a logger.

Parameters
loggerPointer to logger
Returns
Error code corresponding to success/failure

Return the value held by the DataIO object as a string

Returns
Value held by DataIO as a string

Reimplemented from clockwerk::DataIOBase.

◆ mapToPointer()

template<typename T>
void clockwerk::DataIO< T >::mapToPointer ( T * data_source)
inline

Function to map the DataIO object to a pointer, rather than another of its kind.

Parameters
data_sourceThe pointer to which the DataIO will be mapped

◆ operator()() [1/2]

template<typename T>
const T & clockwerk::DataIO< T >::operator() ( ) const

Overloaded operator to return value of DataIO object.

Returns
Value pointed to by data – could be internal or external

◆ operator()() [2/2]

template<typename T>
int16 clockwerk::DataIO< T >::operator() ( const T & new_value)

Function to set the value of the DataIO object.

Parameters
new_valueValue to set the dataIO object to
Returns
Error code according to success/failure

◆ resetMap()

template<typename T>
void clockwerk::DataIO< T >::resetMap ( )
inline
Parameters
Functionto break data mapping and reset object to its own internal data
Note
Data will be reset to the value previously held by this signal prior to mapping
Resets write permission to true

◆ setValueFromString()

template<typename T>
int16 clockwerk::DataIO< T >::setValueFromString ( const char * value)
overridevirtual

Set the value held by the DataIO object from a string.

Parameters
valueThe value to set
Returns
Error code corresponding to success/failure

Reimplemented from clockwerk::DataIOBase.

Member Data Documentation

◆ _root_data

template<typename T>
T clockwerk::DataIO< T >::_root_data
protected

Default data location pointed to by the DataIO object. Note that root data can change if DataIO is mapped to another dataIO object

◆ tmp_ptr

template<typename T>
void* clockwerk::DataIO< T >::tmp_ptr
protected

Temporary pointer to hold our stuff internally.


The documentation for this class was generated from the following file:
  • /Users/mickey/Documents/Projects/warptwin/warpos/clockwerk/src/architecture/DataIO.hpp