};
}
- std::unique_ptr<Item> parseItemForAttribute(
+ std::unique_ptr<Item> tryParseItemForAttribute(
const StringPiece& value,
uint32_t typeMask,
- std::function<void(const ResourceName&)> onCreateReference) {
+ const std::function<void(const ResourceName&)>& onCreateReference) {
std::unique_ptr<BinaryPrimitive> nullOrEmpty = tryParseNullOrEmpty(value);
if (nullOrEmpty) {
return std::move(nullOrEmpty);
* We successively try to parse the string as a resource type that the Attribute
* allows.
*/
- std::unique_ptr<Item> parseItemForAttribute(
+ std::unique_ptr<Item> tryParseItemForAttribute(
const StringPiece& str, const Attribute* attr,
- std::function<void(const ResourceName&)> onCreateReference) {
+ const std::function<void(const ResourceName&)>& onCreateReference) {
const uint32_t typeMask = attr->typeMask;
- std::unique_ptr<Item> value = parseItemForAttribute(str, typeMask, onCreateReference);
+ std::unique_ptr<Item> value = tryParseItemForAttribute(str, typeMask, onCreateReference);
if (value) {
return value;
}
* The callback function onCreateReference is called when the parsed item is a
* reference to an ID that must be created (@+id/foo).
*/
- std::unique_ptr<Item> parseItemForAttribute(
+ std::unique_ptr<Item> tryParseItemForAttribute(
const StringPiece& value, const Attribute* attr,
- std::function<void(const ResourceName&)> onCreateReference = {});
+ const std::function<void(const ResourceName&)>& onCreateReference = {});
- std::unique_ptr<Item> parseItemForAttribute(
+ std::unique_ptr<Item> tryParseItemForAttribute(
const StringPiece& value, uint32_t typeMask,
- std::function<void(const ResourceName&)> onCreateReference = {});
+ const std::function<void(const ResourceName&)>& onCreateReference = {});
uint32_t androidTypeToAttributeTypeMask(uint16_t type);