greenplumn CDXLMemoryManager 源码

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

greenplumn CDXLMemoryManager 代码

文件路径:/src/backend/gporca/libnaucrates/include/naucrates/dxl/xml/CDXLMemoryManager.h

//---------------------------------------------------------------------------
//	Greenplum Database
//	Copyright (C) 2010 Greenplum, Inc.
//
//	@filename:
//		CDXLMemoryManager.h
//
//	@doc:
//		Memory manager for parsing DXL documents used in the Xerces XML parser.
//		Provides a wrapper around the GPOS CMemoryPool interface.
//---------------------------------------------------------------------------

#ifndef GPDXL_CDXLMemoryManager_H
#define GPDXL_CDXLMemoryManager_H

#include <iostream>
#include <xercesc/framework/MemoryManager.hpp>
#include <xercesc/util/XercesDefs.hpp>

#include "gpos/base.h"

namespace gpdxl
{
using namespace gpos;

XERCES_CPP_NAMESPACE_USE

//---------------------------------------------------------------------------
//	@class:
//		CDXLMemoryManager
//
//	@doc:
//		Memory manager for parsing DXL documents used in the Xerces XML parser.
//		Provides a wrapper around the GPOS CMemoryPool interface.
//
//---------------------------------------------------------------------------
class CDXLMemoryManager : public MemoryManager
{
private:
	// memory pool
	CMemoryPool *m_mp;

public:
	CDXLMemoryManager(const CDXLMemoryManager &) = delete;

	// ctor
	CDXLMemoryManager(CMemoryPool *mp);

	// MemoryManager interface functions

	// allocates memory
	void *allocate(XMLSize_t  // size
				   ) override;

	// deallocates memory
	void deallocate(void *pv) override;

	// accessor to the underlying memory pool
	CMemoryPool *
	Pmp()
	{
		return m_mp;
	}

	// returns the memory manager responsible for memory allocation
	// during exceptions
	MemoryManager *
	getExceptionMemoryManager() override
	{
		return (MemoryManager *) this;
	}
};
}  // namespace gpdxl

#endif	// GPDXL_CDXLMemoryManager_H

// EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn CDXLSections 源码

greenplumn CXMLSerializer 源码

greenplumn dxltokens 源码

0  赞