From cacb28f2d60858106e2819cc7d95a65e8bda890b Mon Sep 17 00:00:00 2001 From: Adam Lesinski Date: Wed, 19 Oct 2016 12:18:14 -0700 Subject: Use Google3 style guide with .clang-format Test: style change only, builds ok Change-Id: I885180e24cb2e7b58cfb4967c3bcb40058ce4078 --- tools/aapt2/ResourceValues.cpp | 1031 ++++++++++++++++++++-------------------- 1 file changed, 517 insertions(+), 514 deletions(-) (limited to 'tools/aapt2/ResourceValues.cpp') diff --git a/tools/aapt2/ResourceValues.cpp b/tools/aapt2/ResourceValues.cpp index 492155ddb591..60590b6026b5 100644 --- a/tools/aapt2/ResourceValues.cpp +++ b/tools/aapt2/ResourceValues.cpp @@ -14,14 +14,14 @@ * limitations under the License. */ +#include "ResourceValues.h" #include "Resource.h" #include "ResourceUtils.h" -#include "ResourceValues.h" #include "ValueVisitor.h" #include "util/Util.h" -#include #include +#include #include #include @@ -29,742 +29,745 @@ namespace aapt { template void BaseValue::accept(RawValueVisitor* visitor) { - visitor->visit(static_cast(this)); + visitor->visit(static_cast(this)); } template void BaseItem::accept(RawValueVisitor* visitor) { - visitor->visit(static_cast(this)); + visitor->visit(static_cast(this)); } -RawString::RawString(const StringPool::Ref& ref) : value(ref) { -} +RawString::RawString(const StringPool::Ref& ref) : value(ref) {} bool RawString::equals(const Value* value) const { - const RawString* other = valueCast(value); - if (!other) { - return false; - } - return *this->value == *other->value; + const RawString* other = valueCast(value); + if (!other) { + return false; + } + return *this->value == *other->value; } RawString* RawString::clone(StringPool* newPool) const { - RawString* rs = new RawString(newPool->makeRef(*value)); - rs->mComment = mComment; - rs->mSource = mSource; - return rs; + RawString* rs = new RawString(newPool->makeRef(*value)); + rs->mComment = mComment; + rs->mSource = mSource; + return rs; } bool RawString::flatten(android::Res_value* outValue) const { - outValue->dataType = android::Res_value::TYPE_STRING; - outValue->data = util::hostToDevice32(static_cast(value.getIndex())); - return true; + outValue->dataType = android::Res_value::TYPE_STRING; + outValue->data = + util::hostToDevice32(static_cast(value.getIndex())); + return true; } void RawString::print(std::ostream* out) const { - *out << "(raw string) " << *value; + *out << "(raw string) " << *value; } -Reference::Reference() : referenceType(Type::kResource) { -} +Reference::Reference() : referenceType(Type::kResource) {} -Reference::Reference(const ResourceNameRef& n, Type t) : - name(n.toResourceName()), referenceType(t) { -} +Reference::Reference(const ResourceNameRef& n, Type t) + : name(n.toResourceName()), referenceType(t) {} -Reference::Reference(const ResourceId& i, Type type) : id(i), referenceType(type) { -} +Reference::Reference(const ResourceId& i, Type type) + : id(i), referenceType(type) {} -Reference::Reference(const ResourceNameRef& n, const ResourceId& i) : - name(n.toResourceName()), id(i), referenceType(Type::kResource) { -} +Reference::Reference(const ResourceNameRef& n, const ResourceId& i) + : name(n.toResourceName()), id(i), referenceType(Type::kResource) {} bool Reference::equals(const Value* value) const { - const Reference* other = valueCast(value); - if (!other) { - return false; - } - return referenceType == other->referenceType && privateReference == other->privateReference && - id == other->id && name == other->name; + const Reference* other = valueCast(value); + if (!other) { + return false; + } + return referenceType == other->referenceType && + privateReference == other->privateReference && id == other->id && + name == other->name; } bool Reference::flatten(android::Res_value* outValue) const { - outValue->dataType = (referenceType == Reference::Type::kResource) ? - android::Res_value::TYPE_REFERENCE : android::Res_value::TYPE_ATTRIBUTE; - outValue->data = util::hostToDevice32(id ? id.value().id : 0); - return true; + outValue->dataType = (referenceType == Reference::Type::kResource) + ? android::Res_value::TYPE_REFERENCE + : android::Res_value::TYPE_ATTRIBUTE; + outValue->data = util::hostToDevice32(id ? id.value().id : 0); + return true; } Reference* Reference::clone(StringPool* /*newPool*/) const { - return new Reference(*this); + return new Reference(*this); } void Reference::print(std::ostream* out) const { - *out << "(reference) "; - if (referenceType == Reference::Type::kResource) { - *out << "@"; - if (privateReference) { - *out << "*"; - } - } else { - *out << "?"; + *out << "(reference) "; + if (referenceType == Reference::Type::kResource) { + *out << "@"; + if (privateReference) { + *out << "*"; } + } else { + *out << "?"; + } - if (name) { - *out << name.value(); - } + if (name) { + *out << name.value(); + } - if (id && !Res_INTERNALID(id.value().id)) { - *out << " " << id.value(); - } + if (id && !Res_INTERNALID(id.value().id)) { + *out << " " << id.value(); + } } bool Id::equals(const Value* value) const { - return valueCast(value) != nullptr; + return valueCast(value) != nullptr; } bool Id::flatten(android::Res_value* out) const { - out->dataType = android::Res_value::TYPE_INT_BOOLEAN; - out->data = util::hostToDevice32(0); - return true; + out->dataType = android::Res_value::TYPE_INT_BOOLEAN; + out->data = util::hostToDevice32(0); + return true; } -Id* Id::clone(StringPool* /*newPool*/) const { - return new Id(*this); -} +Id* Id::clone(StringPool* /*newPool*/) const { return new Id(*this); } -void Id::print(std::ostream* out) const { - *out << "(id)"; -} +void Id::print(std::ostream* out) const { *out << "(id)"; } -String::String(const StringPool::Ref& ref) : value(ref) { -} +String::String(const StringPool::Ref& ref) : value(ref) {} bool String::equals(const Value* value) const { - const String* other = valueCast(value); - if (!other) { - return false; - } - return *this->value == *other->value; + const String* other = valueCast(value); + if (!other) { + return false; + } + return *this->value == *other->value; } bool String::flatten(android::Res_value* outValue) const { - // Verify that our StringPool index is within encode-able limits. - if (value.getIndex() > std::numeric_limits::max()) { - return false; - } + // Verify that our StringPool index is within encode-able limits. + if (value.getIndex() > std::numeric_limits::max()) { + return false; + } - outValue->dataType = android::Res_value::TYPE_STRING; - outValue->data = util::hostToDevice32(static_cast(value.getIndex())); - return true; + outValue->dataType = android::Res_value::TYPE_STRING; + outValue->data = + util::hostToDevice32(static_cast(value.getIndex())); + return true; } String* String::clone(StringPool* newPool) const { - String* str = new String(newPool->makeRef(*value)); - str->mComment = mComment; - str->mSource = mSource; - return str; + String* str = new String(newPool->makeRef(*value)); + str->mComment = mComment; + str->mSource = mSource; + return str; } void String::print(std::ostream* out) const { - *out << "(string) \"" << *value << "\""; + *out << "(string) \"" << *value << "\""; } -StyledString::StyledString(const StringPool::StyleRef& ref) : value(ref) { -} +StyledString::StyledString(const StringPool::StyleRef& ref) : value(ref) {} bool StyledString::equals(const Value* value) const { - const StyledString* other = valueCast(value); - if (!other) { - return false; - } - - if (*this->value->str == *other->value->str) { - const std::vector& spansA = this->value->spans; - const std::vector& spansB = other->value->spans; - return std::equal(spansA.begin(), spansA.end(), spansB.begin(), - [](const StringPool::Span& a, const StringPool::Span& b) -> bool { - return *a.name == *b.name && a.firstChar == b.firstChar && a.lastChar == b.lastChar; - }); - } + const StyledString* other = valueCast(value); + if (!other) { return false; + } + + if (*this->value->str == *other->value->str) { + const std::vector& spansA = this->value->spans; + const std::vector& spansB = other->value->spans; + return std::equal( + spansA.begin(), spansA.end(), spansB.begin(), + [](const StringPool::Span& a, const StringPool::Span& b) -> bool { + return *a.name == *b.name && a.firstChar == b.firstChar && + a.lastChar == b.lastChar; + }); + } + return false; } bool StyledString::flatten(android::Res_value* outValue) const { - if (value.getIndex() > std::numeric_limits::max()) { - return false; - } + if (value.getIndex() > std::numeric_limits::max()) { + return false; + } - outValue->dataType = android::Res_value::TYPE_STRING; - outValue->data = util::hostToDevice32(static_cast(value.getIndex())); - return true; + outValue->dataType = android::Res_value::TYPE_STRING; + outValue->data = + util::hostToDevice32(static_cast(value.getIndex())); + return true; } StyledString* StyledString::clone(StringPool* newPool) const { - StyledString* str = new StyledString(newPool->makeRef(value)); - str->mComment = mComment; - str->mSource = mSource; - return str; + StyledString* str = new StyledString(newPool->makeRef(value)); + str->mComment = mComment; + str->mSource = mSource; + return str; } void StyledString::print(std::ostream* out) const { - *out << "(styled string) \"" << *value->str << "\""; - for (const StringPool::Span& span : value->spans) { - *out << " "<< *span.name << ":" << span.firstChar << "," << span.lastChar; - } + *out << "(styled string) \"" << *value->str << "\""; + for (const StringPool::Span& span : value->spans) { + *out << " " << *span.name << ":" << span.firstChar << "," << span.lastChar; + } } -FileReference::FileReference(const StringPool::Ref& _path) : path(_path) { -} +FileReference::FileReference(const StringPool::Ref& _path) : path(_path) {} bool FileReference::equals(const Value* value) const { - const FileReference* other = valueCast(value); - if (!other) { - return false; - } - return *path == *other->path; + const FileReference* other = valueCast(value); + if (!other) { + return false; + } + return *path == *other->path; } bool FileReference::flatten(android::Res_value* outValue) const { - if (path.getIndex() > std::numeric_limits::max()) { - return false; - } + if (path.getIndex() > std::numeric_limits::max()) { + return false; + } - outValue->dataType = android::Res_value::TYPE_STRING; - outValue->data = util::hostToDevice32(static_cast(path.getIndex())); - return true; + outValue->dataType = android::Res_value::TYPE_STRING; + outValue->data = util::hostToDevice32(static_cast(path.getIndex())); + return true; } FileReference* FileReference::clone(StringPool* newPool) const { - FileReference* fr = new FileReference(newPool->makeRef(*path)); - fr->file = file; - fr->mComment = mComment; - fr->mSource = mSource; - return fr; + FileReference* fr = new FileReference(newPool->makeRef(*path)); + fr->file = file; + fr->mComment = mComment; + fr->mSource = mSource; + return fr; } void FileReference::print(std::ostream* out) const { - *out << "(file) " << *path; + *out << "(file) " << *path; } -BinaryPrimitive::BinaryPrimitive(const android::Res_value& val) : value(val) { -} +BinaryPrimitive::BinaryPrimitive(const android::Res_value& val) : value(val) {} BinaryPrimitive::BinaryPrimitive(uint8_t dataType, uint32_t data) { - value.dataType = dataType; - value.data = data; + value.dataType = dataType; + value.data = data; } bool BinaryPrimitive::equals(const Value* value) const { - const BinaryPrimitive* other = valueCast(value); - if (!other) { - return false; - } - return this->value.dataType == other->value.dataType && this->value.data == other->value.data; + const BinaryPrimitive* other = valueCast(value); + if (!other) { + return false; + } + return this->value.dataType == other->value.dataType && + this->value.data == other->value.data; } bool BinaryPrimitive::flatten(android::Res_value* outValue) const { - outValue->dataType = value.dataType; - outValue->data = util::hostToDevice32(value.data); - return true; + outValue->dataType = value.dataType; + outValue->data = util::hostToDevice32(value.data); + return true; } BinaryPrimitive* BinaryPrimitive::clone(StringPool* /*newPool*/) const { - return new BinaryPrimitive(*this); + return new BinaryPrimitive(*this); } void BinaryPrimitive::print(std::ostream* out) const { - switch (value.dataType) { - case android::Res_value::TYPE_NULL: - *out << "(null)"; - break; - case android::Res_value::TYPE_INT_DEC: - *out << "(integer) " << static_cast(value.data); - break; - case android::Res_value::TYPE_INT_HEX: - *out << "(integer) 0x" << std::hex << value.data << std::dec; - break; - case android::Res_value::TYPE_INT_BOOLEAN: - *out << "(boolean) " << (value.data != 0 ? "true" : "false"); - break; - case android::Res_value::TYPE_INT_COLOR_ARGB8: - case android::Res_value::TYPE_INT_COLOR_RGB8: - case android::Res_value::TYPE_INT_COLOR_ARGB4: - case android::Res_value::TYPE_INT_COLOR_RGB4: - *out << "(color) #" << std::hex << value.data << std::dec; - break; - default: - *out << "(unknown 0x" << std::hex << (int) value.dataType << ") 0x" - << std::hex << value.data << std::dec; - break; - } -} - -Attribute::Attribute(bool w, uint32_t t) : - typeMask(t), - minInt(std::numeric_limits::min()), - maxInt(std::numeric_limits::max()) { - mWeak = w; + switch (value.dataType) { + case android::Res_value::TYPE_NULL: + *out << "(null)"; + break; + case android::Res_value::TYPE_INT_DEC: + *out << "(integer) " << static_cast(value.data); + break; + case android::Res_value::TYPE_INT_HEX: + *out << "(integer) 0x" << std::hex << value.data << std::dec; + break; + case android::Res_value::TYPE_INT_BOOLEAN: + *out << "(boolean) " << (value.data != 0 ? "true" : "false"); + break; + case android::Res_value::TYPE_INT_COLOR_ARGB8: + case android::Res_value::TYPE_INT_COLOR_RGB8: + case android::Res_value::TYPE_INT_COLOR_ARGB4: + case android::Res_value::TYPE_INT_COLOR_RGB4: + *out << "(color) #" << std::hex << value.data << std::dec; + break; + default: + *out << "(unknown 0x" << std::hex << (int)value.dataType << ") 0x" + << std::hex << value.data << std::dec; + break; + } +} + +Attribute::Attribute(bool w, uint32_t t) + : typeMask(t), + minInt(std::numeric_limits::min()), + maxInt(std::numeric_limits::max()) { + mWeak = w; } template T* addPointer(T& val) { - return &val; + return &val; } bool Attribute::equals(const Value* value) const { - const Attribute* other = valueCast(value); - if (!other) { - return false; - } - - if (symbols.size() != other->symbols.size()) { - return false; - } - - if (typeMask != other->typeMask || minInt != other->minInt || maxInt != other->maxInt) { - return false; - } - - std::vector sortedA; - std::transform(symbols.begin(), symbols.end(), - std::back_inserter(sortedA), addPointer); - std::sort(sortedA.begin(), sortedA.end(), [](const Symbol* a, const Symbol* b) -> bool { - return a->symbol.name < b->symbol.name; - }); + const Attribute* other = valueCast(value); + if (!other) { + return false; + } - std::vector sortedB; - std::transform(other->symbols.begin(), other->symbols.end(), - std::back_inserter(sortedB), addPointer); - std::sort(sortedB.begin(), sortedB.end(), [](const Symbol* a, const Symbol* b) -> bool { - return a->symbol.name < b->symbol.name; - }); + if (symbols.size() != other->symbols.size()) { + return false; + } - return std::equal(sortedA.begin(), sortedA.end(), sortedB.begin(), - [](const Symbol* a, const Symbol* b) -> bool { - return a->symbol.equals(&b->symbol) && a->value == b->value; - }); + if (typeMask != other->typeMask || minInt != other->minInt || + maxInt != other->maxInt) { + return false; + } + + std::vector sortedA; + std::transform(symbols.begin(), symbols.end(), std::back_inserter(sortedA), + addPointer); + std::sort(sortedA.begin(), sortedA.end(), + [](const Symbol* a, const Symbol* b) -> bool { + return a->symbol.name < b->symbol.name; + }); + + std::vector sortedB; + std::transform(other->symbols.begin(), other->symbols.end(), + std::back_inserter(sortedB), addPointer); + std::sort(sortedB.begin(), sortedB.end(), + [](const Symbol* a, const Symbol* b) -> bool { + return a->symbol.name < b->symbol.name; + }); + + return std::equal(sortedA.begin(), sortedA.end(), sortedB.begin(), + [](const Symbol* a, const Symbol* b) -> bool { + return a->symbol.equals(&b->symbol) && + a->value == b->value; + }); } Attribute* Attribute::clone(StringPool* /*newPool*/) const { - return new Attribute(*this); + return new Attribute(*this); } void Attribute::printMask(std::ostream* out) const { - if (typeMask == android::ResTable_map::TYPE_ANY) { - *out << "any"; - return; - } - - bool set = false; - if ((typeMask & android::ResTable_map::TYPE_REFERENCE) != 0) { - if (!set) { - set = true; - } else { - *out << "|"; - } - *out << "reference"; + if (typeMask == android::ResTable_map::TYPE_ANY) { + *out << "any"; + return; + } + + bool set = false; + if ((typeMask & android::ResTable_map::TYPE_REFERENCE) != 0) { + if (!set) { + set = true; + } else { + *out << "|"; } + *out << "reference"; + } - if ((typeMask & android::ResTable_map::TYPE_STRING) != 0) { - if (!set) { - set = true; - } else { - *out << "|"; - } - *out << "string"; + if ((typeMask & android::ResTable_map::TYPE_STRING) != 0) { + if (!set) { + set = true; + } else { + *out << "|"; } + *out << "string"; + } - if ((typeMask & android::ResTable_map::TYPE_INTEGER) != 0) { - if (!set) { - set = true; - } else { - *out << "|"; - } - *out << "integer"; + if ((typeMask & android::ResTable_map::TYPE_INTEGER) != 0) { + if (!set) { + set = true; + } else { + *out << "|"; } + *out << "integer"; + } - if ((typeMask & android::ResTable_map::TYPE_BOOLEAN) != 0) { - if (!set) { - set = true; - } else { - *out << "|"; - } - *out << "boolean"; + if ((typeMask & android::ResTable_map::TYPE_BOOLEAN) != 0) { + if (!set) { + set = true; + } else { + *out << "|"; } + *out << "boolean"; + } - if ((typeMask & android::ResTable_map::TYPE_COLOR) != 0) { - if (!set) { - set = true; - } else { - *out << "|"; - } - *out << "color"; + if ((typeMask & android::ResTable_map::TYPE_COLOR) != 0) { + if (!set) { + set = true; + } else { + *out << "|"; } + *out << "color"; + } - if ((typeMask & android::ResTable_map::TYPE_FLOAT) != 0) { - if (!set) { - set = true; - } else { - *out << "|"; - } - *out << "float"; + if ((typeMask & android::ResTable_map::TYPE_FLOAT) != 0) { + if (!set) { + set = true; + } else { + *out << "|"; } + *out << "float"; + } - if ((typeMask & android::ResTable_map::TYPE_DIMENSION) != 0) { - if (!set) { - set = true; - } else { - *out << "|"; - } - *out << "dimension"; + if ((typeMask & android::ResTable_map::TYPE_DIMENSION) != 0) { + if (!set) { + set = true; + } else { + *out << "|"; } + *out << "dimension"; + } - if ((typeMask & android::ResTable_map::TYPE_FRACTION) != 0) { - if (!set) { - set = true; - } else { - *out << "|"; - } - *out << "fraction"; + if ((typeMask & android::ResTable_map::TYPE_FRACTION) != 0) { + if (!set) { + set = true; + } else { + *out << "|"; } + *out << "fraction"; + } - if ((typeMask & android::ResTable_map::TYPE_ENUM) != 0) { - if (!set) { - set = true; - } else { - *out << "|"; - } - *out << "enum"; + if ((typeMask & android::ResTable_map::TYPE_ENUM) != 0) { + if (!set) { + set = true; + } else { + *out << "|"; } + *out << "enum"; + } - if ((typeMask & android::ResTable_map::TYPE_FLAGS) != 0) { - if (!set) { - set = true; - } else { - *out << "|"; - } - *out << "flags"; + if ((typeMask & android::ResTable_map::TYPE_FLAGS) != 0) { + if (!set) { + set = true; + } else { + *out << "|"; } + *out << "flags"; + } } void Attribute::print(std::ostream* out) const { - *out << "(attr) "; - printMask(out); + *out << "(attr) "; + printMask(out); - if (!symbols.empty()) { - *out << " [" << util::joiner(symbols, ", ") << "]"; - } + if (!symbols.empty()) { + *out << " [" << util::joiner(symbols, ", ") << "]"; + } - if (minInt != std::numeric_limits::min()) { - *out << " min=" << minInt; - } + if (minInt != std::numeric_limits::min()) { + *out << " min=" << minInt; + } - if (maxInt != std::numeric_limits::max()) { - *out << " max=" << maxInt; - } + if (maxInt != std::numeric_limits::max()) { + *out << " max=" << maxInt; + } - if (isWeak()) { - *out << " [weak]"; - } + if (isWeak()) { + *out << " [weak]"; + } } -static void buildAttributeMismatchMessage(DiagMessage* msg, const Attribute* attr, +static void buildAttributeMismatchMessage(DiagMessage* msg, + const Attribute* attr, const Item* value) { - *msg << "expected"; - if (attr->typeMask & android::ResTable_map::TYPE_BOOLEAN) { - *msg << " boolean"; - } + *msg << "expected"; + if (attr->typeMask & android::ResTable_map::TYPE_BOOLEAN) { + *msg << " boolean"; + } - if (attr->typeMask & android::ResTable_map::TYPE_COLOR) { - *msg << " color"; - } + if (attr->typeMask & android::ResTable_map::TYPE_COLOR) { + *msg << " color"; + } - if (attr->typeMask & android::ResTable_map::TYPE_DIMENSION) { - *msg << " dimension"; - } + if (attr->typeMask & android::ResTable_map::TYPE_DIMENSION) { + *msg << " dimension"; + } - if (attr->typeMask & android::ResTable_map::TYPE_ENUM) { - *msg << " enum"; - } + if (attr->typeMask & android::ResTable_map::TYPE_ENUM) { + *msg << " enum"; + } - if (attr->typeMask & android::ResTable_map::TYPE_FLAGS) { - *msg << " flags"; - } + if (attr->typeMask & android::ResTable_map::TYPE_FLAGS) { + *msg << " flags"; + } - if (attr->typeMask & android::ResTable_map::TYPE_FLOAT) { - *msg << " float"; - } + if (attr->typeMask & android::ResTable_map::TYPE_FLOAT) { + *msg << " float"; + } - if (attr->typeMask & android::ResTable_map::TYPE_FRACTION) { - *msg << " fraction"; - } + if (attr->typeMask & android::ResTable_map::TYPE_FRACTION) { + *msg << " fraction"; + } - if (attr->typeMask & android::ResTable_map::TYPE_INTEGER) { - *msg << " integer"; - } + if (attr->typeMask & android::ResTable_map::TYPE_INTEGER) { + *msg << " integer"; + } - if (attr->typeMask & android::ResTable_map::TYPE_REFERENCE) { - *msg << " reference"; - } + if (attr->typeMask & android::ResTable_map::TYPE_REFERENCE) { + *msg << " reference"; + } - if (attr->typeMask & android::ResTable_map::TYPE_STRING) { - *msg << " string"; - } + if (attr->typeMask & android::ResTable_map::TYPE_STRING) { + *msg << " string"; + } - *msg << " but got " << *value; + *msg << " but got " << *value; } bool Attribute::matches(const Item* item, DiagMessage* outMsg) const { - android::Res_value val = {}; - item->flatten(&val); - - // Always allow references. - const uint32_t mask = typeMask | android::ResTable_map::TYPE_REFERENCE; - if (!(mask & ResourceUtils::androidTypeToAttributeTypeMask(val.dataType))) { - if (outMsg) { - buildAttributeMismatchMessage(outMsg, this, item); - } - return false; - - } else if (ResourceUtils::androidTypeToAttributeTypeMask(val.dataType) & - android::ResTable_map::TYPE_INTEGER) { - if (static_cast(util::deviceToHost32(val.data)) < minInt) { - if (outMsg) { - *outMsg << *item << " is less than minimum integer " << minInt; - } - return false; - } else if (static_cast(util::deviceToHost32(val.data)) > maxInt) { - if (outMsg) { - *outMsg << *item << " is greater than maximum integer " << maxInt; - } - return false; - } - } - return true; -} + android::Res_value val = {}; + item->flatten(&val); -bool Style::equals(const Value* value) const { - const Style* other = valueCast