diff --git a/coding/file_writer.cpp b/coding/file_writer.cpp index bec2f10d4c..03b0b5a959 100644 --- a/coding/file_writer.cpp +++ b/coding/file_writer.cpp @@ -16,6 +16,8 @@ FileWriter::FileWriter(string const & fileName, FileWriter::Op op) FileWriter::~FileWriter() { + if (m_pFileData) + Flush(); } int64_t FileWriter::Pos() const diff --git a/generator/feature_sorter.cpp b/generator/feature_sorter.cpp index 46df3741b2..78dfef98e8 100644 --- a/generator/feature_sorter.cpp +++ b/generator/feature_sorter.cpp @@ -15,13 +15,13 @@ #include "../platform/platform.hpp" -#include "../version/version.hpp" +#include "../version/ver_serialization.hpp" #include "../coding/file_container.hpp" #include "../base/string_utils.hpp" #include "../base/logging.hpp" -#include "../base/timer.hpp" + namespace { @@ -106,19 +106,12 @@ namespace feature { FileWriter w = m_writer.GetWriter(HEADER_FILE_TAG); m_header.Save(w); - w.Flush(); } // write version information { - static uint32_t generatorStartTime = my::TodayAsYYMMDD(); - FileWriter w = m_writer.GetWriter(VERSION_FILE_TAG); - - WriteVarUint(w, Version::BUILD); - WriteVarUint(w, Version::GIT_HASH); - // actual date of data generation - WriteVarUint(w, generatorStartTime); + ver::WriteVersion(w); } // assume like we close files diff --git a/version/ver_serialization.hpp b/version/ver_serialization.hpp new file mode 100644 index 0000000000..060163c873 --- /dev/null +++ b/version/ver_serialization.hpp @@ -0,0 +1,22 @@ +#pragma once +#include "version.hpp" + +#include "../coding/write_to_sink.hpp" + +#include "../base/timer.hpp" + + +namespace ver +{ + template void WriteVersion(TSink & sink) + { + // static is used for equal time stamp for all "mwm" files in one generation process + static uint32_t generatorStartTime = my::TodayAsYYMMDD(); + + WriteToSink(sink, static_cast(Version::BUILD)); + WriteToSink(sink, static_cast(Version::GIT_HASH)); + + // actual date of data generation + WriteToSink(sink, generatorStartTime); + } +} diff --git a/version/version.pro b/version/version.pro index 1bfe9461a3..5aed88ffd8 100644 --- a/version/version.pro +++ b/version/version.pro @@ -26,4 +26,9 @@ CONFIG(release, debug|release)|CONFIG(production) { QMAKE_EXTRA_TARGETS += versiontarget } -SOURCES += empty_stub.cpp +HEADERS += \ + version.hpp \ + ver_serialization.hpp \ + +SOURCES += \ + empty_stub.cpp \