#ifndef CALCULE_MONTEES_H
#define CALCULE_MONTEES_H

#define TAG_FORCER_PATH_N 1
#define TAG_FORCER_PATH_E 2
#define TAG_FORCER_PATH_S 4
#define TAG_FORCER_PATH_O 8
#define TAG_FORCER_PATH_U 16
#define TAG_FORCER_PATH_D 32
#define TAGS_FORCER_PATHS_UD (TAG_FORCER_PATH_U | TAG_FORCER_PATH_D)
#define TAGS_FORCER_PATHS \
    (TAG_FORCER_PATH_N | TAG_FORCER_PATH_E | TAG_FORCER_PATH_S | TAG_FORCER_PATH_O \
    | TAG_FORCER_PATH_U | TAG_FORCER_PATH_D)

#define TAG_FORCER_WALL_N 64
#define TAG_FORCER_WALL_E 128
#define TAG_FORCER_WALL_S 256
#define TAG_FORCER_WALL_O 512
#define TAGS_FORCER_WALLS_NS \
    (TAG_FORCER_WALL_N | TAG_FORCER_WALL_S)
#define TAGS_FORCER_WALLS_EO \
    (TAG_FORCER_WALL_E | TAG_FORCER_WALL_O)
#define TAGS_FORCER_WALLS \
    (TAG_FORCER_WALL_N | TAG_FORCER_WALL_E \
    | TAG_FORCER_WALL_S | TAG_FORCER_WALL_O)

extern void calcule_montees(struct cell *tabcells, unsigned long taille_x,
                            unsigned long taille_y,
                            unsigned long taille_z,
                            unsigned long *nb_montees_creees);
#endif                          /* CALCULE_MONTEES_H */
