libcvd-members
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[libcvd-members] gvars3/gvars3 serialize.h


From: Edward Rosten
Subject: [libcvd-members] gvars3/gvars3 serialize.h
Date: Thu, 04 Jun 2009 17:16:05 +0000

CVSROOT:        /cvsroot/libcvd
Module name:    gvars3
Changes by:     Edward Rosten <edrosten>        09/06/04 17:16:04

Modified files:
        gvars3         : serialize.h 

Log message:
        Fixes for deserialization.
        
        Optional [] for vector (and therefore Vector).

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gvars3/gvars3/serialize.h?cvsroot=libcvd&r1=1.14&r2=1.15

Patches:
Index: serialize.h
===================================================================
RCS file: /cvsroot/libcvd/gvars3/gvars3/serialize.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- serialize.h 27 May 2009 14:44:57 -0000      1.14
+++ serialize.h 4 Jun 2009 17:16:04 -0000       1.15
@@ -77,19 +77,24 @@
                                if((c = in.get()) == EOF)
                                        return v;
 
+                               bool bracket=1;
+
                                if(c != '[')
                                {
-                                       in.setstate(ios::failbit);
-                                       return v;
+                                       bracket = 0;
+                                       in.unget();
                                }
 
                                for(;;)
                                {
                                        in >> ws;
                                        
+                                       if(in.eof())
+                                               return v;
+                                       
                                        c = in.get();
                                        
-                                       if(c == EOF || c == ']') 
+                                       if(c == EOF || (bracket && c == ']')) 
                                                return v;
 
                                        in.unget();
@@ -126,7 +131,7 @@
                                int c;
 
                                if((c = in.get()) == EOF)
-                                       return in;
+                                       return v;
 
                                if(c != '[')
                                {
@@ -207,6 +212,7 @@
                                        if(i.fail() || i.bad() || (N != -1 && 
(int)v.size() != N) || v.size() == 0)
                                        {
                                                i.setstate(std::ios::failbit);
+                                               i.setstate(std::ios::badbit);
                                                return 
DefaultValue<TooN::Vector<N> >::val();
                                        }
                                        else
@@ -251,7 +257,7 @@
                        return FromStream<T>::from(i);
                }
 
-               template<class T> int from_string(std::string& s, T& t)
+               template<class T> int from_string(const std::string& s, T& t)
                {
                        std::istringstream is(s);
                        t = from_stream<T>(is);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]