]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/textwriter.cpp
Use custom encoding for floats in binary format
[libs/datafile.git] / source / textwriter.cpp
index 0e5b6742653d80599809d645b77e1f91b9f60675..65f4870ea6e466816ee25d9dd40dbc550d00faa8 100644 (file)
@@ -9,9 +9,15 @@ namespace Msp {
 namespace DataFile {
 
 TextWriter::TextWriter(IO::Base &o):
-       WriterMode(o)
+       WriterMode(o),
+       float_format("%#.7g")
 { }
 
+void TextWriter::set_float_precision(unsigned fp)
+{
+       float_format = format("%%#.%dg", fp/4-1);
+}
+
 void TextWriter::write(const Statement &st)
 {
        write_(st, 0);
@@ -32,7 +38,7 @@ void TextWriter::write_(const Statement &st, unsigned level)
                else if(i->get_signature()==IntType::signature)
                        out.write(lexical_cast(i->get<IntType::Store>()));
                else if(i->get_signature()==FloatType::signature)
-                       out.write(format("%15g", (i->get<FloatType::Store>())));
+                       out.write(format(float_format, i->get<FloatType::Store>()));
                else if(i->get_signature()==SymbolType::signature)
                {
                        string name = i->get<SymbolType::Store>().name;