#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "cell.h"

int verif_liens_bidirectionnels(unsigned long total_cellules,
                                cell * tabcell,
                                char *buffer_erreur, int maxlen_erreur)
{
    unsigned long i, j, m;
    struct cell *pcell;
    struct cell *plink;
    int ret;

    ret = 0;
    for (i = 0; i < total_cellules; i++) {
        pcell = &tabcell[i];
        /* boucle sur tous les liens de la cellule */
        for (j = 0; j < pcell->nb_links; j++) {
            plink = pcell->links[j].link;
            /* rechercher le lien opposé de l'autre côté */
            for (m = 0; m < plink->nb_links; m++) {
                if (plink->links[m].link == pcell)
                    break;
            }
            if (m == plink->nb_links) {
                snprintf(buffer_erreur, maxlen_erreur,
                         "Erreur de recherche de cellule :\n"
                         "La cellule %lu : le lien %lu pointe vers une cellule.\n"
                         "Cette dernière n'a pas de lien dans l'autre sens en retour, pas normal.\n",
                         i + 1, j + 1);
                return -1;
            }
        }
    }
    return ret;
}
