示例#1
0
//---------------------------------------------------------------------------
//	@function:
//		CLogicalSetOp::FMatch
//
//	@doc:
//		Match function on operator level
//
//---------------------------------------------------------------------------
BOOL
CLogicalSetOp::FMatch
	(
	COperator *pop
	)
	const
{
	if (pop->Eopid() != Eopid())
	{
		return false;
	}

	CLogicalSetOp *popSetOp = CLogicalSetOp::PopConvert(pop);
	DrgDrgPcr *pdrgpdrgpcrInput = popSetOp->PdrgpdrgpcrInput();
	const ULONG ulArity = pdrgpdrgpcrInput->UlLength();

	if (ulArity != m_pdrgpdrgpcrInput->UlLength() ||
		!m_pdrgpcrOutput->FEqual(popSetOp->PdrgpcrOutput()))
	{
		return false;
	}

	for (ULONG ul = 0; ul < ulArity; ul++)
	{
		if (!(*m_pdrgpdrgpcrInput)[ul]->FEqual((*pdrgpdrgpcrInput)[ul]))
		{
			return false;
		}
	}

	return true;
}