major revamp, fully qualified names (FQName) used throughout lexer/parser.
diff --git a/FQName.h b/FQName.h
new file mode 100644
index 0000000..338bcb6
--- /dev/null
+++ b/FQName.h
@@ -0,0 +1,37 @@
+#ifndef FQNAME_H_
+
+#define FQNAME_H_
+
+#include <android-base/macros.h>
+#include <string>
+
+namespace android {
+
+struct FQName {
+ explicit FQName(const std::string &s);
+
+ bool isValid() const;
+ bool setTo(const std::string &s);
+
+ void applyDefaults(
+ const std::string &defaultPackage,
+ const std::string &defaultVersion);
+
+ std::string package() const;
+ std::string version() const;
+ std::string name() const;
+
+ std::string debugString() const;
+
+private:
+ bool mValid;
+ std::string mPackage;
+ std::string mVersion;
+ std::string mName;
+
+ DISALLOW_COPY_AND_ASSIGN(FQName);
+};
+
+} // namespace android
+
+#endif // FQNAME_H_