Ejemplo n.º 1
0
bool Query::
RunQuery( QueryProcessor &qp, KeySet &result )
{
	switch( op ) {
		case IDENT: {
			return( qp.DoQuery( *rectangles, result ) );
		}

		case AND: {
			KeySet	tmp;
			if( !left->RunQuery( qp, result ) || !right->RunQuery( qp, tmp ) ) {
				return( false );
			}
			result.Intersect( tmp );
			return( true );
		}

		case OR: 
			return( left->RunQuery(qp,result) && right->RunQuery(qp,result) );

		default:
			return( false );
	}
}