diff --git a/Facade.h b/Facade.h index 442e767..4e16c15 100644 --- a/Facade.h +++ b/Facade.h @@ -38,16 +38,14 @@ struct Facade { m.type == weaselab::VersionedMap::Set || m.param2Len == 0 ? String(m.param1, m.param1Len) + zero : String(m.param2, m.param2Len); - auto remaining = - facade->unversionedRead(mEnd, readUntil, limit, true); - result.insert(result.end(), remaining.begin(), remaining.end()); + facade->unversionedRead(mEnd, readUntil, limit, true, result); if (limit == 0) { return result; } switch (m.type) { case weaselab::VersionedMap::Set: { - result.push_back( - {String(m.param1, m.param1Len), String(m.param2, m.param2Len)}); + result.emplace_back(String(m.param1, m.param1Len), + String(m.param2, m.param2Len)); --limit; if (limit == 0) { return result; @@ -59,8 +57,7 @@ struct Facade { break; } } - auto remaining = facade->unversionedRead(begin, readUntil, limit, true); - result.insert(result.end(), remaining.begin(), remaining.end()); + facade->unversionedRead(begin, readUntil, limit, true, result); return result; } else { weaselab::VersionedMap::Iterator iter = versionedIter[0]; @@ -69,15 +66,13 @@ struct Facade { for (; iter != endIter; ++iter) { auto m = *iter; const auto mBegin = String(m.param1, m.param1Len); - auto remaining = - facade->unversionedRead(readThrough, mBegin, limit, false); - result.insert(result.end(), remaining.begin(), remaining.end()); + facade->unversionedRead(readThrough, mBegin, limit, false, result); if (limit == 0) { return result; } switch (m.type) { case weaselab::VersionedMap::Set: { - result.push_back({mBegin, String(m.param2, m.param2Len)}); + result.emplace_back(mBegin, String(m.param2, m.param2Len)); --limit; if (limit == 0) { return result; @@ -89,9 +84,7 @@ struct Facade { break; } } - auto remaining = - facade->unversionedRead(readThrough, end, limit, false); - result.insert(result.end(), remaining.begin(), remaining.end()); + facade->unversionedRead(readThrough, end, limit, false, result); return result; } } @@ -138,29 +131,27 @@ struct Facade { int64_t getVersion() const { return versioned.getVersion(); } int64_t getOldestVersion() const { return versioned.getOldestVersion(); } - std::vector> unversionedRead(const String &begin, - const String &end, - int &limit, - bool reverse) const { + void unversionedRead(const String &begin, const String &end, int &limit, + bool reverse, + std::vector> &result) const { if (begin >= end) { - return {}; + return; } - std::vector> result; if (reverse) { if (unversioned.empty()) { - return result; + return; } auto iter = unversioned.lower_bound(end); const auto beginIter = unversioned.begin(); if (iter == beginIter) { - return result; + return; } --iter; for (; iter->first >= begin && limit > 0; --iter) { result.push_back(*iter); --limit; if (iter == beginIter) { - return result; + return; } } } else { @@ -171,7 +162,6 @@ struct Facade { --limit; } } - return result; } std::map unversioned;