diff options
author | Timur Iskhakov <iskhakovt@google.com> | 2017-08-13 22:57:55 -0700 |
---|---|---|
committer | Timur Iskhakov <iskhakovt@google.com> | 2017-08-15 10:57:19 -0700 |
commit | 774ae7feaf990517ca48f2114b0dfb90273f36f4 (patch) | |
tree | 21d2e60b73b15e852a9f63d87cd2b1924463d86f | |
parent | e9ccfa2e9c177ead2b6ccb36dd20de294666abcd (diff) | |
download | android_system_tools_hidl-774ae7feaf990517ca48f2114b0dfb90273f36f4.tar.gz android_system_tools_hidl-774ae7feaf990517ca48f2114b0dfb90273f36f4.tar.bz2 android_system_tools_hidl-774ae7feaf990517ca48f2114b0dfb90273f36f4.zip |
Make NamedReference be child class for Reference
NamedReference is actually a reference with added name, if we keep it
to be a tuple, we will need to copy most of Reference methods
to NamedReference for lookup (ex.: getFqName, set)
Test: build hidl-gen, hidl_test
Change-Id: I1e9e22f6ef3698e709056a09eec7cb75e3175f2f
-rw-r--r-- | Reference.h | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/Reference.h b/Reference.h index 1728a91..8a73609 100644 --- a/Reference.h +++ b/Reference.h @@ -31,6 +31,7 @@ namespace android { template <class T> struct Reference { Reference() = default; + virtual ~Reference() {} Reference(const FQName& fqName, const Location& location) : mResolved(nullptr), mFqName(fqName), mLocation(location) {} @@ -97,19 +98,17 @@ struct Reference { }; template <class T> -struct NamedReference { +struct NamedReference : public Reference<T> { NamedReference(const std::string& name, const Reference<T>& reference) - : mName(name), mReference(reference) {} + : Reference<T>(reference), mName(name) {} const std::string& name() const { return mName; } - const T& type() const { return *mReference.get(); } - const T* operator->() const { return mReference.get(); } + + // TODO(b/64715470) Legacy + const T& type() const { return *Reference<T>::get(); } private: const std::string mName; - const Reference<T> mReference; - - DISALLOW_COPY_AND_ASSIGN(NamedReference<T>); }; } // namespace android |