[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libcvd-members] gvars3 gvars3/gv3_implementation.hh gvars3/gvar...
From: |
Edward Rosten |
Subject: |
[libcvd-members] gvars3 gvars3/gv3_implementation.hh gvars3/gvar... |
Date: |
Fri, 27 May 2011 16:24:43 +0000 |
CVSROOT: /cvsroot/libcvd
Module name: gvars3
Changes by: Edward Rosten <edrosten> 11/05/27 16:24:43
Modified files:
gvars3 : gv3_implementation.hh gvars3.h serialize.h
src : gvars3.cc serialize.cc
Log message:
print_var_list now serializes with std::setprecision(20) <<
std::scientific
so that floats and doubles are recorded without any loss of precision.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gvars3/gvars3/gv3_implementation.hh?cvsroot=libcvd&r1=1.18&r2=1.19
http://cvs.savannah.gnu.org/viewcvs/gvars3/gvars3/gvars3.h?cvsroot=libcvd&r1=1.26&r2=1.27
http://cvs.savannah.gnu.org/viewcvs/gvars3/gvars3/serialize.h?cvsroot=libcvd&r1=1.18&r2=1.19
http://cvs.savannah.gnu.org/viewcvs/gvars3/src/gvars3.cc?cvsroot=libcvd&r1=1.12&r2=1.13
http://cvs.savannah.gnu.org/viewcvs/gvars3/src/serialize.cc?cvsroot=libcvd&r1=1.17&r2=1.18
Patches:
Index: gvars3/gv3_implementation.hh
===================================================================
RCS file: /cvsroot/libcvd/gvars3/gvars3/gv3_implementation.hh,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- gvars3/gv3_implementation.hh 23 Jun 2009 09:54:28 -0000 1.18
+++ gvars3/gv3_implementation.hh 27 May 2011 16:24:41 -0000 1.19
@@ -25,7 +25,7 @@
};
if(!(flags & SILENT))
- std::cerr << "? GV3::Register: " << type_name<T>() << "
" << name << " undefined. Defaults to " << serialize::to_string(default_val) <<
std::endl;
+ std::cerr << "? GV3::Register: " << type_name<T>() << "
" << name << " undefined. Defaults to " << serialize::to_string(default_val,0)
<< std::endl;
d = safe_replace(name, default_val);
}
Index: gvars3/gvars3.h
===================================================================
RCS file: /cvsroot/libcvd/gvars3/gvars3/gvars3.h,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -b -r1.26 -r1.27
--- gvars3/gvars3.h 4 Nov 2009 07:40:51 -0000 1.26
+++ gvars3/gvars3.h 27 May 2011 16:24:43 -0000 1.27
@@ -47,7 +47,7 @@
class BaseMap
{
public:
- virtual std::string get_as_string(const std::string& name)=0;
+ virtual std::string get_as_string(const std::string& name, bool
precise)=0;
virtual int set_from_string(const std::string& name, const
std::string& val)=0;
virtual std::string name()=0;
virtual std::vector<std::string> list_tags()=0;
@@ -189,14 +189,14 @@
return e;
}
- virtual std::string get_as_string(const
std::string& name)
+ virtual std::string get_as_string(const
std::string& name, bool precise)
{
DataIter i = data.find(name);
if(i == data.end())
i = data.insert(make_pair(name,
DefaultValue<T>::val())).first;
- return
serialize::to_string(i->second.get());
+ return
serialize::to_string(i->second.get(), precise);
}
virtual std::string name()
Index: gvars3/serialize.h
===================================================================
RCS file: /cvsroot/libcvd/gvars3/gvars3/serialize.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- gvars3/serialize.h 14 Apr 2011 20:18:12 -0000 1.18
+++ gvars3/serialize.h 27 May 2011 16:24:43 -0000 1.19
@@ -27,6 +27,7 @@
#include <vector>
#include <sstream>
#include <cstdio>
+#include <iomanip>
namespace GVars3
{
@@ -36,17 +37,27 @@
/// @param input stream to check.
int check_stream(std::istream& i);
+
+ /// Function which sets a stream into "precise" mode. This will
losslessly
+ /// save any numbers up to and including double precision.
+ inline void generic_setup(std::ostream& o, bool b)
+ {
+ if(b)
+ o << std::setprecision(20) << std::scientific;
+ }
+
//Define a serializer for everything that works with iostreams
//override to add new types with unusual serializers
- template<class T> std::string to_string(const T& val)
+ template<class T> std::string to_string(const T& val, bool
precise)
{
std::ostringstream o;
+ generic_setup(o,precise);
o << val;
return o.str();
}
- std::string to_string(const std::string& val);
+ std::string to_string(const std::string& val, bool);
template<class T> struct FromStream
{
@@ -111,9 +122,10 @@
}
};
- template<typename T> std::string to_string( const
std::vector<T> & v)
+ template<typename T> std::string to_string( const
std::vector<T> & v, bool precise)
{
std::ostringstream o;
+ generic_setup(o, precise);
o << "[ ";
for(unsigned i = 0; i < v.size(); ++i)
o << to_string(v[i]) << " ";
@@ -174,9 +186,10 @@
#ifdef GVARS3_HAVE_TOON
- template<int N> std::string to_string(const
TooN::Vector<N>& m)
+ template<int N> std::string to_string(const
TooN::Vector<N>& m, bool precise)
{
std::ostringstream o;
+ generic_setup(o, precise);
o << "[ ";
for(int i=0; i<m.size(); i++)
o << m[i] << " ";
@@ -184,9 +197,10 @@
return o.str();
}
- template<int N, int M> std::string to_string(const
TooN::Matrix<N, M>& m)
+ template<int N, int M> std::string to_string(const
TooN::Matrix<N, M>& m, bool precise)
{
std::ostringstream o;
+ generic_setup(o, precise);
o << "[ ";
for(int i=0; i<m.num_rows(); i++)
{
Index: src/gvars3.cc
===================================================================
RCS file: /cvsroot/libcvd/gvars3/src/gvars3.cc,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -b -r1.12 -r1.13
--- src/gvars3.cc 20 Apr 2009 12:59:20 -0000 1.12
+++ src/gvars3.cc 27 May 2011 16:24:43 -0000 1.13
@@ -52,7 +52,7 @@
string GV3::get_var(string name)
{
if(registered_type_and_trait.count(name))
- return
registered_type_and_trait[name].first->get_as_string(name);
+ return
registered_type_and_trait[name].first->get_as_string(name, 0);
else if(unmatched_tags.count(name))
return unmatched_tags[name];
else
@@ -85,7 +85,7 @@
for(map<string, std::pair<BaseMap*,int> >::iterator
i=registered_type_and_trait.begin(); i != registered_type_and_trait.end(); i++)
if(show_all || !(i->second.second & HIDDEN))
if(no_pattern || !fnmatch(pattern.c_str(),
i->first.c_str(), FNM_CASEFOLD))
- o << i->first << "=" << get_var(i->first) << endl;
+ o << i->first << "=" <<
i->second.first->get_as_string(i->first, 1) << endl;
if(show_all)
{
Index: src/serialize.cc
===================================================================
RCS file: /cvsroot/libcvd/gvars3/src/serialize.cc,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- src/serialize.cc 5 May 2009 10:59:46 -0000 1.17
+++ src/serialize.cc 27 May 2011 16:24:43 -0000 1.18
@@ -29,7 +29,7 @@
{
namespace serialize
{
- std::string to_string(const std::string& s)
+ std::string to_string(const std::string& s, bool)
{
ostringstream os;
os << "\"";
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [libcvd-members] gvars3 gvars3/gv3_implementation.hh gvars3/gvar...,
Edward Rosten <=