greenplumn CBitSetIter 源码

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

greenplumn CBitSetIter 代码

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

//---------------------------------------------------------------------------
//	Greenplum Database
//	Copyright (C) 2009 Greenplum, Inc.
//
//	@filename:
//		CBitSetIter.h
//
//	@doc:
//		Implementation of iterator for bitset
//---------------------------------------------------------------------------
#ifndef GPOS_CBitSetIter_H
#define GPOS_CBitSetIter_H

#include "gpos/base.h"
#include "gpos/common/CBitSet.h"

namespace gpos
{
//---------------------------------------------------------------------------
//	@class:
//		CBitSetIter
//
//	@doc:
//		Iterator for bitset's; defined as friend, ie can access bitset's
//		internal links
//
//---------------------------------------------------------------------------
class CBitSetIter
{
private:
	// bitset
	const CBitSet &m_bs;

	// current cursor position (in current link)
	ULONG m_cursor;

	// current cursor link
	CBitSet::CBitSetLink *m_bsl;

	// is iterator active or exhausted
	BOOL m_active;

public:
	CBitSetIter(const CBitSetIter &) = delete;

	// ctor
	explicit CBitSetIter(const CBitSet &bs);
	// dtor
	~CBitSetIter() = default;

	// short hand for cast
	operator BOOL() const
	{
		return m_active;
	}

	// move to next bit
	BOOL Advance();

	// current bit
	ULONG Bit() const;

};	// class CBitSetIter
}  // namespace gpos


#endif	// !GPOS_CBitSetIter_H

// EOF

相关信息

greenplumn 源码目录

相关文章

greenplumn CAutoP 源码

greenplumn CAutoRef 源码

greenplumn CAutoRg 源码

greenplumn CAutoTimer 源码

greenplumn CBitSet 源码

greenplumn CBitVector 源码

greenplumn CDebugCounter 源码

greenplumn CDouble 源码

greenplumn CDynamicPtrArray 源码

greenplumn CEnumSet 源码

0  赞