cisst-saw
Loading...
Searching...
No Matches
vctDataFunctionsDynamicVector.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 _vctDataFunctionsDynamicVector_h
22#define _vctDataFunctionsDynamicVector_h
23
27
28#if CISST_HAS_JSON
30#endif // CISST_HAS_JSON
31
32template <typename _elementType>
33class cmnData<vctDynamicVector<_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 cmnDataVectorHumanReadable(data);
49 }
50
51 static void SerializeBinary(const DataType & data,
52 std::ostream & outputStream)
53 CISST_THROW(std::runtime_error)
54 {
55 const vct::size_type mySize = data.size();
56 cmnData<size_t>::SerializeBinary(mySize, outputStream);
57 cmnDataVectorSerializeBinary(data, outputStream);
58 }
59
60 static void DeSerializeBinary(DataType & data,
61 std::istream & inputStream,
62 const cmnDataFormat & localFormat,
63 const cmnDataFormat & remoteFormat)
64 CISST_THROW(std::runtime_error)
65 {
66 cmnDataVectorDeSerializeBinaryResize(data, inputStream, localFormat, remoteFormat);
67 }
68
69 static void SerializeText(const DataType & data,
70 std::ostream & outputStream,
71 const char delimiter = ',')
72 CISST_THROW(std::runtime_error)
73 {
74 const size_t size = data.size();
75 cmnData<size_t>::SerializeText(size, outputStream, delimiter);
76 if (size > 0) {
77 outputStream << delimiter;
78 cmnDataVectorSerializeText(data, outputStream, delimiter);
79 }
80 }
81
82 static std::string SerializeDescription(const DataType & data,
83 const char delimiter = ',',
84 const std::string & userDescription = "v")
85 {
86 return cmnDataVectorSerializeDescription(data, delimiter, userDescription, true /* need to serialize size */);
87 }
88
89 static void DeSerializeText(DataType & data,
90 std::istream & inputStream,
91 const char delimiter = ',')
92 CISST_THROW(std::runtime_error)
93 {
94 cmnDataVectorDeSerializeTextResize(data, inputStream, delimiter);
95 }
96
97 static bool ScalarNumberIsFixed(const DataType & CMN_UNUSED(data))
98 {
99 return false;
100 }
101
102 static size_t ScalarNumber(const DataType & data)
103 {
104 return cmnDataVectorScalarNumber(data) + 1; /* treat vector size as a scalar */
105 }
106
107 static std::string ScalarDescription(const DataType & data, const size_t & index, const std::string & userDescription = "v")
108 CISST_THROW(std::out_of_range)
109 {
110 /* treat vector size as a scalar */
111 if (index == 0) {
112 return cmnData<size_t>::ScalarDescription(data.size(), 0, userDescription + ".size");
113 }
114 return cmnDataVectorScalarDescription(data, index - 1, userDescription);
115 }
116
117 static double Scalar(const DataType & data, const size_t & index) CISST_THROW(std::out_of_range)
118 {
119 /* treat vector size as a scalar */
120 if (index == 0) {
121 return static_cast<double>(data.size());
122 }
123 return cmnDataVectorScalar(data, index - 1);
124 }
125};
126
127// ---------------------- older functions, to be deprecated
128template <typename _elementType>
129inline void cmnDeSerializeRaw(std::istream & inputStream,
131 CISST_THROW(std::runtime_error)
132{
133 vector.DeSerializeRaw(inputStream);
134}
135
136template <typename _elementType>
137inline void cmnDeSerializeRaw(std::istream & inputStream,
139 CISST_THROW(std::runtime_error)
140{
141 vector.DeSerializeRaw(inputStream);
142}
143
144template <typename _elementType>
145inline void cmnSerializeRaw(std::ostream & outputStream,
146 const vctDynamicVector<_elementType> & vector)
147 CISST_THROW(std::runtime_error)
148{
149 vector.SerializeRaw(outputStream);
150}
151
152template <typename _elementType>
153inline void cmnSerializeRaw(std::ostream & outputStream,
155 CISST_THROW(std::runtime_error)
156{
157 vector.SerializeRaw(outputStream);
158}
159
160template <typename _elementType>
161inline void cmnSerializeRaw(std::ostream & outputStream,
163 CISST_THROW(std::runtime_error)
164{
165 vector.SerializeRaw(outputStream);
166}
167
168#endif // _vctDataFunctionsDynamicVector_h
vctDynamicVector< _elementType > DataType
Definition vctDataFunctionsDynamicVector.h:38
static void Copy(DataType &data, const DataType &source)
Definition vctDataFunctionsDynamicVector.h:40
static size_t ScalarNumber(const DataType &data)
Definition vctDataFunctionsDynamicVector.h:102
static void DeSerializeBinary(DataType &data, std::istream &inputStream, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat) CISST_THROW(std
Definition vctDataFunctionsDynamicVector.h:60
static bool ScalarNumberIsFixed(const DataType &CMN_UNUSED(data))
Definition vctDataFunctionsDynamicVector.h:97
static std::string ScalarDescription(const DataType &data, const size_t &index, const std::string &userDescription="v") CISST_THROW(std
Definition vctDataFunctionsDynamicVector.h:107
static void SerializeBinary(const DataType &data, std::ostream &outputStream) CISST_THROW(std
Definition vctDataFunctionsDynamicVector.h:51
static std::string SerializeDescription(const DataType &data, const char delimiter=',', const std::string &userDescription="v")
Definition vctDataFunctionsDynamicVector.h:82
static double Scalar(const DataType &data, const size_t &index) CISST_THROW(std
Definition vctDataFunctionsDynamicVector.h:117
static std::string HumanReadable(const DataType &data)
Definition vctDataFunctionsDynamicVector.h:46
@ IS_SPECIALIZED
Definition vctDataFunctionsDynamicVector.h:36
static void SerializeText(const DataType &data, std::ostream &outputStream, const char delimiter=',') CISST_THROW(std
Definition vctDataFunctionsDynamicVector.h:69
static void DeSerializeText(DataType &data, std::istream &inputStream, const char delimiter=',') CISST_THROW(std
Definition vctDataFunctionsDynamicVector.h:89
Definition cmnDataFormat.h:30
Definition cmnDataFunctions.h:51
static size_t SerializeBinary(const DataType &data, char *buffer, size_t bufferSize)
Dynamic vector referencing existing memory (const).
Definition vctDynamicConstVectorRef.h:79
Definition vctForwardDeclarations.h:131
Dynamic vector referencing existing memory.
Definition vctDynamicVectorRef.h:78
void cmnDataVectorSerializeText(const _vectorType &data, std::ostream &outputStream, const char delimiter) CISST_THROW(std
Definition cmnDataFunctionsVectorHelpers.h:63
void cmnDataVectorSerializeBinary(const _vectorType &data, std::ostream &outputStream) CISST_THROW(std
Definition cmnDataFunctionsVectorHelpers.h:158
std::string cmnDataVectorSerializeDescription(const _vectorType &data, const char delimiter, const std::string &userDescription, const bool serializeSize)
Definition cmnDataFunctionsVectorHelpers.h:132
size_t cmnDataVectorScalarNumber(const _vectorType &data)
Definition cmnDataFunctionsVectorHelpers.h:218
void cmnDataVectorDeSerializeBinaryResize(_vectorType &data, std::istream &inputStream, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat) CISST_THROW(std
Definition cmnDataFunctionsVectorHelpers.h:187
void cmnDataVectorDeSerializeTextResize(_vectorType &data, std::istream &inputStream, const char delimiter) CISST_THROW(std
Definition cmnDataFunctionsVectorHelpers.h:97
std::string cmnDataVectorScalarDescription(const _vectorType &data, const size_t index, const std::string &userDescription) CISST_THROW(std
Definition cmnDataFunctionsVectorHelpers.h:278
double cmnDataVectorScalar(const _vectorType &data, const size_t index) CISST_THROW(std
Definition cmnDataFunctionsVectorHelpers.h:296
std::string cmnDataVectorHumanReadable(const _vectorType &data)
Definition cmnDataFunctionsVectorHelpers.h:44
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
size_type size(void) const
Definition vctDynamicConstMatrixBase.h:228
Declaration of vctDynamicVectorBase.