cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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-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 _vctDataFunctionsDynamicMatrix_h
24 #define _vctDataFunctionsDynamicMatrix_h
25 
29 
30 #if CISST_HAS_JSON
32 #endif // CISST_HAS_JSON
33 
34 template <typename _elementType>
35 class cmnData<vctDynamicMatrix<_elementType> >
36 {
37 public:
38  enum {IS_SPECIALIZED = 1};
39 
41 
42  static void Copy(DataType & data, const DataType & source)
43  {
44  // potentially resizes the destination
45  data.ForceAssign(source);
46  }
47 
48  static std::string HumanReadable(const DataType & data)
49  {
50  return cmnDataMatrixHumanReadable(data);
51  }
52 
53  static void SerializeBinary(const DataType & data, std::ostream & outputStream)
54  throw (std::runtime_error)
55  {
56  const vct::size_type myRows = data.rows();
57  const vct::size_type myCols = data.cols();
58  cmnData<size_t>::SerializeBinary(myRows, outputStream);
59  cmnData<size_t>::SerializeBinary(myCols, outputStream);
60  cmnDataMatrixSerializeBinary(data, outputStream);
61  }
62 
63  static void DeSerializeBinary(DataType & data, std::istream & inputStream,
64  const cmnDataFormat & localFormat, const cmnDataFormat & remoteFormat)
65  throw (std::runtime_error)
66  {
67  cmnDataMatrixDeSerializeBinaryResize(data, inputStream, localFormat, remoteFormat);
68  }
69 
70  static void SerializeText(const DataType & data, std::ostream & outputStream, const char delimiter = ',')
71  throw (std::runtime_error)
72  {
73  const vct::size_type myRows = data.rows();
74  const vct::size_type myCols = data.cols();
75  cmnData<size_t>::SerializeText(myRows, outputStream, delimiter);
76  outputStream << delimiter;
77  cmnData<size_t>::SerializeText(myCols, outputStream, delimiter);
78  if (data.size() > 0) {
79  outputStream << delimiter;
80  cmnDataMatrixSerializeText(data, outputStream, delimiter);
81  }
82  }
83 
84  static std::string SerializeDescription(const DataType & data, const char delimiter = ',',
85  const std::string & userDescription = "m")
86  {
87  return cmnDataMatrixSerializeDescription(data, delimiter, userDescription, true /* need to serialize size */);
88  }
89 
90  static void DeSerializeText(DataType & data, std::istream & inputStream, const char delimiter = ',')
91  throw (std::runtime_error)
92  {
93  cmnDataMatrixDeSerializeTextResize(data, inputStream, delimiter);
94  }
95 
96  static bool ScalarNumberIsFixed(const DataType & CMN_UNUSED(data))
97  {
98  return false;
99  }
100 
101  static size_t ScalarNumber(const DataType & data)
102  {
103  return cmnDataMatrixScalarNumber(data, true /* treat size as a scalar */);
104  }
105 
106  static std::string ScalarDescription(const DataType & data, const size_t index, const std::string & userDescription = "m")
107  throw (std::out_of_range)
108  {
109  return cmnDataMatrixScalarDescription(data, index, userDescription, true /* treat size as a scalar */);
110  }
111 
112  static double Scalar(const DataType & data, const size_t index)
113  throw (std::out_of_range)
114  {
115  return cmnDataMatrixScalar(data, index, true /* treat size as a scalar */);
116  }
117 };
118 
119 // ---------------------- older functions, to be deprecated
120 template <typename _elementType>
121 inline void cmnDeSerializeRaw(std::istream & inputStream,
123  throw (std::runtime_error)
124 {
125  matrix.DeSerializeRaw(inputStream);
126 }
127 
128 template <typename _elementType>
129 inline void cmnDeSerializeRaw(std::istream & inputStream,
131  throw (std::runtime_error)
132 {
133  matrix.DeSerializeRaw(inputStream);
134 }
135 
136 template <typename _elementType>
137 inline void cmnSerializeRaw(std::ostream & outputStream,
138  const vctDynamicMatrix<_elementType> & matrix)
139  throw (std::runtime_error)
140 {
141  matrix.SerializeRaw(outputStream);
142 }
143 
144 template <typename _elementType>
145 inline void cmnSerializeRaw(std::ostream & outputStream,
146  const vctDynamicMatrixRef<_elementType> & matrix)
147  throw (std::runtime_error)
148 {
149  matrix.SerializeRaw(outputStream);
150 }
151 
152 template <typename _elementType>
153 inline void cmnSerializeRaw(std::ostream & outputStream,
155  throw (std::runtime_error)
156 {
157  matrix.SerializeRaw(outputStream);
158 }
159 
160 #endif // _vctDataFunctionsDynamicMatrix_h
static std::string ScalarDescription(const DataType &data, const size_t index, const std::string &userDescription="m")
Definition: vctDataFunctionsDynamicMatrix.h:106
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
#define CMN_UNUSED(argument)
Definition: cmnPortability.h:479
static void Copy(DataType &data, const DataType &source)
Definition: vctDataFunctionsDynamicMatrix.h:42
size_type size(void) const
Definition: vctDynamicConstMatrixBase.h:228
void cmnSerializeRaw(std::ostream &outputStream, const vctDynamicMatrix< _elementType > &matrix)
Definition: vctDataFunctionsDynamicMatrix.h:137
A matrix object of dynamic size.
Definition: vctDynamicMatrix.h:136
size_t size_type
Definition: vctContainerTraits.h:35
ThisType & ForceAssign(const vctDynamicConstMatrixBase< __matrixOwnerType, __elementType > &other)
Definition: vctDynamicMatrix.h:306
static void SerializeBinary(const DataType &data, std::ostream &outputStream)
Dynamic matrix referencing existing memory.
Definition: vctDynamicMatrixRef.h:74
static void SerializeText(const DataType &data, std::ostream &outputStream, const char delimiter= ',')
Definition: vctDataFunctionsDynamicMatrix.h:70
static bool ScalarNumberIsFixed(const DataType &CMN_UNUSED(data))
Definition: vctDataFunctionsDynamicMatrix.h:96
static void DeSerializeText(DataType &data, std::istream &inputStream, const char delimiter= ',')
Definition: vctDataFunctionsDynamicMatrix.h:90
static void SerializeText(const DataType &data, std::ostream &outputStream, const char delimiter= ',')
Dynamic matrix referencing existing memory (const)
Definition: vctDynamicConstMatrixRef.h:79
static void SerializeBinary(const DataType &data, std::ostream &outputStream)
Definition: vctDataFunctionsDynamicMatrix.h:53
size_type rows() const
Definition: vctDynamicConstMatrixBase.h:238
size_type cols() const
Definition: vctDynamicConstMatrixBase.h:243
void cmnDataMatrixSerializeBinary(const _matrixType &data, std::ostream &outputStream)
Definition: cmnDataFunctionsMatrixHelpers.h:175
Declaration of vctDynamicMatrixBase.
std::string cmnDataMatrixHumanReadable(const _matrixType &data)
Definition: cmnDataFunctionsMatrixHelpers.h:47
Definition: cmnDataFunctions.h:53
Definition: cmnDataFunctions.h:56
void cmnDataMatrixDeSerializeTextResize(_matrixType &data, std::istream &inputStream, const char delimiter)
Definition: cmnDataFunctionsMatrixHelpers.h:105
vctDynamicMatrix< _elementType > DataType
Definition: vctDataFunctionsDynamicMatrix.h:40
void cmnDataMatrixDeSerializeBinaryResize(_matrixType &data, std::istream &inputStream, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat)
Definition: cmnDataFunctionsMatrixHelpers.h:204
std::string cmnDataMatrixSerializeDescription(const _matrixType &data, const char delimiter, const std::string &userDescription, const bool serializeSize)
Definition: cmnDataFunctionsMatrixHelpers.h:144
void cmnDeSerializeRaw(std::istream &inputStream, vctDynamicMatrix< _elementType > &matrix)
Definition: vctDataFunctionsDynamicMatrix.h:121
static std::string SerializeDescription(const DataType &data, const char delimiter= ',', const std::string &userDescription="m")
Definition: vctDataFunctionsDynamicMatrix.h:84
static size_t ScalarNumber(const DataType &data)
Definition: vctDataFunctionsDynamicMatrix.h:101
static void DeSerializeBinary(DataType &data, std::istream &inputStream, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat)
Definition: vctDataFunctionsDynamicMatrix.h:63
std::string cmnDataMatrixScalarDescription(const _matrixType &data, const size_t index, const std::string &userDescription, const bool includeSize)
Definition: cmnDataFunctionsMatrixHelpers.h:302
size_t cmnDataMatrixScalarNumber(const _matrixType &data, const bool includeSize)
Definition: cmnDataFunctionsMatrixHelpers.h:238
static double Scalar(const DataType &data, const size_t index)
Definition: vctDataFunctionsDynamicMatrix.h:112
static std::string HumanReadable(const DataType &data)
Definition: vctDataFunctionsDynamicMatrix.h:48