AAPT2: Add Inline Complex XML support

See: https://developer.android.com/guide/topics/resources/complex-xml-resources.html

Change-Id: I8274c85e25cabf90423141c228697e873167d136
diff --git a/tools/aapt2/ResourceUtils.cpp b/tools/aapt2/ResourceUtils.cpp
index 11619fa..73a194e 100644
--- a/tools/aapt2/ResourceUtils.cpp
+++ b/tools/aapt2/ResourceUtils.cpp
@@ -268,6 +268,35 @@
     return result;
 }
 
+Maybe<Reference> parseXmlAttributeName(const StringPiece& str) {
+    StringPiece trimmedStr = util::trimWhitespace(str);
+    const char* start = trimmedStr.data();
+    const char* const end = start + trimmedStr.size();
+    const char* p = start;
+
+    Reference ref;
+    if (p != end && *p == '*') {
+        ref.privateReference = true;
+        start++;
+        p++;
+    }
+
+    StringPiece package;
+    StringPiece name;
+    while (p != end) {
+        if (*p == ':') {
+            package = StringPiece(start, p - start);
+            name = StringPiece(p + 1, end - (p + 1));
+            break;
+        }
+        p++;
+    }
+
+    ref.name = ResourceName(package.toString(), ResourceType::kAttr,
+                        name.empty() ? trimmedStr.toString() : name.toString());
+    return Maybe<Reference>(std::move(ref));
+}
+
 std::unique_ptr<Reference> tryParseReference(const StringPiece& str, bool* outCreate) {
     ResourceNameRef ref;
     bool privateRef = false;