Salome HOME
update with the version in the OCC branch OCC_development_generic_2006.
[modules/med.git] / src / MEDWrapper / V2_1 / Core / med_utils.hxx
1 /*************************************************************************
2 * COPYRIGHT (C) 1999 - 2002  EDF R&D
3 * THIS LIBRARY IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
4 * IT UNDER THE TERMS OF THE GNU LESSER GENERAL PUBLIC LICENSE 
5 * AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION; 
6 * EITHER VERSION 2.1 OF THE LICENSE, OR (AT YOUR OPTION) ANY LATER VERSION.
7 *
8 * THIS LIBRARY IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
9 * WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
10 * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
11 * LESSER GENERAL PUBLIC LICENSE FOR MORE DETAILS.
12 *
13 * YOU SHOULD HAVE RECEIVED A COPY OF THE GNU LESSER GENERAL PUBLIC LICENSE
14 * ALONG WITH THIS LIBRARY; IF NOT, WRITE TO THE FREE SOFTWARE FOUNDATION,
15 * INC., 59 TEMPLE PLACE, SUITE 330, BOSTON, MA 02111-1307 USA
16 *
17 *************************************************************************/
18
19 # ifndef __UTILITES_H__
20 # define __UTILITES_H__
21
22
23 /* pour indiquer le statut des arguments des fonctions. */
24
25 #ifdef _IN
26 #error _IN already defined
27 #endif
28 #define _IN
29
30 #ifdef _OUT
31 #error _OUT already defined
32 #endif
33 #define _OUT
34
35 #ifdef _INOUT
36 #error _INOUT already defined
37 #endif
38 #define _INOUT
39
40 #ifdef _UNUSED
41 #error _UNUSED already defined
42 #endif
43 #define _UNUSED
44
45
46
47
48
49
50
51 /* --- Pour afficher le nom du fichier source courant et le numero de la ligne courante --- */
52 /* --- sur la stderr.                                                                   --- */
53
54 # define ICI                    {\
55                                         fflush(stdout);\
56                                         fprintf(stderr, "%s [%d] : " , __FILE__ , __LINE__ ) ;\
57                                         fflush(stderr) ;\
58                                 }
59
60
61
62
63
64
65
66 /* --- Pour afficher la date et l'heure de la compilation du fichier source courant,    --- */
67 /* --- sur la stdout.                                                                   --- */
68
69 # ifdef INFOS_COMPILATION
70 # error INFOS_COMPILATION already defined
71 # endif
72 # define INFOS_COMPILATION      {\
73                                         fflush(stderr);\
74                                         fprintf(stdout, "%s [%d] : " , __FILE__ , __LINE__ ) ;\
75                                         fprintf(stdout,"Compilation le %s" , __DATE__);\
76                                         fprintf(stdout," a %s" , __TIME__ );\
77                                         fprintf(stdout,"\n\n\n" );\
78                                         fflush(stdout) ;\
79                                 }
80
81
82
83
84
85
86
87 /* --- Pour attendre "secondes" secondes et afficher un message sur la stderr indiquant --- */
88 /* --- cette attente volontaire.                                                        --- */
89
90 # ifdef ATTENTE
91 # error ATTENTE already defined
92 # endif
93 # define ATTENTE(secondes)      {\
94                                         ICI ;\
95                                         fprintf( stderr, "ATTENTE de %d secondes" , secondes);\
96                                         fflush(stderr) ;\
97                                         sleep(secondes) ;\
98                                         fprintf( stderr, "\n" );\
99                                         fflush(stderr) ;\
100                                 }
101
102
103
104
105
106
107
108 /* ----------    Les macros suivantes ne doivent pas deja exister !              ---------- */
109
110 # ifdef EXECUTION
111 # error EXECUTION already defined
112 # endif
113 # ifdef INTERRUPTION
114 # error INTERRUPTION already defined
115 # endif
116 # ifdef ISCRUTE
117 # error ISCRUTE already defined
118 # endif
119 # ifdef RSCRUTE
120 # error RSCRUTE already defined
121 # endif
122 # ifdef SSCRUTE
123 # error SSCRUTE already defined
124 # endif
125 # ifdef CSCRUTE
126 # error CSCRUTE already defined
127 # endif
128 # ifdef XSCRUTE
129 # error XSCRUTE already defined
130 # endif
131 # ifdef MESSAGE
132 # error MESSAGE already defined
133 # endif
134
135
136
137
138
139 # ifdef _DEBOG_
140
141
142 /* --- Pour tracer sur la stderr l'execution d"une instruction.                         --- */
143
144 # define EXECUTION(instruction) {\
145                                         ICI ;\
146                                         fprintf( stderr,"INSTRUCTION %s" , #instruction ) ;\
147                                         fflush(stderr);\
148                                         instruction ;\
149                                         fflush(stdout);\
150                                         fprintf( stderr," FRANCHIE\n" ) ;\
151                                         fflush(stderr);\
152                                 }
153
154
155
156
157
158
159
160 /* --- Pour afficher un message d'interruption volontaire et retourner le code retour   --- */
161 /* --- "code"                                                                           --- */
162
163 # define INTERRUPTION(code)     {\
164                                         ICI ;\
165                                         fprintf( stderr," INTERRUPTION code = %d",code) ;\
166                                         fprintf(stderr,"\n") ;\
167                                         exit(code) ;\
168                                 }
169
170
171
172
173
174
175
176 /* --- Pour conditionner la poursuite du traitement par la validite de la condition     --- */
177 /* --- "condiiton".                                                                     --- */
178
179 # ifndef ASSERT
180 # define ASSERT(condition)      if( !(condition) ){\
181                                         ICI ;\
182                                         fprintf(stderr,"condition %s VIOLEE\n",#condition);\
183                                         INTERRUPTION(17);\
184                                 }
185 # endif         /* # ifndef ASSERT */
186
187
188
189
190
191
192
193 /* --- Pour afficher sur la stderr la valeur d'une variable precedee de son nom.        --- */
194
195 # define ISCRUTE(entier)        {\
196                                         ICI ;\
197                                         fprintf(stderr,"%s = %d\n",#entier,entier) ;\
198                                         fflush(stderr) ;\
199                                 }
200 # define RSCRUTE(reel)          {\
201                                         ICI ;\
202                                         fprintf(stderr,"%s = %f\n",#reel,reel) ;\
203                                         fflush(stderr) ;\
204                                 }
205 # define XSCRUTE(pointeur)              {\
206                                         ICI ;\
207                                         fprintf(stderr,"%s = %x\n",#pointeur,pointeur) ;\
208                                         fflush(stderr) ;\
209                                 }
210 # define CSCRUTE(car)           {\
211                                         ICI ;\
212                                         fprintf(stderr,"%s = %c\n",#car,car) ;\
213                                         fflush(stderr) ;\
214                                 }
215 # define SSCRUTE(chaine)        {\
216                                         ICI ;\
217                                         fprintf(stderr,"%s = \"%s\"\n",#chaine,chaine) ;\
218                                         fflush(stderr) ;\
219                                 }
220 # define MESSAGE(chaine)        {\
221                                         ICI ;\
222                                         fprintf(stderr,"%s\n",chaine) ;\
223                                         fflush(stderr) ;\
224                                 }
225 # define FIN(nom)               {\
226                                         ICI ;\
227                                         fprintf( stderr , "} FIN %s\n\n\n" , nom ) ;\
228                                         fflush(stderr) ;\
229                                 }
230 # define DEBUT(nom)             {\
231                                         fprintf( stderr , "\n\n\n") ;\
232                                         ICI ;\
233                                         fprintf( stderr , "{ DEBUT %s\n" , nom ) ;\
234                                         fflush(stderr) ;\
235                                 }
236
237
238 # else          /* # ifdef _DEBOG_ */
239
240
241
242 # define EXECUTION(instruction) instruction
243 # define INTERRUPTION(code)
244
245 # ifndef ASSERT
246 # define ASSERT(condition)
247 # endif
248
249 # define ISCRUTE(entier)
250 # define RSCRUTE(reel)
251 # define CSCRUTE(car)
252 # define SSCRUTE(chaine)
253 # define MESSAGE(chaine)
254 # define DEBUT(nom)
255 # define FIN(nom)
256  
257
258 # endif         /* # ifdef _DEBOG_ */
259
260
261 # endif         /* # ifndef __UTILITES_H__ */