MCPcopy Create free account
hub / github.com/CyanogenMod/android_frameworks_base / writeLayoutClasses

Function writeLayoutClasses

tools/aapt/Resource.cpp:1650–1893  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1648}
1649
1650static status_t writeLayoutClasses(
1651 FILE* fp, const sp<AaptAssets>& assets,
1652 const sp<AaptSymbols>& symbols, int indent, bool includePrivate)
1653{
1654 const char* indentStr = getIndentSpace(indent);
1655 if (!includePrivate) {
1656 fprintf(fp, "%s/** @doconly */\n", indentStr);
1657 }
1658 fprintf(fp, "%spublic static final class styleable {\n", indentStr);
1659 indent++;
1660
1661 String16 attr16("attr");
1662 String16 package16(assets->getPackage());
1663
1664 indentStr = getIndentSpace(indent);
1665 bool hasErrors = false;
1666
1667 size_t i;
1668 size_t N = symbols->getNestedSymbols().size();
1669 for (i=0; i<N; i++) {
1670 sp<AaptSymbols> nsymbols = symbols->getNestedSymbols().valueAt(i);
1671 String8 realClassName(symbols->getNestedSymbols().keyAt(i));
1672 String8 nclassName(flattenSymbol(realClassName));
1673
1674 SortedVector<uint32_t> idents;
1675 Vector<uint32_t> origOrder;
1676 Vector<bool> publicFlags;
1677
1678 size_t a;
1679 size_t NA = nsymbols->getSymbols().size();
1680 for (a=0; a<NA; a++) {
1681 const AaptSymbolEntry& sym(nsymbols->getSymbols().valueAt(a));
1682 int32_t code = sym.typeCode == AaptSymbolEntry::TYPE_INT32
1683 ? sym.int32Val : 0;
1684 bool isPublic = true;
1685 if (code == 0) {
1686 String16 name16(sym.name);
1687 uint32_t typeSpecFlags;
1688 code = assets->getIncludedResources().identifierForName(
1689 name16.string(), name16.size(),
1690 attr16.string(), attr16.size(),
1691 package16.string(), package16.size(), &typeSpecFlags);
1692 if (code == 0) {
1693 fprintf(stderr, "ERROR: In <declare-styleable> %s, unable to find attribute %s\n",
1694 nclassName.string(), sym.name.string());
1695 hasErrors = true;
1696 }
1697 isPublic = (typeSpecFlags&ResTable_typeSpec::SPEC_PUBLIC) != 0;
1698 }
1699 idents.add(code);
1700 origOrder.add(code);
1701 publicFlags.add(isPublic);
1702 }
1703
1704 NA = idents.size();
1705
1706 bool deprecated = false;
1707

Callers 1

writeSymbolClassFunction · 0.85

Calls 15

getIndentSpaceFunction · 0.85
flattenSymbolFunction · 0.85
getAttributeCommentFunction · 0.85
getSymbolPackageFunction · 0.85
getSymbolNameFunction · 0.85
identifierForNameMethod · 0.80
stringMethod · 0.80
String16Class · 0.70
sizeMethod · 0.65
addMethod · 0.65
getPackageMethod · 0.45
valueAtMethod · 0.45

Tested by

no test coverage detected