cisst-saw
Loading...
Searching...
No Matches
vctDataFunctionsDynamicMatrix.h
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/* ex: set filetype=cpp softtabstop=4 shiftwidth=4 tabstop=4 cindent expandtab: */
3
4/*
5 Author(s): Anton Deguet
6 Created on: 2012-07-09
7
8 (C) Copyright 2012-2018 Johns Hopkins University (JHU), All Rights Reserved.
9
10--- begin cisst license - do not edit ---
11
12This software is provided "as is" under an open source license, with
13no warranty. The complete license can be found in license.txt and
14http://www.cisst.org/cisst/license.txt.
15
16--- end cisst license ---
17*/
18
19#pragma once
20
21#ifndef _vctDataFunctionsDynamicMatrix_h
22#define _vctDataFunctionsDynamicMatrix_h
23
27
28#if CISST_HAS_JSON
30#endif // CISST_HAS_JSON
31
32template <typename _elementType>
33class cmnData<vctDynamicMatrix<_elementType> >
34{
35public:
36 enum {IS_SPECIALIZED = 1};
37
39
40 static void Copy(DataType & data, const DataType & source)
41 {
42 // potentially resizes the destination
43 data.ForceAssign(source);
44 }
45
46 static std::string HumanReadable(const DataType & data)
47 {
48 return cmnDataMatrixHumanReadable(data);
49 }
50
51 static void SerializeBinary(const DataType & data, std::ostream & outputStream)
52 CISST_THROW(std::runtime_error)
53 {
54 const vct::size_type myRows = data.rows();
55 const vct::size_type myCols = data.cols();
56 cmnData<size_t>::SerializeBinary(myRows, outputStream);
57 cmnData<size_t>::SerializeBinary(myCols, outputStream);
58 cmnDataMatrixSerializeBinary(data, outputStream);
59 }
60
61 static void DeSerializeBinary(DataType & data, std::istream & inputStream,
62 const cmnDataFormat & localFormat, const cmnDataFormat & remoteFormat)
63 CISST_THROW(std::runtime_error)
64 {
65 cmnDataMatrixDeSerializeBinaryResize(data, inputStream, localFormat, remoteFormat);
66 }
67
68 static void SerializeText(const DataType & data, std::ostream & outputStream, const char delimiter = ',')
69 CISST_THROW(std::runtime_error)
70 {
71 const vct::size_type myRows = data.rows();
72 const vct::size_type myCols = data.cols();
73 cmnData<size_t>::SerializeText(myRows, outputStream, delimiter);
74 outputStream << delimiter;
75 cmnData<size_t>::SerializeText(myCols, outputStream, delimiter);
76 if (data.size() > 0) {
77 outputStream << delimiter;
78 cmnDataMatrixSerializeText(data, outputStream, delimiter);
79 }
80 }
81
82 static std::string SerializeDescription(const DataType & data, const char delimiter = ',',
83 const std::string & userDescription = "m")
84 {
85 return cmnDataMatrixSerializeDescription(data, delimiter, userDescription, true /* need to serialize size */);
86 }
87
88 static void DeSerializeText(DataType & data, std::istream & inputStream, const char delimiter = ',')
89 CISST_THROW(std::runtime_error)
90 {
91 cmnDataMatrixDeSerializeTextResize(data, inputStream, delimiter);
92 }
93
94 static bool ScalarNumberIsFixed(const DataType & CMN_UNUSED(data))
95 {
96 return false;
97 }
98
99 static size_t ScalarNumber(const DataType & data)
100 {
101 return cmnDataMatrixScalarNumber(data, true /* treat size as a scalar */);
102 }
103
104 static std::string ScalarDescription(const DataType & data, const size_t index, const std::string & userDescription = "m")
105 CISST_THROW(std::out_of_range)
106 {
107 return cmnDataMatrixScalarDescription(data, index, userDescription, true /* treat size as a scalar */);
108 }
109
110 static double Scalar(const DataType & data, const size_t index)
111 CISST_THROW(std::out_of_range)
112 {
113 return cmnDataMatrixScalar(data, index, true /* treat size as a scalar */);
114 }
115};
116
117// ---------------------- older functions, to be deprecated
118template <typename _elementType>
119inline void cmnDeSerializeRaw(std::istream & inputStream,
121 CISST_THROW(std::runtime_error)
122{
123 matrix.DeSerializeRaw(inputStream);
124}
125
126template <typename _elementType>
127inline void cmnDeSerializeRaw(std::istream & inputStream,
129 CISST_THROW(std::runtime_error)
130{
131 matrix.DeSerializeRaw(inputStream);
132}
133
134template <typename _elementType>
135inline void cmnSerializeRaw(std::ostream & outputStream,
136 const vctDynamicMatrix<_elementType> & matrix)
137 CISST_THROW(std::runtime_error)
138{
139 matrix.SerializeRaw(outputStream);
140}
141
142template <typename _elementType>
143inline void cmnSerializeRaw(std::ostream & outputStream,
145 CISST_THROW(std::runtime_error)
146{
147 matrix.SerializeRaw(outputStream);
148}
149
150template <typename _elementType>
151inline void cmnSerializeRaw(std::ostream & outputStream,
153 CISST_THROW(std::runtime_error)
154{
155 matrix.SerializeRaw(outputStream);
156}
157
158#endif // _vctDataFunctionsDynamicMatrix_h
static bool ScalarNumberIsFixed(const DataType &CMN_UNUSED(data))
Definition vctDataFunctionsDynamicMatrix.h:94
static size_t ScalarNumber(const DataType &data)
Definition vctDataFunctionsDynamicMatrix.h:99
static std::string SerializeDescription(const DataType &data, const char delimiter=',', const std::string &userDescription="m")
Definition vctDataFunctionsDynamicMatrix.h:82
static void SerializeText(const DataType &data, std::ostream &outputStream, const char delimiter=',') CISST_THROW(std
Definition vctDataFunctionsDynamicMatrix.h:68
@ IS_SPECIALIZED
Definition vctDataFunctionsDynamicMatrix.h:36
static void SerializeBinary(const DataType &data, std::ostream &outputStream) CISST_THROW(std
Definition vctDataFunctionsDynamicMatrix.h:51
static std::string ScalarDescription(const DataType &data, const size_t index, const std::string &userDescription="m") CISST_THROW(std
Definition vctDataFunctionsDynamicMatrix.h:104
static void DeSerializeBinary(DataType &data, std::istream &inputStream, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat) CISST_THROW(std
Definition vctDataFunctionsDynamicMatrix.h:61
vctDynamicMatrix< _elementType > DataType
Definition vctDataFunctionsDynamicMatrix.h:38
static double Scalar(const DataType &data, const size_t index) CISST_THROW(std
Definition vctDataFunctionsDynamicMatrix.h:110
static void Copy(DataType &data, const DataType &source)
Definition vctDataFunctionsDynamicMatrix.h:40
static std::string HumanReadable(const DataType &data)
Definition vctDataFunctionsDynamicMatrix.h:46
static void DeSerializeText(DataType &data, std::istream &inputStream, const char delimiter=',') CISST_THROW(std
Definition vctDataFunctionsDynamicMatrix.h:88
Definition cmnDataFormat.h:30
Definition cmnDataFunctions.h:51
static size_t SerializeBinary(const DataType &data, char *buffer, size_t bufferSize)
Dynamic matrix referencing existing memory (const).
Definition vctDynamicConstMatrixRef.h:81
Definition vctForwardDeclarations.h:157
Dynamic matrix referencing existing memory.
Definition vctDynamicMatrixRef.h:75
std::string cmnDataMatrixSerializeDescription(const _matrixType &data, const char delimiter, const std::string &userDescription, const bool serializeSize)
Definition cmnDataFunctionsMatrixHelpers.h:141
void cmnDataMatrixSerializeText(const _matrixType &data, std::ostream &outputStream, const char delimiter) CISST_THROW(std
Definition cmnDataFunctionsMatrixHelpers.h:68
double cmnDataMatrixScalar(const _matrixType &data, const size_t index, const bool includeSize) CISST_THROW(std
Definition cmnDataFunctionsMatrixHelpers.h:326
size_t cmnDataMatrixScalarNumber(const _matrixType &data, const bool includeSize)
Definition cmnDataFunctionsMatrixHelpers.h:235
void cmnDataMatrixDeSerializeTextResize(_matrixType &data, std::istream &inputStream, const char delimiter) CISST_THROW(std
Definition cmnDataFunctionsMatrixHelpers.h:102
std::string cmnDataMatrixHumanReadable(const _matrixType &data)
Definition cmnDataFunctionsMatrixHelpers.h:44
void cmnDataMatrixSerializeBinary(const _matrixType &data, std::ostream &outputStream) CISST_THROW(std
Definition cmnDataFunctionsMatrixHelpers.h:172
std::string cmnDataMatrixScalarDescription(const _matrixType &data, const size_t index, const std::string &userDescription, const bool includeSize) CISST_THROW(std
Definition cmnDataFunctionsMatrixHelpers.h:299
void cmnDataMatrixDeSerializeBinaryResize(_matrixType &data, std::istream &inputStream, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat) CISST_THROW(std
Definition cmnDataFunctionsMatrixHelpers.h:201
void cmnDeSerializeRaw(std::istream &inputStream, _elementType &data) CISST_THROW(std
Definition cmnDeSerializer.h:82
#define CMN_UNUSED(argument)
Definition cmnPortability.h:497
#define CISST_THROW(exceptionParameter)
Somewhat portable compilation warning message. This works with very recent versions of gcc (4....
Definition cmnPortability.h:559
void cmnSerializeRaw(std::ostream &outputStream, const _elementType &data) CISST_THROW(std
Definition cmnSerializer.h:76
STL namespace.
size_t size_type
Definition vctContainerTraits.h:35
Declaration of vctDynamicMatrixBase.