Exemplo n.º 1
0
/**
 * Проверяет потенциальное совпадение двух элементов массива
 * Значения индексов для этой процедуры считаются окончательными
 * даже если граф строится для итерации (проверяется только 1 итерация 
 * а не их последовательность).
 */
bool equal(const TParam &in, const TParam &out)
{
    // FIXME - only for non scalar value
    if (in. getName() != out. getName())
        return false;
    if (!in. isArrayElement() || !out. isArrayElement())
        return true; // array  and subarray
    // the dimension must be equal - fixme
    int dim1 = in. getDimension();
    int dim2 = out.getDimension();
    int common = (dim1 >= dim2) ? dim2 : dim1;

    TIndex *ind_in = in. getIndexes();
    TIndex *ind_out = out. getIndexes();

    for (int i = 0; i < common; i++)
    {
        if (ind_in[i]. isAtom() || ind_out[i]. isAtom())
            continue;
        if (isIntersect(ind_in[i].diap, ind_out[i].diap))
        {
            continue;
        }
        else
        {
            delete[] ind_in;
            delete[] ind_out;
            return false;
        }
    }
    delete[] ind_in;
    delete[] ind_out;
    return true;
}