| Index: core/fxcrt/include/cfx_count_ref.h
|
| diff --git a/core/fxcrt/include/cfx_count_ref.h b/core/fxcrt/include/cfx_count_ref.h
|
| deleted file mode 100644
|
| index a879967b28ff6c338ec154101743654e3bfa7739..0000000000000000000000000000000000000000
|
| --- a/core/fxcrt/include/cfx_count_ref.h
|
| +++ /dev/null
|
| @@ -1,81 +0,0 @@
|
| -// Copyright 2016 PDFium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
| -
|
| -#ifndef CORE_FXCRT_INCLUDE_CFX_COUNT_REF_H_
|
| -#define CORE_FXCRT_INCLUDE_CFX_COUNT_REF_H_
|
| -
|
| -#include "core/fxcrt/include/cfx_retain_ptr.h"
|
| -#include "core/fxcrt/include/fx_system.h"
|
| -
|
| -// A shared object with Copy on Write semantics that makes it appear as
|
| -// if each one were independent.
|
| -template <class ObjClass>
|
| -class CFX_CountRef {
|
| - public:
|
| - CFX_CountRef() {}
|
| - CFX_CountRef(const CFX_CountRef& other) : m_pObject(other.m_pObject) {}
|
| - ~CFX_CountRef() {}
|
| -
|
| - template <typename... Args>
|
| - ObjClass* Emplace(Args... params) {
|
| - m_pObject.Reset(new CountedObj(params...));
|
| - return m_pObject.Get();
|
| - }
|
| -
|
| - CFX_CountRef& operator=(const CFX_CountRef& that) {
|
| - if (*this != that)
|
| - m_pObject = that.m_pObject;
|
| - return *this;
|
| - }
|
| -
|
| - void SetNull() { m_pObject.Reset(); }
|
| - const ObjClass* GetObject() const { return m_pObject.Get(); }
|
| -
|
| - template <typename... Args>
|
| - ObjClass* GetPrivateCopy(Args... params) {
|
| - if (!m_pObject)
|
| - return Emplace(params...);
|
| - if (!m_pObject->HasOneRef())
|
| - m_pObject.Reset(new CountedObj(*m_pObject));
|
| - return m_pObject.Get();
|
| - }
|
| -
|
| - bool operator==(const CFX_CountRef& that) const {
|
| - return m_pObject == that.m_pObject;
|
| - }
|
| - bool operator!=(const CFX_CountRef& that) const { return !(*this == that); }
|
| - explicit operator bool() const { return !!m_pObject; }
|
| -
|
| - private:
|
| - class CountedObj : public ObjClass {
|
| - public:
|
| - template <typename... Args>
|
| - CountedObj(Args... params) : ObjClass(params...), m_RefCount(0) {}
|
| -
|
| - CountedObj(const CountedObj& src) : ObjClass(src), m_RefCount(0) {}
|
| - ~CountedObj() { m_RefCount = 0; }
|
| -
|
| - bool HasOneRef() const { return m_RefCount == 1; }
|
| - void Retain() { m_RefCount++; }
|
| - void Release() {
|
| - ASSERT(m_RefCount);
|
| - if (--m_RefCount == 0)
|
| - delete this;
|
| - }
|
| -
|
| - private:
|
| - // To ensure ref counts do not overflow, consider the worst possible case:
|
| - // the entire address space contains nothing but pointers to this object.
|
| - // Since the count increments with each new pointer, the largest value is
|
| - // the number of pointers that can fit into the address space. The size of
|
| - // the address space itself is a good upper bound on it.
|
| - intptr_t m_RefCount;
|
| - };
|
| -
|
| - CFX_RetainPtr<CountedObj> m_pObject;
|
| -};
|
| -
|
| -#endif // CORE_FXCRT_INCLUDE_CFX_COUNT_REF_H_
|
|
|