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



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.