Branch data Line data Source code
1 : : /* do not edit automatically generated by mc from M2Pass. */
2 : : /* M2Pass.mod provides setting and testing of the current pass.
3 : :
4 : : Copyright (C) 2001-2025 Free Software Foundation, Inc.
5 : : Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
6 : :
7 : : This file is part of GNU Modula-2.
8 : :
9 : : GNU Modula-2 is free software; you can redistribute it and/or modify
10 : : it under the terms of the GNU General Public License as published by
11 : : the Free Software Foundation; either version 3, or (at your option)
12 : : any later version.
13 : :
14 : : GNU Modula-2 is distributed in the hope that it will be useful, but
15 : : WITHOUT ANY WARRANTY; without even the implied warranty of
16 : : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 : : General Public License for more details.
18 : :
19 : : You should have received a copy of the GNU General Public License
20 : : along with GNU Modula-2; see the file COPYING3. If not see
21 : : <http://www.gnu.org/licenses/>. */
22 : :
23 : : #define INCLUDE_MEMORY
24 : : #include "config.h"
25 : : #include "system.h"
26 : : #include <stdbool.h>
27 : : # if !defined (PROC_D)
28 : : # define PROC_D
29 : : typedef void (*PROC_t) (void);
30 : : typedef struct { PROC_t proc; } PROC;
31 : : # endif
32 : :
33 : : #define _M2Pass_C
34 : :
35 : : #include "GM2Pass.h"
36 : : # include "GM2Error.h"
37 : :
38 : : typedef enum {M2Pass_NoPass, M2Pass_Pass0, M2Pass_Pass1, M2Pass_Pass2, M2Pass_PassC, M2Pass_Pass3, M2Pass_CodeGeneration, M2Pass_ErrorPass, M2Pass_HiddenPass} M2Pass_Pass;
39 : :
40 : : static M2Pass_Pass CurrentPass;
41 : :
42 : : /*
43 : : SetPassToNoPass - sets the pass state to no Pass.
44 : : */
45 : :
46 : : extern "C" void M2Pass_SetPassToNoPass (void);
47 : :
48 : : /*
49 : : SetPassToPass0 - sets the pass state to Pass 0.
50 : : */
51 : :
52 : : extern "C" void M2Pass_SetPassToPass0 (void);
53 : :
54 : : /*
55 : : SetPassToPass1 - sets the pass state to Pass 1.
56 : : */
57 : :
58 : : extern "C" void M2Pass_SetPassToPass1 (void);
59 : :
60 : : /*
61 : : SetPassToPass2 - sets the pass state to Pass 2.
62 : : */
63 : :
64 : : extern "C" void M2Pass_SetPassToPass2 (void);
65 : :
66 : : /*
67 : : SetPassToPassC - sets the pass state to Pass C.
68 : : */
69 : :
70 : : extern "C" void M2Pass_SetPassToPassC (void);
71 : :
72 : : /*
73 : : SetPassToPass3 - sets the pass state to Pass 3.
74 : : */
75 : :
76 : : extern "C" void M2Pass_SetPassToPass3 (void);
77 : :
78 : : /*
79 : : SetPassToPassHidden - sets the pass state to the hidden type pass.
80 : : */
81 : :
82 : : extern "C" void M2Pass_SetPassToPassHidden (void);
83 : :
84 : : /*
85 : : SetPassToCodeGeneration - sets the pass state to CodeGeneration.
86 : : */
87 : :
88 : : extern "C" void M2Pass_SetPassToCodeGeneration (void);
89 : :
90 : : /*
91 : : SetPassToErrorPass - sets the pass state to no Error Pass.
92 : : */
93 : :
94 : : extern "C" void M2Pass_SetPassToErrorPass (void);
95 : :
96 : : /*
97 : : IsNoPass - returns true if currently in no Pass.
98 : : */
99 : :
100 : : extern "C" bool M2Pass_IsNoPass (void);
101 : :
102 : : /*
103 : : IsPass0 - returns true if currently in Pass 0.
104 : : */
105 : :
106 : : extern "C" bool M2Pass_IsPass0 (void);
107 : :
108 : : /*
109 : : IsPass1 - returns true if currently in Pass 1.
110 : : */
111 : :
112 : : extern "C" bool M2Pass_IsPass1 (void);
113 : :
114 : : /*
115 : : IsPass2 - returns true if currently in Pass 2.
116 : : */
117 : :
118 : : extern "C" bool M2Pass_IsPass2 (void);
119 : :
120 : : /*
121 : : IsPassC - returns true if currently in Pass C.
122 : : */
123 : :
124 : : extern "C" bool M2Pass_IsPassC (void);
125 : :
126 : : /*
127 : : IsPass3 - returns true if currently in Pass 3.
128 : : */
129 : :
130 : : extern "C" bool M2Pass_IsPass3 (void);
131 : :
132 : : /*
133 : : IsPassHidden - returns TRUE if currently parsing for hidden types.
134 : : */
135 : :
136 : : extern "C" bool M2Pass_IsPassHidden (void);
137 : :
138 : : /*
139 : : IsPassCodeGeneration - returns true if currently in the CodeGeneration Pass.
140 : : */
141 : :
142 : : extern "C" bool M2Pass_IsPassCodeGeneration (void);
143 : :
144 : : /*
145 : : IsErrorPass - returns true if currently in the Error Pass.
146 : : */
147 : :
148 : : extern "C" bool M2Pass_IsErrorPass (void);
149 : :
150 : :
151 : : /*
152 : : SetPassToNoPass - sets the pass state to no Pass.
153 : : */
154 : :
155 : 203290 : extern "C" void M2Pass_SetPassToNoPass (void)
156 : : {
157 : 203290 : CurrentPass = M2Pass_NoPass;
158 : 203290 : }
159 : :
160 : :
161 : : /*
162 : : SetPassToPass0 - sets the pass state to Pass 0.
163 : : */
164 : :
165 : 15392 : extern "C" void M2Pass_SetPassToPass0 (void)
166 : : {
167 : 15392 : if (CurrentPass == M2Pass_NoPass)
168 : : {
169 : 15392 : CurrentPass = M2Pass_Pass0;
170 : : }
171 : : else
172 : : {
173 : 0 : M2Error_InternalError ((const char *) "attempting to set CurrentPass to Pass1", 38);
174 : : }
175 : 15392 : }
176 : :
177 : :
178 : : /*
179 : : SetPassToPass1 - sets the pass state to Pass 1.
180 : : */
181 : :
182 : 15267 : extern "C" void M2Pass_SetPassToPass1 (void)
183 : : {
184 : 15267 : if (CurrentPass == M2Pass_NoPass)
185 : : {
186 : 15267 : CurrentPass = M2Pass_Pass1;
187 : : }
188 : : else
189 : : {
190 : 0 : M2Error_InternalError ((const char *) "attempting to set CurrentPass to Pass1", 38);
191 : : }
192 : 15267 : }
193 : :
194 : :
195 : : /*
196 : : SetPassToPass2 - sets the pass state to Pass 2.
197 : : */
198 : :
199 : 15237 : extern "C" void M2Pass_SetPassToPass2 (void)
200 : : {
201 : 15237 : if (CurrentPass == M2Pass_NoPass)
202 : : {
203 : 15237 : CurrentPass = M2Pass_Pass2;
204 : : }
205 : : else
206 : : {
207 : 0 : M2Error_InternalError ((const char *) "attempting to set CurrentPass to Pass2", 38);
208 : : }
209 : 15237 : }
210 : :
211 : :
212 : : /*
213 : : SetPassToPassC - sets the pass state to Pass C.
214 : : */
215 : :
216 : 15141 : extern "C" void M2Pass_SetPassToPassC (void)
217 : : {
218 : 15141 : if (CurrentPass == M2Pass_NoPass)
219 : : {
220 : 15141 : CurrentPass = M2Pass_PassC;
221 : : }
222 : : else
223 : : {
224 : 0 : M2Error_InternalError ((const char *) "attempting to set CurrentPass to PassC", 38);
225 : : }
226 : 15141 : }
227 : :
228 : :
229 : : /*
230 : : SetPassToPass3 - sets the pass state to Pass 3.
231 : : */
232 : :
233 : 63871 : extern "C" void M2Pass_SetPassToPass3 (void)
234 : : {
235 : 63871 : if (CurrentPass == M2Pass_NoPass)
236 : : {
237 : 63871 : CurrentPass = M2Pass_Pass3;
238 : : }
239 : : else
240 : : {
241 : 0 : M2Error_InternalError ((const char *) "attempting to set CurrentPass to Pass3", 38);
242 : : }
243 : 63871 : }
244 : :
245 : :
246 : : /*
247 : : SetPassToPassHidden - sets the pass state to the hidden type pass.
248 : : */
249 : :
250 : 48826 : extern "C" void M2Pass_SetPassToPassHidden (void)
251 : : {
252 : 48826 : CurrentPass = M2Pass_HiddenPass;
253 : 48826 : }
254 : :
255 : :
256 : : /*
257 : : SetPassToCodeGeneration - sets the pass state to CodeGeneration.
258 : : */
259 : :
260 : 14505 : extern "C" void M2Pass_SetPassToCodeGeneration (void)
261 : : {
262 : 14505 : if (CurrentPass == M2Pass_NoPass)
263 : : {
264 : 14505 : CurrentPass = M2Pass_CodeGeneration;
265 : : }
266 : : else
267 : : {
268 : 0 : M2Error_InternalError ((const char *) "attempting to set CurrentPass to CodeGeneration", 47);
269 : : }
270 : 14505 : }
271 : :
272 : :
273 : : /*
274 : : SetPassToErrorPass - sets the pass state to no Error Pass.
275 : : */
276 : :
277 : 0 : extern "C" void M2Pass_SetPassToErrorPass (void)
278 : : {
279 : 0 : CurrentPass = M2Pass_ErrorPass;
280 : 0 : }
281 : :
282 : :
283 : : /*
284 : : IsNoPass - returns true if currently in no Pass.
285 : : */
286 : :
287 : 0 : extern "C" bool M2Pass_IsNoPass (void)
288 : : {
289 : 0 : return CurrentPass == M2Pass_NoPass;
290 : : /* static analysis guarentees a RETURN statement will be used before here. */
291 : : __builtin_unreachable ();
292 : : }
293 : :
294 : :
295 : : /*
296 : : IsPass0 - returns true if currently in Pass 0.
297 : : */
298 : :
299 : 15705549 : extern "C" bool M2Pass_IsPass0 (void)
300 : : {
301 : 15705549 : return CurrentPass == M2Pass_Pass0;
302 : : /* static analysis guarentees a RETURN statement will be used before here. */
303 : : __builtin_unreachable ();
304 : : }
305 : :
306 : :
307 : : /*
308 : : IsPass1 - returns true if currently in Pass 1.
309 : : */
310 : :
311 : 146474 : extern "C" bool M2Pass_IsPass1 (void)
312 : : {
313 : 146474 : return CurrentPass == M2Pass_Pass1;
314 : : /* static analysis guarentees a RETURN statement will be used before here. */
315 : : __builtin_unreachable ();
316 : : }
317 : :
318 : :
319 : : /*
320 : : IsPass2 - returns true if currently in Pass 2.
321 : : */
322 : :
323 : 146474 : extern "C" bool M2Pass_IsPass2 (void)
324 : : {
325 : 146474 : return CurrentPass == M2Pass_Pass2;
326 : : /* static analysis guarentees a RETURN statement will be used before here. */
327 : : __builtin_unreachable ();
328 : : }
329 : :
330 : :
331 : : /*
332 : : IsPassC - returns true if currently in Pass C.
333 : : */
334 : :
335 : 146474 : extern "C" bool M2Pass_IsPassC (void)
336 : : {
337 : 146474 : return CurrentPass == M2Pass_PassC;
338 : : /* static analysis guarentees a RETURN statement will be used before here. */
339 : : __builtin_unreachable ();
340 : : }
341 : :
342 : :
343 : : /*
344 : : IsPass3 - returns true if currently in Pass 3.
345 : : */
346 : :
347 : 146474 : extern "C" bool M2Pass_IsPass3 (void)
348 : : {
349 : 146474 : return CurrentPass == M2Pass_Pass3;
350 : : /* static analysis guarentees a RETURN statement will be used before here. */
351 : : __builtin_unreachable ();
352 : : }
353 : :
354 : :
355 : : /*
356 : : IsPassHidden - returns TRUE if currently parsing for hidden types.
357 : : */
358 : :
359 : 0 : extern "C" bool M2Pass_IsPassHidden (void)
360 : : {
361 : 0 : return CurrentPass == M2Pass_HiddenPass;
362 : : /* static analysis guarentees a RETURN statement will be used before here. */
363 : : __builtin_unreachable ();
364 : : }
365 : :
366 : :
367 : : /*
368 : : IsPassCodeGeneration - returns true if currently in the CodeGeneration Pass.
369 : : */
370 : :
371 : 502794 : extern "C" bool M2Pass_IsPassCodeGeneration (void)
372 : : {
373 : 502794 : return CurrentPass == M2Pass_CodeGeneration;
374 : : /* static analysis guarentees a RETURN statement will be used before here. */
375 : : __builtin_unreachable ();
376 : : }
377 : :
378 : :
379 : : /*
380 : : IsErrorPass - returns true if currently in the Error Pass.
381 : : */
382 : :
383 : 0 : extern "C" bool M2Pass_IsErrorPass (void)
384 : : {
385 : 0 : return CurrentPass == M2Pass_ErrorPass;
386 : : /* static analysis guarentees a RETURN statement will be used before here. */
387 : : __builtin_unreachable ();
388 : : }
389 : :
390 : 15392 : extern "C" void _M2_M2Pass_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[], __attribute__((unused)) char *envp[])
391 : : {
392 : 15392 : M2Pass_SetPassToNoPass ();
393 : 15392 : }
394 : :
395 : 0 : extern "C" void _M2_M2Pass_fini (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[], __attribute__((unused)) char *envp[])
396 : : {
397 : 0 : }
|