Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(173)

Unified Diff: third_party/WebKit/Source/platform/inspector_protocol/PlatformSTL.h

Issue 2150333003: [DevTools] Compatibility with old STL libraries (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed typo in the build file. Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/inspector_protocol/PlatformSTL.h
diff --git a/third_party/WebKit/Source/platform/inspector_protocol/PlatformSTL.h b/third_party/WebKit/Source/platform/inspector_protocol/PlatformSTL.h
index 3e687b994c951e4ee0a65f2ce302fcc6022c28b7..33ca199b1f4e3bc39e8237e449ebe8b19e807d2b 100644
--- a/third_party/WebKit/Source/platform/inspector_protocol/PlatformSTL.h
+++ b/third_party/WebKit/Source/platform/inspector_protocol/PlatformSTL.h
@@ -122,6 +122,7 @@ public:
unique_ptr() : m_ptr(nullptr) {}
unique_ptr(std::nullptr_t) : m_ptr(nullptr) {}
+ unique_ptr(const unique_ptr&);
unique_ptr(unique_ptr&&);
template <typename U, typename = typename enable_if<is_convertible<U*, T*>::value>::type> unique_ptr(unique_ptr<U>&&);
@@ -134,7 +135,10 @@ public:
PtrType get() const { return m_ptr; }
void reset(PtrType = nullptr);
- PtrType release();
+ PtrType release()
+ {
+ return this->internalRelease();
+ }
ValueType& operator*() const { DCHECK(m_ptr); return *m_ptr; }
PtrType operator->() const { DCHECK(m_ptr); return m_ptr; }
@@ -146,7 +150,7 @@ public:
unique_ptr& operator=(std::nullptr_t) { reset(); return *this; }
-
+ unique_ptr& operator=(const unique_ptr&);
unique_ptr& operator=(unique_ptr&&);
template <typename U> unique_ptr& operator=(unique_ptr<U>&&);
@@ -157,6 +161,12 @@ public:
explicit unique_ptr(PtrType ptr) : m_ptr(ptr) {}
private:
+ PtrType internalRelease() const
+ {
+ PtrType ptr = m_ptr;
+ m_ptr = nullptr;
+ return ptr;
+ }
// We should never have two unique_ptrs for the same underlying object
// (otherwise we'll get double-destruction), so these equality operators
@@ -172,7 +182,7 @@ private:
return false;
}
- PtrType m_ptr;
+ mutable PtrType m_ptr;
};
@@ -180,16 +190,10 @@ template <typename T> inline void unique_ptr<T>::reset(PtrType ptr)
{
PtrType p = m_ptr;
m_ptr = ptr;
+ DCHECK(!p || m_ptr != p);
OwnedPtrDeleter<T>::deletePtr(p);
}
-template <typename T> inline typename unique_ptr<T>::PtrType unique_ptr<T>::release()
-{
- PtrType ptr = m_ptr;
- m_ptr = nullptr;
- return ptr;
-}
-
template <typename T> inline typename unique_ptr<T>::ValueType& unique_ptr<T>::operator[](std::ptrdiff_t i) const
{
static_assert(is_array<T>::value, "elements access is possible for arrays only");
@@ -198,8 +202,13 @@ template <typename T> inline typename unique_ptr<T>::ValueType& unique_ptr<T>::o
return m_ptr[i];
}
+template <typename T> inline unique_ptr<T>::unique_ptr(const unique_ptr<T>& o)
+ : m_ptr(o.internalRelease())
+{
+}
+
template <typename T> inline unique_ptr<T>::unique_ptr(unique_ptr<T>&& o)
- : m_ptr(o.release())
+ : m_ptr(o.internalRelease())
{
}
@@ -210,13 +219,15 @@ template <typename U, typename> inline unique_ptr<T>::unique_ptr(unique_ptr<U>&&
static_assert(!is_array<T>::value, "pointers to array must never be converted");
}
-template <typename T> inline unique_ptr<T>& unique_ptr<T>::operator=(unique_ptr<T>&& o)
+template <typename T> inline unique_ptr<T>& unique_ptr<T>::operator=(const unique_ptr<T>& o)
{
- PtrType ptr = m_ptr;
- m_ptr = o.release();
- DCHECK(!ptr || m_ptr != ptr);
- OwnedPtrDeleter<T>::deletePtr(ptr);
+ reset(o.internalRelease());
+ return *this;
+}
+template <typename T> inline unique_ptr<T>& unique_ptr<T>::operator=(unique_ptr<T>&& o)
+{
+ reset(o.internalRelease());
return *this;
}

Powered by Google App Engine
This is Rietveld 408576698