_______________________________________________________________________________________________________________________________________ /*************************************************************************************************************************************/ /* */ /* F O N C T I O N S D ' A L L O C A T I O N / D E S A L L O C A T I O N M E M O I R E */ /* D E C E R T A I N E S C H A I N E S D E C A R A C T E R E S T R E S U T I L I S E E S : */ /* */ /* */ /* Definition : */ /* */ /* Dans ce fichier, se trouvent toutes */ /* les fonctions destinees a allouer et a */ /* desallouer la memoire de certaines chaines */ /* de caracteres tres utilisees... */ /* */ /* Pendant un temps tout cela se trouvait */ /* dans 'v $xig/fonct$vv$FON', mais il y avait */ /* un probleme de reference en avant dans la */ /* fonction 'chain_Acopie(...)' qui reference la */ /* fonction 'allocation_memoire_et_generation_des_format_EGAr(...)' */ /* qui maintenant se trouve ici... */ /* */ /* */ /* Nota important : */ /* */ /* A compter du 20180413112426, on trouve */ /* aussi ici des fonctions qui avant cette */ /* date etaient elles-aussi dans 'v $xig/fonct$vv$FON' */ /* et qui posaient des problemes de references en */ /* avant ou de references "croisees". C'est ainsi */ /* de cas de 'FgEDITION_DE_LA_VALEUR_DE_LA_PLUPART_DES_COMPTEURS(...)' */ /* ci-apres... */ /* */ /* */ /* Author of '$xig/allocation$vv$FON' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20180402005741). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* C H A I N E S D E C A R A C T E R E S T R E S U T I L I S E E S : */ /* */ /*************************************************************************************************************************************/ DEFV(Common,DEFV(CHAR,INIT(POINTERc(format_EGAr____FORMAT_CHAI_2),ADRESSE_NON_ENCORE_DEFINIE))); DEFV(Common,DEFV(CHAR,INIT(POINTERc(format_EGAr____FORMAT_CHAI),ADRESSE_NON_ENCORE_DEFINIE))); DEFV(Common,DEFV(CHAR,INIT(POINTERc(format_EGAr____FORMAT_CHAI_EDITION),ADRESSE_NON_ENCORE_DEFINIE))); DEFV(Common,DEFV(CHAR,INIT(POINTERc(format_EGAr____FORMAT_CHAR_EDITION),ADRESSE_NON_ENCORE_DEFINIE))); DEFV(Common,DEFV(CHAR,INIT(POINTERc(format_EGAr____FORMAT_CHAR_EDITION_BACKSLASHEE),ADRESSE_NON_ENCORE_DEFINIE))); DEFV(Common,DEFV(CHAR,INIT(POINTERc(format_EGAr____FORMAT_CHAR_HEXA_DECIMAL_EDITION_1),ADRESSE_NON_ENCORE_DEFINIE))); DEFV(Common,DEFV(CHAR,INIT(POINTERc(format_EGAr____FORMAT_CHAR_HEXA_DECIMAL_EDITION),ADRESSE_NON_ENCORE_DEFINIE))); DEFV(Common,DEFV(CHAR,INIT(POINTERc(format_EGAr____FORMAT_FLOT),ADRESSE_NON_ENCORE_DEFINIE))); DEFV(Common,DEFV(CHAR,INIT(POINTERc(format_EGAr____FORMAT_FLOT_EDITION),ADRESSE_NON_ENCORE_DEFINIE))); DEFV(Common,DEFV(CHAR,INIT(POINTERc(format_EGAr____FORMAT_FLOT_EDITION__NON_SIGNE),ADRESSE_NON_ENCORE_DEFINIE))); DEFV(Common,DEFV(CHAR,INIT(POINTERc(format_EGAr____FORMAT_HEXA_DECIMAL),ADRESSE_NON_ENCORE_DEFINIE))); DEFV(Common,DEFV(CHAR,INIT(POINTERc(format_EGAr____FORMAT_HEXA_DECIMAL_SANS_0_EDITION),ADRESSE_NON_ENCORE_DEFINIE))); DEFV(Common,DEFV(CHAR,INIT(POINTERc(format_EGAr____FORMAT_HEXA_DECIMAL_EDITION_1),ADRESSE_NON_ENCORE_DEFINIE))); DEFV(Common,DEFV(CHAR,INIT(POINTERc(format_EGAr____FORMAT_HEXA_DECIMAL_EDITION),ADRESSE_NON_ENCORE_DEFINIE))); DEFV(Common,DEFV(CHAR,INIT(POINTERc(format_EGAr____FORMAT_INTE),ADRESSE_NON_ENCORE_DEFINIE))); DEFV(Common,DEFV(CHAR,INIT(POINTERc(format_EGAr____FORMAT_INTE_EDITION),ADRESSE_NON_ENCORE_DEFINIE))); DEFV(Common,DEFV(CHAR,INIT(POINTERc(format_EGAr____FORMAT_INTE_EDITION__NON_SIGNE),ADRESSE_NON_ENCORE_DEFINIE))); /* Introduits le 20180330104223... */ /* */ /* Le 20190906113913 fut introduit 'format_EGAr____FORMAT_HEXA_DECIMAL_SANS_0_EDITION'... */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* O P T I M I S A T I O N D E S A L L O C A T I O N S M E M O I R E */ /* D E C H A I N E S D E C A R A C T E R E S T R E S U T I L I S E E S : */ /* */ /*************************************************************************************************************************************/ BFonctionV #ifndef GENERATION_____D_UN_SOURCE_C_BOOTSTRAPPABLE #Aifndef GENERATION_____D_UN_SOURCE_C_BOOTSTRAPPABLE /* Introduit le 20210925084234... */ # define FORMAT_CHAR__________BOOTSTRAPPABLE \ FORMAT_CHAR # define FORMAT_CHAI__________BOOTSTRAPPABLE \ INTRODUCTION_FORMAT ## TYPE_FORMAT_GENERAL_CHAI # define FORMAT_INTE__________BOOTSTRAPPABLE \ INTRODUCTION_FORMAT ## __FORMAT_INTE # define FORMAT_HEXA_DECIMAL__BOOTSTRAPPABLE \ INTRODUCTION_FORMAT ## __FORMAT_HEXA_DECIMAL # define FORMAT_FLOT__________BOOTSTRAPPABLE \ INTRODUCTION_FORMAT ## FORMAT_FLOT_PRECISION ## TYPE_FORMAT_FLOT /* Definitions simplifiees des formats introduites le 20210925084234 et ce pour eviter */ /* les references en avant des fonctions de gestion de chaines de caracteres et d'edition */ /* (dans 'v $xig/fonct$vv$FON')... */ #Eifndef GENERATION_____D_UN_SOURCE_C_BOOTSTRAPPABLE DEFV(Common,DEFV(Logical,ZINT(allocation_memoire_et_generation_des_format_EGAr_____initialisation_faite,FAUX))); DEFV(Local,DEFV(Logical,INIT(allocation_memoire_et_generation_des_format_EGAr_____initialisation_en_cours,FAUX))); /* Introduit le 20180401123053 et complete le 20180401134653... */ DEFV(Common,DEFV(Logical,INIT(allocation_memoire_et_generation_des_format_EGAr_____compteur_d_allocation_memoire,ZERO))); /* Introduit le 20180407091122... */ #define ALLOCATION____MEMOIRE(format,nom,definition) \ Bblock \ EGAp(format,definition); \ /* On notera le 20210924150459 que toutes les definitions sont de la forme : */ \ /* */ \ /* chain_Aconcaten?(...) */ \ /* */ \ /* cette operation de concatenation provoquant effectivement une allocation memoire... */ \ \ Test(IL_FAUT(editer_les_formats_alloues)) \ Bblock \ CAL2(FPrin4(stream_Prin,FLUSHER_LE_FILE,"%s : %c%s%c\n",nom,K_VERITABLE_QUOTE,definition,K_VERITABLE_QUOTE)); \ /* Evidemment, on ne peut pas encore utiliser 'CAL2(Prin4(...))'... */ \ Eblock \ ATes \ Bblock \ Eblock \ ETes \ \ INCK(allocation_memoire_et_generation_des_format_EGAr_____compteur_d_allocation_memoire); \ Eblock \ /* Allocation memoire et comptage... */ #define VARIABLE_D_ENVIRONNEMENT_CONTROLANT_L_EDITION_DES_FORMATS \ "EditerFormats" DEFV(Common,DEFV(FonctionV,allocation_memoire_et_generation_des_format_EGAr())) /* Fonction introduite le 20180330115825... */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ Test(IFET(EST_FAUX(allocation_memoire_et_generation_des_format_EGAr_____initialisation_faite) ,EST_FAUX(allocation_memoire_et_generation_des_format_EGAr_____initialisation_en_cours) ) ) Bblock DEFV(Logical,INIT(editer_les_formats_alloues,GvalDefaut(VARIABLE_D_ENVIRONNEMENT_CONTROLANT_L_EDITION_DES_FORMATS,NEXIST))); /* Indicateur tres dangereux introduit le 20241107100821. Il est en effet dangereux car */ /* cette fonction est appelee dans 'v $xil/defi_c1$vv$DEF CALS.allocation_memoire_et_...' */ /* par TOUS les '$X's, en particulier lors des compilations... */ /* */ /* Voir le 20241107182103 a ce sujet 'v $xE/.alias.2$vv$Y unsetenv..EditerFormats'... */ EGAL(allocation_memoire_et_generation_des_format_EGAr_____initialisation_en_cours,VRAI); /* Introduit le 20180401134653... */ /* */ /* En effet, 'allocation_memoire_et_generation_des_format_EGAr(...)' est appele par */ /* 'chain_Acopie(...)' (en particulier celui de 'v$xil/defi_c1$vv$DEF BCommande'). Or */ /* ci-apres, dans les differents 'cFORMAT_...' il y a evidemment des 'chain_Acopie(...)'s */ /* caches. Donc sans cet indicatuer "en_cours" on partirait dans une boucle infinie... */ #ifndef GENERATION_____D_UN_SOURCE_C_BOOTSTRAPPABLE /* Nota : les "_"s au bout des noms des formats sont destines a aligner leurs definitions */ /* et ainsi les rendre plus lisibles. On notera au passage que l'on ne peut pas utiliser */ /* des " "s car, en effet, ils risquent d'etre compactes... */ ALLOCATION____MEMOIRE(format_EGAr____FORMAT_CHAI_2 ,"____FORMAT_CHAI_2________________________________________" ,cFORMAT_CHAI_2 ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_CHAI ,"____FORMAT_CHAI__________________________________________" ,cFORMAT_CHAI ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_CHAI_EDITION ,"____FORMAT_CHAI_EDITION__________________________________" ,cFORMAT_CHAI_EDITION ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_CHAR_EDITION ,"____FORMAT_CHAR_EDITION__________________________________" ,cFORMAT_CHAR_EDITION ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_CHAR_EDITION_BACKSLASHEE ,"____FORMAT_CHAR_EDITION_BACKSLASHEE______________________" ,cFORMAT_CHAR_EDITION_BACKSLASHEE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_CHAR_HEXA_DECIMAL_EDITION_1 ,"____FORMAT_CHAR_HEXA_DECIMAL_EDITION_1___________________" ,cFORMAT_CHAR_HEXA_DECIMAL_EDITION_1 ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_CHAR_HEXA_DECIMAL_EDITION ,"____FORMAT_CHAR_HEXA_DECIMAL_EDITION_____________________" ,cFORMAT_CHAR_HEXA_DECIMAL_EDITION ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_FLOT ,"____FORMAT_FLOT__________________________________________" ,cFORMAT_FLOT ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_FLOT_EDITION ,"____FORMAT_FLOT_EDITION__________________________________" ,cFORMAT_FLOT_EDITION ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_FLOT_EDITION__NON_SIGNE ,"____FORMAT_FLOT_EDITION__NON_SIGNE_______________________" ,cFORMAT_FLOT_EDITION__NON_SIGNE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_HEXA_DECIMAL ,"____FORMAT_HEXA_DECIMAL__________________________________" ,cFORMAT_HEXA_DECIMAL ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_HEXA_DECIMAL_SANS_0_EDITION ,"____FORMAT_HEXA_DECIMAL_SANS_0_EDITION___________________" ,cFORMAT_HEXA_DECIMAL_SANS_0_EDITION ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_HEXA_DECIMAL_EDITION_1 ,"____FORMAT_HEXA_DECIMAL_EDITION_1________________________" ,cFORMAT_HEXA_DECIMAL_EDITION_1 ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_HEXA_DECIMAL_EDITION ,"____FORMAT_HEXA_DECIMAL_EDITION__________________________" ,cFORMAT_HEXA_DECIMAL_EDITION ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_INTE ,"____FORMAT_INTE__________________________________________" ,cFORMAT_INTE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_INTE_EDITION ,"____FORMAT_INTE_EDITION__________________________________" ,cFORMAT_INTE_EDITION ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_INTE_EDITION__NON_SIGNE ,"____FORMAT_INTE_EDITION__NON_SIGNE_______________________" ,cFORMAT_INTE_EDITION__NON_SIGNE ); #Aifndef GENERATION_____D_UN_SOURCE_C_BOOTSTRAPPABLE /* Introduit le 20210924080853 pour supprimer les references en avant des fonctions de */ /* gestion de chaines de caracteres et d'edition (dans 'v $xig/fonct$vv$FON')... */ ALLOCATION____MEMOIRE(format_EGAr____FORMAT_CHAI_2 ,"____FORMAT_CHAI_2________________________________________" ,FORMAT_CHAI__________BOOTSTRAPPABLE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_CHAI ,"____FORMAT_CHAI__________________________________________" ,FORMAT_CHAI__________BOOTSTRAPPABLE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_CHAI_EDITION ,"____FORMAT_CHAI_EDITION__________________________________" ,FORMAT_CHAI__________BOOTSTRAPPABLE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_CHAR_EDITION ,"____FORMAT_CHAR_EDITION__________________________________" ,FORMAT_CHAR__________BOOTSTRAPPABLE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_CHAR_EDITION_BACKSLASHEE ,"____FORMAT_CHAR_EDITION_BACKSLASHEE______________________" ,FORMAT_CHAR__________BOOTSTRAPPABLE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_CHAR_HEXA_DECIMAL_EDITION_1 ,"____FORMAT_CHAR_HEXA_DECIMAL_EDITION_1___________________" ,FORMAT_HEXA_DECIMAL__BOOTSTRAPPABLE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_CHAR_HEXA_DECIMAL_EDITION ,"____FORMAT_CHAR_HEXA_DECIMAL_EDITION_____________________" ,FORMAT_HEXA_DECIMAL__BOOTSTRAPPABLE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_FLOT ,"____FORMAT_FLOT__________________________________________" ,FORMAT_FLOT__________BOOTSTRAPPABLE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_FLOT_EDITION ,"____FORMAT_FLOT_EDITION__________________________________" ,FORMAT_FLOT__________BOOTSTRAPPABLE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_FLOT_EDITION__NON_SIGNE ,"____FORMAT_FLOT_EDITION__NON_SIGNE_______________________" ,FORMAT_FLOT__________BOOTSTRAPPABLE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_HEXA_DECIMAL ,"____FORMAT_HEXA_DECIMAL__________________________________" ,FORMAT_HEXA_DECIMAL__BOOTSTRAPPABLE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_HEXA_DECIMAL_SANS_0_EDITION ,"____FORMAT_HEXA_DECIMAL_SANS_0_EDITION___________________" ,FORMAT_HEXA_DECIMAL__BOOTSTRAPPABLE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_HEXA_DECIMAL_EDITION_1 ,"____FORMAT_HEXA_DECIMAL_EDITION_1________________________" ,FORMAT_HEXA_DECIMAL__BOOTSTRAPPABLE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_HEXA_DECIMAL_EDITION ,"____FORMAT_HEXA_DECIMAL_EDITION__________________________" ,FORMAT_HEXA_DECIMAL__BOOTSTRAPPABLE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_INTE ,"____FORMAT_INTE__________________________________________" ,FORMAT_INTE__________BOOTSTRAPPABLE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_INTE_EDITION ,"____FORMAT_INTE_EDITION__________________________________" ,FORMAT_INTE__________BOOTSTRAPPABLE ); ALLOCATION____MEMOIRE(format_EGAr____FORMAT_INTE_EDITION__NON_SIGNE ,"____FORMAT_INTE_EDITION__NON_SIGNE_______________________" ,FORMAT_INTE__________BOOTSTRAPPABLE ); #Eifndef GENERATION_____D_UN_SOURCE_C_BOOTSTRAPPABLE EGAL(allocation_memoire_et_generation_des_format_EGAr_____initialisation_en_cours,FAUX); /* Introduit le 20200328133443... */ EGAL(allocation_memoire_et_generation_des_format_EGAr_____initialisation_faite,VRAI); /* Introduit le 20180401123053... */ Test(IL_FAUT(editer_les_formats_alloues)) Bblock #define CHAINE_UNSETENV \ "unsetenv" #define TABULATION_UNSETENV \ VINGT #define ESPACE_UNSETENV \ MAX2(DIX,TRPU(Lchaine_unsetenv)) DEFV(Positive,INIT(Lchaine_unsetenv,chain_Xtaille(CHAINE_UNSETENV))); DEFV(Positive,INIT(Lchaine_EditerFormats,chain_Xtaille(VARIABLE_D_ENVIRONNEMENT_CONTROLANT_L_EDITION_DES_FORMATS))); /* Evidemment, on ne peut pas encore utiliser 'CAL2(Prin?(...))' ci-apres... */ CAL2(FPrin0(stream_Prin,FLUSHER_LE_FILE,"\n\nATTENTION, faire ensuite imperativement :\n\n\n\n")); CAL2(FPrin2(stream_Prin,FLUSHER_LE_FILE,"%*s" ,bADD(TABULATION_UNSETENV,Lchaine_unsetenv) ,CHAINE_UNSETENV ) ); CAL2(FPrin2(stream_Prin,FLUSHER_LE_FILE,"%*s" ,bADD(bSOU(ESPACE_UNSETENV,Lchaine_unsetenv),Lchaine_EditerFormats) ,VARIABLE_D_ENVIRONNEMENT_CONTROLANT_L_EDITION_DES_FORMATS ) ); CAL2(FPrin0(stream_Prin,FLUSHER_LE_FILE,"\n\n\n\n")); /* Evidemment, on ne peut pas encore utiliser 'CAL2(Prin?(...))' ci-dessus... */ /* */ /* Voir le 20241107182103 a ce sujet 'v $xE/.alias.2$vv$Y unsetenv..EditerFormats'... */ /* Je note le 20241108102809 que l'on pourrait peut-etre faire ici un : */ /* */ /* Exit(PROBLEMES); */ /* */ /* A voir... */ #undef ESPACE_UNSETENV #undef TABULATION_UNSETENV #undef CHAINE_UNSETENV Eblock ATes Bblock Eblock ETes Eblock ATes Bblock Eblock ETes RETU_VIDE; Eblock #undef VARIABLE_D_ENVIRONNEMENT_CONTROLANT_L_EDITION_DES_FORMATS #undef ALLOCATION____MEMOIRE #ifndef GENERATION_____D_UN_SOURCE_C_BOOTSTRAPPABLE #Aifndef GENERATION_____D_UN_SOURCE_C_BOOTSTRAPPABLE /* Introduit le 20210925084234... */ # undef FORMAT_FLOT__________BOOTSTRAPPABLE # undef FORMAT_HEXA_DECIMAL__BOOTSTRAPPABLE # undef FORMAT_INTE__________BOOTSTRAPPABLE # undef FORMAT_CHAI__________BOOTSTRAPPABLE # undef FORMAT_CHAR__________BOOTSTRAPPABLE #Eifndef GENERATION_____D_UN_SOURCE_C_BOOTSTRAPPABLE EFonctionV BFonctionV DEFV(Common,DEFV(Logical,INIT(desallocation_memoire_des_format_EGAr_____compteur_de_desallocation_memoire,ZERO))); /* Introduit le 20180407091122... */ #define DESALLOCATION_MEMOIRE(format) \ Bblock \ CALZ_FreCC(format); \ \ INCK(desallocation_memoire_des_format_EGAr_____compteur_de_desallocation_memoire); \ Eblock \ /* Desallocation memoire et comptage... */ DEFV(Common,DEFV(FonctionV,desallocation_memoire_des_format_EGAr())) /* Fonction introduite le 20180330115825... */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ EGAL(allocation_memoire_et_generation_des_format_EGAr_____initialisation_faite,FAUX); /* Introduit le 20180401123053... */ #ifndef GENERATION_____D_UN_SOURCE_C_BOOTSTRAPPABLE DESALLOCATION_MEMOIRE(format_EGAr____FORMAT_INTE_EDITION__NON_SIGNE); DESALLOCATION_MEMOIRE(format_EGAr____FORMAT_INTE_EDITION); DESALLOCATION_MEMOIRE(format_EGAr____FORMAT_INTE); DESALLOCATION_MEMOIRE(format_EGAr____FORMAT_HEXA_DECIMAL_EDITION); DESALLOCATION_MEMOIRE(format_EGAr____FORMAT_HEXA_DECIMAL_EDITION_1); DESALLOCATION_MEMOIRE(format_EGAr____FORMAT_HEXA_DECIMAL_SANS_0_EDITION); DESALLOCATION_MEMOIRE(format_EGAr____FORMAT_HEXA_DECIMAL); DESALLOCATION_MEMOIRE(format_EGAr____FORMAT_FLOT_EDITION__NON_SIGNE); DESALLOCATION_MEMOIRE(format_EGAr____FORMAT_FLOT_EDITION); DESALLOCATION_MEMOIRE(format_EGAr____FORMAT_FLOT); DESALLOCATION_MEMOIRE(format_EGAr____FORMAT_CHAR_HEXA_DECIMAL_EDITION); DESALLOCATION_MEMOIRE(format_EGAr____FORMAT_CHAR_HEXA_DECIMAL_EDITION_1); DESALLOCATION_MEMOIRE(format_EGAr____FORMAT_CHAR_EDITION_BACKSLASHEE); DESALLOCATION_MEMOIRE(format_EGAr____FORMAT_CHAR_EDITION); DESALLOCATION_MEMOIRE(format_EGAr____FORMAT_CHAI_EDITION); DESALLOCATION_MEMOIRE(format_EGAr____FORMAT_CHAI_2); DESALLOCATION_MEMOIRE(format_EGAr____FORMAT_CHAI); /* Ces 'CALZ_FreCC(...)' ont ete introduits le 20180330104223... */ /* Le 20180331105055, j'ai voulu mettre ici : */ /* */ /* CALZ_FreCC(format_double); */ /* */ /* mais malheureusement, cela ne marche pas car 'desallocation_memoire_des_format_EGAr(...)' */ /* est appele dans 'ABORT_Commande; et 'RETU_Commande' or apres ces deux appels, il y a */ /* un 'EDITION_DE_LA_VALEUR_DES_COMPTEURS_DE_REFERENCE_LORS_DU__RETU_Commande' qui doit */ /* avoir besoin de 'format_double'... */ Test(IFNE(desallocation_memoire_des_format_EGAr_____compteur_de_desallocation_memoire ,allocation_memoire_et_generation_des_format_EGAr_____compteur_d_allocation_memoire ) ) Bblock PRINT_ERREUR("le nombre de desallocations est different du nombre d'allocations"); CAL1(Prer2("(il y a eu %d allocations et %d desallocations)\n" ,allocation_memoire_et_generation_des_format_EGAr_____compteur_d_allocation_memoire ,desallocation_memoire_des_format_EGAr_____compteur_de_desallocation_memoire ) ); Eblock ATes Bblock Eblock ETes #Aifndef GENERATION_____D_UN_SOURCE_C_BOOTSTRAPPABLE /* Introduit le 20210924080853 pour supprimer les references en avant des fonctions de */ /* gestion de chaines de caracteres et d'edition (dans 'v $xig/fonct$vv$FON')... */ #Eifndef GENERATION_____D_UN_SOURCE_C_BOOTSTRAPPABLE CLIR(allocation_memoire_et_generation_des_format_EGAr_____compteur_d_allocation_memoire); CLIR(desallocation_memoire_des_format_EGAr_____compteur_de_desallocation_memoire); /* Introduit le 20200328134025... */ RETU_VIDE; Eblock #undef DESALLOCATION_MEMOIRE EFonctionV /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* E D I T I O N D E L A P L U P A R T D E S C O M P T E U R S : */ /* */ /*************************************************************************************************************************************/ BFonctionV DEFV(Common,DEFV(Logical,SINT(FgEDITION_DE_LA_VALEUR_DE_LA_PLUPART_DES_COMPTEURS_____activer,FAUX))); /* Introduit le 20180411075320... */ #define SAUTS_DE_LIGNES \ Bblock \ CALS(Fsauts_de_lignes(TROIS)); \ Eblock \ /* Introduit le 20180413153735... */ DEFV(Common,DEFV(FonctionV,FgEDITION_DE_LA_VALEUR_DE_LA_PLUPART_DES_COMPTEURS())) /* Fonction introduite le 20180410205906 et mise ici le 20180413112426 pour simplifier */ /* les choses (avant cette date, elle etait dans 'v $xig/fonct$vv$FON'...). */ /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock /*..............................................................................................................................*/ #ifndef GENERATION_____D_UN_SOURCE_C_BOOTSTRAPPABLE Test(IL_FAUT(FgEDITION_DE_LA_VALEUR_DE_LA_PLUPART_DES_COMPTEURS_____activer)) Bblock EDITION_DE_LA_VALEUR_DES_COMPTEURS_D_ACCES_AUX_FONCTIONS_DE_BASE; SAUTS_DE_LIGNES; EDITION_DE_LA_VALEUR_DES_COMPTEURS_D_ALLOCATION_DESALLOCATION_MEMOIRE; SAUTS_DE_LIGNES; EDITION_DE_LA_VALEUR_DES_COMPTEURS_D_ENTREE_DES_ARGUMENTS_DES_K_S; Eblock ATes Bblock Eblock ETes #Aifndef GENERATION_____D_UN_SOURCE_C_BOOTSTRAPPABLE /* Introduit le 20210924080853 pour supprimer les references en avant des fonctions de */ /* gestion de chaines de caracteres et d'edition (dans 'v $xig/fonct$vv$FON')... */ #Eifndef GENERATION_____D_UN_SOURCE_C_BOOTSTRAPPABLE RETU_VIDE; Eblock #undef SAUTS_DE_LIGNES EFonctionV _______________________________________________________________________________________________________________________________________