//--------------------------------------------------------------------------- // @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; }