/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S R E L A T I V E S A L A M A R C H E A L E A T O I R E : */
/* */
/* */
/* Author of '$xrk/rdn_walk.31$I' : */
/* */
/* Jean-Francois Colonna (LACTAMME, 1997??????????). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* A C C E S A U N A L B U M : */
/* */
/*************************************************************************************************************************************/
#define INVERSER_L_ORDRE_DES_COUPES_DANS_ACCES_ALBUM \
VRAI
#define NE_PAS_INVERSER_L_ORDRE_DES_COUPES_DANS_ACCES_ALBUM \
NOTL(INVERSER_L_ORDRE_DES_COUPES_DANS_ACCES_ALBUM)
/* Pour l'initialisation de l'indicateur logique 'inverser' de 'ACCES_ALBUM(...)'. */
#define AUTORISER_LES_SEQUENCES_INCOMPLETES_DANS_UN_ALBUM \
AUTORISE
#define NE_PAS_AUTORISER_LES_SEQUENCES_INCOMPLETES_DANS_UN_ALBUM \
NOTL(AUTORISER_LES_SEQUENCES_INCOMPLETES_DANS_UN_ALBUM)
/* Pour l'initialisation de l'indicateur logique 'incomplet' de 'ACCES_ALBUM(...)'. */
#define NUMERO_DE_LA_COUPE(premiere_coupe,inverser) \
COND(IL_NE_FAUT_PAS(inverser) \
,numero_de_la_coupe \
,INVX(numero_de_la_coupe,premiere_coupe,LSTX(premiere_coupe,NBRE(Zmin,Zmax))) \
) \
/* Fonction de calcul de la coupe courante. */
#define editer_les_messages_d_erreur_de_lecture_des_fichiers \
files_____editer_les_messages_d_erreur_de_lecture_des_fichiers \
/* Afin de raccourcir la longueur d'une ligne a suivre... */
#define ACCES_ALBUM(utiliser_champ,champ,nom_champ,nom_postfixe,nombre_chiffres,wait,incomplet,premiere_coupe,pas_coupes,inverser,v0) \
Bblock \
Test(IL_FAUT(utiliser_champ)) \
Bblock \
DEFV(Int,INIT(numero_de_la_coupe,premiere_coupe)); \
/* Numero de la coupe courante. */ \
\
begin_fuite \
Bblock \
Test(IFEQ_chaine(nom_champ,NOM_PIPE)) \
Bblock \
CALS(Iinitialisation(PAGE(champ,Z),v0)); \
/* Cas ou il n'y a pas d'images a lire, on force la valeur initiale 'v0'... */ \
Eblock \
ATes \
Bblock \
/* Cas ou il y a des images a lire : */ \
DEFV(CHAR,INIT(POINTERc(nom_d_une_coupe),NOM_UNDEF)); \
/* Nom courant des coupes. */ \
\
EGAL(nom_d_une_coupe \
,COND(IFEQ_chaine(nom_postfixe,NOM_UNDEF_VIDE) \
,chain_Aconcaten2_sauf_nom_pipe(nom_champ \
,chain_numero(NUMERO_DE_LA_COUPE(premiere_coupe,inverser) \
,nombre_chiffres \
) \
) \
,chain_Aconcaten3_sauf_nom_pipe(nom_champ \
,chain_numero(NUMERO_DE_LA_COUPE(premiere_coupe,inverser) \
,nombre_chiffres \
) \
,nom_postfixe \
) \
) \
); \
\
Test(IFET(EST_AUTORISE(incomplet) \
,IL_Y_A_ERREUR(CODE_ERROR(Itest_fichier(nom_d_une_coupe))) \
) \
) \
Bblock \
CALS(Iinitialisation(PAGE(champ,Z),v0)); \
/* Cas ou il n'y a pas d'images a lire, on force la valeur initiale 'v0'... */ \
Eblock \
ATes \
Bblock \
Test(IL_FAUT(wait)) \
Bblock \
Tant(IL_Y_A_ERREUR(CODE_ERROR(Iload_image(PAGE(champ,Z),nom_d_une_coupe)))) \
Bblock \
Eblock \
ETan \
Eblock \
ATes \
Bblock \
Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(PAGE(champ,Z),nom_d_une_coupe)))) \
Bblock \
Eblock \
ATes \
Bblock \
gTest__CODE_ERREUR__ERREUR07 \
(BLOC(Bblock \
PRINT_ATTENTION("la fin de flot a ete rencontree"); \
Eblock \
) \
,BLOC(Bblock \
Test(IL_FAUT(editer_les_messages_d_erreur_de_lecture_des_fichiers)) \
Bblock \
PRINT_ERREUR("le fichier n'existe pas ou n'est pas de type 'image'"); \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
) \
); \
Eblock \
ETes \
Eblock \
ETes \
Eblock \
ETes \
\
CALZ_FreCC(nom_d_une_coupe); \
Eblock \
ETes \
\
INCR(numero_de_la_coupe,pas_coupes); \
/* Numero de l'image suivante a recuperer... */ \
Eblock \
end_fuite \
Eblock \
ATes \
Bblock \
Eblock \
ETes \
Eblock \
/* Procedure de recuperation d'un album. */