21#ifndef _cmnDataFunctionsArray_h
22#define _cmnDataFunctionsArray_h
30template <
class _elementType,
size_t _size>
42 for (
size_t index = 0; index < _size; ++index, ++dataPtr, ++sourcePtr) {
50 std::stringstream stringStream;
52 for (
size_t index = 0; index < _size; ++index, ++ptr) {
56 stringStream << cmnData<_elementType>::HumanReadable(*ptr);
59 return stringStream.str();
63 std::ostream & outputStream,
64 const char delimiter)
CISST_THROW(std::runtime_error)
67 for (
size_t index = 0; index < _size; ++index, ++ptr) {
69 outputStream << delimiter;
76 std::istream & inputStream,
77 const char delimiter)
CISST_THROW(std::runtime_error)
80 for (
size_t index = 0; index < _size; ++index, ++ptr) {
82 cmnDataDeSerializeTextDelimiter(inputStream, delimiter,
"C Array");
90 const std::string & userDescription =
"v")
92 std::string prefix = (userDescription ==
"") ?
"v[" : (userDescription +
"[");
93 std::stringstream indexSuffix;
94 std::stringstream description;
96 for (
size_t index = 0; index < _size; ++index, ++ptr) {
98 description << delimiter;
101 indexSuffix.str(std::string());
102 indexSuffix << index <<
"]";
103 description << cmnData<_elementType>::SerializeDescription(*ptr, delimiter, prefix + indexSuffix.str());
105 return description.str();
112 for (
size_t index = 0; index < _size; ++index, ++ptr) {
118 std::istream & inputStream,
124 for (
size_t index = 0; index < _size; ++index, ++ptr) {
141 for (
size_t index = 0; index < _size; ++index, ++ptr) {
148 const std::string & userDescription =
"v")
151 size_t elementIndex, inElementIndex;
152 std::stringstream suffix;
155 index, elementIndex, inElementIndex)) {
156 suffix <<
"[" << index <<
"]";
159 cmnThrow(std::out_of_range(
"cmnDataScalarDescription: C array index out of range"));
166 size_t elementIndex, inElementIndex;
169 index, elementIndex, inElementIndex)) {
172 cmnThrow(std::out_of_range(
"cmnDataScalar: C array index out of range"));
@ IS_SPECIALIZED
Definition cmnDataFunctionsArray.h:34
static size_t ScalarNumber(const_pointer data)
Definition cmnDataFunctionsArray.h:134
static std::string ScalarDescription(const_pointer data, const size_t index, const std::string &userDescription="v") CISST_THROW(std
Definition cmnDataFunctionsArray.h:147
static bool ScalarNumberIsFixed(const_pointer data)
Definition cmnDataFunctionsArray.h:129
static void DeSerializeBinary(pointer data, std::istream &inputStream, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat) CISST_THROW(std
Definition cmnDataFunctionsArray.h:117
static double Scalar(const_pointer data, const size_t index) CISST_THROW(std
Definition cmnDataFunctionsArray.h:163
static void DeSerializeText(pointer data, std::istream &inputStream, const char delimiter) CISST_THROW(std
Definition cmnDataFunctionsArray.h:75
static std::string SerializeDescription(const_pointer data, const char delimiter, const std::string &userDescription="v")
Definition cmnDataFunctionsArray.h:88
static void SerializeBinary(const_pointer data, std::ostream &outputStream) CISST_THROW(std
Definition cmnDataFunctionsArray.h:108
const _elementType * const_pointer
Definition cmnDataFunctionsArray.h:36
static std::string HumanReadable(const_pointer data)
Definition cmnDataFunctionsArray.h:47
static void SerializeText(const_pointer data, std::ostream &outputStream, const char delimiter) CISST_THROW(std
Definition cmnDataFunctionsArray.h:62
_elementType * pointer
Definition cmnDataFunctionsArray.h:35
static void Copy(pointer data, const_pointer source)
Definition cmnDataFunctionsArray.h:38
Definition cmnDataFunctions.h:51
static void Copy(DataType &data, const DataType &source)
static size_t DeSerializeBinary(DataType &data, const char *buffer, size_t bufferSize, const cmnDataFormat &CMN_UNUSED(localFormat), const cmnDataFormat &CMN_UNUSED(remoteFormat))
static bool ScalarNumberIsFixed(const DataType &data)
static size_t SerializeBinary(const DataType &data, char *buffer, size_t bufferSize)
static std::string static ScalarDescription(const DataType &data, const size_t index, const std::string &userDescription="") CISST_THROW(std double static Scalar(const DataType &data, const size_t index) CISST_THROW(std size_t ScalarNumber(const DataType &data)
Definition cmnDataFunctions.h:162
bool cmnDataVectorScalarFindInVectorIndex(_vectorType data, const size_t size, const size_t scalarNumber, const size_t index, size_t &elementIndex, size_t &inElementIndex)
Definition cmnDataFunctionsVectorHelpers.h:238
Macros to export the symbols of cisstCommon (in a Dll).
#define CISST_THROW(exceptionParameter)
Somewhat portable compilation warning message. This works with very recent versions of gcc (4....
Definition cmnPortability.h:559
void cmnThrow(const _exceptionType &except, cmnLogLevel lod=CMN_LOG_LEVEL_INIT_ERROR)
Definition cmnThrow.h:76