diff options
author | Adam Lesinski <adamlesinski@google.com> | 2016-10-19 12:18:14 -0700 |
---|---|---|
committer | Adam Lesinski <adamlesinski@google.com> | 2016-10-19 12:18:14 -0700 |
commit | cacb28f2d60858106e2819cc7d95a65e8bda890b (patch) | |
tree | c8ac4af72b0a9599983567029e5680c40f9883a3 /tools/aapt2/Debug.cpp | |
parent | 733f0bc08ea0c93d095016a791c2914658d0cdde (diff) |
Use Google3 style guide with .clang-format
Test: style change only, builds ok
Change-Id: I885180e24cb2e7b58cfb4967c3bcb40058ce4078
Diffstat (limited to 'tools/aapt2/Debug.cpp')
-rw-r--r-- | tools/aapt2/Debug.cpp | 454 |
1 files changed, 229 insertions, 225 deletions
diff --git a/tools/aapt2/Debug.cpp b/tools/aapt2/Debug.cpp index 304e571832f4..965db9ebc9c8 100644 --- a/tools/aapt2/Debug.cpp +++ b/tools/aapt2/Debug.cpp @@ -17,8 +17,8 @@ #include "Debug.h" #include "ResourceTable.h" #include "ResourceValues.h" -#include "util/Util.h" #include "ValueVisitor.h" +#include "util/Util.h" #include <algorithm> #include <iostream> @@ -31,275 +31,279 @@ namespace aapt { class PrintVisitor : public ValueVisitor { -public: - using ValueVisitor::visit; - - void visit(Attribute* attr) override { - std::cout << "(attr) type="; - attr->printMask(&std::cout); - static constexpr uint32_t kMask = android::ResTable_map::TYPE_ENUM | - android::ResTable_map::TYPE_FLAGS; - if (attr->typeMask & kMask) { - for (const auto& symbol : attr->symbols) { - std::cout << "\n " << symbol.symbol.name.value().entry; - if (symbol.symbol.id) { - std::cout << " (" << symbol.symbol.id.value() << ")"; - } - std::cout << " = " << symbol.value; - } + public: + using ValueVisitor::visit; + + void visit(Attribute* attr) override { + std::cout << "(attr) type="; + attr->printMask(&std::cout); + static constexpr uint32_t kMask = + android::ResTable_map::TYPE_ENUM | android::ResTable_map::TYPE_FLAGS; + if (attr->typeMask & kMask) { + for (const auto& symbol : attr->symbols) { + std::cout << "\n " << symbol.symbol.name.value().entry; + if (symbol.symbol.id) { + std::cout << " (" << symbol.symbol.id.value() << ")"; } + std::cout << " = " << symbol.value; + } } - - void visit(Style* style) override { - std::cout << "(style)"; - if (style->parent) { - const Reference& parentRef = style->parent.value(); - std::cout << " parent="; - if (parentRef.name) { - if (parentRef.privateReference) { - std::cout << "*"; - } - std::cout << parentRef.name.value() << " "; - } - - if (parentRef.id) { - std::cout << parentRef.id.value(); - } + } + + void visit(Style* style) override { + std::cout << "(style)"; + if (style->parent) { + const Reference& parentRef = style->parent.value(); + std::cout << " parent="; + if (parentRef.name) { + if (parentRef.privateReference) { + std::cout << "*"; } + std::cout << parentRef.name.value() << " "; + } - for (const auto& entry : style->entries) { - std::cout << "\n "; - if (entry.key.name) { - const ResourceName& name = entry.key.name.value(); - if (!name.package.empty()) { - std::cout << name.package << ":"; - } - std::cout << name.entry; - } - - if (entry.key.id) { - std::cout << "(" << entry.key.id.value() << ")"; - } - - std::cout << "=" << *entry.value; - } + if (parentRef.id) { + std::cout << parentRef.id.value(); + } } - void visit(Array* array) override { - array->print(&std::cout); - } + for (const auto& entry : style->entries) { + std::cout << "\n "; + if (entry.key.name) { + const ResourceName& name = entry.key.name.value(); + if (!name.package.empty()) { + std::cout << name.package << ":"; + } + std::cout << name.entry; + } - void visit(Plural* plural) override { - plural->print(&std::cout); + if (entry.key.id) { + std::cout << "(" << entry.key.id.value() << ")"; + } + + std::cout << "=" << *entry.value; } + } + + void visit(Array* array) override { array->print(&std::cout); } - void visit(Styleable* styleable) override { - std::cout << "(styleable)"; - for (const auto& attr : styleable->entries) { - std::cout << "\n "; - if (attr.name) { - const ResourceName& name = attr.name.value(); - if (!name.package.empty()) { - std::cout << name.package << ":"; - } - std::cout << name.entry; - } - - if (attr.id) { - std::cout << "(" << attr.id.value() << ")"; - } + void visit(Plural* plural) override { plural->print(&std::cout); } + + void visit(Styleable* styleable) override { + std::cout << "(styleable)"; + for (const auto& attr : styleable->entries) { + std::cout << "\n "; + if (attr.name) { + const ResourceName& name = attr.name.value(); + if (!name.package.empty()) { + std::cout << name.package << ":"; } - } + std::cout << name.entry; + } - void visitItem(Item* item) override { - item->print(&std::cout); + if (attr.id) { + std::cout << "(" << attr.id.value() << ")"; + } } + } + + void visitItem(Item* item) override { item->print(&std::cout); } }; -void Debug::printTable(ResourceTable* table, const DebugPrintTableOptions& options) { - PrintVisitor visitor; +void Debug::printTable(ResourceTable* table, + const DebugPrintTableOptions& options) { + PrintVisitor visitor; - for (auto& package : table->packages) { - std::cout << "Package name=" << package->name; - if (package->id) { - std::cout << " id=" << std::hex << (int) package->id.value() << std::dec; + for (auto& package : table->packages) { + std::cout << "Package name=" << package->name; + if (package->id) { + std::cout << " id=" << std::hex << (int)package->id.value() << std::dec; + } + std::cout << std::endl; + + for (const auto& type : package->types) { + std::cout << "\n type " << type->type; + if (type->id) { + std::cout << " id=" << std::hex << (int)type->id.value() << std::dec; + } + std::cout << " entryCount=" << type->entries.size() << std::endl; + + std::vector<const ResourceEntry*> sortedEntries; + for (const auto& entry : type->entries) { + auto iter = std::lower_bound( + sortedEntries.begin(), sortedEntries.end(), entry.get(), + [](const ResourceEntry* a, const ResourceEntry* b) -> bool { + if (a->id && b->id) { + return a->id.value() < b->id.value(); + } else if (a->id) { + return true; + } else { + return false; + } + }); + sortedEntries.insert(iter, entry.get()); + } + + for (const ResourceEntry* entry : sortedEntries) { + ResourceId id(package->id ? package->id.value() : uint8_t(0), + type->id ? type->id.value() : uint8_t(0), + entry->id ? entry->id.value() : uint16_t(0)); + ResourceName name(package->name, type->type, entry->name); + + std::cout << " spec resource " << id << " " << name; + switch (entry->symbolStatus.state) { + case SymbolState::kPublic: + std::cout << " PUBLIC"; + break; + case SymbolState::kPrivate: + std::cout << " _PRIVATE_"; + break; + default: + break; } + std::cout << std::endl; - for (const auto& type : package->types) { - std::cout << "\n type " << type->type; - if (type->id) { - std::cout << " id=" << std::hex << (int) type->id.value() << std::dec; - } - std::cout << " entryCount=" << type->entries.size() << std::endl; - - std::vector<const ResourceEntry*> sortedEntries; - for (const auto& entry : type->entries) { - auto iter = std::lower_bound(sortedEntries.begin(), sortedEntries.end(), entry.get(), - [](const ResourceEntry* a, const ResourceEntry* b) -> bool { - if (a->id && b->id) { - return a->id.value() < b->id.value(); - } else if (a->id) { - return true; - } else { - return false; - } - }); - sortedEntries.insert(iter, entry.get()); - } - - for (const ResourceEntry* entry : sortedEntries) { - ResourceId id(package->id ? package->id.value() : uint8_t(0), - type->id ? type->id.value() : uint8_t(0), - entry->id ? entry->id.value() : uint16_t(0)); - ResourceName name(package->name, type->type, entry->name); - - std::cout << " spec resource " << id << " " << name; - switch (entry->symbolStatus.state) { - case SymbolState::kPublic: std::cout << " PUBLIC"; break; - case SymbolState::kPrivate: std::cout << " _PRIVATE_"; break; - default: break; - } - - std::cout << std::endl; - - for (const auto& value : entry->values) { - std::cout << " (" << value->config << ") "; - value->value->accept(&visitor); - if (options.showSources && !value->value->getSource().path.empty()) { - std::cout << " src=" << value->value->getSource(); - } - std::cout << std::endl; - } - } + for (const auto& value : entry->values) { + std::cout << " (" << value->config << ") "; + value->value->accept(&visitor); + if (options.showSources && !value->value->getSource().path.empty()) { + std::cout << " src=" << value->value->getSource(); + } + std::cout << std::endl; } + } } + } } -static size_t getNodeIndex(const std::vector<ResourceName>& names, const ResourceName& name) { - auto iter = std::lower_bound(names.begin(), names.end(), name); - assert(iter != names.end() && *iter == name); - return std::distance(names.begin(), iter); +static size_t getNodeIndex(const std::vector<ResourceName>& names, + const ResourceName& name) { + auto iter = std::lower_bound(names.begin(), names.end(), name); + assert(iter != names.end() && *iter == name); + return std::distance(names.begin(), iter); } -void Debug::printStyleGraph(ResourceTable* table, const ResourceName& targetStyle) { - std::map<ResourceName, std::set<ResourceName>> graph; - - std::queue<ResourceName> stylesToVisit; - stylesToVisit.push(targetStyle); - for (; !stylesToVisit.empty(); stylesToVisit.pop()) { - const ResourceName& styleName = stylesToVisit.front(); - std::set<ResourceName>& parents = graph[styleName]; - if (!parents.empty()) { - // We've already visited this style. - continue; - } - - Maybe<ResourceTable::SearchResult> result = table->findResource(styleName); - if (result) { - ResourceEntry* entry = result.value().entry; - for (const auto& value : entry->values) { - if (Style* style = valueCast<Style>(value->value.get())) { - if (style->parent && style->parent.value().name) { - parents.insert(style->parent.value().name.value()); - stylesToVisit.push(style->parent.value().name.value()); - } - } - } - } +void Debug::printStyleGraph(ResourceTable* table, + const ResourceName& targetStyle) { + std::map<ResourceName, std::set<ResourceName>> graph; + + std::queue<ResourceName> stylesToVisit; + stylesToVisit.push(targetStyle); + for (; !stylesToVisit.empty(); stylesToVisit.pop()) { + const ResourceName& styleName = stylesToVisit.front(); + std::set<ResourceName>& parents = graph[styleName]; + if (!parents.empty()) { + // We've already visited this style. + continue; } - std::vector<ResourceName> names; - for (const auto& entry : graph) { - names.push_back(entry.first); - } - - std::cout << "digraph styles {\n"; - for (const auto& name : names) { - std::cout << " node_" << getNodeIndex(names, name) - << " [label=\"" << name << "\"];\n"; - } - - for (const auto& entry : graph) { - const ResourceName& styleName = entry.first; - size_t styleNodeIndex = getNodeIndex(names, styleName); - - for (const auto& parentName : entry.second) { - std::cout << " node_" << styleNodeIndex << " -> " - << "node_" << getNodeIndex(names, parentName) << ";\n"; + Maybe<ResourceTable::SearchResult> result = table->findResource(styleName); + if (result) { + ResourceEntry* entry = result.value().entry; + for (const auto& value : entry->values) { + if (Style* style = valueCast<Style>(value->value.get())) { + if (style->parent && style->parent.value().name) { + parents.insert(style->parent.value().name.value()); + stylesToVisit.push(style->parent.value().name.value()); + } } + } + } + } + + std::vector<ResourceName> names; + for (const auto& entry : graph) { + names.push_back(entry.first); + } + + std::cout << "digraph styles {\n"; + for (const auto& name : names) { + std::cout << " node_" << getNodeIndex(names, name) << " [label=\"" << name + << "\"];\n"; + } + + for (const auto& entry : graph) { + const ResourceName& styleName = entry.first; + size_t styleNodeIndex = getNodeIndex(names, styleName); + + for (const auto& parentName : entry.second) { + std::cout << " node_" << styleNodeIndex << " -> " + << "node_" << getNodeIndex(names, parentName) << ";\n"; } + } - std::cout << "}" << std::endl; + std::cout << "}" << std::endl; } void Debug::dumpHex(const void* data, size_t len) { - const uint8_t* d = (const uint8_t*) data; - for (size_t i = 0; i < len; i++) { - std::cerr << std::hex << std::setfill('0') << std::setw(2) << (uint32_t) d[i] << " "; - if (i % 8 == 7) { - std::cerr << "\n"; - } + const uint8_t* d = (const uint8_t*)data; + for (size_t i = 0; i < len; i++) { + std::cerr << std::hex << std::setfill('0') << std::setw(2) << (uint32_t)d[i] + << " "; + if (i % 8 == 7) { + std::cerr << "\n"; } + } - if (len - 1 % 8 != 7) { - std::cerr << std::endl; - } + if (len - 1 % 8 != 7) { + std::cerr << std::endl; + } } namespace { class XmlPrinter : public xml::Visitor { -public: - using xml::Visitor::visit; - - void visit(xml::Element* el) override { - std::cerr << mPrefix; - std::cerr << "E: "; - if (!el->namespaceUri.empty()) { - std::cerr << el->namespaceUri << ":"; - } - std::cerr << el->name << " (line=" << el->lineNumber << ")\n"; - - for (const xml::Attribute& attr : el->attributes) { - std::cerr << mPrefix << " A: "; - if (!attr.namespaceUri.empty()) { - std::cerr << attr.namespaceUri << ":"; - } - std::cerr << attr.name << "=" << attr.value << "\n"; - } - - const size_t previousSize = mPrefix.size(); - mPrefix += " "; - xml::Visitor::visit(el); - mPrefix.resize(previousSize); + public: + using xml::Visitor::visit; + + void visit(xml::Element* el) override { + std::cerr << mPrefix; + std::cerr << "E: "; + if (!el->namespaceUri.empty()) { + std::cerr << el->namespaceUri << ":"; } - - void visit(xml::Namespace* ns) override { - std::cerr << mPrefix; - std::cerr << "N: " << ns->namespacePrefix << "=" << ns->namespaceUri - << " (line=" << ns->lineNumber << ")\n"; - - const size_t previousSize = mPrefix.size(); - mPrefix += " "; - xml::Visitor::visit(ns); - mPrefix.resize(previousSize); - } - - void visit(xml::Text* text) override { - std::cerr << mPrefix; - std::cerr << "T: '" << text->text << "'\n"; + std::cerr << el->name << " (line=" << el->lineNumber << ")\n"; + + for (const xml::Attribute& attr : el->attributes) { + std::cerr << mPrefix << " A: "; + if (!attr.namespaceUri.empty()) { + std::cerr << attr.namespaceUri << ":"; + } + std::cerr << attr.name << "=" << attr.value << "\n"; } -private: - std::string mPrefix; + const size_t previousSize = mPrefix.size(); + mPrefix += " "; + xml::Visitor::visit(el); + mPrefix.resize(previousSize); + } + + void visit(xml::Namespace* ns) override { + std::cerr << mPrefix; + std::cerr << "N: " << ns->namespacePrefix << "=" << ns->namespaceUri + << " (line=" << ns->lineNumber << ")\n"; + + const size_t previousSize = mPrefix.size(); + mPrefix += " "; + xml::Visitor::visit(ns); + mPrefix.resize(previousSize); + } + + void visit(xml::Text* text) override { + std::cerr << mPrefix; + std::cerr << "T: '" << text->text << "'\n"; + } + + private: + std::string mPrefix; }; -} // namespace +} // namespace void Debug::dumpXml(xml::XmlResource* doc) { - XmlPrinter printer; - doc->root->accept(&printer); + XmlPrinter printer; + doc->root->accept(&printer); } -} // namespace aapt +} // namespace aapt |