]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/binarywriter.cpp
Fix gcc 4.3 style warnings
[libs/datafile.git] / source / binarywriter.cpp
index 95526bbae84666b6b02997ec68c724a1a357e6d8..dd63d3dcefa03e32efd83af1f30b096e9ba54718 100644 (file)
@@ -13,13 +13,13 @@ using namespace std;
 namespace Msp {
 namespace DataFile {
 
-BinaryWriter::BinaryWriter(ostream &o):
+BinaryWriter::BinaryWriter(IO::Base &o):
        WriterMode(o),
        next_st_id(3),
        next_enum_id(1)
 {
        dict[DictEntry("__st", "iss")]=1;
-       dict[DictEntry("__enum", "is")]=1;
+       dict[DictEntry("__enum", "is")]=2;
 }
 
 void BinaryWriter::write(const Statement &st)
@@ -78,7 +78,7 @@ void BinaryWriter::collect_keywords(const Statement &st)
                kst.args.push_back(de.args);
                write_(kst);
 
-               dict.insert(Dictionary::value_type(de, next_st_id++)).first;
+               dict[de]=next_st_id++;
        }
 
        for(ValueArray::const_iterator i=st.args.begin(); i!=st.args.end(); ++i)
@@ -99,10 +99,15 @@ void BinaryWriter::collect_keywords(const Statement &st)
 
 void BinaryWriter::write_int(long long n)
 {
-       unsigned i=1;
-       for(; n>>(i*7); ++i);
-       for(; i--;)
-               out.put(n>>(i*7) & 0x7F | (i?0x80:0));
+       unsigned i=sizeof(long long)-1;
+
+       if(n>=0)
+               for(; (i>0 && (n>>(i*7-1))==0); --i) ;
+       else
+               for(; (i>0 && (n>>(i*7-1))==-1); --i) ;
+
+       for(++i; i--;)
+               out.put((n>>(i*7) & 0x7F) | (i?0x80:0));
 }
 
 void BinaryWriter::write_string(const string &s)