(De)composition is not static any more

This commit is contained in:
2016-03-01 15:36:21 +01:00
parent ce89d26373
commit 6bb0cd7b89
18 changed files with 215 additions and 11603 deletions

View File

@@ -30,12 +30,12 @@
///
inline std::ostream& operator <<(std::ostream& stream, const ZRCola::translation_db &t_db)
{
assert(t_db.comp_index.size() == t_db.decomp_index.size());
assert(t_db.idxComp.size() == t_db.idxDecomp.size());
unsigned __int32 count;
// Write index count.
std::vector<ZRCola::translation_db::index>::size_type trans_count = t_db.comp_index.size();
std::vector<ZRCola::translation_db::index>::size_type trans_count = t_db.idxComp.size();
#if defined(_WIN64) || defined(__x86_64__) || defined(__ppc64__)
// 4G check
if (trans_count > 0xffffffff) {
@@ -49,11 +49,11 @@ inline std::ostream& operator <<(std::ostream& stream, const ZRCola::translation
// Write composition index.
if (stream.fail()) return stream;
stream.write((const char*)t_db.comp_index.data(), sizeof(ZRCola::translation_db::index)*count);
stream.write((const char*)t_db.idxComp.data(), sizeof(ZRCola::translation_db::index)*count);
// Write decomposition index.
if (stream.fail()) return stream;
stream.write((const char*)t_db.decomp_index.data(), sizeof(ZRCola::translation_db::index)*count);
stream.write((const char*)t_db.idxDecomp.data(), sizeof(ZRCola::translation_db::index)*count);
// Write data count.
std::vector<wchar_t>::size_type data_count = t_db.data.size();
@@ -258,9 +258,9 @@ int _tmain(int argc, _TCHAR *argv[])
ZRCola::translation_db t_db;
// Preallocate memory.
t_db. comp_index.reserve(trans_count);
t_db.decomp_index.reserve(trans_count);
t_db. data.reserve(trans_count*4);
t_db.idxComp .reserve(trans_count);
t_db.idxDecomp.reserve(trans_count);
t_db.data .reserve(trans_count*4);
// Parse translations and build index and data.
while (!ZRCola::DBSource::IsEOF(rs)) {
@@ -273,8 +273,8 @@ int _tmain(int argc, _TCHAR *argv[])
for (std::wstring::size_type i = 0, n = trans.str.length(); i < n; i++)
t_db.data.push_back(trans.str[i]);
ti.end = t_db.data.size();
t_db.comp_index.push_back(ti);
t_db.decomp_index.push_back(ti);
t_db.idxComp .push_back(ti);
t_db.idxDecomp.push_back(ti);
} else
has_errors = true;
@@ -282,8 +282,8 @@ int _tmain(int argc, _TCHAR *argv[])
}
// Sort indices.
qsort_s(t_db. comp_index.data(), trans_count, sizeof(ZRCola::translation_db::index), CompareCompositionIndex , t_db.data.data());
qsort_s(t_db.decomp_index.data(), trans_count, sizeof(ZRCola::translation_db::index), CompareDecompositionIndex, t_db.data.data());
qsort_s(t_db.idxComp .data(), trans_count, sizeof(ZRCola::translation_db::index), CompareCompositionIndex , t_db.data.data());
qsort_s(t_db.idxDecomp.data(), trans_count, sizeof(ZRCola::translation_db::index), CompareDecompositionIndex, t_db.data.data());
// Write translations to file.
dst << ZRCola::translation_rec(t_db);

View File

@@ -22,7 +22,7 @@
#include "../include/zrcola.h"
#include "dbsource.h"
#include <zrcola/compose.h>
#include <zrcola/translate.h>
#include <wx/app.h>
#include <wx/cmdline.h>