source: trunk/ada-2012/src/asis/asis-extensions-flat_kinds.adb@ 398

Last change on this file since 398 was 398, checked in by Maxim Reznik, 5 years ago

Create completion region for package_body

File size: 81.7 KB
Line 
1with Gela.Compilations;
2with Gela.Lexical_Types;
3
4with Gela.Element_Visiters;
5with Gela.Elements.Abort_Statements;
6with Gela.Elements.Accept_Statements;
7with Gela.Elements.Access_To_Function_Definitions;
8with Gela.Elements.Access_To_Object_Definitions;
9with Gela.Elements.Access_To_Procedure_Definitions;
10with Gela.Elements.Allocators;
11with Gela.Elements.Anonymous_Access_To_Function_Definitions;
12with Gela.Elements.Anonymous_Access_To_Object_Definitions;
13with Gela.Elements.Anonymous_Access_To_Procedure_Definitions;
14with Gela.Elements.Aspect_Specifications;
15with Gela.Elements.Assignment_Statements;
16with Gela.Elements.Associations;
17with Gela.Elements.Asynchronous_Selects;
18with Gela.Elements.At_Clauses;
19with Gela.Elements.Attribute_Definition_Clauses;
20with Gela.Elements.Attribute_References;
21with Gela.Elements.Auxiliary_Applies;
22with Gela.Elements.Block_Statements;
23with Gela.Elements.Boxes;
24with Gela.Elements.Case_Expression_Paths;
25with Gela.Elements.Case_Expressions;
26with Gela.Elements.Case_Paths;
27with Gela.Elements.Case_Statements;
28with Gela.Elements.Character_Literals;
29with Gela.Elements.Choice_Parameter_Specifications;
30with Gela.Elements.Compilation_Unit_Bodies;
31with Gela.Elements.Compilation_Unit_Declarations;
32with Gela.Elements.Compilations;
33with Gela.Elements.Component_Clauses;
34with Gela.Elements.Component_Declarations;
35with Gela.Elements.Component_Definitions;
36with Gela.Elements.Composite_Constraints;
37with Gela.Elements.Constrained_Array_Definitions;
38with Gela.Elements.Decimal_Fixed_Point_Definitions;
39with Gela.Elements.Defining_Character_Literals;
40with Gela.Elements.Defining_Enumeration_Literals;
41with Gela.Elements.Defining_Expanded_Unit_Names;
42with Gela.Elements.Defining_Identifiers;
43with Gela.Elements.Defining_Operator_Symbols;
44with Gela.Elements.Delay_Statements;
45with Gela.Elements.Delta_Constraints;
46with Gela.Elements.Derived_Record_Definitions;
47with Gela.Elements.Derived_Type_Definitions;
48with Gela.Elements.Digits_Constraints;
49with Gela.Elements.Discrete_Range_Attribute_References;
50with Gela.Elements.Discrete_Simple_Expression_Ranges;
51with Gela.Elements.Discrete_Subtype_Indication_Drs;
52with Gela.Elements.Discrete_Subtype_Indications;
53with Gela.Elements.Discriminant_Specifications;
54with Gela.Elements.Element_Iterator_Specifications;
55with Gela.Elements.Else_Expression_Paths;
56with Gela.Elements.Else_Paths;
57with Gela.Elements.Elsif_Expression_Paths;
58with Gela.Elements.Elsif_Paths;
59with Gela.Elements.Entry_Bodies;
60with Gela.Elements.Entry_Declarations;
61with Gela.Elements.Entry_Index_Specifications;
62with Gela.Elements.Enumeration_Literal_Specifications;
63with Gela.Elements.Enumeration_Literals;
64with Gela.Elements.Enumeration_Type_Definitions;
65with Gela.Elements.Exception_Declarations;
66with Gela.Elements.Exception_Handlers;
67with Gela.Elements.Exception_Renaming_Declarations;
68with Gela.Elements.Exit_Statements;
69with Gela.Elements.Explicit_Dereferences;
70with Gela.Elements.Extended_Return_Statements;
71with Gela.Elements.Extension_Aggregates;
72with Gela.Elements.Floating_Point_Definitions;
73with Gela.Elements.For_Loop_Statements;
74with Gela.Elements.Formal_Access_To_Function_Definitions;
75with Gela.Elements.Formal_Access_To_Object_Definitions;
76with Gela.Elements.Formal_Access_To_Procedure_Definitions;
77with Gela.Elements.Formal_Constrained_Array_Definitions;
78with Gela.Elements.Formal_Decimal_Fixed_Point_Definitions;
79with Gela.Elements.Formal_Derived_Type_Definitions;
80with Gela.Elements.Formal_Discrete_Type_Definitions;
81with Gela.Elements.Formal_Floating_Point_Definitions;
82with Gela.Elements.Formal_Function_Declarations;
83with Gela.Elements.Formal_Incomplete_Type_Declarations;
84with Gela.Elements.Formal_Interface_Type_Definitions;
85with Gela.Elements.Formal_Modular_Type_Definitions;
86with Gela.Elements.Formal_Object_Declarations;
87with Gela.Elements.Formal_Ordinary_Fixed_Point_Definitions;
88with Gela.Elements.Formal_Package_Declarations;
89with Gela.Elements.Formal_Private_Type_Definitions;
90with Gela.Elements.Formal_Procedure_Declarations;
91with Gela.Elements.Formal_Signed_Integer_Type_Definitions;
92with Gela.Elements.Formal_Type_Declarations;
93with Gela.Elements.Formal_Unconstrained_Array_Definitions;
94with Gela.Elements.Full_Type_Declarations;
95with Gela.Elements.Function_Bodies;
96with Gela.Elements.Function_Declarations;
97with Gela.Elements.Function_Instantiations;
98with Gela.Elements.Generalized_Iterator_Specifications;
99with Gela.Elements.Generic_Associations;
100with Gela.Elements.Generic_Function_Declarations;
101with Gela.Elements.Generic_Function_Renamings;
102with Gela.Elements.Generic_Package_Declarations;
103with Gela.Elements.Generic_Package_Renamings;
104with Gela.Elements.Generic_Procedure_Declarations;
105with Gela.Elements.Generic_Procedure_Renamings;
106with Gela.Elements.Goto_Statements;
107with Gela.Elements.Identifiers;
108with Gela.Elements.If_Expression_Paths;
109with Gela.Elements.If_Expressions;
110with Gela.Elements.If_Paths;
111with Gela.Elements.If_Statements;
112with Gela.Elements.Incomplete_Type_Declarations;
113with Gela.Elements.Incomplete_Type_Definitions;
114with Gela.Elements.Interface_Type_Definitions;
115with Gela.Elements.Known_Discriminant_Parts;
116with Gela.Elements.Label_Decorators;
117with Gela.Elements.Loop_Parameter_Specifications;
118with Gela.Elements.Loop_Statements;
119with Gela.Elements.Membership_Tests;
120with Gela.Elements.Modular_Type_Definitions;
121with Gela.Elements.Names;
122with Gela.Elements.Null_Components;
123with Gela.Elements.Null_Literals;
124with Gela.Elements.Null_Record_Definitions;
125with Gela.Elements.Null_Statements;
126with Gela.Elements.Number_Declarations;
127with Gela.Elements.Numeric_Literals;
128with Gela.Elements.Object_Declarations;
129with Gela.Elements.Object_Renaming_Declarations;
130with Gela.Elements.Operator_Symbols;
131with Gela.Elements.Ordinary_Fixed_Point_Definitions;
132with Gela.Elements.Others_Choices;
133with Gela.Elements.Package_Bodies;
134with Gela.Elements.Package_Body_Stubs;
135with Gela.Elements.Package_Declarations;
136with Gela.Elements.Package_Instantiations;
137with Gela.Elements.Package_Renaming_Declarations;
138with Gela.Elements.Parameter_Associations;
139with Gela.Elements.Parameter_Specifications;
140with Gela.Elements.Pragma_Argument_Associations;
141with Gela.Elements.Pragma_Nodes;
142with Gela.Elements.Private_Extension_Declarations;
143with Gela.Elements.Private_Extension_Definitions;
144with Gela.Elements.Private_Type_Declarations;
145with Gela.Elements.Private_Type_Definitions;
146with Gela.Elements.Procedure_Bodies;
147with Gela.Elements.Procedure_Call_Statements;
148with Gela.Elements.Procedure_Declarations;
149with Gela.Elements.Procedure_Instantiations;
150with Gela.Elements.Protected_Bodies;
151with Gela.Elements.Protected_Body_Stubs;
152with Gela.Elements.Protected_Definitions;
153with Gela.Elements.Protected_Type_Declarations;
154with Gela.Elements.Qualified_Expressions;
155with Gela.Elements.Quantified_Expressions;
156with Gela.Elements.Raise_Statements;
157with Gela.Elements.Range_Attribute_Reference_Drs;
158with Gela.Elements.Range_Attribute_References;
159with Gela.Elements.Record_Aggregates;
160with Gela.Elements.Record_Definitions;
161with Gela.Elements.Record_Representation_Clauses;
162with Gela.Elements.Record_Type_Definitions;
163with Gela.Elements.Requeue_Statements;
164with Gela.Elements.Return_Object_Specifications;
165with Gela.Elements.Select_Or_Paths;
166with Gela.Elements.Selected_Components;
167with Gela.Elements.Selected_Identifiers;
168with Gela.Elements.Selective_Accepts;
169with Gela.Elements.Short_Circuits;
170with Gela.Elements.Signed_Integer_Type_Definitions;
171with Gela.Elements.Simple_Expression_Range_Drs;
172with Gela.Elements.Simple_Expression_Ranges;
173with Gela.Elements.Simple_Return_Statements;
174with Gela.Elements.Single_Protected_Declarations;
175with Gela.Elements.Single_Task_Declarations;
176with Gela.Elements.String_Literals;
177with Gela.Elements.Subtype_Declarations;
178with Gela.Elements.Subtype_Indications;
179with Gela.Elements.Subunits;
180with Gela.Elements.Task_Bodies;
181with Gela.Elements.Task_Body_Stubs;
182with Gela.Elements.Task_Definitions;
183with Gela.Elements.Task_Type_Declarations;
184with Gela.Elements.Terminate_Alternative_Statements;
185with Gela.Elements.Then_Abort_Paths;
186with Gela.Elements.Unconstrained_Array_Definitions;
187with Gela.Elements.Unknown_Discriminant_Parts;
188with Gela.Elements.Use_Package_Clauses;
189with Gela.Elements.Use_Type_Clauses;
190with Gela.Elements.Variant_Parts;
191with Gela.Elements.Variants;
192with Gela.Elements.While_Loop_Statements;
193with Gela.Elements.With_Clauses;
194
195package body Asis.Extensions.Flat_Kinds is
196
197 type Visiter is new Gela.Element_Visiters.Visiter with record
198 Result : Element_Flat_Kind;
199 end record;
200
201 overriding procedure Compilation
202 (Self : in out Visiter;
203 Node : not null Gela.Elements.Compilations.Compilation_Access)
204 is null;
205
206 overriding procedure Abort_Statement
207 (Self : in out Visiter;
208 Node : not null Gela.Elements.Abort_Statements.Abort_Statement_Access)
209 is null;
210
211 overriding procedure Accept_Statement
212 (Self : in out Visiter;
213 Node : not null Gela.Elements.Accept_Statements.Accept_Statement_Access);
214
215 overriding procedure Access_To_Function_Definition
216 (Self : in out Visiter;
217 Node : not null Gela.Elements.Access_To_Function_Definitions.
218 Access_To_Function_Definition_Access)
219 is null;
220
221 overriding procedure Access_To_Object_Definition
222 (Self : in out Visiter;
223 Node : not null Gela.Elements.Access_To_Object_Definitions.
224 Access_To_Object_Definition_Access);
225
226 overriding procedure Access_To_Procedure_Definition
227 (Self : in out Visiter;
228 Node : not null Gela.Elements.Access_To_Procedure_Definitions.
229 Access_To_Procedure_Definition_Access)
230 is null;
231
232 overriding procedure Allocator
233 (Self : in out Visiter;
234 Node : not null Gela.Elements.Allocators.Allocator_Access);
235
236 overriding procedure Anonymous_Access_To_Function_Definition
237 (Self : in out Visiter;
238 Node : not null Gela.Elements.Anonymous_Access_To_Function_Definitions.
239 Anonymous_Access_To_Function_Definition_Access)
240 is null;
241
242 overriding procedure Anonymous_Access_To_Object_Definition
243 (Self : in out Visiter;
244 Node : not null Gela.Elements.Anonymous_Access_To_Object_Definitions.
245 Anonymous_Access_To_Object_Definition_Access);
246
247 overriding procedure Anonymous_Access_To_Procedure_Definition
248 (Self : in out Visiter;
249 Node : not null Gela.Elements.Anonymous_Access_To_Procedure_Definitions.
250 Anonymous_Access_To_Procedure_Definition_Access)
251 is null;
252
253 overriding procedure Aspect_Specification
254 (Self : in out Visiter;
255 Node : not null Gela.Elements.Aspect_Specifications.
256 Aspect_Specification_Access)
257 is null;
258
259 overriding procedure Assignment_Statement
260 (Self : in out Visiter;
261 Node : not null Gela.Elements.Assignment_Statements.
262 Assignment_Statement_Access);
263
264 overriding procedure Association
265 (Self : in out Visiter;
266 Node : not null Gela.Elements.Associations.Association_Access);
267
268 overriding procedure Asynchronous_Select
269 (Self : in out Visiter;
270 Node : not null Gela.Elements.Asynchronous_Selects.
271 Asynchronous_Select_Access)
272 is null;
273
274 overriding procedure At_Clause
275 (Self : in out Visiter;
276 Node : not null Gela.Elements.At_Clauses.At_Clause_Access)
277 is null;
278
279 overriding procedure Attribute_Definition_Clause
280 (Self : in out Visiter;
281 Node : not null Gela.Elements.Attribute_Definition_Clauses.
282 Attribute_Definition_Clause_Access)
283 is null;
284
285 overriding procedure Attribute_Reference
286 (Self : in out Visiter;
287 Node : not null Gela.Elements.Attribute_References.
288 Attribute_Reference_Access);
289
290 overriding procedure Auxiliary_Apply
291 (Self : in out Visiter;
292 Node : not null Gela.Elements.Auxiliary_Applies.Auxiliary_Apply_Access);
293
294 overriding procedure Block_Statement
295 (Self : in out Visiter;
296 Node : not null Gela.Elements.Block_Statements.Block_Statement_Access);
297
298 overriding procedure Box
299 (Self : in out Visiter;
300 Node : not null Gela.Elements.Boxes.Box_Access)
301 is null;
302
303 overriding procedure Case_Expression
304 (Self : in out Visiter;
305 Node : not null Gela.Elements.Case_Expressions.Case_Expression_Access)
306 is null;
307
308 overriding procedure Case_Expression_Path
309 (Self : in out Visiter;
310 Node : not null Gela.Elements.Case_Expression_Paths.
311 Case_Expression_Path_Access)
312 is null;
313
314 overriding procedure Case_Path
315 (Self : in out Visiter;
316 Node : not null Gela.Elements.Case_Paths.Case_Path_Access);
317
318 overriding procedure Case_Statement
319 (Self : in out Visiter;
320 Node : not null Gela.Elements.Case_Statements.Case_Statement_Access);
321
322 overriding procedure Character_Literal
323 (Self : in out Visiter;
324 Node : not null Gela.Elements.Character_Literals.
325 Character_Literal_Access)
326 is null;
327
328 overriding procedure Choice_Parameter_Specification
329 (Self : in out Visiter;
330 Node : not null Gela.Elements.Choice_Parameter_Specifications.
331 Choice_Parameter_Specification_Access)
332 is null;
333
334 overriding procedure Compilation_Unit_Body
335 (Self : in out Visiter;
336 Node : not null Gela.Elements.Compilation_Unit_Bodies.
337 Compilation_Unit_Body_Access)
338 is null;
339
340 overriding procedure Compilation_Unit_Declaration
341 (Self : in out Visiter;
342 Node : not null Gela.Elements.Compilation_Unit_Declarations.
343 Compilation_Unit_Declaration_Access)
344 is null;
345
346 overriding procedure Component_Clause
347 (Self : in out Visiter;
348 Node : not null Gela.Elements.Component_Clauses.Component_Clause_Access)
349 is null;
350
351 overriding procedure Component_Declaration
352 (Self : in out Visiter;
353 Node : not null Gela.Elements.Component_Declarations.
354 Component_Declaration_Access);
355
356 overriding procedure Component_Definition
357 (Self : in out Visiter;
358 Node : not null Gela.Elements.Component_Definitions.
359 Component_Definition_Access);
360
361 overriding procedure Composite_Constraint
362 (Self : in out Visiter;
363 Node : not null Gela.Elements.Composite_Constraints.
364 Composite_Constraint_Access);
365
366 overriding procedure Constrained_Array_Definition
367 (Self : in out Visiter;
368 Node : not null Gela.Elements.Constrained_Array_Definitions.
369 Constrained_Array_Definition_Access);
370
371 overriding procedure Decimal_Fixed_Point_Definition
372 (Self : in out Visiter;
373 Node : not null Gela.Elements.Decimal_Fixed_Point_Definitions.
374 Decimal_Fixed_Point_Definition_Access)
375 is null;
376
377 overriding procedure Defining_Character_Literal
378 (Self : in out Visiter;
379 Node : not null Gela.Elements.Defining_Character_Literals.
380 Defining_Character_Literal_Access)
381 is null;
382
383 overriding procedure Defining_Enumeration_Literal
384 (Self : in out Visiter;
385 Node : not null Gela.Elements.Defining_Enumeration_Literals.
386 Defining_Enumeration_Literal_Access);
387
388 overriding procedure Defining_Expanded_Unit_Name
389 (Self : in out Visiter;
390 Node : not null Gela.Elements.Defining_Expanded_Unit_Names.
391 Defining_Expanded_Unit_Name_Access);
392
393 overriding procedure Defining_Identifier
394 (Self : in out Visiter;
395 Node : not null Gela.Elements.Defining_Identifiers.
396 Defining_Identifier_Access);
397
398 overriding procedure Defining_Operator_Symbol
399 (Self : in out Visiter;
400 Node : not null Gela.Elements.Defining_Operator_Symbols.
401 Defining_Operator_Symbol_Access);
402
403 overriding procedure Delay_Statement
404 (Self : in out Visiter;
405 Node : not null Gela.Elements.Delay_Statements.Delay_Statement_Access);
406
407 overriding procedure Delta_Constraint
408 (Self : in out Visiter;
409 Node : not null Gela.Elements.Delta_Constraints.Delta_Constraint_Access)
410 is null;
411
412 overriding procedure Derived_Record_Definition
413 (Self : in out Visiter;
414 Node : not null Gela.Elements.Derived_Record_Definitions.
415 Derived_Record_Definition_Access)
416 is null;
417
418 overriding procedure Derived_Type_Definition
419 (Self : in out Visiter;
420 Node : not null Gela.Elements.Derived_Type_Definitions.
421 Derived_Type_Definition_Access);
422
423 overriding procedure Digits_Constraint
424 (Self : in out Visiter;
425 Node : not null Gela.Elements.Digits_Constraints.
426 Digits_Constraint_Access)
427 is null;
428
429 overriding procedure Discrete_Range_Attribute_Reference
430 (Self : in out Visiter;
431 Node : not null Gela.Elements.Discrete_Range_Attribute_References.
432 Discrete_Range_Attribute_Reference_Access)
433 is null;
434
435 overriding procedure Discrete_Simple_Expression_Range
436 (Self : in out Visiter;
437 Node : not null Gela.Elements.Discrete_Simple_Expression_Ranges.
438 Discrete_Simple_Expression_Range_Access);
439
440 overriding procedure Discrete_Subtype_Indication
441 (Self : in out Visiter;
442 Node : not null Gela.Elements.Discrete_Subtype_Indications.
443 Discrete_Subtype_Indication_Access);
444
445 overriding procedure Discrete_Subtype_Indication_Dr
446 (Self : in out Visiter;
447 Node : not null Gela.Elements.Discrete_Subtype_Indication_Drs.
448 Discrete_Subtype_Indication_Dr_Access)
449 is null;
450
451 overriding procedure Discriminant_Specification
452 (Self : in out Visiter;
453 Node : not null Gela.Elements.Discriminant_Specifications.
454 Discriminant_Specification_Access);
455
456 overriding procedure Element_Iterator_Specification
457 (Self : in out Visiter;
458 Node : not null Gela.Elements.Element_Iterator_Specifications.
459 Element_Iterator_Specification_Access)
460 is null;
461
462 overriding procedure Else_Expression_Path
463 (Self : in out Visiter;
464 Node : not null Gela.Elements.Else_Expression_Paths.
465 Else_Expression_Path_Access)
466 is null;
467
468 overriding procedure Else_Path
469 (Self : in out Visiter;
470 Node : not null Gela.Elements.Else_Paths.Else_Path_Access);
471
472 overriding procedure Elsif_Expression_Path
473 (Self : in out Visiter;
474 Node : not null Gela.Elements.Elsif_Expression_Paths.
475 Elsif_Expression_Path_Access)
476 is null;
477
478 overriding procedure Elsif_Path
479 (Self : in out Visiter;
480 Node : not null Gela.Elements.Elsif_Paths.Elsif_Path_Access)
481 is null;
482
483 overriding procedure Entry_Body
484 (Self : in out Visiter;
485 Node : not null Gela.Elements.Entry_Bodies.Entry_Body_Access);
486
487 overriding procedure Entry_Declaration
488 (Self : in out Visiter;
489 Node : not null Gela.Elements.Entry_Declarations.
490 Entry_Declaration_Access);
491
492 overriding procedure Entry_Index_Specification
493 (Self : in out Visiter;
494 Node : not null Gela.Elements.Entry_Index_Specifications.
495 Entry_Index_Specification_Access)
496 is null;
497
498 overriding procedure Enumeration_Literal
499 (Self : in out Visiter;
500 Node : not null Gela.Elements.Enumeration_Literals.
501 Enumeration_Literal_Access)
502 is null;
503
504 overriding procedure Enumeration_Literal_Specification
505 (Self : in out Visiter;
506 Node : not null Gela.Elements.Enumeration_Literal_Specifications.
507 Enumeration_Literal_Specification_Access);
508
509 overriding procedure Enumeration_Type_Definition
510 (Self : in out Visiter;
511 Node : not null Gela.Elements.Enumeration_Type_Definitions.
512 Enumeration_Type_Definition_Access);
513
514 overriding procedure Exception_Declaration
515 (Self : in out Visiter;
516 Node : not null Gela.Elements.Exception_Declarations.
517 Exception_Declaration_Access);
518
519 overriding procedure Exception_Handler
520 (Self : in out Visiter;
521 Node : not null Gela.Elements.Exception_Handlers.
522 Exception_Handler_Access);
523
524 overriding procedure Exception_Renaming_Declaration
525 (Self : in out Visiter;
526 Node : not null Gela.Elements.Exception_Renaming_Declarations.
527 Exception_Renaming_Declaration_Access);
528
529 overriding procedure Exit_Statement
530 (Self : in out Visiter;
531 Node : not null Gela.Elements.Exit_Statements.Exit_Statement_Access);
532
533 overriding procedure Explicit_Dereference
534 (Self : in out Visiter;
535 Node : not null Gela.Elements.Explicit_Dereferences.
536 Explicit_Dereference_Access);
537
538 overriding procedure Extended_Return_Statement
539 (Self : in out Visiter;
540 Node : not null Gela.Elements.Extended_Return_Statements.
541 Extended_Return_Statement_Access)
542 is null;
543
544 overriding procedure Extension_Aggregate
545 (Self : in out Visiter;
546 Node : not null Gela.Elements.Extension_Aggregates.
547 Extension_Aggregate_Access)
548 is null;
549
550 overriding procedure Floating_Point_Definition
551 (Self : in out Visiter;
552 Node : not null Gela.Elements.Floating_Point_Definitions.
553 Floating_Point_Definition_Access)
554 is null;
555
556 overriding procedure For_Loop_Statement
557 (Self : in out Visiter;
558 Node : not null Gela.Elements.For_Loop_Statements.
559 For_Loop_Statement_Access)
560 is null;
561
562 overriding procedure Formal_Access_To_Function_Definition
563 (Self : in out Visiter;
564 Node : not null Gela.Elements.Formal_Access_To_Function_Definitions.
565 Formal_Access_To_Function_Definition_Access)
566 is null;
567
568 overriding procedure Formal_Access_To_Object_Definition
569 (Self : in out Visiter;
570 Node : not null Gela.Elements.Formal_Access_To_Object_Definitions.
571 Formal_Access_To_Object_Definition_Access)
572 is null;
573
574 overriding procedure Formal_Access_To_Procedure_Definition
575 (Self : in out Visiter;
576 Node : not null Gela.Elements.Formal_Access_To_Procedure_Definitions.
577 Formal_Access_To_Procedure_Definition_Access)
578 is null;
579
580 overriding procedure Formal_Constrained_Array_Definition
581 (Self : in out Visiter;
582 Node : not null Gela.Elements.Formal_Constrained_Array_Definitions.
583 Formal_Constrained_Array_Definition_Access)
584 is null;
585
586 overriding procedure Formal_Decimal_Fixed_Point_Definition
587 (Self : in out Visiter;
588 Node : not null Gela.Elements.Formal_Decimal_Fixed_Point_Definitions.
589 Formal_Decimal_Fixed_Point_Definition_Access)
590 is null;
591
592 overriding procedure Formal_Derived_Type_Definition
593 (Self : in out Visiter;
594 Node : not null Gela.Elements.Formal_Derived_Type_Definitions.
595 Formal_Derived_Type_Definition_Access);
596
597 overriding procedure Formal_Discrete_Type_Definition
598 (Self : in out Visiter;
599 Node : not null Gela.Elements.Formal_Discrete_Type_Definitions.
600 Formal_Discrete_Type_Definition_Access)
601 is null;
602
603 overriding procedure Formal_Floating_Point_Definition
604 (Self : in out Visiter;
605 Node : not null Gela.Elements.Formal_Floating_Point_Definitions.
606 Formal_Floating_Point_Definition_Access)
607 is null;
608
609 overriding procedure Formal_Function_Declaration
610 (Self : in out Visiter;
611 Node : not null Gela.Elements.Formal_Function_Declarations.
612 Formal_Function_Declaration_Access)
613 is null;
614
615 overriding procedure Formal_Incomplete_Type_Declaration
616 (Self : in out Visiter;
617 Node : not null Gela.Elements.Formal_Incomplete_Type_Declarations.
618 Formal_Incomplete_Type_Declaration_Access)
619 is null;
620
621 overriding procedure Formal_Interface_Type_Definition
622 (Self : in out Visiter;
623 Node : not null Gela.Elements.Formal_Interface_Type_Definitions.
624 Formal_Interface_Type_Definition_Access)
625 is null;
626
627 overriding procedure Formal_Modular_Type_Definition
628 (Self : in out Visiter;
629 Node : not null Gela.Elements.Formal_Modular_Type_Definitions.
630 Formal_Modular_Type_Definition_Access)
631 is null;
632
633 overriding procedure Formal_Object_Declaration
634 (Self : in out Visiter;
635 Node : not null Gela.Elements.Formal_Object_Declarations.
636 Formal_Object_Declaration_Access)
637 is null;
638
639 overriding procedure Formal_Ordinary_Fixed_Point_Definition
640 (Self : in out Visiter;
641 Node : not null Gela.Elements.Formal_Ordinary_Fixed_Point_Definitions.
642 Formal_Ordinary_Fixed_Point_Definition_Access)
643 is null;
644
645 overriding procedure Formal_Package_Declaration
646 (Self : in out Visiter;
647 Node : not null Gela.Elements.Formal_Package_Declarations.
648 Formal_Package_Declaration_Access)
649 is null;
650
651 overriding procedure Formal_Private_Type_Definition
652 (Self : in out Visiter;
653 Node : not null Gela.Elements.Formal_Private_Type_Definitions.
654 Formal_Private_Type_Definition_Access)
655 is null;
656
657 overriding procedure Formal_Procedure_Declaration
658 (Self : in out Visiter;
659 Node : not null Gela.Elements.Formal_Procedure_Declarations.
660 Formal_Procedure_Declaration_Access)
661 is null;
662
663 overriding procedure Formal_Signed_Integer_Type_Definition
664 (Self : in out Visiter;
665 Node : not null Gela.Elements.Formal_Signed_Integer_Type_Definitions.
666 Formal_Signed_Integer_Type_Definition_Access)
667 is null;
668
669 overriding procedure Formal_Type_Declaration
670 (Self : in out Visiter;
671 Node : not null Gela.Elements.Formal_Type_Declarations.
672 Formal_Type_Declaration_Access);
673
674 overriding procedure Formal_Unconstrained_Array_Definition
675 (Self : in out Visiter;
676 Node : not null Gela.Elements.Formal_Unconstrained_Array_Definitions.
677 Formal_Unconstrained_Array_Definition_Access)
678 is null;
679
680 overriding procedure Full_Type_Declaration
681 (Self : in out Visiter;
682 Node : not null Gela.Elements.Full_Type_Declarations.
683 Full_Type_Declaration_Access);
684
685 overriding procedure Function_Body
686 (Self : in out Visiter;
687 Node : not null Gela.Elements.Function_Bodies.Function_Body_Access);
688
689 overriding procedure Function_Declaration
690 (Self : in out Visiter;
691 Node : not null Gela.Elements.Function_Declarations.
692 Function_Declaration_Access);
693
694 overriding procedure Function_Instantiation
695 (Self : in out Visiter;
696 Node : not null Gela.Elements.Function_Instantiations.
697 Function_Instantiation_Access)
698 is null;
699
700 overriding procedure Generalized_Iterator_Specification
701 (Self : in out Visiter;
702 Node : not null Gela.Elements.Generalized_Iterator_Specifications.
703 Generalized_Iterator_Specification_Access)
704 is null;
705
706 overriding procedure Generic_Association
707 (Self : in out Visiter;
708 Node : not null Gela.Elements.Generic_Associations.
709 Generic_Association_Access);
710
711 overriding procedure Generic_Function_Declaration
712 (Self : in out Visiter;
713 Node : not null Gela.Elements.Generic_Function_Declarations.
714 Generic_Function_Declaration_Access)
715 is null;
716
717 overriding procedure Generic_Function_Renaming
718 (Self : in out Visiter;
719 Node : not null Gela.Elements.Generic_Function_Renamings.
720 Generic_Function_Renaming_Access)
721 is null;
722
723 overriding procedure Generic_Package_Declaration
724 (Self : in out Visiter;
725 Node : not null Gela.Elements.Generic_Package_Declarations.
726 Generic_Package_Declaration_Access);
727
728 overriding procedure Generic_Package_Renaming
729 (Self : in out Visiter;
730 Node : not null Gela.Elements.Generic_Package_Renamings.
731 Generic_Package_Renaming_Access)
732 is null;
733
734 overriding procedure Generic_Procedure_Declaration
735 (Self : in out Visiter;
736 Node : not null Gela.Elements.Generic_Procedure_Declarations.
737 Generic_Procedure_Declaration_Access)
738 is null;
739
740 overriding procedure Generic_Procedure_Renaming
741 (Self : in out Visiter;
742 Node : not null Gela.Elements.Generic_Procedure_Renamings.
743 Generic_Procedure_Renaming_Access)
744 is null;
745
746 overriding procedure Goto_Statement
747 (Self : in out Visiter;
748 Node : not null Gela.Elements.Goto_Statements.Goto_Statement_Access)
749 is null;
750
751 overriding procedure Identifier
752 (Self : in out Visiter;
753 Node : not null Gela.Elements.Identifiers.Identifier_Access);
754
755 overriding procedure If_Expression
756 (Self : in out Visiter;
757 Node : not null Gela.Elements.If_Expressions.If_Expression_Access)
758 is null;
759
760 overriding procedure If_Expression_Path
761 (Self : in out Visiter;
762 Node : not null Gela.Elements.If_Expression_Paths.
763 If_Expression_Path_Access)
764 is null;
765
766 overriding procedure If_Path
767 (Self : in out Visiter;
768 Node : not null Gela.Elements.If_Paths.If_Path_Access);
769
770 overriding procedure If_Statement
771 (Self : in out Visiter;
772 Node : not null Gela.Elements.If_Statements.If_Statement_Access);
773
774 overriding procedure Incomplete_Type_Declaration
775 (Self : in out Visiter;
776 Node : not null Gela.Elements.Incomplete_Type_Declarations.
777 Incomplete_Type_Declaration_Access);
778
779 overriding procedure Incomplete_Type_Definition
780 (Self : in out Visiter;
781 Node : not null Gela.Elements.Incomplete_Type_Definitions.
782 Incomplete_Type_Definition_Access);
783
784 overriding procedure Interface_Type_Definition
785 (Self : in out Visiter;
786 Node : not null Gela.Elements.Interface_Type_Definitions.
787 Interface_Type_Definition_Access)
788 is null;
789
790 overriding procedure Known_Discriminant_Part
791 (Self : in out Visiter;
792 Node : not null Gela.Elements.Known_Discriminant_Parts.
793 Known_Discriminant_Part_Access);
794
795 overriding procedure Label_Decorator
796 (Self : in out Visiter;
797 Node : not null Gela.Elements.Label_Decorators.Label_Decorator_Access)
798 is null;
799
800 overriding procedure Loop_Parameter_Specification
801 (Self : in out Visiter;
802 Node : not null Gela.Elements.Loop_Parameter_Specifications.
803 Loop_Parameter_Specification_Access)
804 is null;
805
806 overriding procedure Loop_Statement
807 (Self : in out Visiter;
808 Node : not null Gela.Elements.Loop_Statements.Loop_Statement_Access);
809
810 overriding procedure Membership_Test
811 (Self : in out Visiter;
812 Node : not null Gela.Elements.Membership_Tests.Membership_Test_Access);
813
814 overriding procedure Modular_Type_Definition
815 (Self : in out Visiter;
816 Node : not null Gela.Elements.Modular_Type_Definitions.
817 Modular_Type_Definition_Access)
818 is null;
819
820 overriding procedure Null_Component
821 (Self : in out Visiter;
822 Node : not null Gela.Elements.Null_Components.Null_Component_Access);
823
824 overriding procedure Null_Literal
825 (Self : in out Visiter;
826 Node : not null Gela.Elements.Null_Literals.Null_Literal_Access)
827 is null;
828
829 overriding procedure Null_Record_Definition
830 (Self : in out Visiter;
831 Node : not null Gela.Elements.Null_Record_Definitions.
832 Null_Record_Definition_Access)
833 is null;
834
835 overriding procedure Null_Statement
836 (Self : in out Visiter;
837 Node : not null Gela.Elements.Null_Statements.Null_Statement_Access);
838
839 overriding procedure Number_Declaration
840 (Self : in out Visiter;
841 Node : not null Gela.Elements.Number_Declarations.
842 Number_Declaration_Access);
843
844 overriding procedure Numeric_Literal
845 (Self : in out Visiter;
846 Node : not null Gela.Elements.Numeric_Literals.Numeric_Literal_Access);
847
848 overriding procedure Object_Declaration
849 (Self : in out Visiter;
850 Node : not null Gela.Elements.Object_Declarations.
851 Object_Declaration_Access);
852
853 overriding procedure Object_Renaming_Declaration
854 (Self : in out Visiter;
855 Node : not null Gela.Elements.Object_Renaming_Declarations.
856 Object_Renaming_Declaration_Access);
857
858 overriding procedure Operator_Symbol
859 (Self : in out Visiter;
860 Node : not null Gela.Elements.Operator_Symbols.Operator_Symbol_Access);
861
862 overriding procedure Ordinary_Fixed_Point_Definition
863 (Self : in out Visiter;
864 Node : not null Gela.Elements.Ordinary_Fixed_Point_Definitions.
865 Ordinary_Fixed_Point_Definition_Access)
866 is null;
867
868 overriding procedure Others_Choice
869 (Self : in out Visiter;
870 Node : not null Gela.Elements.Others_Choices.Others_Choice_Access);
871
872 overriding procedure Package_Body
873 (Self : in out Visiter;
874 Node : not null Gela.Elements.Package_Bodies.Package_Body_Access);
875
876 overriding procedure Package_Body_Stub
877 (Self : in out Visiter;
878 Node : not null Gela.Elements.Package_Body_Stubs.
879 Package_Body_Stub_Access);
880
881 overriding procedure Package_Declaration
882 (Self : in out Visiter;
883 Node : not null Gela.Elements.Package_Declarations.
884 Package_Declaration_Access);
885
886 overriding procedure Package_Instantiation
887 (Self : in out Visiter;
888 Node : not null Gela.Elements.Package_Instantiations.
889 Package_Instantiation_Access);
890
891 overriding procedure Package_Renaming_Declaration
892 (Self : in out Visiter;
893 Node : not null Gela.Elements.Package_Renaming_Declarations.
894 Package_Renaming_Declaration_Access);
895
896 overriding procedure Parameter_Association
897 (Self : in out Visiter;
898 Node : not null Gela.Elements.Parameter_Associations.
899 Parameter_Association_Access)
900 is null;
901
902 overriding procedure Parameter_Specification
903 (Self : in out Visiter;
904 Node : not null Gela.Elements.Parameter_Specifications.
905 Parameter_Specification_Access);
906
907 overriding procedure Pragma_Argument_Association
908 (Self : in out Visiter;
909 Node : not null Gela.Elements.Pragma_Argument_Associations.
910 Pragma_Argument_Association_Access)
911 is null;
912
913 overriding procedure Pragma_Node
914 (Self : in out Visiter;
915 Node : not null Gela.Elements.Pragma_Nodes.Pragma_Node_Access);
916
917 overriding procedure Private_Extension_Declaration
918 (Self : in out Visiter;
919 Node : not null Gela.Elements.Private_Extension_Declarations.
920 Private_Extension_Declaration_Access)
921 is null;
922
923 overriding procedure Private_Extension_Definition
924 (Self : in out Visiter;
925 Node : not null Gela.Elements.Private_Extension_Definitions.
926 Private_Extension_Definition_Access)
927 is null;
928
929 overriding procedure Private_Type_Declaration
930 (Self : in out Visiter;
931 Node : not null Gela.Elements.Private_Type_Declarations.
932 Private_Type_Declaration_Access);
933
934 overriding procedure Private_Type_Definition
935 (Self : in out Visiter;
936 Node : not null Gela.Elements.Private_Type_Definitions.
937 Private_Type_Definition_Access);
938
939 overriding procedure Procedure_Body
940 (Self : in out Visiter;
941 Node : not null Gela.Elements.Procedure_Bodies.Procedure_Body_Access);
942
943 overriding procedure Procedure_Call_Statement
944 (Self : in out Visiter;
945 Node : not null Gela.Elements.Procedure_Call_Statements.
946 Procedure_Call_Statement_Access);
947
948 overriding procedure Procedure_Declaration
949 (Self : in out Visiter;
950 Node : not null Gela.Elements.Procedure_Declarations.
951 Procedure_Declaration_Access);
952
953 overriding procedure Procedure_Instantiation
954 (Self : in out Visiter;
955 Node : not null Gela.Elements.Procedure_Instantiations.
956 Procedure_Instantiation_Access)
957 is null;
958
959 overriding procedure Protected_Body
960 (Self : in out Visiter;
961 Node : not null Gela.Elements.Protected_Bodies.Protected_Body_Access);
962
963 overriding procedure Protected_Body_Stub
964 (Self : in out Visiter;
965 Node : not null Gela.Elements.Protected_Body_Stubs.
966 Protected_Body_Stub_Access)
967 is null;
968
969 overriding procedure Protected_Definition
970 (Self : in out Visiter;
971 Node : not null Gela.Elements.Protected_Definitions.
972 Protected_Definition_Access);
973
974 overriding procedure Protected_Type_Declaration
975 (Self : in out Visiter;
976 Node : not null Gela.Elements.Protected_Type_Declarations.
977 Protected_Type_Declaration_Access)
978 is null;
979
980 overriding procedure Qualified_Expression
981 (Self : in out Visiter;
982 Node : not null Gela.Elements.Qualified_Expressions.
983 Qualified_Expression_Access);
984
985 overriding procedure Quantified_Expression
986 (Self : in out Visiter;
987 Node : not null Gela.Elements.Quantified_Expressions.
988 Quantified_Expression_Access)
989 is null;
990
991 overriding procedure Raise_Statement
992 (Self : in out Visiter;
993 Node : not null Gela.Elements.Raise_Statements.Raise_Statement_Access)
994 is null;
995
996 overriding procedure Range_Attribute_Reference
997 (Self : in out Visiter;
998 Node : not null Gela.Elements.Range_Attribute_References.
999 Range_Attribute_Reference_Access);
1000
1001 overriding procedure Range_Attribute_Reference_Dr
1002 (Self : in out Visiter;
1003 Node : not null Gela.Elements.Range_Attribute_Reference_Drs.
1004 Range_Attribute_Reference_Dr_Access)
1005 is null;
1006
1007 overriding procedure Record_Aggregate
1008 (Self : in out Visiter;
1009 Node : not null Gela.Elements.Record_Aggregates.
1010 Record_Aggregate_Access);
1011
1012 overriding procedure Record_Definition
1013 (Self : in out Visiter;
1014 Node : not null Gela.Elements.Record_Definitions.
1015 Record_Definition_Access);
1016
1017 overriding procedure Record_Representation_Clause
1018 (Self : in out Visiter;
1019 Node : not null Gela.Elements.Record_Representation_Clauses.
1020 Record_Representation_Clause_Access)
1021 is null;
1022
1023 overriding procedure Record_Type_Definition
1024 (Self : in out Visiter;
1025 Node : not null Gela.Elements.Record_Type_Definitions.
1026 Record_Type_Definition_Access);
1027
1028 overriding procedure Requeue_Statement
1029 (Self : in out Visiter;
1030 Node : not null Gela.Elements.Requeue_Statements.
1031 Requeue_Statement_Access);
1032
1033 overriding procedure Return_Object_Specification
1034 (Self : in out Visiter;
1035 Node : not null Gela.Elements.Return_Object_Specifications.
1036 Return_Object_Specification_Access)
1037 is null;
1038
1039 overriding procedure Select_Or_Path
1040 (Self : in out Visiter;
1041 Node : not null Gela.Elements.Select_Or_Paths.Select_Or_Path_Access);
1042
1043 overriding procedure Selected_Component
1044 (Self : in out Visiter;
1045 Node : not null Gela.Elements.Selected_Components.
1046 Selected_Component_Access);
1047
1048 overriding procedure Selected_Identifier
1049 (Self : in out Visiter;
1050 Node : not null Gela.Elements.Selected_Identifiers.
1051 Selected_Identifier_Access);
1052
1053 overriding procedure Selective_Accept
1054 (Self : in out Visiter;
1055 Node : not null Gela.Elements.Selective_Accepts.Selective_Accept_Access);
1056
1057 overriding procedure Short_Circuit
1058 (Self : in out Visiter;
1059 Node : not null Gela.Elements.Short_Circuits.Short_Circuit_Access)
1060 is null;
1061
1062 overriding procedure Signed_Integer_Type_Definition
1063 (Self : in out Visiter;
1064 Node : not null Gela.Elements.Signed_Integer_Type_Definitions.
1065 Signed_Integer_Type_Definition_Access);
1066
1067 overriding procedure Simple_Expression_Range
1068 (Self : in out Visiter;
1069 Node : not null Gela.Elements.Simple_Expression_Ranges.
1070 Simple_Expression_Range_Access);
1071
1072 overriding procedure Simple_Expression_Range_Dr
1073 (Self : in out Visiter;
1074 Node : not null Gela.Elements.Simple_Expression_Range_Drs.
1075 Simple_Expression_Range_Dr_Access);
1076
1077 overriding procedure Simple_Return_Statement
1078 (Self : in out Visiter;
1079 Node : not null Gela.Elements.Simple_Return_Statements.
1080 Simple_Return_Statement_Access);
1081
1082 overriding procedure Single_Protected_Declaration
1083 (Self : in out Visiter;
1084 Node : not null Gela.Elements.Single_Protected_Declarations.
1085 Single_Protected_Declaration_Access);
1086
1087 overriding procedure Single_Task_Declaration
1088 (Self : in out Visiter;
1089 Node : not null Gela.Elements.Single_Task_Declarations.
1090 Single_Task_Declaration_Access);
1091
1092 overriding procedure String_Literal
1093 (Self : in out Visiter;
1094 Node : not null Gela.Elements.String_Literals.String_Literal_Access);
1095
1096 overriding procedure Subtype_Declaration
1097 (Self : in out Visiter;
1098 Node : not null Gela.Elements.Subtype_Declarations.
1099 Subtype_Declaration_Access);
1100
1101 overriding procedure Subtype_Indication
1102 (Self : in out Visiter;
1103 Node : not null Gela.Elements.Subtype_Indications.
1104 Subtype_Indication_Access);
1105
1106 overriding procedure Subunit
1107 (Self : in out Visiter;
1108 Node : not null Gela.Elements.Subunits.Subunit_Access)
1109 is null;
1110
1111 overriding procedure Task_Body
1112 (Self : in out Visiter;
1113 Node : not null Gela.Elements.Task_Bodies.Task_Body_Access);
1114
1115 overriding procedure Task_Body_Stub
1116 (Self : in out Visiter;
1117 Node : not null Gela.Elements.Task_Body_Stubs.Task_Body_Stub_Access);
1118
1119 overriding procedure Task_Definition
1120 (Self : in out Visiter;
1121 Node : not null Gela.Elements.Task_Definitions.Task_Definition_Access);
1122
1123 overriding procedure Task_Type_Declaration
1124 (Self : in out Visiter;
1125 Node : not null Gela.Elements.Task_Type_Declarations.
1126 Task_Type_Declaration_Access)
1127 is null;
1128
1129 overriding procedure Terminate_Alternative_Statement
1130 (Self : in out Visiter;
1131 Node : not null Gela.Elements.Terminate_Alternative_Statements.
1132 Terminate_Alternative_Statement_Access);
1133
1134 overriding procedure Then_Abort_Path
1135 (Self : in out Visiter;
1136 Node : not null Gela.Elements.Then_Abort_Paths.Then_Abort_Path_Access)
1137 is null;
1138
1139 overriding procedure Unconstrained_Array_Definition
1140 (Self : in out Visiter;
1141 Node : not null Gela.Elements.Unconstrained_Array_Definitions.
1142 Unconstrained_Array_Definition_Access);
1143
1144 overriding procedure Unknown_Discriminant_Part
1145 (Self : in out Visiter;
1146 Node : not null Gela.Elements.Unknown_Discriminant_Parts.
1147 Unknown_Discriminant_Part_Access)
1148 is null;
1149
1150 overriding procedure Use_Package_Clause
1151 (Self : in out Visiter;
1152 Node : not null Gela.Elements.Use_Package_Clauses.
1153 Use_Package_Clause_Access);
1154
1155 overriding procedure Use_Type_Clause
1156 (Self : in out Visiter;
1157 Node : not null Gela.Elements.Use_Type_Clauses.Use_Type_Clause_Access);
1158
1159 overriding procedure Variant
1160 (Self : in out Visiter;
1161 Node : not null Gela.Elements.Variants.Variant_Access);
1162
1163 overriding procedure Variant_Part
1164 (Self : in out Visiter;
1165 Node : not null Gela.Elements.Variant_Parts.Variant_Part_Access);
1166
1167 overriding procedure While_Loop_Statement
1168 (Self : in out Visiter;
1169 Node : not null Gela.Elements.While_Loop_Statements.
1170 While_Loop_Statement_Access)
1171 is null;
1172
1173 overriding procedure With_Clause
1174 (Self : in out Visiter;
1175 Node : not null Gela.Elements.With_Clauses.With_Clause_Access);
1176
1177 overriding procedure Accept_Statement
1178 (Self : in out Visiter;
1179 Node : not null Gela.Elements.Accept_Statements.Accept_Statement_Access)
1180 is
1181 pragma Unreferenced (Node);
1182 begin
1183 Self.Result := An_Accept_Statement;
1184 end Accept_Statement;
1185
1186 overriding procedure Access_To_Object_Definition
1187 (Self : in out Visiter;
1188 Node : not null Gela.Elements.Access_To_Object_Definitions.
1189 Access_To_Object_Definition_Access)
1190 is
1191 use type Gela.Lexical_Types.Token_Count;
1192 begin
1193 if Node.Constant_Token = 0 then
1194 Self.Result := An_Anonymous_Access_To_Variable;
1195 else
1196 Self.Result := An_Anonymous_Access_To_Constant;
1197 end if;
1198 end Access_To_Object_Definition;
1199
1200 overriding procedure Allocator
1201 (Self : in out Visiter;
1202 Node : not null Gela.Elements.Allocators.Allocator_Access)
1203 is
1204 Name : constant Gela.Elements.Names.Name_Access :=
1205 Node.Subtype_Or_Expression;
1206 begin
1207 Name.Visit (Self);
1208
1209 case Self.Result is
1210 when A_Qualified_Expression =>
1211 Self.Result := An_Allocation_From_Qualified_Expression;
1212 when others =>
1213 Self.Result := An_Allocation_From_Subtype;
1214 end case;
1215 end Allocator;
1216
1217 overriding procedure Anonymous_Access_To_Object_Definition
1218 (Self : in out Visiter;
1219 Node : not null Gela.Elements.Anonymous_Access_To_Object_Definitions.
1220 Anonymous_Access_To_Object_Definition_Access)
1221 is
1222 use type Gela.Lexical_Types.Token_Count;
1223 begin
1224 if Node.Constant_Token = 0 then
1225 Self.Result := An_Anonymous_Access_To_Variable;
1226 else
1227 Self.Result := An_Anonymous_Access_To_Constant;
1228 end if;
1229 end Anonymous_Access_To_Object_Definition;
1230
1231 overriding procedure Assignment_Statement
1232 (Self : in out Visiter;
1233 Node : not null Gela.Elements.Assignment_Statements.
1234 Assignment_Statement_Access)
1235 is
1236 pragma Unreferenced (Node);
1237 begin
1238 Self.Result := An_Assignment_Statement;
1239 end Assignment_Statement;
1240
1241 overriding procedure Association
1242 (Self : in out Visiter;
1243 Node : not null Gela.Elements.Associations.Association_Access)
1244 is
1245 pragma Unreferenced (Node);
1246 begin
1247 Self.Result := A_Parameter_Association;
1248 end Association;
1249
1250 overriding procedure Attribute_Reference
1251 (Self : in out Visiter;
1252 Node : not null Gela.Elements.Attribute_References.
1253 Attribute_Reference_Access)
1254 is
1255 package X renames Gela.Lexical_Types.Predefined_Symbols;
1256 use type Gela.Lexical_Types.Token_Count;
1257
1258 Id : constant Gela.Elements.Identifiers.Identifier_Access :=
1259 Node.Attribute_Designator_Identifier;
1260 Comp : constant Gela.Compilations.Compilation_Access :=
1261 Node.Enclosing_Compilation;
1262 Token : Gela.Lexical_Types.Token;
1263 Map : constant array (Gela.Lexical_Types.Symbol range
1264 X.Access_Symbol .. X.Write) of Element_Flat_Kind
1265 :=
1266 (
1267 X.Access_Symbol => An_Access_Attribute,
1268 X.Address => An_Address_Attribute,
1269 X.Adjacent => An_Adjacent_Attribute,
1270 X.Aft => An_Aft_Attribute,
1271 X.Alignment => An_Alignment_Attribute,
1272 X.Base => A_Base_Attribute,
1273 X.Bit_Order => A_Bit_Order_Attribute,
1274 X.Body_Version => A_Body_Version_Attribute,
1275 X.Callable => A_Callable_Attribute,
1276 X.Caller => A_Caller_Attribute,
1277 X.Ceiling => A_Ceiling_Attribute,
1278 X.Class => A_Class_Attribute,
1279 X.Component_Size => A_Component_Size_Attribute,
1280 X.Compose => A_Compose_Attribute,
1281 X.Constrained => A_Constrained_Attribute,
1282 X.Copy_Sign => A_Copy_Sign_Attribute,
1283 X.Count => A_Count_Attribute,
1284 X.Definite => A_Definite_Attribute,
1285 X.Delta_Symbol => A_Delta_Attribute,
1286 X.Denorm => A_Denorm_Attribute,
1287 X.Digits_Symbol => A_Digits_Attribute,
1288 X.Exponent => An_Exponent_Attribute,
1289 X.External_Tag => An_External_Tag_Attribute,
1290 X.First => A_First_Attribute,
1291 X.First_Bit => A_First_Bit_Attribute,
1292 X.Floor => A_Floor_Attribute,
1293 X.Fore => A_Fore_Attribute,
1294 X.Fraction => A_Fraction_Attribute,
1295 X.Identity => An_Identity_Attribute,
1296 X.Image => An_Image_Attribute,
1297 X.Input => An_Input_Attribute,
1298 X.Last => A_Last_Attribute,
1299 X.Last_Bit => A_Last_Bit_Attribute,
1300 X.Leading_Part => A_Leading_Part_Attribute,
1301 X.Length => A_Length_Attribute,
1302 X.Machine => A_Machine_Attribute,
1303 X.Machine_Emax => A_Machine_Emax_Attribute,
1304 X.Machine_Emin => A_Machine_Emin_Attribute,
1305 X.Machine_Mantissa => A_Machine_Mantissa_Attribute,
1306 X.Machine_Overflows => A_Machine_Overflows_Attribute,
1307 X.Machine_Radix => A_Machine_Radix_Attribute,
1308 X.Machine_Rounding => A_Machine_Rounding_Attribute,
1309 X.Machine_Rounds => A_Machine_Rounds_Attribute,
1310 X.Max => A_Max_Attribute,
1311 X.Max_Size_In_Storage_Elements =>
1312 A_Max_Size_In_Storage_Elements_Attribute,
1313 X.Min => A_Min_Attribute,
1314 X.Mod_Symbol => A_Mod_Attribute,
1315 X.Model => A_Model_Attribute,
1316 X.Model_Emin => A_Model_Emin_Attribute,
1317 X.Model_Epsilon => A_Model_Epsilon_Attribute,
1318 X.Model_Mantissa => A_Model_Mantissa_Attribute,
1319 X.Model_Small => A_Model_Small_Attribute,
1320 X.Modulus => A_Modulus_Attribute,
1321 X.Output => An_Output_Attribute,
1322 X.Partition_ID => A_Partition_ID_Attribute,
1323 X.Pos => A_Pos_Attribute,
1324 X.Position => A_Position_Attribute,
1325 X.Pred => A_Pred_Attribute,
1326 X.Priority => A_Priority_Attribute,
1327 X.Range_Symbol => A_Range_Attribute,
1328 X.Read => A_Read_Attribute,
1329 X.Remainder => A_Remainder_Attribute,
1330 X.Round => A_Round_Attribute,
1331 X.Rounding => A_Rounding_Attribute,
1332 X.Safe_First => A_Safe_First_Attribute,
1333 X.Safe_Last => A_Safe_Last_Attribute,
1334 X.Scale => A_Scale_Attribute,
1335 X.Scaling => A_Scaling_Attribute,
1336 X.Signed_Zeros => A_Signed_Zeros_Attribute,
1337 X.Size => A_Size_Attribute,
1338 X.Small => A_Small_Attribute,
1339 X.Storage_Pool => A_Storage_Pool_Attribute,
1340 X.Storage_Size => A_Storage_Size_Attribute,
1341 X.Stream_Size => A_Stream_Size_Attribute,
1342 X.Succ => A_Succ_Attribute,
1343 X.Tag => A_Tag_Attribute,
1344 X.Terminated => A_Terminated_Attribute,
1345 X.Truncation => A_Truncation_Attribute,
1346 X.Unbiased_Rounding => An_Unbiased_Rounding_Attribute,
1347 X.Unchecked_Access => An_Unchecked_Access_Attribute,
1348 X.Val => A_Val_Attribute,
1349 X.Valid => A_Valid_Attribute,
1350 X.Value => A_Value_Attribute,
1351 X.Version => A_Version_Attribute,
1352 X.Wide_Image => A_Wide_Image_Attribute,
1353 X.Wide_Value => A_Wide_Value_Attribute,
1354 X.Wide_Wide_Image => A_Wide_Wide_Image_Attribute,
1355 X.Wide_Wide_Value => A_Wide_Wide_Value_Attribute,
1356 X.Wide_Wide_Width => A_Wide_Wide_Width_Attribute,
1357 X.Wide_Width => A_Wide_Width_Attribute,
1358 X.Width => A_Width_Attribute,
1359 X.Write => A_Write_Attribute);
1360 begin
1361 if Node.Range_Token /= 0 then
1362 Self.Result := A_Range_Attribute;
1363
1364 return;
1365 end if;
1366
1367 Token := Comp.Get_Token (Id.Identifier_Token);
1368
1369 if Token.Symbol in Map'Range then
1370 Self.Result := Map (Token.Symbol);
1371 end if;
1372 end Attribute_Reference;
1373
1374 overriding procedure Auxiliary_Apply
1375 (Self : in out Visiter;
1376 Node : not null Gela.Elements.Auxiliary_Applies.Auxiliary_Apply_Access)
1377 is
1378 pragma Unreferenced (Node);
1379 begin
1380 Self.Result := A_Function_Call;
1381 end Auxiliary_Apply;
1382
1383 overriding procedure Block_Statement
1384 (Self : in out Visiter;
1385 Node : not null Gela.Elements.Block_Statements.Block_Statement_Access)
1386 is
1387 pragma Unreferenced (Node);
1388 begin
1389 Self.Result := A_Block_Statement;
1390 end Block_Statement;
1391
1392 overriding procedure Case_Path
1393 (Self : in out Visiter;
1394 Node : not null Gela.Elements.Case_Paths.Case_Path_Access)
1395 is
1396 pragma Unreferenced (Node);
1397 begin
1398 Self.Result := A_Case_Path;
1399 end Case_Path;
1400
1401 overriding procedure Case_Statement
1402 (Self : in out Visiter;
1403 Node : not null Gela.Elements.Case_Statements.Case_Statement_Access)
1404 is
1405 pragma Unreferenced (Node);
1406 begin
1407 Self.Result := A_Case_Statement;
1408 end Case_Statement;
1409
1410 overriding procedure Component_Declaration
1411 (Self : in out Visiter;
1412 Node : not null Gela.Elements.Component_Declarations.
1413 Component_Declaration_Access)
1414 is
1415 pragma Unreferenced (Node);
1416 begin
1417 Self.Result := A_Component_Declaration;
1418 end Component_Declaration;
1419
1420 overriding procedure Component_Definition
1421 (Self : in out Visiter;
1422 Node : not null Gela.Elements.Component_Definitions.
1423 Component_Definition_Access)
1424 is
1425 pragma Unreferenced (Node);
1426 begin
1427 Self.Result := A_Component_Definition;
1428 end Component_Definition;
1429
1430 overriding procedure Composite_Constraint
1431 (Self : in out Visiter;
1432 Node : not null Gela.Elements.Composite_Constraints.
1433 Composite_Constraint_Access)
1434 is
1435 pragma Unreferenced (Node);
1436 begin
1437 Self.Result := An_Index_Constraint; -- FIXME
1438 end Composite_Constraint;
1439
1440 overriding procedure Constrained_Array_Definition
1441 (Self : in out Visiter;
1442 Node : not null Gela.Elements.Constrained_Array_Definitions.
1443 Constrained_Array_Definition_Access)
1444 is
1445 pragma Unreferenced (Node);
1446 begin
1447 Self.Result := A_Constrained_Array_Definition;
1448 end Constrained_Array_Definition;
1449
1450 overriding procedure Defining_Enumeration_Literal
1451 (Self : in out Visiter;
1452 Node : not null Gela.Elements.Defining_Enumeration_Literals.
1453 Defining_Enumeration_Literal_Access)
1454 is
1455 pragma Unreferenced (Node);
1456 begin
1457 Self.Result := A_Defining_Enumeration_Literal;
1458 end Defining_Enumeration_Literal;
1459
1460 overriding procedure Defining_Expanded_Unit_Name
1461 (Self : in out Visiter;
1462 Node : not null Gela.Elements.Defining_Expanded_Unit_Names.
1463 Defining_Expanded_Unit_Name_Access)
1464 is
1465 pragma Unreferenced (Node);
1466 begin
1467 Self.Result := A_Defining_Expanded_Name;
1468 end Defining_Expanded_Unit_Name;
1469
1470 overriding procedure Defining_Identifier
1471 (Self : in out Visiter;
1472 Node : not null Gela.Elements.Defining_Identifiers.
1473 Defining_Identifier_Access)
1474 is
1475 pragma Unreferenced (Node);
1476 begin
1477 Self.Result := A_Defining_Identifier;
1478 end Defining_Identifier;
1479
1480 overriding procedure Defining_Operator_Symbol
1481 (Self : in out Visiter;
1482 Node : not null Gela.Elements.Defining_Operator_Symbols.
1483 Defining_Operator_Symbol_Access)
1484 is
1485 Operator_Map : constant array
1486 (Gela.Lexical_Types.Symbol range 1 .. 19) of Element_Flat_Kind
1487 := (A_Defining_Less_Than_Operator,
1488 A_Defining_Equal_Operator,
1489 A_Defining_Greater_Than_Operator,
1490 A_Defining_Minus_Operator,
1491 A_Defining_Divide_Operator,
1492 A_Defining_Multiply_Operator,
1493 A_Defining_Concatenate_Operator,
1494 A_Defining_Plus_Operator,
1495 A_Defining_Less_Than_Or_Equal_Operator,
1496 A_Defining_Greater_Than_Or_Equal_Operator,
1497 A_Defining_Not_Equal_Operator,
1498 A_Defining_Exponentiate_Operator,
1499 A_Defining_Or_Operator,
1500 A_Defining_And_Operator,
1501 A_Defining_Xor_Operator,
1502 A_Defining_Mod_Operator,
1503 A_Defining_Rem_Operator,
1504 A_Defining_Abs_Operator,
1505 A_Defining_Not_Operator);
1506
1507 Comp : constant Gela.Compilations.Compilation_Access :=
1508 Node.Enclosing_Compilation;
1509 Token : constant Gela.Lexical_Types.Token :=
1510 Comp.Get_Token (Node.Operator_Symbol_Token);
1511 begin
1512 if Token.Symbol in Operator_Map'Range then
1513 Self.Result := Operator_Map (Token.Symbol);
1514 end if;
1515 end Defining_Operator_Symbol;
1516
1517 overriding procedure Delay_Statement
1518 (Self : in out Visiter;
1519 Node : not null Gela.Elements.Delay_Statements.Delay_Statement_Access)
1520 is
1521 use type Gela.Lexical_Types.Token_Index;
1522 begin
1523 if Node.Until_Token = 0 then
1524 Self.Result := A_Delay_Relative_Statement;
1525 else
1526 Self.Result := A_Delay_Until_Statement;
1527 end if;
1528 end Delay_Statement;
1529
1530 overriding procedure Derived_Type_Definition
1531 (Self : in out Visiter;
1532 Node : not null Gela.Elements.Derived_Type_Definitions.
1533 Derived_Type_Definition_Access)
1534 is
1535 pragma Unreferenced (Node);
1536 begin
1537 Self.Result := A_Derived_Type_Definition;
1538 end Derived_Type_Definition;
1539
1540 overriding procedure Discrete_Simple_Expression_Range
1541 (Self : in out Visiter;
1542 Node : not null Gela.Elements.Discrete_Simple_Expression_Ranges.
1543 Discrete_Simple_Expression_Range_Access)
1544 is
1545 pragma Unreferenced (Node);
1546 begin
1547 Self.Result := A_Discrete_Simple_Expression_Range;
1548 end Discrete_Simple_Expression_Range;
1549
1550 overriding procedure Discrete_Subtype_Indication
1551 (Self : in out Visiter;
1552 Node : not null Gela.Elements.Discrete_Subtype_Indications.
1553 Discrete_Subtype_Indication_Access)
1554 is
1555 pragma Unreferenced (Node);
1556 begin
1557 Self.Result := A_Discrete_Subtype_Indication;
1558 end Discrete_Subtype_Indication;
1559
1560 overriding procedure Discriminant_Specification
1561 (Self : in out Visiter;
1562 Node : not null Gela.Elements.Discriminant_Specifications.
1563 Discriminant_Specification_Access)
1564 is
1565 pragma Unreferenced (Node);
1566 begin
1567 Self.Result := A_Discriminant_Specification;
1568 end Discriminant_Specification;
1569
1570 overriding procedure Else_Path
1571 (Self : in out Visiter;
1572 Node : not null Gela.Elements.Else_Paths.Else_Path_Access)
1573 is
1574 pragma Unreferenced (Node);
1575 begin
1576 Self.Result := An_Else_Path;
1577 end Else_Path;
1578
1579 overriding procedure Entry_Body
1580 (Self : in out Visiter;
1581 Node : not null Gela.Elements.Entry_Bodies.Entry_Body_Access)
1582 is
1583 pragma Unreferenced (Node);
1584 begin
1585 Self.Result := An_Entry_Body_Declaration;
1586 end Entry_Body;
1587
1588 overriding procedure Entry_Declaration
1589 (Self : in out Visiter;
1590 Node : not null Gela.Elements.Entry_Declarations.
1591 Entry_Declaration_Access)
1592 is
1593 pragma Unreferenced (Node);
1594 begin
1595 Self.Result := An_Entry_Declaration;
1596 end Entry_Declaration;
1597
1598 overriding procedure Enumeration_Literal_Specification
1599 (Self : in out Visiter;
1600 Node : not null Gela.Elements.Enumeration_Literal_Specifications.
1601 Enumeration_Literal_Specification_Access)
1602 is
1603 pragma Unreferenced (Node);
1604 begin
1605 Self.Result := An_Enumeration_Literal_Specification;
1606 end Enumeration_Literal_Specification;
1607
1608 overriding procedure Enumeration_Type_Definition
1609 (Self : in out Visiter;
1610 Node : not null Gela.Elements.Enumeration_Type_Definitions.
1611 Enumeration_Type_Definition_Access)
1612 is
1613 pragma Unreferenced (Node);
1614 begin
1615 Self.Result := An_Enumeration_Type_Definition;
1616 end Enumeration_Type_Definition;
1617
1618 overriding procedure Exception_Declaration
1619 (Self : in out Visiter;
1620 Node : not null Gela.Elements.Exception_Declarations.
1621 Exception_Declaration_Access)
1622 is
1623 pragma Unreferenced (Node);
1624 begin
1625 Self.Result := An_Exception_Declaration;
1626 end Exception_Declaration;
1627
1628 overriding procedure Exception_Handler
1629 (Self : in out Visiter;
1630 Node : not null Gela.Elements.Exception_Handlers.
1631 Exception_Handler_Access)
1632 is
1633 pragma Unreferenced (Node);
1634 begin
1635 Self.Result := An_Exception_Handler;
1636 end Exception_Handler;
1637
1638 overriding procedure Exception_Renaming_Declaration
1639 (Self : in out Visiter;
1640 Node : not null Gela.Elements.Exception_Renaming_Declarations.
1641 Exception_Renaming_Declaration_Access)
1642 is
1643 pragma Unreferenced (Node);
1644 begin
1645 Self.Result := An_Exception_Renaming_Declaration;
1646 end Exception_Renaming_Declaration;
1647
1648 overriding procedure Exit_Statement
1649 (Self : in out Visiter;
1650 Node : not null Gela.Elements.Exit_Statements.Exit_Statement_Access)
1651 is
1652 pragma Unreferenced (Node);
1653 begin
1654 Self.Result := An_Exit_Statement;
1655 end Exit_Statement;
1656
1657 overriding procedure Explicit_Dereference
1658 (Self : in out Visiter;
1659 Node : not null Gela.Elements.Explicit_Dereferences.
1660 Explicit_Dereference_Access)
1661 is
1662 pragma Unreferenced (Node);
1663 begin
1664 Self.Result := An_Explicit_Dereference;
1665 end Explicit_Dereference;
1666
1667 ---------------
1668 -- Flat_Kind --
1669 ---------------
1670
1671 function Flat_Kind (Element : Asis.Element) return Element_Flat_Kind is
1672 V : aliased Visiter := (Result => Not_An_Element);
1673 begin
1674 Element.Data.Visit (V);
1675 pragma Assert
1676 (Element.Data.Assigned and then V.Result /= Not_An_Element);
1677 return V.Result;
1678 end Flat_Kind;
1679
1680 overriding procedure Formal_Derived_Type_Definition
1681 (Self : in out Visiter;
1682 Node : not null Gela.Elements.Formal_Derived_Type_Definitions.
1683 Formal_Derived_Type_Definition_Access)
1684 is
1685 pragma Unreferenced (Node);
1686 begin
1687 Self.Result := A_Formal_Derived_Type_Definition;
1688 end Formal_Derived_Type_Definition;
1689
1690 overriding procedure Formal_Type_Declaration
1691 (Self : in out Visiter;
1692 Node : not null Gela.Elements.Formal_Type_Declarations.
1693 Formal_Type_Declaration_Access)
1694 is
1695 pragma Unreferenced (Node);
1696 begin
1697 Self.Result := A_Formal_Type_Declaration;
1698 end Formal_Type_Declaration;
1699
1700 overriding procedure Full_Type_Declaration
1701 (Self : in out Visiter;
1702 Node : not null Gela.Elements.Full_Type_Declarations.
1703 Full_Type_Declaration_Access)
1704 is
1705 pragma Unreferenced (Node);
1706 begin
1707 Self.Result := An_Ordinary_Type_Declaration;
1708 end Full_Type_Declaration;
1709
1710 overriding procedure Function_Body
1711 (Self : in out Visiter;
1712 Node : not null Gela.Elements.Function_Bodies.Function_Body_Access)
1713 is
1714 pragma Unreferenced (Node);
1715 begin
1716 Self.Result := A_Function_Body_Declaration;
1717 end Function_Body;
1718
1719 overriding procedure Function_Declaration
1720 (Self : in out Visiter;
1721 Node : not null Gela.Elements.Function_Declarations.
1722 Function_Declaration_Access)
1723 is
1724 pragma Unreferenced (Node);
1725 begin
1726 Self.Result := A_Function_Declaration;
1727 end Function_Declaration;
1728
1729 overriding procedure Generic_Association
1730 (Self : in out Visiter;
1731 Node : not null Gela.Elements.Generic_Associations.
1732 Generic_Association_Access)
1733 is
1734 pragma Unreferenced (Node);
1735 begin
1736 Self.Result := A_Generic_Association;
1737 end Generic_Association;
1738
1739 overriding procedure Generic_Package_Declaration
1740 (Self : in out Visiter;
1741 Node : not null Gela.Elements.Generic_Package_Declarations.
1742 Generic_Package_Declaration_Access)
1743 is
1744 pragma Unreferenced (Node);
1745 begin
1746 Self.Result := A_Generic_Package_Declaration;
1747 end Generic_Package_Declaration;
1748
1749 overriding procedure Identifier
1750 (Self : in out Visiter;
1751 Node : not null Gela.Elements.Identifiers.Identifier_Access)
1752 is
1753 pragma Unreferenced (Node);
1754 begin
1755 Self.Result := An_Identifier;
1756 end Identifier;
1757
1758 overriding procedure If_Path
1759 (Self : in out Visiter;
1760 Node : not null Gela.Elements.If_Paths.If_Path_Access)
1761 is
1762 pragma Unreferenced (Node);
1763 begin
1764 Self.Result := An_If_Path;
1765 end If_Path;
1766
1767 overriding procedure If_Statement
1768 (Self : in out Visiter;
1769 Node : not null Gela.Elements.If_Statements.If_Statement_Access)
1770 is
1771 pragma Unreferenced (Node);
1772 begin
1773 Self.Result := An_If_Statement;
1774 end If_Statement;
1775
1776 overriding procedure Incomplete_Type_Declaration
1777 (Self : in out Visiter;
1778 Node : not null Gela.Elements.Incomplete_Type_Declarations.
1779 Incomplete_Type_Declaration_Access)
1780 is
1781 pragma Unreferenced (Node);
1782 begin
1783 Self.Result := An_Incomplete_Type_Declaration;
1784 end Incomplete_Type_Declaration;
1785
1786 overriding procedure Incomplete_Type_Definition
1787 (Self : in out Visiter;
1788 Node : not null Gela.Elements.Incomplete_Type_Definitions.
1789 Incomplete_Type_Definition_Access)
1790 is
1791 pragma Unreferenced (Node);
1792 begin
1793 Self.Result := An_Incomplete_Type_Definition;
1794 end Incomplete_Type_Definition;
1795
1796 overriding procedure Known_Discriminant_Part
1797 (Self : in out Visiter;
1798 Node : not null Gela.Elements.Known_Discriminant_Parts.
1799 Known_Discriminant_Part_Access)
1800 is
1801 pragma Unreferenced (Node);
1802 begin
1803 Self.Result := A_Known_Discriminant_Part;
1804 end Known_Discriminant_Part;
1805
1806 overriding procedure Loop_Statement
1807 (Self : in out Visiter;
1808 Node : not null Gela.Elements.Loop_Statements.Loop_Statement_Access)
1809 is
1810 pragma Unreferenced (Node);
1811 begin
1812 Self.Result := A_Loop_Statement;
1813 end Loop_Statement;
1814
1815 overriding procedure Membership_Test
1816 (Self : in out Visiter;
1817 Node : not null Gela.Elements.Membership_Tests.Membership_Test_Access)
1818 is
1819 use type Gela.Lexical_Types.Token_Count;
1820 begin
1821 if Node.Not_Token = 0 then
1822 Self.Result := An_In_Range_Membership_Test;
1823 else
1824 Self.Result := A_Not_In_Range_Membership_Test;
1825 end if;
1826 end Membership_Test;
1827
1828 overriding procedure Null_Component
1829 (Self : in out Visiter;
1830 Node : not null Gela.Elements.Null_Components.Null_Component_Access)
1831 is
1832 pragma Unreferenced (Node);
1833 begin
1834 Self.Result := A_Null_Component;
1835 end Null_Component;
1836
1837 overriding procedure Null_Statement
1838 (Self : in out Visiter;
1839 Node : not null Gela.Elements.Null_Statements.Null_Statement_Access)
1840 is
1841 pragma Unreferenced (Node);
1842 begin
1843 Self.Result := A_Null_Statement;
1844 end Null_Statement;
1845
1846 overriding procedure Number_Declaration
1847 (Self : in out Visiter;
1848 Node : not null Gela.Elements.Number_Declarations.
1849 Number_Declaration_Access)
1850 is
1851 pragma Unreferenced (Node);
1852 begin
1853 Self.Result := An_Integer_Number_Declaration;
1854 end Number_Declaration;
1855
1856 overriding procedure Numeric_Literal
1857 (Self : in out Visiter;
1858 Node : not null Gela.Elements.Numeric_Literals.Numeric_Literal_Access)
1859 is
1860 pragma Unreferenced (Node);
1861 begin
1862 Self.Result := An_Integer_Literal;
1863 end Numeric_Literal;
1864
1865 overriding procedure Object_Declaration
1866 (Self : in out Visiter;
1867 Node : not null Gela.Elements.Object_Declarations.
1868 Object_Declaration_Access)
1869 is
1870 use type Gela.Lexical_Types.Token_Count;
1871 begin
1872 if Node.Constant_Token = 0 then
1873 Self.Result := A_Variable_Declaration;
1874 else
1875 Self.Result := A_Constant_Declaration;
1876 end if;
1877 end Object_Declaration;
1878
1879 overriding procedure Object_Renaming_Declaration
1880 (Self : in out Visiter;
1881 Node : not null Gela.Elements.Object_Renaming_Declarations.
1882 Object_Renaming_Declaration_Access)
1883 is
1884 pragma Unreferenced (Node);
1885 begin
1886 Self.Result := An_Object_Renaming_Declaration;
1887 end Object_Renaming_Declaration;
1888
1889 overriding procedure Operator_Symbol
1890 (Self : in out Visiter;
1891 Node : not null Gela.Elements.Operator_Symbols.Operator_Symbol_Access)
1892 is
1893 Operator_Map : constant array
1894 (Gela.Lexical_Types.Symbol range 1 .. 19) of Element_Flat_Kind
1895 :=
1896 (A_Less_Than_Operator, An_Equal_Operator, A_Greater_Than_Operator,
1897 A_Minus_Operator, A_Divide_Operator, A_Multiply_Operator,
1898 A_Concatenate_Operator, A_Plus_Operator,
1899 A_Less_Than_Or_Equal_Operator, A_Greater_Than_Or_Equal_Operator,
1900 A_Not_Equal_Operator, An_Exponentiate_Operator, An_Or_Operator,
1901 An_And_Operator, An_Xor_Operator, A_Mod_Operator, A_Rem_Operator,
1902 An_Abs_Operator, A_Not_Operator);
1903
1904 Comp : constant Gela.Compilations.Compilation_Access :=
1905 Node.Enclosing_Compilation;
1906 Token : constant Gela.Lexical_Types.Token :=
1907 Comp.Get_Token (Node.Operator_Symbol_Token);
1908 begin
1909 if Token.Symbol in Operator_Map'Range then
1910 Self.Result := Operator_Map (Token.Symbol);
1911 end if;
1912 end Operator_Symbol;
1913
1914 overriding procedure Others_Choice
1915 (Self : in out Visiter;
1916 Node : not null Gela.Elements.Others_Choices.Others_Choice_Access)
1917 is
1918 pragma Unreferenced (Node);
1919 begin
1920 Self.Result := An_Others_Choice;
1921 end Others_Choice;
1922
1923 overriding procedure Package_Body
1924 (Self : in out Visiter;
1925 Node : not null Gela.Elements.Package_Bodies.Package_Body_Access)
1926 is
1927 pragma Unreferenced (Node);
1928 begin
1929 Self.Result := A_Package_Body_Declaration;
1930 end Package_Body;
1931
1932 overriding procedure Package_Body_Stub
1933 (Self : in out Visiter;
1934 Node : not null Gela.Elements.Package_Body_Stubs.
1935 Package_Body_Stub_Access)
1936 is
1937 pragma Unreferenced (Node);
1938 begin
1939 Self.Result := A_Package_Body_Stub;
1940 end Package_Body_Stub;
1941
1942 overriding procedure Package_Declaration
1943 (Self : in out Visiter;
1944 Node : not null Gela.Elements.Package_Declarations.
1945 Package_Declaration_Access)
1946 is
1947 pragma Unreferenced (Node);
1948 begin
1949 Self.Result := A_Package_Declaration;
1950 end Package_Declaration;
1951
1952 overriding procedure Package_Instantiation
1953 (Self : in out Visiter;
1954 Node : not null Gela.Elements.Package_Instantiations.
1955 Package_Instantiation_Access)
1956 is
1957 pragma Unreferenced (Node);
1958 begin
1959 Self.Result := A_Package_Instantiation;
1960 end Package_Instantiation;
1961
1962 overriding procedure Package_Renaming_Declaration
1963 (Self : in out Visiter;
1964 Node : not null Gela.Elements.Package_Renaming_Declarations.
1965 Package_Renaming_Declaration_Access)
1966 is
1967 pragma Unreferenced (Node);
1968 begin
1969 Self.Result := A_Package_Renaming_Declaration;
1970 end Package_Renaming_Declaration;
1971
1972 overriding procedure Parameter_Specification
1973 (Self : in out Visiter;
1974 Node : not null Gela.Elements.Parameter_Specifications.
1975 Parameter_Specification_Access)
1976 is
1977 pragma Unreferenced (Node);
1978 begin
1979 Self.Result := A_Parameter_Specification;
1980 end Parameter_Specification;
1981
1982 overriding procedure Pragma_Node
1983 (Self : in out Visiter;
1984 Node : not null Gela.Elements.Pragma_Nodes.Pragma_Node_Access)
1985 is
1986 package X renames Gela.Lexical_Types.Predefined_Symbols;
1987
1988 Comp : constant Gela.Compilations.Compilation_Access :=
1989 Node.Enclosing_Compilation;
1990 Token : constant Gela.Lexical_Types.Token :=
1991 Comp.Get_Token (Node.Pragma_Token);
1992 Map : constant array
1993 (Gela.Lexical_Types.Symbol range
1994 X.All_Calls_Remote .. X.Storage_Size) of Element_Flat_Kind :=
1995 (X.All_Calls_Remote => An_All_Calls_Remote_Pragma,
1996 X.Assert => An_Assert_Pragma,
1997 X.Assertion_Policy => An_Assertion_Policy_Pragma,
1998 X.Asynchronous => An_Asynchronous_Pragma,
1999 X.Atomic => An_Atomic_Pragma,
2000 X.Atomic_Components => An_Atomic_Components_Pragma,
2001 X.Attach_Handler => An_Attach_Handler_Pragma,
2002 X.Controlled => A_Controlled_Pragma,
2003 X.Convention => A_Convention_Pragma,
2004 X.Detect_Blocking => A_Detect_Blocking_Pragma,
2005 X.Discard_Names => A_Discard_Names_Pragma,
2006 X.Elaborate => An_Elaborate_Pragma,
2007 X.Elaborate_All => An_Elaborate_All_Pragma,
2008 X.Elaborate_Body => An_Elaborate_Body_Pragma,
2009 X.Export => An_Export_Pragma,
2010 X.Import => An_Import_Pragma,
2011 X.Inline => An_Inline_Pragma,
2012 X.Inspection_Point => An_Inspection_Point_Pragma,
2013 X.Interrupt_Handler => An_Interrupt_Handler_Pragma,
2014 X.Interrupt_Priority => An_Interrupt_Priority_Pragma,
2015 X.Linker_Options => A_Linker_Options_Pragma,
2016 X.List => A_List_Pragma,
2017 X.Locking_Policy => A_Locking_Policy_Pragma,
2018 X.No_Return => A_No_Return_Pragma,
2019 X.Normalize_Scalars => A_Normalize_Scalars_Pragma,
2020 X.Optimize => An_Optimize_Pragma,
2021 X.Pack => A_Pack_Pragma,
2022 X.Page => A_Page_Pragma,
2023 X.Partition_Elaboration_Policy =>
2024 A_Partition_Elaboration_Policy_Pragma,
2025 X.Preelaborable_Initialization =>
2026 A_Preelaborable_Initialization_Pragma,
2027 X.Preelaborate => A_Preelaborate_Pragma,
2028 X.Priority => A_Priority_Pragma,
2029 X.Priority_Specific_Dispatching =>
2030 A_Priority_Specific_Dispatching_Pragma,
2031 X.Profile => A_Profile_Pragma,
2032 X.Pure => A_Pure_Pragma,
2033 X.Queuing_Policy => A_Queuing_Policy_Pragma,
2034 X.Relative_Deadline => A_Relative_Deadline_Pragma,
2035 X.Remote_Call_Interface => A_Remote_Call_Interface_Pragma,
2036 X.Remote_Types => A_Remote_Types_Pragma,
2037 X.Restrictions => A_Restrictions_Pragma,
2038 X.Reviewable => A_Reviewable_Pragma,
2039 X.Shared_Passive => A_Shared_Passive_Pragma,
2040 X.Storage_Size => A_Storage_Size_Pragma,
2041 X.Suppress => A_Suppress_Pragma,
2042 X.Task_Dispatching_Policy => A_Task_Dispatching_Policy_Pragma,
2043 X.Unchecked_Union => An_Unchecked_Union_Pragma,
2044 X.Unsuppress => An_Unsuppress_Pragma,
2045 X.Volatile => A_Volatile_Pragma,
2046 X.Volatile_Components => A_Volatile_Components_Pragma,
2047 others => An_Unknown_Pragma);
2048
2049 begin
2050 if Token.Symbol in Map'Range then
2051 Self.Result := Map (Token.Symbol);
2052 else
2053 Self.Result := An_Unknown_Pragma;
2054 end if;
2055 end Pragma_Node;
2056
2057 overriding procedure Private_Type_Declaration
2058 (Self : in out Visiter;
2059 Node : not null Gela.Elements.Private_Type_Declarations.
2060 Private_Type_Declaration_Access)
2061 is
2062 pragma Unreferenced (Node);
2063 begin
2064 Self.Result := A_Private_Type_Declaration;
2065 end Private_Type_Declaration;
2066
2067 overriding procedure Private_Type_Definition
2068 (Self : in out Visiter;
2069 Node : not null Gela.Elements.Private_Type_Definitions.
2070 Private_Type_Definition_Access)
2071 is
2072 pragma Unreferenced (Node);
2073 begin
2074 Self.Result := A_Private_Type_Definition;
2075 end Private_Type_Definition;
2076
2077 --------------------
2078 -- Procedure_Body --
2079 --------------------
2080
2081 overriding procedure Procedure_Body
2082 (Self : in out Visiter;
2083 Node : not null Gela.Elements.Procedure_Bodies.Procedure_Body_Access)
2084 is
2085 pragma Unreferenced (Node);
2086 begin
2087 Self.Result := A_Procedure_Body_Declaration;
2088 end Procedure_Body;
2089
2090 ------------------------------
2091 -- Procedure_Call_Statement --
2092 ------------------------------
2093
2094 overriding procedure Procedure_Call_Statement
2095 (Self : in out Visiter;
2096 Node : not null Gela.Elements.Procedure_Call_Statements.
2097 Procedure_Call_Statement_Access)
2098 is
2099 pragma Unreferenced (Node);
2100 begin
2101 Self.Result := A_Procedure_Call_Statement;
2102 end Procedure_Call_Statement;
2103
2104 overriding procedure Procedure_Declaration
2105 (Self : in out Visiter;
2106 Node : not null Gela.Elements.Procedure_Declarations.
2107 Procedure_Declaration_Access)
2108 is
2109 pragma Unreferenced (Node);
2110 begin
2111 Self.Result := A_Procedure_Declaration;
2112 end Procedure_Declaration;
2113
2114 overriding procedure Protected_Body
2115 (Self : in out Visiter;
2116 Node : not null Gela.Elements.Protected_Bodies.Protected_Body_Access)
2117 is
2118 pragma Unreferenced (Node);
2119 begin
2120 Self.Result := A_Protected_Body_Declaration;
2121 end Protected_Body;
2122
2123 overriding procedure Protected_Definition
2124 (Self : in out Visiter;
2125 Node : not null Gela.Elements.Protected_Definitions.
2126 Protected_Definition_Access)
2127 is
2128 pragma Unreferenced (Node);
2129 begin
2130 Self.Result := A_Protected_Definition;
2131 end Protected_Definition;
2132
2133 overriding procedure Qualified_Expression
2134 (Self : in out Visiter;
2135 Node : not null Gela.Elements.Qualified_Expressions.
2136 Qualified_Expression_Access)
2137 is
2138 pragma Unreferenced (Node);
2139 begin
2140 Self.Result := A_Qualified_Expression;
2141 end Qualified_Expression;
2142
2143 overriding procedure Range_Attribute_Reference
2144 (Self : in out Visiter;
2145 Node : not null Gela.Elements.Range_Attribute_References.
2146 Range_Attribute_Reference_Access)
2147 is
2148 pragma Unreferenced (Node);
2149 begin
2150 Self.Result := A_Range_Attribute_Reference;
2151 end Range_Attribute_Reference;
2152
2153 overriding procedure Record_Aggregate
2154 (Self : in out Visiter;
2155 Node : not null Gela.Elements.Record_Aggregates.Record_Aggregate_Access)
2156 is
2157 pragma Unreferenced (Node);
2158 begin
2159 Self.Result := A_Record_Aggregate;
2160 end Record_Aggregate;
2161
2162 overriding procedure Record_Definition
2163 (Self : in out Visiter;
2164 Node : not null Gela.Elements.Record_Definitions.
2165 Record_Definition_Access)
2166 is
2167 pragma Unreferenced (Node);
2168 begin
2169 Self.Result := A_Record_Definition;
2170 end Record_Definition;
2171
2172 overriding procedure Record_Type_Definition
2173 (Self : in out Visiter;
2174 Node : not null Gela.Elements.Record_Type_Definitions.
2175 Record_Type_Definition_Access)
2176 is
2177 pragma Unreferenced (Node);
2178 begin
2179 Self.Result := A_Record_Type_Definition;
2180 end Record_Type_Definition;
2181
2182 overriding procedure Requeue_Statement
2183 (Self : in out Visiter;
2184 Node : not null Gela.Elements.Requeue_Statements.
2185 Requeue_Statement_Access)
2186 is
2187 use type Gela.Lexical_Types.Token_Count;
2188 begin
2189 if Node.With_Token = 0 then
2190 Self.Result := A_Requeue_Statement;
2191 else
2192 Self.Result := A_Requeue_Statement_With_Abort;
2193 end if;
2194 end Requeue_Statement;
2195
2196 overriding procedure Select_Or_Path
2197 (Self : in out Visiter;
2198 Node : not null Gela.Elements.Select_Or_Paths.Select_Or_Path_Access)
2199 is
2200 pragma Unreferenced (Node);
2201 begin
2202 Self.Result := An_Or_Path;
2203 end Select_Or_Path;
2204
2205 ------------------------
2206 -- Selected_Component --
2207 ------------------------
2208
2209 overriding procedure Selected_Component
2210 (Self : in out Visiter;
2211 Node : not null Gela.Elements.Selected_Components.
2212 Selected_Component_Access)
2213 is
2214 pragma Unreferenced (Node);
2215 begin
2216 Self.Result := A_Selected_Component;
2217 end Selected_Component;
2218
2219 -------------------------
2220 -- Selected_Identifier --
2221 -------------------------
2222
2223 overriding procedure Selected_Identifier
2224 (Self : in out Visiter;
2225 Node : not null Gela.Elements.Selected_Identifiers.
2226 Selected_Identifier_Access)
2227 is
2228 pragma Unreferenced (Node);
2229 begin
2230 Self.Result := A_Selected_Component;
2231 end Selected_Identifier;
2232
2233 overriding procedure Selective_Accept
2234 (Self : in out Visiter;
2235 Node : not null Gela.Elements.Selective_Accepts.Selective_Accept_Access)
2236 is
2237 pragma Unreferenced (Node);
2238 begin
2239 Self.Result := A_Selective_Accept_Statement;
2240 end Selective_Accept;
2241
2242 overriding procedure Signed_Integer_Type_Definition
2243 (Self : in out Visiter;
2244 Node : not null Gela.Elements.Signed_Integer_Type_Definitions.
2245 Signed_Integer_Type_Definition_Access)
2246 is
2247 pragma Unreferenced (Node);
2248 begin
2249 Self.Result := A_Signed_Integer_Type_Definition;
2250 end Signed_Integer_Type_Definition;
2251
2252 overriding procedure Simple_Expression_Range
2253 (Self : in out Visiter;
2254 Node : not null Gela.Elements.Simple_Expression_Ranges.
2255 Simple_Expression_Range_Access)
2256 is
2257 pragma Unreferenced (Node);
2258 begin
2259 Self.Result := A_Discrete_Simple_Expression_Range;
2260 end Simple_Expression_Range;
2261
2262 overriding procedure Simple_Expression_Range_Dr
2263 (Self : in out Visiter;
2264 Node : not null Gela.Elements.Simple_Expression_Range_Drs.
2265 Simple_Expression_Range_Dr_Access)
2266 is
2267 pragma Unreferenced (Node);
2268 begin
2269 Self.Result := A_Discrete_Simple_Expression_Range_DR;
2270 end Simple_Expression_Range_Dr;
2271
2272 overriding procedure Simple_Return_Statement
2273 (Self : in out Visiter;
2274 Node : not null Gela.Elements.Simple_Return_Statements.
2275 Simple_Return_Statement_Access)
2276 is
2277 pragma Unreferenced (Node);
2278 begin
2279 Self.Result := A_Simple_Return_Statement;
2280 end Simple_Return_Statement;
2281
2282 overriding procedure Single_Protected_Declaration
2283 (Self : in out Visiter;
2284 Node : not null Gela.Elements.Single_Protected_Declarations.
2285 Single_Protected_Declaration_Access)
2286 is
2287 pragma Unreferenced (Node);
2288 begin
2289 Self.Result := A_Single_Protected_Declaration;
2290 end Single_Protected_Declaration;
2291
2292 overriding procedure Single_Task_Declaration
2293 (Self : in out Visiter;
2294 Node : not null Gela.Elements.Single_Task_Declarations.
2295 Single_Task_Declaration_Access)
2296 is
2297 pragma Unreferenced (Node);
2298 begin
2299 Self.Result := A_Single_Task_Declaration;
2300 end Single_Task_Declaration;
2301
2302 --------------------
2303 -- String_Literal --
2304 --------------------
2305
2306 overriding procedure String_Literal
2307 (Self : in out Visiter;
2308 Node : not null Gela.Elements.String_Literals.String_Literal_Access)
2309 is
2310 pragma Unreferenced (Node);
2311 begin
2312 Self.Result := A_String_Literal;
2313 end String_Literal;
2314
2315 overriding procedure Subtype_Declaration
2316 (Self : in out Visiter;
2317 Node : not null Gela.Elements.Subtype_Declarations.
2318 Subtype_Declaration_Access)
2319 is
2320 pragma Unreferenced (Node);
2321 begin
2322 Self.Result := A_Subtype_Declaration;
2323 end Subtype_Declaration;
2324
2325 overriding procedure Subtype_Indication
2326 (Self : in out Visiter;
2327 Node : not null Gela.Elements.Subtype_Indications.
2328 Subtype_Indication_Access)
2329 is
2330 pragma Unreferenced (Node);
2331 begin
2332 Self.Result := A_Subtype_Indication;
2333 end Subtype_Indication;
2334
2335 overriding procedure Task_Body
2336 (Self : in out Visiter;
2337 Node : not null Gela.Elements.Task_Bodies.Task_Body_Access)
2338 is
2339 pragma Unreferenced (Node);
2340 begin
2341 Self.Result := A_Task_Body_Declaration;
2342 end Task_Body;
2343
2344 overriding procedure Task_Body_Stub
2345 (Self : in out Visiter;
2346 Node : not null Gela.Elements.Task_Body_Stubs.Task_Body_Stub_Access)
2347 is
2348 pragma Unreferenced (Node);
2349 begin
2350 Self.Result := A_Task_Body_Stub;
2351 end Task_Body_Stub;
2352
2353 overriding procedure Task_Definition
2354 (Self : in out Visiter;
2355 Node : not null Gela.Elements.Task_Definitions.Task_Definition_Access)
2356 is
2357 pragma Unreferenced (Node);
2358 begin
2359 Self.Result := A_Task_Definition;
2360 end Task_Definition;
2361
2362 overriding procedure Terminate_Alternative_Statement
2363 (Self : in out Visiter;
2364 Node : not null Gela.Elements.Terminate_Alternative_Statements.
2365 Terminate_Alternative_Statement_Access)
2366 is
2367 pragma Unreferenced (Node);
2368 begin
2369 Self.Result := A_Terminate_Alternative_Statement;
2370 end Terminate_Alternative_Statement;
2371
2372 overriding procedure Unconstrained_Array_Definition
2373 (Self : in out Visiter;
2374 Node : not null Gela.Elements.Unconstrained_Array_Definitions.
2375 Unconstrained_Array_Definition_Access)
2376 is
2377 pragma Unreferenced (Node);
2378 begin
2379 Self.Result := An_Unconstrained_Array_Definition;
2380 end Unconstrained_Array_Definition;
2381
2382 ------------------------
2383 -- Use_Package_Clause --
2384 ------------------------
2385
2386 overriding procedure Use_Package_Clause
2387 (Self : in out Visiter;
2388 Node : not null Gela.Elements.Use_Package_Clauses.
2389 Use_Package_Clause_Access)
2390 is
2391 pragma Unreferenced (Node);
2392 begin
2393 Self.Result := A_Use_Package_Clause;
2394 end Use_Package_Clause;
2395
2396 overriding procedure Use_Type_Clause
2397 (Self : in out Visiter;
2398 Node : not null Gela.Elements.Use_Type_Clauses.Use_Type_Clause_Access)
2399 is
2400 pragma Unreferenced (Node);
2401 begin
2402 Self.Result := A_Use_Type_Clause;
2403 end Use_Type_Clause;
2404
2405 overriding procedure Variant
2406 (Self : in out Visiter;
2407 Node : not null Gela.Elements.Variants.Variant_Access)
2408 is
2409 pragma Unreferenced (Node);
2410 begin
2411 Self.Result := A_Variant;
2412 end Variant;
2413
2414 overriding procedure Variant_Part
2415 (Self : in out Visiter;
2416 Node : not null Gela.Elements.Variant_Parts.Variant_Part_Access)
2417 is
2418 pragma Unreferenced (Node);
2419 begin
2420 Self.Result := A_Variant_Part;
2421 end Variant_Part;
2422
2423 -----------------
2424 -- With_Clause --
2425 -----------------
2426
2427 overriding procedure With_Clause
2428 (Self : in out Visiter;
2429 Node : not null Gela.Elements.With_Clauses.With_Clause_Access)
2430 is
2431 pragma Unreferenced (Node);
2432 begin
2433 Self.Result := A_With_Clause;
2434 end With_Clause;
2435
2436end Asis.Extensions.Flat_Kinds;
Note: See TracBrowser for help on using the repository browser.