cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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-2014 Johns Hopkins University (JHU), All Rights
9  Reserved.
10 
11 --- begin cisst license - do not edit ---
12 
13 This software is provided "as is" under an open source license, with
14 no warranty. The complete license can be found in license.txt and
15 http://www.cisst.org/cisst/license.txt.
16 
17 --- end cisst license ---
18 
19 */
20 
21 #pragma once
22 
23 #ifndef _vctDataFunctionsFixedSizeMatrix_h
24 #define _vctDataFunctionsFixedSizeMatrix_h
25 
29 
30 #if CISST_HAS_JSON
32 #endif // CISST_HAS_JSON
33 
34 template <class _elementType, vct::size_type _rows, vct::size_type _cols, bool _rowMajor>
35 class cmnData<vctFixedSizeMatrix<_elementType, _rows, _cols, _rowMajor> >
36 {
37 public:
38  enum {IS_SPECIALIZED = 1};
39 
41 
42  static void Copy(DataType & data, const DataType & source)
43  {
44  data.Assign(source);
45  }
46 
47  static std::string HumanReadable(const DataType & data)
48  {
49  return cmnDataMatrixHumanReadable(data);
50  }
51 
52  static void SerializeBinary(const DataType & data, std::ostream & outputStream)
53  throw (std::runtime_error)
54  {
55  cmnDataMatrixSerializeBinary(data, outputStream);
56  }
57 
58  static void DeSerializeBinary(DataType & data,
59  std::istream & inputStream,
60  const cmnDataFormat & localFormat,
61  const cmnDataFormat & remoteFormat)
62  throw (std::runtime_error)
63  {
64  cmnDataMatrixDeSerializeBinary(data, inputStream, localFormat, remoteFormat);
65  }
66 
67  static void SerializeText(const DataType & data,
68  std::ostream & outputStream,
69  const char delimiter = ',')
70  throw (std::runtime_error)
71  {
72  cmnDataMatrixSerializeText(data, outputStream, delimiter);
73  }
74 
75  static std::string SerializeDescription(const DataType & data,
76  const char delimiter = ',',
77  const std::string & userDescription = "m")
78  {
79  return cmnDataMatrixSerializeDescription(data, delimiter, userDescription, false /* no need to serialize size */);
80  }
81 
82  static void DeSerializeText(DataType & data,
83  std::istream & inputStream,
84  const char delimiter = ',')
85  throw (std::runtime_error)
86  {
87  cmnDataMatrixDeSerializeText(data, inputStream, delimiter);
88  }
89 
90  static bool ScalarNumberIsFixed(const DataType & data)
91  {
92  return ((data.size() == 0) || cmnData<_elementType>::ScalarNumberIsFixed(data.Element(0, 0)));
93  }
94 
95  static size_t ScalarNumber(const DataType & data)
96  {
97  return cmnDataMatrixScalarNumber(data, false /* do not treat size as a scalar*/);
98  }
99 
100  static std::string ScalarDescription(const DataType & data,
101  const size_t & index,
102  const std::string & userDescription = "m")
103  throw (std::out_of_range)
104  {
105  return cmnDataMatrixScalarDescription(data, index, userDescription, false /* do not treat size as a scalar */);
106  }
107 
108  static double Scalar(const DataType & data, const size_t & index)
109  throw (std::out_of_range)
110  {
111  return cmnDataMatrixScalar(data, index, false /* do not treat size as a scalar */);
112  }
113 };
114 
115 // ---------------------- older functions, to be deprecated
116 template <typename _elementType, vct::size_type _rows, vct::size_type _cols>
117 inline void cmnDeSerializeRaw(std::istream & inputStream,
119  throw (std::runtime_error)
120 {
121  matrix.DeSerializeRaw(inputStream);
122 }
123 
124 template <typename _elementType, vct::size_type _rows, vct::size_type _cols,
125  vct::stride_type _rowStride, vct::stride_type _colStride>
126 inline void cmnDeSerializeRaw(std::istream & inputStream,
128  throw (std::runtime_error)
129 {
130  matrix.DeSerializeRaw(inputStream);
131 }
132 
133 template <typename _elementType, vct::size_type _rows, vct::size_type _cols>
134 inline void cmnSerializeRaw(std::ostream & outputStream,
136  throw (std::runtime_error)
137 {
138  matrix.SerializeRaw(outputStream);
139 }
140 
141 template <typename _elementType, vct::size_type _rows, vct::size_type _cols,
142  vct::stride_type _rowStride, vct::stride_type _colStride>
143 inline void cmnSerializeRaw(std::ostream & outputStream,
145  throw (std::runtime_error)
146 {
147  matrix.SerializeRaw(outputStream);
148 }
149 
150 template <typename _elementType, vct::size_type _rows, vct::size_type _cols,
151  vct::stride_type _rowStride, vct::stride_type _colStride>
152 inline void cmnSerializeRaw(std::ostream & outputStream,
154  throw (std::runtime_error)
155 {
156  matrix.SerializeRaw(outputStream);
157 }
158 
159 // ----------------------- end of older functions
160 
161 #endif // _vctDataFunctionsFixedSizeMatrix_h
void cmnDataMatrixSerializeText(const _matrixType &data, std::ostream &outputStream, const char delimiter)
Definition: cmnDataFunctionsMatrixHelpers.h:71
double cmnDataMatrixScalar(const _matrixType &data, const size_t index, const bool includeSize)
Definition: cmnDataFunctionsMatrixHelpers.h:329
Definition: cmnDataFormat.h:32
void cmnDataMatrixDeSerializeBinary(_matrixType &data, std::istream &inputStream, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat)
Definition: cmnDataFunctionsMatrixHelpers.h:188
Declaration of vctFixedSizeMatrixBase.
ThisType & Assign(const vctFixedSizeConstMatrixBase< _rows, _cols, __rowStride, __colStride, __elementType, __dataPtrType > &other)
Definition: vctFixedSizeMatrixBase.h:475
static void DeSerializeBinary(DataType &data, std::istream &inputStream, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat)
Definition: vctDataFunctionsFixedSizeMatrix.h:58
static size_t ScalarNumber(const DataType &data)
Definition: vctDataFunctionsFixedSizeMatrix.h:95
size_t size_type
Definition: vctContainerTraits.h:35
static void SerializeBinary(const DataType &data, std::ostream &outputStream)
Definition: vctDataFunctionsFixedSizeMatrix.h:52
vctFixedSizeMatrix< _elementType, _rows, _cols, _rowMajor > DataType
Definition: vctDataFunctionsFixedSizeMatrix.h:40
static std::string HumanReadable(const DataType &data)
Definition: vctDataFunctionsFixedSizeMatrix.h:47
static void SerializeText(const DataType &data, std::ostream &outputStream, const char delimiter= ',')
Definition: vctDataFunctionsFixedSizeMatrix.h:67
reference Element(size_type rowIndex, size_type colIndex)
Definition: vctFixedSizeMatrixBase.h:231
void cmnDataMatrixDeSerializeText(_matrixType &data, std::istream &inputStream, const char delimiter)
Definition: cmnDataFunctionsMatrixHelpers.h:88
An implementation of the ``abstract'' vctFixedSizeMatrixBase.
Definition: vctFixedSizeMatrixRef.h:46
void cmnDeSerializeRaw(std::istream &inputStream, vctFixedSizeMatrix< _elementType, _rows, _cols > &matrix)
Definition: vctDataFunctionsFixedSizeMatrix.h:117
void cmnDataMatrixSerializeBinary(const _matrixType &data, std::ostream &outputStream)
Definition: cmnDataFunctionsMatrixHelpers.h:175
void cmnSerializeRaw(std::ostream &outputStream, const vctFixedSizeMatrix< _elementType, _rows, _cols > &matrix)
Definition: vctDataFunctionsFixedSizeMatrix.h:134
std::string cmnDataMatrixHumanReadable(const _matrixType &data)
Definition: cmnDataFunctionsMatrixHelpers.h:47
static double Scalar(const DataType &data, const size_t &index)
Definition: vctDataFunctionsFixedSizeMatrix.h:108
Definition: cmnDataFunctions.h:53
Definition: cmnDataFunctions.h:56
Implementation of a fixed-size matrix using template metaprogramming.
Definition: vctFixedSizeMatrix.h:52
static std::string SerializeDescription(const DataType &data, const char delimiter= ',', const std::string &userDescription="m")
Definition: vctDataFunctionsFixedSizeMatrix.h:75
static void Copy(DataType &data, const DataType &source)
Definition: vctDataFunctionsFixedSizeMatrix.h:42
std::string cmnDataMatrixSerializeDescription(const _matrixType &data, const char delimiter, const std::string &userDescription, const bool serializeSize)
Definition: cmnDataFunctionsMatrixHelpers.h:144
ptrdiff_t stride_type
Definition: vctContainerTraits.h:37
static bool ScalarNumberIsFixed(const DataType &data)
Definition: vctDataFunctionsFixedSizeMatrix.h:90
An implementation of the ``abstract'' vctFixedSizeConstMatrixBase.
Definition: vctFixedSizeConstMatrixRef.h:50
static std::string ScalarDescription(const DataType &data, const size_t &index, const std::string &userDescription="m")
Definition: vctDataFunctionsFixedSizeMatrix.h:100
std::string cmnDataMatrixScalarDescription(const _matrixType &data, const size_t index, const std::string &userDescription, const bool includeSize)
Definition: cmnDataFunctionsMatrixHelpers.h:302
static void DeSerializeText(DataType &data, std::istream &inputStream, const char delimiter= ',')
Definition: vctDataFunctionsFixedSizeMatrix.h:82
size_t cmnDataMatrixScalarNumber(const _matrixType &data, const bool includeSize)
Definition: cmnDataFunctionsMatrixHelpers.h:238