diff options
author | vng <viktor.govako@gmail.com> | 2012-02-13 17:07:20 +0400 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 01:34:02 +0300 |
commit | 4c70ee2accd32817fb9e8666536b684d30099591 (patch) | |
tree | 55282fea213d83e366aebf0d28dccf6ffd88e493 /indexer/categories_holder.cpp | |
parent | 2ef07b3d4bc18f555e001ea197f85344616ff9e8 (diff) |
[search] Load categories.txt without intermediate strings.
Diffstat (limited to 'indexer/categories_holder.cpp')
-rw-r--r-- | indexer/categories_holder.cpp | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/indexer/categories_holder.cpp b/indexer/categories_holder.cpp index 4078c09e8f..21e393cced 100644 --- a/indexer/categories_holder.cpp +++ b/indexer/categories_holder.cpp @@ -4,6 +4,7 @@ #include "../coding/multilang_utf8_string.hpp" #include "../coding/reader.hpp" +#include "../coding/reader_streambuf.hpp" #include "../base/string_utils.hpp" #include "../base/logging.hpp" @@ -29,7 +30,7 @@ enum State { } // unnamed namespace -size_t CategoriesHolder::LoadFromStream(string const & buffer) +size_t CategoriesHolder::LoadFromStream(istream & s) { m_categories.clear(); @@ -40,10 +41,9 @@ size_t CategoriesHolder::LoadFromStream(string const & buffer) Classificator const & c = classif(); - istringstream stream(buffer); - while (stream.good()) + while (s.good()) { - getline(stream, line); + getline(s, line); strings::SimpleTokenizer iter(line, ":|"); switch (state) @@ -123,10 +123,9 @@ CategoriesHolder::CategoriesHolder() { } -CategoriesHolder::CategoriesHolder(Reader const & reader) +CategoriesHolder::CategoriesHolder(Reader * reader) { - string buffer; - reader.ReadAsString(buffer); - LoadFromStream(buffer); + ReaderStreamBuf buffer(reader); + istream s(&buffer); + LoadFromStream(s); } - |