/*************************************************************************************************************************************/
/* */
/* D E F I N I T I O N S D E C O M P I L A T I O N : */
/* */
/* */
/* Author of '$xrq/particle.M1$I' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 1994??????????). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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 : */
/* */
/* #include "DEFINITIONS.I" */
/* #include INCLUDES_BASE */
/* #include image_image_TRI_IMAGE_EXT */
/* #include image_image_VECTEURS_EXT */
/* */
/* ne peuvent etre references ici (malheureusement) a cause du fonctionnement de la */
/* commande '$xcc/cl$Z' qui n'explore pas recursivement les fichiers d'includes... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* O P T I M I S E U R D E C O M P I L A T I O N : */
/* */
/*************************************************************************************************************************************/
#define GENERE__Fonction__OPT(Fsequence,racine,sequence) \
/* Generation automatique d'une fonction et de sa sequence d'appel... */ \
/* */ \
/* ATTENTION : si la ligne d'appel de 'GENERE__Fonction__OPTIMISATION(...)' est trop */ \
/* longue, la seule solution sera de l'ecrire : */ \
/* */ \
/* GENERE__Fonction__OPTIMISATION */ \
/* (Fsequence,racine,sequence); */ \
/* */ \
/* car, en effet, l'ecrire : */ \
/* */ \
/* GENERE__Fonction__OPTIMISATION(Fsequence */ \
/* ,racine */ \
/* ,sequence */ \
/* ); */ \
/* */ \
/* introduit ensuite des espaces dans la concatenation 'f$racine$Fsequence' qui suit... */ \
/* Ceci a ete note le 20170117164626 lors de la mise au point de 'v $xi/DICO_Fonction$Z'... */ \
/* */ \
/* Le 20170124121519, pour ramener tout sur une meme ligne afin de ne pas avoir de */ \
/* problemes d'espaces "parasites" dans les arguments, il a fallu raccourcir le nom, d'ou */ \
/* le 'GENERE__Fonction__OPT(...)'. */ \
/* */ \
/* En fait, le probleme venait de 'v $xrq/particle.M1$I 20170124134356', donc le changement */ \
/* de 'GENERE__Fonction__OPTIMISATION(...)' en 'GENERE__Fonction__OPT(...)' n'etait pas */ \
/* utile... */ \
DEFV(Local,DEFV(FonctionI,f$racine$Fsequence())) \
/* Ce type de fonction est introduit dans l'espoir de reduire le temps de compilation. On */ \
/* notera que le nom genere est 'f_racine_Fsequence' a cause du fait que la longueur des */ \
/* noms autorisee par le pre-processeur est tres superieure a ce qu'autorisent la majorite */ \
/* des compilateurs ; la 'racine' est donc la pour lever certaines ambiguites qui pourraient */ \
/* apparaitre dans des noms possedant une longue racine commune... */ \
/*-----------------------------------------------------------------------------------------------------------------------------------*/ \
Bblock \
INIT_ERROR; \
/*..............................................................................................................................*/ \
BLOC(sequence); \
/* Implantation de la sequence de code argument dont le nom reel est '___sequence'. On */ \
/* notera que l'on ne peut pas simplifier ce processus de la facon suivante : */ \
/* */ \
/* #define GENERE__Fonction__OPT(sequence,racine) \ */ \
/* ... \ */ \
/* BLOC($$$sequence); \ */ \
/* ... \ */ \
/* */ \
/* car en effet, cela obligerait a declarer '___sequence' de la facon suivante : */ \
/* */ \
/* =define ___sequence */ \
/* ... */ \
/* */ \
/* ce qui impliquerait que presque toutes les procedures soient elles aussi declarees */ \
/* ainsi, ce que je n'ose pas tenter... */ \
RETU_ERROR; \
Eblock \
\
%define Fsequence \ \
Bblock \ \
CALS(f$racine$Fsequence()); \ \
Eblock \
/* Generation d'une sequence d'appel a la fonction 'f_racine_Fsequence()' generee ci-dessus. */ \
/* */ \
/* On notera que le 20170124134356 la definition de 'Fsequence' est passe de '$PASSE_2' a */ \
/* '$PASSE_3' car, en effet, depuis quelques jours, l'appel a 'GENERE__Fonction__OPT(...)' */ \
/* est fait a l'interieur de 'DEFV(LoF,...)', or 'LoF' ('v $xil/defi_K2$vv$DEF LoF') est */ \
/* lui-aussi defini en '$PASSE_2' ('v $xil/defi_c1$vv$DEF TypedefP'). D'ou la necessite de */ \
/* decaler la definition de 'Fsequence' a la passe suivante afin que le 'define' qui le */ \
/* realise soit bien pris en compte... */