diff options
author | Mathias Agopian <mathias@google.com> | 2011-06-29 16:15:56 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-06-29 16:15:56 -0700 |
commit | 272aaa382f95c38221739f2287c29e414523a5cc (patch) | |
tree | 53b22ed4bd672af3edc9fc9d3e1c5d63661a37b1 /include/utils | |
parent | 5231b0af515db51c722d4764ecf9412c145c93b6 (diff) | |
parent | 439863f3b3e725b5de1cba4940a21900369961c0 (diff) | |
download | frameworks_base-272aaa382f95c38221739f2287c29e414523a5cc.zip frameworks_base-272aaa382f95c38221739f2287c29e414523a5cc.tar.gz frameworks_base-272aaa382f95c38221739f2287c29e414523a5cc.tar.bz2 |
Merge "SF transactions are now O(1) wrt IPC instead of O(N)."
Diffstat (limited to 'include/utils')
-rw-r--r-- | include/utils/SortedVector.h | 2 | ||||
-rw-r--r-- | include/utils/Vector.h | 26 |
2 files changed, 27 insertions, 1 deletions
diff --git a/include/utils/SortedVector.h b/include/utils/SortedVector.h index 8beec57..0e98aeb 100644 --- a/include/utils/SortedVector.h +++ b/include/utils/SortedVector.h @@ -32,6 +32,8 @@ namespace android { template <class TYPE> class SortedVector : private SortedVectorImpl { + friend class Vector<TYPE>; + public: typedef TYPE value_type; diff --git a/include/utils/Vector.h b/include/utils/Vector.h index f1e87e6..b908e2a 100644 --- a/include/utils/Vector.h +++ b/include/utils/Vector.h @@ -29,6 +29,9 @@ namespace android { +template <typename TYPE> +class SortedVector; + /*! * The main templated vector class ensuring type safety * while making use of VectorImpl. @@ -47,13 +50,17 @@ public: Vector(); Vector(const Vector<TYPE>& rhs); + explicit Vector(const SortedVector<TYPE>& rhs); virtual ~Vector(); /*! copy operator */ const Vector<TYPE>& operator = (const Vector<TYPE>& rhs) const; Vector<TYPE>& operator = (const Vector<TYPE>& rhs); - /* + const Vector<TYPE>& operator = (const SortedVector<TYPE>& rhs) const; + Vector<TYPE>& operator = (const SortedVector<TYPE>& rhs); + + /* * empty the vector */ @@ -215,6 +222,11 @@ Vector<TYPE>::Vector(const Vector<TYPE>& rhs) } template<class TYPE> inline +Vector<TYPE>::Vector(const SortedVector<TYPE>& rhs) + : VectorImpl(static_cast<const VectorImpl&>(rhs)) { +} + +template<class TYPE> inline Vector<TYPE>::~Vector() { finish_vector(); } @@ -227,6 +239,18 @@ Vector<TYPE>& Vector<TYPE>::operator = (const Vector<TYPE>& rhs) { template<class TYPE> inline const Vector<TYPE>& Vector<TYPE>::operator = (const Vector<TYPE>& rhs) const { + VectorImpl::operator = (static_cast<const VectorImpl&>(rhs)); + return *this; +} + +template<class TYPE> inline +Vector<TYPE>& Vector<TYPE>::operator = (const SortedVector<TYPE>& rhs) { + VectorImpl::operator = (static_cast<const VectorImpl&>(rhs)); + return *this; +} + +template<class TYPE> inline +const Vector<TYPE>& Vector<TYPE>::operator = (const SortedVector<TYPE>& rhs) const { VectorImpl::operator = (rhs); return *this; } |