greenplumn CAutoRef 源码

  • 2022-08-18
  • 浏览 (388)

greenplumn CAutoRef 代码

文件路径:/src/backend/gporca/libgpos/include/gpos/common/CAutoRef.h

//---------------------------------------------------------------------------
//	Greenplum Database
//	Copyright (C) 2009 Greenplum, Inc.
//
//	@filename:
//		CAutoRef.h
//
//	@doc:
//		Basic auto pointer for ref-counted objects
//---------------------------------------------------------------------------
#ifndef GPOS_CAutoRef_H
#define GPOS_CAutoRef_H

#include "gpos/base.h"
#include "gpos/common/CAutoP.h"
#include "gpos/common/CRefCount.h"

namespace gpos
{
//---------------------------------------------------------------------------
//	@class:
//		CAutoRef
//
//	@doc:
//		Wrapps pointer of type T which is a subtype of CRefCount
//
//---------------------------------------------------------------------------
template <class T>
class CAutoRef : public CAutoP<T>
{
private:
public:
	CAutoRef<T>(const CAutoRef &) = delete;

	// ctor
	explicit CAutoRef<T>() : CAutoP<T>()
	{
	}

	// ctor
	explicit CAutoRef<T>(T *object) : CAutoP<T>(object)
	{
	}

	~CAutoRef() override;

	// simple assignment
	CAutoRef<T> const &
	operator=(T *object)
	{
		CAutoP<T>::m_object = object;
		return *this;
	}

};	// class CAutoRef

//---------------------------------------------------------------------------
//	@function:
//		CAutoRef::~CAutoRef
//
//	@doc:
//		Dtor
//
//---------------------------------------------------------------------------
template <class T>
CAutoRef<T>::~CAutoRef()
{
	if (nullptr != CAutoP<T>::m_object)
	{
		reinterpret_cast<CRefCount *>(CAutoP<T>::m_object)->Release();
	}

	// null out pointer before ~CAutoP() gets called
	CAutoP<T>::m_object = nullptr;
}
}  // namespace gpos

#endif	// !GPOS_CAutoRef_H

// EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn CAutoP 源码

greenplumn CAutoRg 源码

greenplumn CAutoTimer 源码

greenplumn CBitSet 源码

greenplumn CBitSetIter 源码

greenplumn CBitVector 源码

greenplumn CDebugCounter 源码

greenplumn CDouble 源码

greenplumn CDynamicPtrArray 源码

greenplumn CEnumSet 源码

0  赞