/*************************************************************************************************************************************/ /* */ /* 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