X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbinarywriter.cpp;h=9c9c893e890354bc1198c0cfdd4603ede61b3270;hb=e0af585ed57bdb5b1ea4f4a415fda13b5d99d2dc;hp=a8306c2cfd8eb98a6d5e14aac5358c742e0d4e44;hpb=6f94aaece716a31e75166e261cc47579288892b4;p=libs%2Fdatafile.git diff --git a/source/binarywriter.cpp b/source/binarywriter.cpp index a8306c2..9c9c893 100644 --- a/source/binarywriter.cpp +++ b/source/binarywriter.cpp @@ -9,11 +9,11 @@ namespace DataFile { BinaryWriter::BinaryWriter(IO::Base &o): WriterMode(o), - next_kwd_id(3), + next_kwd_id(1), next_str_id(1) { - dict[DictEntry("__kwd", "iss")] = 1; - dict[DictEntry("__str", "is")] = 2; + dict[DictEntry("__kwd", "iss")] = -1; + dict[DictEntry("__str", "is")] = -2; } void BinaryWriter::write(const Statement &st) @@ -24,7 +24,7 @@ void BinaryWriter::write(const Statement &st) void BinaryWriter::write_(const Statement &st) { - unsigned id = get_item(dict, DictEntry(st.keyword, st.get_signature())); + int id = get_item(dict, DictEntry(st.keyword, st.get_signature())); write_int(id); for(Statement::Arguments::const_iterator j = st.args.begin(); j!=st.args.end(); ++j) @@ -89,9 +89,9 @@ void BinaryWriter::collect_keywords(const Statement &st) collect_keywords(*i); } -void BinaryWriter::write_int(long long n) +void BinaryWriter::write_int(IntType::Store n) { - unsigned i = sizeof(long long)-1; + unsigned i = sizeof(IntType::Store)-1; if(n>=0) for(; (i>0 && (n>>(i*7-1))==0); --i) ; @@ -102,7 +102,7 @@ void BinaryWriter::write_int(long long n) out.put((n>>(i*7) & 0x7F) | (i?0x80:0)); } -void BinaryWriter::write_string(const string &s) +void BinaryWriter::write_string(const StringType::Store &s) { StringMap::const_iterator i = strings.find(s); if(i!=strings.end()) @@ -114,7 +114,7 @@ void BinaryWriter::write_string(const string &s) } } -void BinaryWriter::write_float(float f) +void BinaryWriter::write_float(FloatType::Store f) { union { @@ -132,7 +132,7 @@ void BinaryWriter::write_float(float f) #endif } -void BinaryWriter::write_symbol(const Symbol &s) +void BinaryWriter::write_symbol(const SymbolType::Store &s) { write_int(get_item(strings, s.name)); }