From d13fb249865703901b77f48c5fed1864f06e1c63 Mon Sep 17 00:00:00 2001 From: Adam Lesinski Date: Tue, 12 May 2015 20:40:48 -0700 Subject: AAPT2: Debug: Dump only targetted style Change-Id: Id7c5a4b5d0880520e1fea05e5a31d398946c5f05 --- tools/aapt2/Debug.cpp | 47 +++++++++++++++++++++++++++++------------------ tools/aapt2/Debug.h | 4 +++- tools/aapt2/Flag.cpp | 35 ++++++++++++++++++++++++++++------- tools/aapt2/Flag.h | 3 +++ tools/aapt2/Main.cpp | 17 ++++++++++++++++- 5 files changed, 79 insertions(+), 27 deletions(-) (limited to 'tools') diff --git a/tools/aapt2/Debug.cpp b/tools/aapt2/Debug.cpp index a7b9bbaa28f3..cf222c68de55 100644 --- a/tools/aapt2/Debug.cpp +++ b/tools/aapt2/Debug.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -135,43 +136,53 @@ static size_t getNodeIndex(const std::vector& names, const Resourc return std::distance(names.begin(), iter); } -void Debug::printStyleGraph(const std::shared_ptr& table) { - std::vector names; +void Debug::printStyleGraph(const std::shared_ptr& table, + const ResourceName& targetStyle) { std::map> graph; - for (const auto& type : *table) { - for (const auto& entry : type->entries) { - ResourceName name = { table->getPackage(), type->type, entry->name }; + std::queue stylesToVisit; + stylesToVisit.push(targetStyle); + for (; !stylesToVisit.empty(); stylesToVisit.pop()) { + const ResourceName& styleName = stylesToVisit.front(); + std::set& parents = graph[styleName]; + if (!parents.empty()) { + // We've already visited this style. + continue; + } + + const ResourceTableType* type; + const ResourceEntry* entry; + std::tie(type, entry) = table->findResource(styleName); + if (entry) { for (const auto& value : entry->values) { visitFunc