20#ifndef _cmnDataFunctionsSet_h
21#define _cmnDataFunctionsSet_h
31template <
class _elementType>
50 std::ostream & outputStream,
51 const char delimiter)
CISST_THROW(std::runtime_error)
53 const size_t size = data.size();
56 outputStream << delimiter;
62 std::istream & inputStream,
63 const char delimiter)
CISST_THROW(std::runtime_error)
68 for (
size_t i = 0; i <
size; ++i) {
69 cmnDataDeSerializeTextDelimiter(inputStream, delimiter,
"std::set");
78 const std::string & userDescription =
"v")
80 std::string prefix = (userDescription ==
"") ?
"v[" : (userDescription +
"[");
81 std::stringstream indexSuffix;
82 std::stringstream description;
83 const size_t size = data.size();
84 description << cmnData<size_t>::SerializeDescription(
size, delimiter, (userDescription ==
"") ?
"v.size" : (userDescription +
".size"));
86 typename DataType::const_iterator iter = data.begin();
87 typename DataType::const_iterator
end = data.end();
88 for (; iter !=
end; ++iter, ++index) {
89 description << delimiter;
91 indexSuffix.str(std::string());
92 indexSuffix << index <<
"]";
93 description << cmnData<_elementType>::SerializeDescription(*iter, delimiter, prefix + indexSuffix.str());
95 return description.str();
106 std::istream & inputStream,
114 for (
size_t i = 0; i <
size; ++i) {
115 _elementType element;
117 data.insert(element);
129 typename DataType::const_iterator iter = data.begin();
130 typename DataType::const_iterator
end = data.end();
131 for (; iter !=
end; ++iter) {
138 const std::string & userDescription =
"v")
144 size_t currentIndex = 1;
145 typename DataType::const_iterator iter = data.begin();
146 typename DataType::const_iterator
end = data.end();
147 size_t elementIndex = 0;
148 for (; iter !=
end; ++iter, ++elementIndex) {
150 if (index < currentIndex + elementScalarNumber) {
151 std::stringstream ss;
152 ss << userDescription <<
"[" << elementIndex <<
"]";
155 currentIndex += elementScalarNumber;
157 cmnThrow(std::out_of_range(
"cmnDataScalarDescription: set index out of range"));
165 return static_cast<double>(data.size());
167 size_t currentIndex = 1;
168 typename DataType::const_iterator iter = data.begin();
169 typename DataType::const_iterator
end = data.end();
170 for (; iter !=
end; ++iter) {
172 if (index < currentIndex + elementScalarNumber) {
175 currentIndex += elementScalarNumber;
177 cmnThrow(std::out_of_range(
"cmnDataScalar: set index out of range"));
183template <
class _elementType>
184class cmnDataJSON<
std::set<_elementType> >
187 typedef std::set<_elementType> DataType;
189 static void SerializeText(
const DataType & data, Json::Value & jsonValue)
191 typename DataType::const_iterator iter = data.begin();
192 typename DataType::const_iterator
end = data.end();
194 for (; iter !=
end; ++iter, ++jsonIndex) {
195 cmnDataJSON<_elementType>::SerializeText(*iter, jsonValue[jsonIndex]);
199 static void DeSerializeText(DataType & data,
const Json::Value & jsonValue)
CISST_THROW(std::runtime_error)
202 const int size = jsonValue.size();
203 for (
int jsonIndex = 0; jsonIndex <
size; ++jsonIndex) {
204 _elementType element;
205 cmnDataJSON<_elementType>::DeSerializeText(element, jsonValue[jsonIndex]);
206 data.insert(element);
static std::string HumanReadable(const DataType &data)
Definition cmnDataFunctionsSet.h:44
@ IS_SPECIALIZED
Definition cmnDataFunctionsSet.h:35
static void DeSerializeText(DataType &data, std::istream &inputStream, const char delimiter) CISST_THROW(std
Definition cmnDataFunctionsSet.h:61
std::set< _elementType > DataType
Definition cmnDataFunctionsSet.h:37
static std::string SerializeDescription(const DataType &data, const char delimiter, const std::string &userDescription="v")
Definition cmnDataFunctionsSet.h:76
static size_t ScalarNumber(const DataType &data)
Definition cmnDataFunctionsSet.h:126
static std::string ScalarDescription(const DataType &data, const size_t index, const std::string &userDescription="v") CISST_THROW(std
Definition cmnDataFunctionsSet.h:137
static void SerializeText(const DataType &data, std::ostream &outputStream, const char delimiter) CISST_THROW(std
Definition cmnDataFunctionsSet.h:49
static bool ScalarNumberIsFixed(const DataType &CMN_UNUSED(data))
Definition cmnDataFunctionsSet.h:121
static void Copy(DataType &data, const DataType &source)
Definition cmnDataFunctionsSet.h:39
static void DeSerializeBinary(DataType &data, std::istream &inputStream, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat) CISST_THROW(std
Definition cmnDataFunctionsSet.h:105
static double Scalar(const DataType &data, const size_t index) CISST_THROW(std
Definition cmnDataFunctionsSet.h:161
static void SerializeBinary(const DataType &data, std::ostream &outputStream) CISST_THROW(std
Definition cmnDataFunctionsSet.h:98
Definition cmnDataFunctions.h:51
static size_t DeSerializeBinary(DataType &data, const char *buffer, size_t bufferSize, const cmnDataFormat &CMN_UNUSED(localFormat), const cmnDataFormat &CMN_UNUSED(remoteFormat))
static size_t SerializeBinary(const DataType &data, char *buffer, size_t bufferSize)
static std::string static ScalarDescription(const DataType &data, const size_t index, const std::string &userDescription="") CISST_THROW(std double static Scalar(const DataType &data, const size_t index) CISST_THROW(std size_t ScalarNumber(const DataType &data)
Definition cmnDataFunctions.h:162
size_t CISST_EXPORT cmnDataDeSerializeBinary_size_t(size_t &data, const char *buffer, size_t bufferSize, const cmnDataFormat &localFormat, const cmnDataFormat &remoteFormat)
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 cmnDataVectorHumanReadable(const _vectorType &data)
Definition cmnDataFunctionsVectorHelpers.h:44
Macros to export the symbols of cisstCommon (in a Dll).
#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
const_iterator end(void) const
Definition vctDynamicConstMatrixBase.h:209
size_type size(void) const
Definition vctDynamicConstMatrixBase.h:228