Use a struct for RangeAndMatches

This commit is contained in:
Maxime Coste 2015-04-23 21:44:20 +01:00
parent 045272ab8a
commit 4e1ed13f25

View File

@ -287,7 +287,7 @@ private:
{ {
size_t m_timestamp = -1; size_t m_timestamp = -1;
size_t m_regex_version = -1; size_t m_regex_version = -1;
using RangeAndMatches = std::pair<BufferRange, MatchList>; struct RangeAndMatches { BufferRange range; MatchList matches; };
Vector<RangeAndMatches, MemoryDomain::Highlight> m_matches; Vector<RangeAndMatches, MemoryDomain::Highlight> m_matches;
}; };
BufferSideCache<Cache> m_cache; BufferSideCache<Cache> m_cache;
@ -347,17 +347,17 @@ private:
auto it = std::upper_bound(matches.begin(), matches.end(), range, auto it = std::upper_bound(matches.begin(), matches.end(), range,
[](const BufferRange& lhs, const Cache::RangeAndMatches& rhs) [](const BufferRange& lhs, const Cache::RangeAndMatches& rhs)
{ return lhs.begin < rhs.first.end; }); { return lhs.begin < rhs.range.end; });
if (it == matches.end() or it->first.begin > range.end) if (it == matches.end() or it->range.begin > range.end)
{ {
it = matches.insert(it, Cache::RangeAndMatches{range, {}}); it = matches.insert(it, Cache::RangeAndMatches{range, {}});
add_matches(buffer, it->second, range); add_matches(buffer, it->matches, range);
} }
else if (it->second.empty()) else if (it->matches.empty())
{ {
it->first = range; it->range = range;
add_matches(buffer, it->second, range); add_matches(buffer, it->matches, range);
} }
else else
{ {
@ -365,8 +365,8 @@ private:
// but may work nicely with every reasonable regex, and // but may work nicely with every reasonable regex, and
// greatly reduces regex parsing. To change if we encounter // greatly reduces regex parsing. To change if we encounter
// regex that do not work great with that. // regex that do not work great with that.
BufferRange& old_range = it->first; BufferRange& old_range = it->range;
MatchList& matches = it->second; MatchList& matches = it->matches;
// Thanks to the ensure_first_face_is_capture_0 method, we know // Thanks to the ensure_first_face_is_capture_0 method, we know
// these point to the first/last matches capture 0. // these point to the first/last matches capture 0.
@ -401,7 +401,7 @@ private:
add_matches(buffer, matches, {last_begin, range.end}); add_matches(buffer, matches, {last_begin, range.end});
} }
} }
return it->second; return it->matches;
} }
}; };