cisst-saw
Loading...
Searching...
No Matches
cmnDataFunctionsString.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: 2011-06-27
7
8 (C) Copyright 2011-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#ifndef _cmnDataFunctionsString_h
21#define _cmnDataFunctionsString_h
22
24#include <string>
25
26// always include last
28
29size_t CISST_EXPORT cmnDataSerializeBinary(const std::string & data, char * buffer, size_t bufferSize);
30
31size_t CISST_EXPORT cmnDataDeSerializeBinary(std::string & data, const char * buffer, size_t bufferSize,
32 const cmnDataFormat & localFormat,
33 const cmnDataFormat & remoteFormat);
34
35void CISST_EXPORT cmnDataSerializeBinary(const std::string & data,
36 std::ostream & outputStream) CISST_THROW(std::runtime_error);
37
38void CISST_EXPORT cmnDataDeSerializeBinary(std::string & data,
39 std::istream & inputStream,
40 const cmnDataFormat & localFormat,
41 const cmnDataFormat & remoteFormat) CISST_THROW(std::runtime_error);
42
43void CISST_EXPORT cmnDataSerializeText(const std::string & data,
44 std::ostream & outputStream,
45 const char delimiter = ',') CISST_THROW(std::runtime_error);
46
47void CISST_EXPORT cmnDataDeSerializeText(std::string & data,
48 std::istream & inputStream,
49 const char delimiter = ',') CISST_THROW(std::runtime_error);
50
51
52template <>
53class cmnData<std::string>
54{
55public:
56 typedef std::string DataType;
57
61
62 static std::string HumanReadable(const std::string & data) {
63 return data;
64 }
65
66 static size_t SerializeBinaryByteSize(const DataType & data) {
67 return (cmnData<size_t>::SerializeBinaryByteSize(data.size()) + data.size() * sizeof(std::string::value_type));
68 }
69
70 static size_t SerializeBinary(const DataType & data,
71 char * buffer, size_t bufferSize) {
72 return cmnDataSerializeBinary(data, buffer, bufferSize);
73 }
74
75 static size_t DeSerializeBinary(DataType & data, const char * buffer, size_t bufferSize,
76 const cmnDataFormat & localFormat,
77 const cmnDataFormat & remoteFormat)
78 {
79 return cmnDataDeSerializeBinary(data, buffer, bufferSize, localFormat, remoteFormat);
80 }
81
82 static void SerializeBinary(const DataType & data,
83 std::ostream & outputStream)
84 CISST_THROW(std::runtime_error)
85 {
86 cmnDataSerializeBinary(data, outputStream);
87 }
88
89 static void DeSerializeBinary(DataType & data,
90 std::istream & inputStream,
91 const cmnDataFormat & localFormat,
92 const cmnDataFormat & remoteFormat)
93 CISST_THROW(std::runtime_error)
94 {
95 cmnDataDeSerializeBinary(data, inputStream, localFormat, remoteFormat);
96 }
97
98 static void SerializeText(const DataType & data,
99 std::ostream & outputStream,
100 const char delimiter = ',')
101 CISST_THROW(std::runtime_error)
102 {
103 cmnDataSerializeText(data, outputStream, delimiter);
104 }
105
106 static void DeSerializeText(DataType & data,
107 std::istream & inputStream,
108 const char delimiter = ',')
109 CISST_THROW(std::runtime_error)
110 {
111 cmnDataDeSerializeText(data, inputStream, delimiter);
112 }
113
114 static bool ScalarNumberIsFixed(const std::string & CMN_UNUSED(data)) {
115 return true;
116 }
117
118 static size_t ScalarNumber(const std::string & CMN_UNUSED(data)) {
119 return 0;
120 }
121
122 static std::string ScalarDescription(const std::string & CMN_UNUSED(data), const size_t CMN_UNUSED(index),
123 const std::string & CMN_UNUSED(userDescription)) CISST_THROW(std::out_of_range) {
124 cmnThrow(std::out_of_range("cmnDataScalarDescription: std::string has no scalar"));
125 return "n/a";
126 }
127
128 static double Scalar(const std::string & CMN_UNUSED(data), const size_t CMN_UNUSED(index)) CISST_THROW(std::out_of_range) {
129 cmnThrow(std::out_of_range("cmnDataScalar: std::string has no scalar"));
130 return 1.234;
131 }
132};
133
134#endif // _cmnDataFunctionsString_h
std::string DataType
Definition cmnDataFunctionsString.h:56
static bool ScalarNumberIsFixed(const std::string &CMN_UNUSED(data))
Definition cmnDataFunctionsString.h:114
static size_t SerializeBinary(const DataType &data, char *buffer, size_t bufferSize)
Definition cmnDataFunctionsString.h:70
static void DeSerializeBinary(DataType &data, std::istream &inputStream, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat) CISST_THROW(std
Definition cmnDataFunctionsString.h:89
static void SerializeText(const DataType &data, std::ostream &outputStream, const char delimiter=',') CISST_THROW(std
Definition cmnDataFunctionsString.h:98
static void DeSerializeText(DataType &data, std::istream &inputStream, const char delimiter=',') CISST_THROW(std
Definition cmnDataFunctionsString.h:106
CMN_DATA_SERIALIZE_DESCRIPTION(std::string, str)
static size_t SerializeBinaryByteSize(const DataType &data)
Definition cmnDataFunctionsString.h:66
static double Scalar(const std::string &CMN_UNUSED(data), const size_t CMN_UNUSED(index)) CISST_THROW(std
Definition cmnDataFunctionsString.h:128
static std::string HumanReadable(const std::string &data)
Definition cmnDataFunctionsString.h:62
CMN_DATA_COPY_USING_ASSIGN(std::string)
static size_t ScalarNumber(const std::string &CMN_UNUSED(data))
Definition cmnDataFunctionsString.h:118
static size_t DeSerializeBinary(DataType &data, const char *buffer, size_t bufferSize, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat)
Definition cmnDataFunctionsString.h:75
static std::string ScalarDescription(const std::string &CMN_UNUSED(data), const size_t CMN_UNUSED(index), const std::string &CMN_UNUSED(userDescription)) CISST_THROW(std
Definition cmnDataFunctionsString.h:122
static void SerializeBinary(const DataType &data, std::ostream &outputStream) CISST_THROW(std
Definition cmnDataFunctionsString.h:82
Definition cmnDataFormat.h:30
Definition cmnDataFunctions.h:51
static void static SerializeText(const DataType &data, std::ostream &outputStream, const char delimiter=',') CISST_THROW(std void static DeSerializeText(DataType &data, std::istream &inputStream, const char delimiter=',') CISST_THROW(std void static SerializeBinary(const DataType &data, std::ostream &outputStream) CISST_THROW(std void static DeSerializeBinary(DataType &data, std::istream &inputStream, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat) CISST_THROW(std size_t SerializeBinaryByteSize(const DataType &data)
Definition cmnDataFunctions.h:132
#define CMN_DATA_IS_SPECIALIZED_TRUE(_type)
Definition cmnDataFunctionsMacros.h:226
size_t CISST_EXPORT cmnDataSerializeBinary(const std::string &data, char *buffer, size_t bufferSize)
size_t CISST_EXPORT cmnDataDeSerializeBinary(std::string &data, const char *buffer, size_t bufferSize, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat)
Macros to export the symbols of cisstCommon (in a Dll).
#define CISST_EXPORT
Definition cmnExportMacros.h:50
#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 cmnThrow(const _exceptionType &except, cmnLogLevel lod=CMN_LOG_LEVEL_INIT_ERROR)
Definition cmnThrow.h:76
STL namespace.