/*************************************************************************************************************************************/
/* */
/* T E S T D E L A G E S T I O N D E S L I S T E S : */
/* */
/* */
/* Author of '$xtKg/liste.11$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 20031102083258). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* I N T E R F A C E ' listG ' : */
/* */
/* */
/* :Debut_listG: */
/* :Fin_listG: */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* D I R E C T I V E S S P E C I F I Q U E S D E C O M P I L A T I O N : */
/* */
/*************************************************************************************************************************************/
@define PRAGMA_CPP_____MODULE_NON_DERIVABLE
@define PRAGMA_CL_____MODULE_NON_OPTIMISABLE
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* F I C H I E R S D ' I N C L U D E S G E N E R A U X : */
/* */
/*************************************************************************************************************************************/
/* Nota : les fichiers d'includes generaux ci-apres ne peuvent etre references dans le */
/* fichier "nucleon.L1.I" (malheureusement) a cause du fonctionnement de la commande */
/* '$xcc/cl$Z' qui n'explore pas recursivement les fichiers d'includes... */
#include INCLUDES_BASE
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* O P T I O N S D E C O M P I L A T I O N : */
/* */
/*************************************************************************************************************************************/
#define __VERSION__GENERATION_DU_VIDE \
/* Definition du type de particule que l'on va generer ; etant dans '$xrq/vide.L0$K', */ \
/* il s'agit bien entendu du vide. */
#nodefine VRAIES_SPHERES_PLEINES_TRIDIMENSIONNELLES \
/* Definitions de la visualisation d'une sphere, avec le choix entre deux modules : */ \
/* */ \
/* #include xrq/nucleon.LS.1.I" : fausse sphere creuse tridimensionnelle, */ \
/* #include xrq/nucleon.LS.2.I" : vraie sphere pleine tridimensionnelle. */ \
/* */
/* On notera que l'on fait disparaitre la possibilite d'interpoler uniquement par des */
/* splines (voir 'v $xrq/nucleon.L0$K'), car, en effet, cela ne sert plus a rien... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* F I C H I E R S D ' I N C L U D E S S P E C I F I Q U E S : */
/* */
/*************************************************************************************************************************************/
#include xrq/nucleon.L1.I"
/* Definitions de compilation. */
#include xrq/nucleon.L2.I"
/* Definitions des constantes universelles. */
#include xrq/nucleon.L3.I"
#include xrv/particule.41.I"
/* Definitions du temps. */
#include xrq/nucleon.Lc.I"
/* Definitions de l'espace physique (debut). */
#include xrq/nucleon.L4.I"
/* Definitions des differents espaces. */
#include xrq/nucleon.LF.I"
/* Definitions de la trace "ecrite" des evenements. */
/* On notera que "nucleon.LF.I" est ici depuis que "nucleon.L8.I" utilise la procedure */
/* 'TRACE_D_UN_EVENEMENT(...)' lorsqu'une particule sort de l'Univers... */
#include xrq/nucleon.L5.I"
/* Definitions des descriptions des particules. */
#include xrq/nucleon.L7.I"
/* Definitions de la geometrie. */
/* On notera la permutation de "vide.L6.I" et de "nucleon.L7.I" due au fait que l'on */
/* separe nettement les definitions generales de la geometrie, de celles particulieres */
/* du vide... */
#include xrq/vide.L6.I"
/* Definitions du vide. */
/* On notera la permutation de "vide.L6.I" et de "nucleon.L7.I" due au fait que l'on */
/* separe nettement les definitions generales de la geometrie, de celles particulieres */
/* du vide... */
#include xrq/nucleon.L8.I"
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P A R A M E T R E S : */
/* */
/*************************************************************************************************************************************/
#define NOMBRE_DE_PARTICULES \
(256+2)
#define NOMBRE_D_ITERATIONS_DE_DESTRUCTION \
QUATRE
#define NOMBRE_DE_NOUVELLES_PARTICULES \
HUIT
#define EDITER_LES_PARTICULES \
FAUX
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* T E S T D E L A G E S T I O N D E S L I S T E S : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(Positive,INIT(nombre_de_particules,NOMBRE_DE_PARTICULES));
DEFV(Positive,INIT(nombre_d_iterations_de_destruction,NOMBRE_D_ITERATIONS_DE_DESTRUCTION));
DEFV(Positive,INIT(nombre_de_nouvelles_particules,NOMBRE_DE_NOUVELLES_PARTICULES));
DEFV(Logical,INIT(editer_les_particules,EDITER_LES_PARTICULES));
DEFV(particule,INIT(POINTERs(nouvelle_particule),PARTICULE_NON_DEFINIE));
DEFV(Positive,INIT(compteur,UNDEF));
DEFV(Logical,INIT(bascule,LUNDEF));
/*..............................................................................................................................*/
GET_ARGUMENTS_(nombre_d_arguments
,BLOC(GET_ARGUMENT_I("particules=",nombre_de_particules);
GET_ARGUMENT_I("destruction=",nombre_d_iterations_de_destruction);
GET_ARGUMENT_I("nouvelles=",nombre_de_nouvelles_particules);
GET_ARGUMENT_L("editer=",editer_les_particules);
)
);
Repe(nombre_de_particules)
Bblock
CREATION_D_UNE_PARTICULE(nouvelle_particule);
/* Definition des particules initiales... */
Eblock
ERep
DESTRUCTION_D_UNE_PARTICULE(premiere_particule);
DESTRUCTION_D_UNE_PARTICULE(derniere_particule);
/* Pour tester les cas "extremes"... */
CLIR(compteur);
ENSEMBLE_DES_PARTICULES(BLOC(INCR(compteur,I);
Test(IL_FAUT(editer_les_particules))
Bblock
CAL2(Prin3("nouvelle particule : [%x] %x [%x]\n"
,PRECEDENT(PARTICULE_COURANTE)
,NEUT(PARTICULE_COURANTE)
,SUIVANT(PARTICULE_COURANTE)
)
);
Eblock
ATes
Bblock
Eblock
ETes
)
);
CAL2(Prin1("nombre 1=%d\n\n",compteur));
Repe(nombre_d_iterations_de_destruction)
Bblock
EGAL(bascule,VRAI);
ENSEMBLE_DES_PARTICULES(BLOC(Test(EST_VRAI(bascule))
Bblock
Test(IL_FAUT(editer_les_particules))
Bblock
CAL2(Prin3("particule a detruire : [%x] %x [%x]\n"
,PRECEDENT(PARTICULE_COURANTE)
,NEUT(PARTICULE_COURANTE)
,SUIVANT(PARTICULE_COURANTE)
)
);
Eblock
ATes
Bblock
Eblock
ETes
DESTRUCTION_D_UNE_PARTICULE(PARTICULE_COURANTE);
Eblock
ATes
Bblock
Eblock
ETes
EGAL(bascule,NOTL(bascule));
/* Destruction d'une particule sur deux... */
)
);
Repe(nombre_de_nouvelles_particules)
Bblock
CREATION_D_UNE_PARTICULE(nouvelle_particule);
Eblock
ERep
Eblock
ERep
CLIR(compteur);
ENSEMBLE_DES_PARTICULES(BLOC(INCR(compteur,I);
)
);
CAL2(Prin1("nombre 2=%d\n\n",compteur));
RETU_Commande;
Eblock
ECommande