From ec2b5a4da1b2117e4c1e4f040d6c4673b21c8548 Mon Sep 17 00:00:00 2001 From: vng Date: Tue, 2 Sep 2014 13:38:21 +0300 Subject: [PATCH] =?UTF-8?q?[generator]=20Return=20feature=20offset=20in=20?= =?UTF-8?q?=E2=80=9Cdat=E2=80=9D=20file=20section=20as=20it=E2=80=99s=20ID?= =?UTF-8?q?.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- generator/feature_generator.cpp | 18 +++++++++--------- generator/feature_generator.hpp | 3 ++- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/generator/feature_generator.cpp b/generator/feature_generator.cpp index 5550812b3b..ac6fa2cea2 100644 --- a/generator/feature_generator.cpp +++ b/generator/feature_generator.cpp @@ -142,18 +142,18 @@ uint32_t FeaturesCollector::GetFileSize(FileWriter const & f) return ret; } -void FeaturesCollector::WriteFeatureBase(vector const & bytes, FeatureBuilder1 const & fb) +uint32_t FeaturesCollector::WriteFeatureBase(vector const & bytes, FeatureBuilder1 const & fb) { size_t const sz = bytes.size(); - CHECK ( sz != 0, ("Empty feature not allowed here!") ); + CHECK(sz != 0, ("Empty feature not allowed here!")); - if (sz > 0) - { - WriteVarUint(m_datFile, sz); - m_datFile.Write(&bytes[0], sz); + uint32_t const offset = GetFileSize(m_datFile); - m_bounds.Add(fb.GetLimitRect()); - } + WriteVarUint(m_datFile, sz); + m_datFile.Write(&bytes[0], sz); + + m_bounds.Add(fb.GetLimitRect()); + return offset; } void FeaturesCollector::operator() (FeatureBuilder1 const & fb) @@ -163,7 +163,7 @@ void FeaturesCollector::operator() (FeatureBuilder1 const & fb) FeatureBuilder1::buffer_t bytes; fb.Serialize(bytes); - WriteFeatureBase(bytes, fb); + (void)WriteFeatureBase(bytes, fb); } /////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/generator/feature_generator.hpp b/generator/feature_generator.hpp index 411b0b0a66..2817c3f0be 100644 --- a/generator/feature_generator.hpp +++ b/generator/feature_generator.hpp @@ -27,7 +27,8 @@ namespace feature protected: static uint32_t GetFileSize(FileWriter const & f); - void WriteFeatureBase(vector const & bytes, FeatureBuilder1 const & fb); + /// @return feature offset in the file, which is used as an ID later + uint32_t WriteFeatureBase(vector const & bytes, FeatureBuilder1 const & fb); public: FeaturesCollector(string const & fName);