24 #ifndef _cmnDataFunctionsArray_h
25 #define _cmnDataFunctionsArray_h
33 template <
class _elementType,
size_t _size>
45 for (
size_t index = 0; index < _size; ++index, ++dataPtr, ++sourcePtr) {
53 std::stringstream stringStream;
55 for (
size_t index = 0; index < _size; ++index, ++ptr) {
59 stringStream << cmnData<_elementType>::HumanReadable(*ptr);
62 return stringStream.str();
66 std::ostream & outputStream,
67 const char delimiter)
throw (std::runtime_error)
70 for (
size_t index = 0; index < _size; ++index, ++ptr) {
72 outputStream << delimiter;
79 std::istream & inputStream,
80 const char delimiter)
throw (std::runtime_error)
83 for (
size_t index = 0; index < _size; ++index, ++ptr) {
93 const std::string & userDescription =
"v")
95 std::string prefix = (userDescription ==
"") ?
"v[" : (userDescription +
"[");
96 std::stringstream indexSuffix;
97 std::stringstream description;
99 for (
size_t index = 0; index < _size; ++index, ++ptr) {
101 description << delimiter;
104 indexSuffix.str(std::string());
105 indexSuffix << index <<
"]";
106 description << cmnData<_elementType>::SerializeDescription(*ptr, delimiter, prefix + indexSuffix.str());
108 return description.str();
112 throw (std::runtime_error)
115 for (
size_t index = 0; index < _size; ++index, ++ptr) {
121 std::istream & inputStream,
124 throw (std::runtime_error)
127 for (
size_t index = 0; index < _size; ++index, ++ptr) {
144 for (
size_t index = 0; index < _size; ++index, ++ptr) {
151 const std::string & userDescription =
"v")
152 throw (std::out_of_range)
154 size_t elementIndex, inElementIndex;
155 std::stringstream suffix;
157 if (cmnDataVectorScalarFindInVectorIndex<const _elementType *, _elementType>(data, _size, scalarNumber,
158 index, elementIndex, inElementIndex)) {
159 suffix <<
"[" << index <<
"]";
162 cmnThrow(std::out_of_range(
"cmnDataScalarDescription: C array index out of range"));
167 throw (std::out_of_range)
169 size_t elementIndex, inElementIndex;
171 if (cmnDataVectorScalarFindInVectorIndex<const _elementType *, _elementType>(data, _size, scalarNumber,
172 index, elementIndex, inElementIndex)) {
175 cmnThrow(std::out_of_range(
"cmnDataScalar: C array index out of range"));
181 #endif // _cmnDataFunctionsArray_h
static void SerializeBinary(const_pointer data, std::ostream &outputStream)
Definition: cmnDataFunctionsArray.h:111
static std::string ScalarDescription(const_pointer data, const size_t index, const std::string &userDescription="v")
Definition: cmnDataFunctionsArray.h:150
static void DeSerializeBinary(pointer data, std::istream &inputStream, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat)
Definition: cmnDataFunctionsArray.h:120
static void Copy(pointer data, const_pointer source)
Definition: cmnDataFunctionsArray.h:41
static std::string HumanReadable(const_pointer data)
Definition: cmnDataFunctionsArray.h:50
_elementType * pointer
Definition: cmnDataFunctionsArray.h:38
static double Scalar(const_pointer data, const size_t index)
Definition: cmnDataFunctionsArray.h:166
static void SerializeBinary(const DataType &data, std::ostream &outputStream)
static void DeSerializeText(pointer data, std::istream &inputStream, const char delimiter)
Definition: cmnDataFunctionsArray.h:78
static void SerializeText(const DataType &data, std::ostream &outputStream, const char delimiter= ',')
Macros to export the symbols of cisstCommon (in a Dll).
static bool ScalarNumberIsFixed(const DataType &data)
static size_t ScalarNumber(const DataType &data)
static double Scalar(const DataType &data, const size_t index)
Definition: cmnDataFunctions.h:53
static std::string ScalarDescription(const DataType &data, const size_t index, const std::string &userDescription="")
Definition: cmnDataFunctions.h:56
#define cmnThrow(a)
Definition: MinimalCmn.h:4
static void SerializeText(const_pointer data, std::ostream &outputStream, const char delimiter)
Definition: cmnDataFunctionsArray.h:65
static std::string SerializeDescription(const_pointer data, const char delimiter, const std::string &userDescription="v")
Definition: cmnDataFunctionsArray.h:91
static void DeSerializeText(DataType &data, std::istream &inputStream, const char delimiter= ',')
static void DeSerializeBinary(DataType &data, std::istream &inputStream, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat)
static size_t ScalarNumber(const_pointer data)
Definition: cmnDataFunctionsArray.h:137
const _elementType * const_pointer
Definition: cmnDataFunctionsArray.h:39
static bool ScalarNumberIsFixed(const_pointer data)
Definition: cmnDataFunctionsArray.h:132
static void Copy(DataType &data, const DataType &source)
void CISST_EXPORT cmnDataDeSerializeTextDelimiter(std::istream &inputStream, const char delimiter, const char *className)