From 1d6d8ac9feb221f47692250647269f3753bdee60 Mon Sep 17 00:00:00 2001 From: Yurii Zubrytskyi Date: Wed, 3 Jul 2024 16:10:17 -0700 Subject: [res] Simplify XmlPullParser::FindAttribute() and StringPool::Sort 1. FindAttribute used to do lots of work that C++17 does automatically 2. Use function_ref for a more efficient callback passing Test: aapt2_tests Flag: EXEMPT minor refactor Change-Id: I4f172cca16c05422992b107e347ed01479fff898 --- libs/androidfw/StringPool.cpp | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) (limited to 'libs/androidfw/StringPool.cpp') diff --git a/libs/androidfw/StringPool.cpp b/libs/androidfw/StringPool.cpp index ad445c042e63..629f14683b19 100644 --- a/libs/androidfw/StringPool.cpp +++ b/libs/androidfw/StringPool.cpp @@ -297,24 +297,22 @@ void StringPool::Prune() { template static void SortEntries( std::vector>& entries, - const std::function& cmp) { + base::function_ref cmp) { using UEntry = std::unique_ptr; + std::sort(entries.begin(), entries.end(), [cmp](const UEntry& a, const UEntry& b) -> bool { + int r = cmp(a->context, b->context); + if (r == 0) { + r = a->value.compare(b->value); + } + return r < 0; + }); +} - if (cmp != nullptr) { - std::sort(entries.begin(), entries.end(), [&cmp](const UEntry& a, const UEntry& b) -> bool { - int r = cmp(a->context, b->context); - if (r == 0) { - r = a->value.compare(b->value); - } - return r < 0; - }); - } else { - std::sort(entries.begin(), entries.end(), - [](const UEntry& a, const UEntry& b) -> bool { return a->value < b->value; }); - } +void StringPool::Sort() { + Sort([](auto&&, auto&&) { return 0; }); } -void StringPool::Sort(const std::function& cmp) { +void StringPool::Sort(base::function_ref cmp) { SortEntries(styles_, cmp); SortEntries(strings_, cmp); ReAssignIndices(); -- cgit v1.2.3-59-g8ed1b