X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbinarywriter.cpp;h=87111f00d091ecada4056e70f5c5c299190f20bc;hb=e14c01b5775dd2e324b16ff49498db9b9113c523;hp=0fbf8ce503058f5aaa89734250856777e083409e;hpb=193d36c8ce13cf2c5cd055fbd008f3003dda0a3e;p=libs%2Fdatafile.git diff --git a/source/binarywriter.cpp b/source/binarywriter.cpp index 0fbf8ce..87111f0 100644 --- a/source/binarywriter.cpp +++ b/source/binarywriter.cpp @@ -11,10 +11,7 @@ namespace Msp { namespace DataFile { BinaryWriter::BinaryWriter(Output &o): - WriterMode(o), - next_kwd_id(1), - next_str_id(1), - float_precision(32) + WriterMode(o) { dict[StatementKey("__kwd", "iss")] = -1; dict[StatementKey("__str", "is")] = -2; @@ -43,19 +40,19 @@ void BinaryWriter::write_(const Statement &st) int id = get_item(dict, StatementKey(st.keyword, st.get_signature())); write_int(id); - for(Statement::Arguments::const_iterator j = st.args.begin(); j!=st.args.end(); ++j) - switch(j->get_signature()) + for(const Value &a: st.args) + switch(a.get_signature()) { - case IntType::signature: write_int (j->get()); break; - case StringType::signature: write_string(j->get()); break; - case BoolType::signature: write_int (j->get()); break; - case FloatType::signature: write_float (j->get()); break; - case SymbolType::signature: write_symbol(j->get()); break; + case IntType::signature: write_int (a.get()); break; + case StringType::signature: write_string(a.get()); break; + case BoolType::signature: write_int (a.get()); break; + case FloatType::signature: write_float (a.get()); break; + case SymbolType::signature: write_symbol(a.get()); break; } write_int(st.sub.size()); - for(list::const_iterator j = st.sub.begin(); j!=st.sub.end(); ++j) - write(*j); + for(const Statement &s: st.sub) + write(s); } void BinaryWriter::collect_keywords(const Statement &st) @@ -74,15 +71,15 @@ void BinaryWriter::collect_keywords(const Statement &st) dict[key] = next_kwd_id++; } - for(vector::const_iterator i = st.args.begin(); i!=st.args.end(); ++i) + for(const Value &a: st.args) { - char sig = i->get_signature(); + char sig = a.get_signature(); string str; if(sig==SymbolType::signature) - str = i->get().name; + str = a.get().name; else if(sig==StringType::signature) { - str = i->get(); + str = a.get(); if(str.size()>32) continue; } @@ -101,8 +98,8 @@ void BinaryWriter::collect_keywords(const Statement &st) strings[str] = next_str_id++; } - for(list::const_iterator i = st.sub.begin(); i!=st.sub.end(); ++i) - collect_keywords(*i); + for(const Statement &s: st.sub) + collect_keywords(s); } void BinaryWriter::write_int(IntType::Store n) @@ -167,7 +164,7 @@ void BinaryWriter::write_float(FloatType::Store f) } } - UInt64 encoded = bf.compose(float_precision); + uint64_t encoded = bf.compose(float_precision); for(unsigned i=float_precision/8; i--; ) out.put((encoded>>(i*8))&0xFF); }