cisst-saw
Loading...
Searching...
No Matches
vctDataFunctionsFixedSizeMatrix.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 _vctDataFunctionsFixedSizeMatrix_h
22#define _vctDataFunctionsFixedSizeMatrix_h
23
27
28#if CISST_HAS_JSON
30#endif // CISST_HAS_JSON
31
32template <class _elementType, vct::size_type _rows, vct::size_type _cols, bool _rowMajor>
33class cmnData<vctFixedSizeMatrix<_elementType, _rows, _cols, _rowMajor> >
34{
35public:
36 enum {IS_SPECIALIZED = 1};
37
39
40 static void Copy(DataType & data, const DataType & source)
41 {
42 data.Assign(source);
43 }
44
45 static std::string HumanReadable(const DataType & data)
46 {
47 return cmnDataMatrixHumanReadable(data);
48 }
49
50 static void SerializeBinary(const DataType & data, std::ostream & outputStream)
51 CISST_THROW(std::runtime_error)
52 {
53 cmnDataMatrixSerializeBinary(data, outputStream);
54 }
55
56 static void DeSerializeBinary(DataType & data,
57 std::istream & inputStream,
58 const cmnDataFormat & localFormat,
59 const cmnDataFormat & remoteFormat)
60 CISST_THROW(std::runtime_error)
61 {
62 cmnDataMatrixDeSerializeBinary(data, inputStream, localFormat, remoteFormat);
63 }
64
65 static void SerializeText(const DataType & data,
66 std::ostream & outputStream,
67 const char delimiter = ',')
68 CISST_THROW(std::runtime_error)
69 {
70 cmnDataMatrixSerializeText(data, outputStream, delimiter);
71 }
72
73 static std::string SerializeDescription(const DataType & data,
74 const char delimiter = ',',
75 const std::string & userDescription = "m")
76 {
77 return cmnDataMatrixSerializeDescription(data, delimiter, userDescription, false /* no need to serialize size */);
78 }
79
80 static void DeSerializeText(DataType & data,
81 std::istream & inputStream,
82 const char delimiter = ',')
83 CISST_THROW(std::runtime_error)
84 {
85 cmnDataMatrixDeSerializeText(data, inputStream, delimiter);
86 }
87
88 static bool ScalarNumberIsFixed(const DataType & data)
89 {
90 return ((data.size() == 0) || cmnData<_elementType>::ScalarNumberIsFixed(data.Element(0, 0)));
91 }
92
93 static size_t ScalarNumber(const DataType & data)
94 {
95 return cmnDataMatrixScalarNumber(data, false /* do not treat size as a scalar*/);
96 }
97
98 static std::string ScalarDescription(const DataType & data,
99 const size_t & index,
100 const std::string & userDescription = "m")
101 CISST_THROW(std::out_of_range)
102 {
103 return cmnDataMatrixScalarDescription(data, index, userDescription, false /* do not treat size as a scalar */);
104 }
105
106 static double Scalar(const DataType & data, const size_t & index)
107 CISST_THROW(std::out_of_range)
108 {
109 return cmnDataMatrixScalar(data, index, false /* do not treat size as a scalar */);
110 }
111};
112
113// ---------------------- older functions, to be deprecated
114template <typename _elementType, vct::size_type _rows, vct::size_type _cols>
115inline void cmnDeSerializeRaw(std::istream & inputStream,
117 CISST_THROW(std::runtime_error)
118{
119 matrix.DeSerializeRaw(inputStream);
120}
121
122template <typename _elementType, vct::size_type _rows, vct::size_type _cols,
123 vct::stride_type _rowStride, vct::stride_type _colStride>
124inline void cmnDeSerializeRaw(std::istream & inputStream,
126 CISST_THROW(std::runtime_error)
127{
128 matrix.DeSerializeRaw(inputStream);
129}
130
131template <typename _elementType, vct::size_type _rows, vct::size_type _cols>
132inline void cmnSerializeRaw(std::ostream & outputStream,
134 CISST_THROW(std::runtime_error)
135{
136 matrix.SerializeRaw(outputStream);
137}
138
139template <typename _elementType, vct::size_type _rows, vct::size_type _cols,
140 vct::stride_type _rowStride, vct::stride_type _colStride>
141inline void cmnSerializeRaw(std::ostream & outputStream,
143 CISST_THROW(std::runtime_error)
144{
145 matrix.SerializeRaw(outputStream);
146}
147
148template <typename _elementType, vct::size_type _rows, vct::size_type _cols,
149 vct::stride_type _rowStride, vct::stride_type _colStride>
150inline void cmnSerializeRaw(std::ostream & outputStream,
152 CISST_THROW(std::runtime_error)
153{
154 matrix.SerializeRaw(outputStream);
155}
156
157// ----------------------- end of older functions
158
159#endif // _vctDataFunctionsFixedSizeMatrix_h
static void Copy(DataType &data, const DataType &source)
Definition vctDataFunctionsFixedSizeMatrix.h:40
@ IS_SPECIALIZED
Definition vctDataFunctionsFixedSizeMatrix.h:36
static std::string SerializeDescription(const DataType &data, const char delimiter=',', const std::string &userDescription="m")
Definition vctDataFunctionsFixedSizeMatrix.h:73
static size_t ScalarNumber(const DataType &data)
Definition vctDataFunctionsFixedSizeMatrix.h:93
static std::string HumanReadable(const DataType &data)
Definition vctDataFunctionsFixedSizeMatrix.h:45
static bool ScalarNumberIsFixed(const DataType &data)
Definition vctDataFunctionsFixedSizeMatrix.h:88
static double Scalar(const DataType &data, const size_t &index) CISST_THROW(std
Definition vctDataFunctionsFixedSizeMatrix.h:106
static void SerializeText(const DataType &data, std::ostream &outputStream, const char delimiter=',') CISST_THROW(std
Definition vctDataFunctionsFixedSizeMatrix.h:65
vctFixedSizeMatrix< _elementType, _rows, _cols, _rowMajor > DataType
Definition vctDataFunctionsFixedSizeMatrix.h:38
static std::string ScalarDescription(const DataType &data, const size_t &index, const std::string &userDescription="m") CISST_THROW(std
Definition vctDataFunctionsFixedSizeMatrix.h:98
static void DeSerializeText(DataType &data, std::istream &inputStream, const char delimiter=',') CISST_THROW(std
Definition vctDataFunctionsFixedSizeMatrix.h:80
static void DeSerializeBinary(DataType &data, std::istream &inputStream, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat) CISST_THROW(std
Definition vctDataFunctionsFixedSizeMatrix.h:56
static void SerializeBinary(const DataType &data, std::ostream &outputStream) CISST_THROW(std
Definition vctDataFunctionsFixedSizeMatrix.h:50
Definition cmnDataFormat.h:30
Definition cmnDataFunctions.h:51
static bool ScalarNumberIsFixed(const DataType &data)
size_type size() const
Definition vctFixedSizeConstMatrixBase.h:266
Definition vctForwardDeclarations.h:106
reference Element(size_type rowIndex, size_type colIndex)
Definition vctFixedSizeMatrixBase.h:231
ThisType & Assign(const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, __elementType, __dataPtrType > &other)
Definition vctFixedSizeMatrixBase.h:475
Implementation of a fixed-size matrix using template metaprogramming.
Definition vctFixedSizeMatrix.h:54
Definition vctForwardDeclarations.h:110
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
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 cmnDataMatrixDeSerializeBinary(_matrixType &data, std::istream &inputStream, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat) CISST_THROW(std
Definition cmnDataFunctionsMatrixHelpers.h:185
void cmnDataMatrixDeSerializeText(_matrixType &data, std::istream &inputStream, const char delimiter)
Definition cmnDataFunctionsMatrixHelpers.h:85
void cmnDeSerializeRaw(std::istream &inputStream, _elementType &data) CISST_THROW(std
Definition cmnDeSerializer.h:82
#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
ptrdiff_t stride_type
Definition vctContainerTraits.h:37
Declaration of vctFixedSizeMatrixBase.