22 #ifndef SERIALIZABLETYPE_H
23 #define SERIALIZABLETYPE_H
33 #include <tulip/TypeInterface.h>
35 #define FORWARD_TOSTRING(T) static std::string toString(const T::RealType &v) { std::ostringstream oss; write(oss, v); return oss.str(); }
36 #define FORWARD_FROMSTRING(T) static bool fromString(T::RealType &v, const std::string &s) { std::istringstream iss(s); return read(iss, v); }
37 #define FORWARD_STRING_METHODS(T) FORWARD_FROMSTRING(T) FORWARD_TOSTRING(T)
41 class TLP_SCOPE SerializableType:
public TypeInterface<T> {
43 static void write(std::ostream& oss,
const typename TypeInterface<T>::RealType& v) {
46 static bool read(std::istream& iss,
typename TypeInterface<T>::RealType& v) {
49 FORWARD_STRING_METHODS(
typename TypeInterface<T>)
52 template<
typename VT,
int openParen>
53 class TLP_SCOPE SerializableVectorType:
public TypeInterface<std::vector<VT> > {
54 static bool readVector(std::istream& is, std::vector<VT>& v) {
60 bool sepFound =
false;
63 while((is >> c) && isspace(c)) {}
83 if (firstVal || sepFound)
89 if (firstVal || sepFound) {
90 if (openParen && c !=
'(')
107 static void writeVector(std::ostream& os,
const std::vector<VT>& v) {
110 for(
unsigned int i = 0 ; i < v.size() ; i++ ) {
121 static void write(std::ostream& oss,
const typename TypeInterface<std::vector<VT> >::RealType& v) {
124 static bool read(std::istream& iss,
typename TypeInterface<std::vector<VT> >::RealType& v) {
125 return readVector(iss, v);
127 FORWARD_STRING_METHODS(
typename TypeInterface<std::vector<VT> >)
131 #endif // SERIALIZABLETYPE_H