]>
Commit | Line | Data |
---|---|---|
70482933 RK |
1 | ------------------------------------------------------------------------------ |
2 | -- -- | |
3 | -- GNAT COMPILER COMPONENTS -- | |
4 | -- -- | |
5 | -- E I N F O -- | |
6 | -- -- | |
7 | -- S p e c -- | |
8 | -- -- | |
fbf5a39b | 9 | -- Copyright (C) 1992-2003 Free Software Foundation, Inc. -- |
70482933 RK |
10 | -- -- |
11 | -- GNAT is free software; you can redistribute it and/or modify it under -- | |
12 | -- terms of the GNU General Public License as published by the Free Soft- -- | |
13 | -- ware Foundation; either version 2, or (at your option) any later ver- -- | |
14 | -- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- | |
15 | -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- | |
16 | -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- | |
17 | -- for more details. You should have received a copy of the GNU General -- | |
18 | -- Public License distributed with GNAT; see file COPYING. If not, write -- | |
19 | -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, -- | |
20 | -- MA 02111-1307, USA. -- | |
21 | -- -- | |
22 | -- As a special exception, if other files instantiate generics from this -- | |
23 | -- unit, or you link this unit with other files to produce an executable, -- | |
24 | -- this unit does not by itself cause the resulting executable to be -- | |
25 | -- covered by the GNU General Public License. This exception does not -- | |
26 | -- however invalidate any other reasons why the executable file might be -- | |
27 | -- covered by the GNU Public License. -- | |
28 | -- -- | |
29 | -- GNAT was originally developed by the GNAT team at New York University. -- | |
71ff80dc | 30 | -- Extensive contributions were provided by Ada Core Technologies Inc. -- |
70482933 RK |
31 | -- -- |
32 | ------------------------------------------------------------------------------ | |
33 | ||
07fc65c4 | 34 | with Snames; use Snames; |
70482933 RK |
35 | with Types; use Types; |
36 | with Uintp; use Uintp; | |
37 | with Urealp; use Urealp; | |
38 | ||
39 | package Einfo is | |
40 | ||
41 | -- This package defines the annotations to the abstract syntax tree that | |
42 | -- are needed to support semantic processing of an Ada compilation. | |
43 | ||
44 | -- These annotations are for the most part attributes of declared entities, | |
45 | -- and they correspond to conventional symbol table information. Other | |
46 | -- attributes include sets of meanings for overloaded names, possible | |
47 | -- types for overloaded expressions, flags to indicate deferred constants, | |
48 | -- incomplete types, etc. These attributes are stored in available fields | |
49 | -- in tree nodes (i.e. fields not used by the parser, as defined by the | |
50 | -- Sinfo package specification), and accessed by means of a set of | |
51 | -- subprograms which define an abstract interface. | |
52 | ||
53 | -- There are two kinds of semantic information | |
54 | ||
55 | -- First, the tree nodes with the following Nkind values: | |
56 | ||
57 | -- N_Defining_Identifier | |
58 | -- N_Defining_Character_Literal | |
59 | -- N_Defining_Operator_Symbol | |
60 | ||
61 | -- are called Entities, and constitute the information that would often | |
62 | -- be stored separately in a symbol table. These nodes are all extended | |
63 | -- to provide extra space, and contain fields which depend on the entity | |
64 | -- kind, as defined by the contents of the Ekind field. The use of the | |
65 | -- Ekind field, and the associated fields in the entity, are defined | |
66 | -- in this package, as are the access functions to these fields. | |
67 | ||
68 | -- Second, in some cases semantic information is stored directly in other | |
69 | -- kinds of nodes, e.g. the Etype field, used to indicate the type of an | |
70 | -- expression. The access functions to these fields are defined in the | |
71 | -- Sinfo package, but their full documentation is to be found in | |
72 | -- the Einfo package specification. | |
73 | ||
74 | -- Declaration processing places information in the nodes of their defining | |
75 | -- identifiers. Name resolution places in all other occurrences of an | |
76 | -- identifier a pointer to the corresponding defining occurrence. | |
77 | ||
78 | -------------------------------- | |
79 | -- The XEINFO Utility Program -- | |
80 | -------------------------------- | |
81 | ||
82 | -- XEINFO is a utility program which automatically produces a C header file, | |
83 | -- a-xeinfo.h from the spec and body of package Einfo. It reads the input | |
84 | -- files einfo.ads and einfo.adb and produces the output file a-xeinfo.h. | |
85 | ||
86 | -- In order for this utility program to operate correctly, the form of the | |
87 | -- einfo.ads and einfo.adb files must meet certain requirements and be laid | |
88 | -- out in a specific manner. | |
89 | ||
90 | -- The general form of einfo.ads is as follows: | |
91 | ||
92 | -- type declaration for type Entity_Kind | |
93 | -- subtype declarations declaring subranges of Entity_Kind | |
94 | -- subtype declarations declaring synonyms for some standard types | |
95 | -- function specs for attributes | |
96 | -- procedure specs | |
97 | -- pragma Inline declarations | |
98 | ||
99 | -- This order must be observed. There are no restrictions on the procedures, | |
100 | -- since the C header file only includes functions (Gigi is not allowed to | |
101 | -- modify the generated tree). However, functions are required to have headers | |
102 | -- that fit on a single line. | |
103 | ||
104 | -- XEINFO reads and processes the function specs and the pragma Inlines. For | |
105 | -- functions that are declared as inlined, XEINFO reads the corresponding body | |
106 | -- from xeinfo.adb, and processes it into C code. This results in some strict | |
107 | -- restrictions on which functions can be inlined: | |
108 | ||
109 | -- The function spec must be on a single line | |
110 | ||
111 | -- There can only be a single statement, contained on a single line, | |
112 | -- not counting any pragma Assert statements. | |
113 | ||
114 | -- This single statement must either by a function call with simple, | |
115 | -- single token arguments, or it must be a membership test of the form | |
116 | -- a in b, where a and b are single tokens. | |
117 | ||
118 | -- For functions that are not inlined, there is no restriction on the body, | |
119 | -- and XEINFO generates a direct reference in the C header file which allows | |
120 | -- the C code in Gigi to directly call the corresponding Ada body. | |
121 | ||
122 | ---------------------------------- | |
123 | -- Handling of Type'Size Values -- | |
124 | ---------------------------------- | |
125 | ||
126 | -- The Ada 95 RM contains some rather peculiar (to us!) rules on the value | |
127 | -- of type'Size (see RM 13.3(55)). We have found that attempting to use | |
128 | -- these RM Size values generally, and in particular for determining the | |
129 | -- default size of objects, creates chaos, and major incompatibilies in | |
130 | -- existing code. | |
131 | ||
132 | -- We proceed as follows, for discrete and fixed-point subtypes, we have | |
133 | -- two separate sizes for each subtype: | |
134 | ||
135 | -- The Object_Size, which is used for determining the default size of | |
136 | -- objects and components. This size value can be referred to using the | |
137 | -- Object_Size attribute. The phrase "is used" here means that it is | |
138 | -- the basis of the determination of the size. The backend is free to | |
139 | -- pad this up if necessary for efficiency, e.g. an 8-bit stand-alone | |
140 | -- character might be stored in 32 bits on a machine with no efficient | |
141 | -- byte access instructions such as the Alpha. | |
142 | ||
143 | -- The default rules for the value of Object_Size for fixed-point and | |
144 | -- discrete types are as follows: | |
145 | ||
146 | -- The Object_Size for base subtypes reflect the natural hardware | |
147 | -- size in bits (see Ttypes and Cstand for integer types). For | |
148 | -- enumeration and fixed-point base subtypes have 8. 16. 32 or 64 | |
149 | -- bits for this size, depending on the range of values to be stored. | |
150 | ||
151 | -- The Object_Size of a subtype is the same as the Object_Size of | |
152 | -- the subtype from which it is obtained. | |
153 | ||
154 | -- The Object_Size of a derived base type is copied from the parent | |
155 | -- base type, and the Object_Size of a derived first subtype is copied | |
156 | -- from the parent first subtype. | |
157 | ||
158 | -- The Value_Size which is the number of bits required to store a value | |
159 | -- of the type. This size can be referred to using the Value_Size | |
160 | -- attribute. This value is used to determine how tightly to pack | |
161 | -- records or arrays with components of this type, and also affects | |
162 | -- the semantics of unchecked conversion (unchecked conversions where | |
163 | -- the Value_Size values differ generate a warning, and are potentially | |
164 | -- target dependent). | |
165 | ||
166 | -- The default rule for the value of Value_Size are as follows: | |
167 | ||
168 | -- The Value_Size for a base subtype is the minimum number of bits | |
169 | -- required to store all values of the type (including the sign bit | |
170 | -- only if negative values are possible). | |
171 | ||
172 | -- If a subtype statically matches the first subtype, then it has | |
173 | -- by default the same Value_Size as the first subtype. This is a | |
174 | -- consequence of RM 13.1(14) ("if two subtypes statically match, | |
175 | -- then their subtype-specific aspects are the same".) | |
176 | ||
177 | -- All other subtypes have a Value_Size corresponding to the minimum | |
178 | -- number of bits required to store all values of the subtype. For | |
179 | -- dynamic bounds, it is assumed that the value can range down or up | |
180 | -- to the corresponding bound of the ancestor | |
181 | ||
182 | -- The RM defined attribute Size corresponds to the Value_Size attribute. | |
183 | ||
184 | -- The Size attribute may be defined for a first-named subtype. This sets | |
185 | -- the Value_Size of the first-named subtype to the given value, and the | |
186 | -- Object_Size of this first-named subtype to the given value padded up | |
187 | -- to an appropriate boundary. It is a consequence of the default rules | |
188 | -- above that this Object_Size will apply to all further subtypes. On the | |
189 | -- otyher hand, Value_Size is affected only for the first subtype, any | |
190 | -- dynamic subtypes obtained from it directly, and any statically matching | |
191 | -- subtypes. The Value_Size of any other static subtypes is not affected. | |
192 | ||
193 | -- Value_Size and Object_Size may be explicitly set for any subtype using | |
194 | -- an attribute definition clause. Note that the use of these attributes | |
195 | -- can cause the RM 13.1(14) rule to be violated. If two access types | |
196 | -- reference aliased objects whose subtypes have differing Object_Size | |
197 | -- values as a result of explicit attribute definition clauses, then it | |
198 | -- is erroneous to convert from one access subtype to the other. | |
199 | ||
200 | -- At the implementation level, Esize stores the Object_Size and the | |
201 | -- RM_Size field stores the Value_Size (and hence the value of the | |
202 | -- Size attribute, which, as noted above, is equivalent to Value_Size). | |
203 | ||
204 | -- To get a feel for the difference, consider the following examples (note | |
205 | -- that in each case the base is short_short_integer with a size of 8): | |
206 | ||
207 | -- Object_Size Value_Size | |
208 | ||
209 | -- type x1 is range 0..5; 8 3 | |
210 | ||
211 | -- type x2 is range 0..5; | |
212 | -- for x2'size use 12; 12 12 | |
213 | ||
214 | -- subtype x3 is x2 range 0 .. 3; 12 2 | |
215 | ||
216 | -- subtype x4 is x2'base range 0 .. 10; 8 4 | |
217 | ||
218 | -- subtype x5 is x2 range 0 .. dynamic; 12 (7) | |
219 | ||
220 | -- subtype x6 is x2'base range 0 .. dynamic; 8 (7) | |
221 | ||
222 | -- Note: the entries marked (7) are not actually specified by the Ada 95 RM, | |
223 | -- but it seems in the spirit of the RM rules to allocate the minimum number | |
224 | -- of bits known to be large enough to hold the given range of values. | |
225 | ||
226 | -- So far, so good, but GNAT has to obey the RM rules, so the question is | |
227 | -- under what conditions must the RM Size be used. The following is a list | |
228 | -- of the occasions on which the RM Size must be used: | |
229 | ||
230 | -- Component size for packed arrays or records | |
231 | -- Value of the attribute Size for a type | |
232 | -- Warning about sizes not matching for unchecked conversion | |
233 | ||
234 | -- The RM_Size field keeps track of the RM Size as needed in these | |
235 | -- three situations. | |
236 | ||
237 | -- For types other than discrete and fixed-point types, the Object_Size | |
238 | -- and Value_Size are the same (and equivalent to the RM attribute Size). | |
239 | -- Only Size may be specified for such types. | |
240 | ||
241 | ----------------------- | |
242 | -- Entity Attributes -- | |
243 | ----------------------- | |
244 | ||
245 | -- This section contains a complete list of the attributes that are defined | |
246 | -- on entities. Some attributes apply to all entities, others only to certain | |
247 | -- kinds of entities. In the latter case the attribute should only be set or | |
248 | -- accessed if the Ekind field indicates an appropriate entity. | |
249 | ||
250 | -- There are two kinds of attributes that apply to entities, stored and | |
251 | -- synthesized. Stored attributes correspond to a field or flag in the entity | |
252 | -- itself. Such attributes are identified in the table below by giving the | |
253 | -- field or flag in the attribute that is used to hold the attribute value. | |
254 | -- Synthesized attributes are not stored directly, but are rather computed as | |
255 | -- needed from other attributes, or from information in the tree. These are | |
256 | -- marked "synthesized" in the table below. The stored attributes have both | |
257 | -- access functions and set procedures to set the corresponding values, while | |
258 | -- synthesized attributes have only access functions. | |
259 | ||
260 | -- Note: in the case of Node, Uint, or Elist fields, there are cases where | |
261 | -- the same physical field is used for different purposes in different | |
262 | -- entities, so these access functions should only be referenced for the | |
263 | -- class of entities in which they are defined as being present. Flags are | |
264 | -- not overlapped in this way, but nevertheless as a matter of style and | |
265 | -- abstraction (which may or may not be checked by assertions in the body), | |
266 | -- this restriction should be observed for flag fields as well. | |
267 | ||
268 | -- Note: certain of the attributes on types apply only to base types, and | |
269 | -- are so noted by the notation [base type only]. These are cases where the | |
270 | -- attribute of any subtype is the same as the attribute of the base type. | |
271 | -- The attribute can be referenced on a subtype (and automatically retrieves | |
07fc65c4 GB |
272 | -- the value from the base type). However, it is an error to try to set the |
273 | -- attribute on other than the base type, and if assertions are enabled, | |
274 | -- an attempt to set the attribute on a subtype will raise an assert error. | |
70482933 RK |
275 | |
276 | -- Other attributes are noted as applying the implementation base type only. | |
277 | -- These are representation attributes which must always apply to a full | |
278 | -- non-private type, and where the attributes are always on the full type. | |
279 | -- The attribute can be referenced on a subtype (and automatically retries | |
07fc65c4 GB |
280 | -- the value from the implementation base type). However, it is an error |
281 | -- to try to set the attribute on other than the implementation base type, | |
282 | -- and if assertions are enabled, an attempt to set the attribute on a | |
283 | -- subtype will raise an assert error. | |
70482933 RK |
284 | |
285 | -- Accept_Address (Elist21) | |
286 | -- Present in entries. If an accept has a statement sequence, then an | |
287 | -- address variable is created, which is used to hold the address of the | |
288 | -- parameters, as passed by the runtime. Accept_Address holds an element | |
289 | -- list which represents a stack of entities for these address variables. | |
290 | -- The current entry is the top of the stack, which is the last element | |
291 | -- on the list. A stack is required to handle the case of nested select | |
292 | -- statements referencing the same entry. | |
293 | ||
294 | -- Actual_Subtype (Node17) | |
295 | -- Present in variables, constants, and formal parameters. This is the | |
296 | -- subtype imposed by the value of the object, as opposed to its nominal | |
297 | -- subtype, which is imposed by the declaration. The actual subtype | |
298 | -- differs from the nominal one when the latter is indefinite (as in the | |
299 | -- case of an unconstrained formal parameter, or a variable declared | |
300 | -- with an unconstrained type and an initial value). The nominal subtype | |
301 | -- is the Etype entry for the entity. The Actual_Subtype field is set | |
302 | -- only if the actual subtype differs from the nominal subtype. If the | |
303 | -- actual and nominal subtypes are the same, then the Actual_Subtype | |
304 | -- field is Empty, and Etype indicates both types. | |
980f237d | 305 | -- |
70482933 RK |
306 | -- For objects, the Actual_Subtype is set only if this is a discriminated |
307 | -- type. For arrays, the bounds of the expression are obtained and the | |
308 | -- Etype of the object is directly the constrained subtype. This is | |
309 | -- rather irregular, and the semantic checks that depend on the nominal | |
310 | -- subtype being unconstrained use flag Is_Constr_Subt_For_U_Nominal(qv). | |
311 | ||
07fc65c4 | 312 | -- Access_Disp_Table (Node16) [implementation base type only] |
70482933 RK |
313 | -- Present in record type entities. For a tagged type, points to the |
314 | -- dispatch table associated with the tagged type. For a non-tagged | |
315 | -- record, contains Empty. | |
316 | ||
317 | -- Address_Clause (synthesized) | |
318 | -- Applies to entries, objects and subprograms. Set if an address clause | |
319 | -- is present which references the object or subprogram and points to | |
320 | -- the N_Attribute_Definition_Clause node. Empty if no Address clause. | |
321 | -- The expression in the address clause is always a constant that is | |
322 | -- defined before the entity to which the address clause applies. | |
323 | -- Note: Gigi references this field in E_Task_Type entities??? | |
324 | ||
325 | -- Address_Taken (Flag104) | |
326 | -- Present in all entities. Set if the Address or Unrestricted_Access | |
327 | -- attribute is applied directly to the entity, i.e. the entity is the | |
328 | -- entity of the prefix of the attribute reference. Used by Gigi to | |
329 | -- make sure that the address can be meaningfully taken. | |
330 | ||
331 | -- Alias (Node18) | |
332 | -- Present in overloaded entities (literals, subprograms, entries). | |
333 | -- Points to parent subprogram of a derived subprogram. Also used for | |
334 | -- a subprogram renaming, where it points to the renamed subprogram. | |
335 | -- Always empty for entries. | |
336 | ||
337 | -- Alignment (Uint14) | |
fbf5a39b AC |
338 | -- Present in entities for types and also in constants, variables, |
339 | -- loop parameters, and formal parameters. This indicates the desired | |
340 | -- alignment for a type, or the actual alignment for an object. A value | |
341 | -- of zero (Uint_0) indicates that the alignment has not been set yet. | |
70482933 | 342 | -- The alignment can be set by an explicit alignment clause, or set by |
fbf5a39b AC |
343 | -- the front-end in package Layout, or set by the back-end as part of |
344 | -- the back end back-annotation process. The alignment field is also | |
345 | -- present in E_Exception entities, but there it is used only by the | |
346 | -- back-end for back annotation. | |
70482933 RK |
347 | |
348 | -- Alignment_Clause (synthesized) | |
349 | -- Appllies to all entities for types and objects. If an alignment | |
350 | -- attribute definition clause is present for the entity, then this | |
351 | -- function returns the N_Attribute_Definition clause that specifies the | |
352 | -- alignment. If no alignment clause applies to the type, then the call | |
353 | -- to this function returns Empty. Note that the call can return a | |
354 | -- non-Empty value even if Has_Alignment_Clause is not set (happens with | |
355 | -- subtype and derived type declarations). Note also that a record | |
356 | -- definition clause with an (obsolescent) mod clause is converted | |
357 | -- into an attribute definition clause for this purpose. | |
358 | ||
359 | -- Ancestor_Subtype (synthesized) | |
360 | -- Applies to all type and subtype entities. If the argument is a | |
361 | -- subtype then it returns the subtype or type from which the subtype | |
362 | -- was obtained, otherwise it returns Empty. | |
363 | ||
364 | -- Associated_Formal_Package (Node12) | |
365 | -- Present in packages that are the actuals of formal_packages. Points | |
366 | -- to the entity in the declaration for the formal package. | |
367 | ||
368 | -- Associated_Node_For_Itype (Node8) | |
369 | -- Present in all type and subtype entities. Set non-Empty only for | |
370 | -- Itypes. Set to point to the associated node for the Itype, i.e. | |
371 | -- the node whose elaboration generated the Itype. This is used for | |
372 | -- copying trees, to determine whether or not to copy an Itype. | |
373 | ||
07fc65c4 | 374 | -- Associated_Storage_Pool (Node22) [root type only] |
70482933 RK |
375 | -- Present in simple and general access type entities. References the |
376 | -- storage pool to be used for the corresponding collection. A value of | |
07fc65c4 GB |
377 | -- Empty means that the default pool is to be used. This is present |
378 | -- only in the root type, since derived types must have the same pool | |
379 | -- as the parent type. | |
70482933 RK |
380 | |
381 | -- Associated_Final_Chain (Node23) | |
382 | -- Present in simple and general access type entities. References the | |
383 | -- List_Controller object that holds the finalization chain on which | |
384 | -- are attached dynamically allocated objects referenced by the access | |
385 | -- type. Empty when the access type cannot reference a controlled object. | |
386 | ||
387 | -- Barrier_Function (Node12) | |
388 | -- Present in protected entries and entry families. This is the | |
389 | -- subprogram declaration for the body of the function that returns | |
390 | -- the value of the entry barrier. | |
391 | ||
392 | -- Base_Type (synthesized) | |
393 | -- Applies to all type entities. Returns the base type of a type or | |
394 | -- subtype. The base type of a type is the type itself. The base type | |
395 | -- of a subtype is the type that it constrains (which is always a type | |
396 | -- entity, not some other subtype). Note that in the case of a subtype | |
397 | -- of a private type, it is possible for the base type attribute to | |
398 | -- return a private type, even if the subtype to which it applies is | |
399 | -- non-private. See also Implementation_Base_Type. Note: it is allowed | |
400 | -- to apply Base_Type to other than a type, in which case it simply | |
401 | -- returns the entity unchanged. | |
402 | ||
403 | -- Block_Node (Node11) | |
57568d91 ES |
404 | -- Present in block entities. Points to the identifier in the |
405 | -- Block_Statement itself. Used when retrieving the block construct | |
406 | -- for finalization purposes, The block entity has an implicit label | |
407 | -- declaration in the enclosing declarative part, and has otherwise | |
4ba603e2 | 408 | -- no direct connection in the tree with the block statement. The |
07fc65c4 | 409 | -- link is to the identifier (which is an occurence of the entity) |
57568d91 ES |
410 | -- and not to the block_statement itself, because the statement may |
411 | -- be rewritten, e.g. in the process of removing dead code. | |
70482933 RK |
412 | |
413 | -- Body_Entity (Node19) | |
c84700e7 ES |
414 | -- Present in package and generic package entities, points to the |
415 | -- corresponding package body entity if one is present. | |
70482933 | 416 | |
fbf5a39b AC |
417 | -- Body_Needed_For_SAL (Flag40) |
418 | -- Present in package and subprogram entities that are compilation | |
419 | -- units. Indicates that the source for the body must be included | |
420 | -- when the unit is part of a standalone library. | |
421 | ||
70482933 RK |
422 | -- C_Pass_By_Copy (Flag125) [implementation base type only] |
423 | -- Present in record types. Set if a pragma Convention for the record | |
424 | -- type specifies convention C_Pass_By_Copy. This convention name is | |
425 | -- treated as identical in all respects to convention C, except that | |
426 | -- if it is specified for a record type, then the C_Pass_By_Copy flag | |
427 | -- is set, and if a foreign convention subprogram has a formal of the | |
428 | -- corresponding type, then the parameter passing mechanism will be | |
429 | -- set to By_Copy (unless specifically overridden by an Import or | |
430 | -- Export pragma). | |
431 | ||
fbf5a39b AC |
432 | -- Can_Never_Be_Null (Flag38) |
433 | -- This flag is present in all entities, but can only be set in an | |
434 | -- object which can never have a null value. This is used to avoid | |
435 | -- unncessary resetting of the Is_Known_Non_Null flag for such | |
436 | -- entities. The cases where this is set True are constant access | |
437 | -- values initialized to a non-null value, and access parameters. | |
438 | ||
70482933 RK |
439 | -- Chars (Name1) |
440 | -- Present in all entities. This field contains an entry into the names | |
441 | -- table that has the character string of the identifier, character | |
442 | -- literal or operator symbol. See Namet for further details. Note that | |
443 | -- throughout the processing of the front end, this name is the simple | |
444 | -- unqualified name. However, just before gigi is called, a call is made | |
445 | -- to Qualify_All_Entity_Names. This causes entity names to be qualified | |
446 | -- using the encoding described in exp_dbug.ads, and from that point on | |
447 | -- (including post gigi steps such as cross-reference generation), the | |
448 | -- entities will contain the encoded qualified names. | |
449 | ||
fbf5a39b AC |
450 | -- Checks_May_Be_Suppressed (Flag31) |
451 | -- Present in all entities. Set if a pragma Suppress or Unsuppress | |
452 | -- mentions the entity specifically in the second argument. If this | |
453 | -- flag is set the the Global_Entity_Suppress and Local_Entity_Suppress | |
454 | -- tables must be consulted to determine if the is actually an active | |
455 | -- Suppress or Unsuppress pragma that applies to the entity. | |
456 | ||
70482933 RK |
457 | -- Class_Wide_Type (Node9) |
458 | -- Present in all type entities. For a tagged type or subtype, returns | |
459 | -- the corresponding implicitly declared class-wide type. Set to Empty | |
460 | -- for non-tagged types. | |
461 | ||
462 | -- Cloned_Subtype (Node16) | |
463 | -- Present in E_Record_Subtype and E_Class_Wide_Subtype entities. | |
464 | -- Each such entity can either have a Discriminant_Constraint, in | |
465 | -- which case it represents a distinct type from the base type (and | |
466 | -- will have a list of components and discrimants in the list headed by | |
467 | -- First_Entity) or else no such constraint, in which case it will be a | |
468 | -- copy of the base type. | |
469 | -- | |
470 | -- o Each element of the list in First_Entity is copied from the base | |
471 | -- type; in that case, this field is Empty. | |
472 | -- | |
473 | -- o The list in First_Entity is shared with the base type; in that | |
474 | -- case, this field points to that entity. | |
475 | -- | |
476 | -- A record or classwide subtype may also be a copy of some other | |
477 | -- subtype and share the entities in the First_Entity with that subtype. | |
478 | -- In that case, this field points to that subtype. | |
479 | -- | |
480 | -- For E_Class_Wide_Subtype, the presence of Equivalent_Type overrides | |
481 | -- this field. Note that this field ONLY appears in subtype entries, not | |
482 | -- in type entries, it is not present, and it is an error to reference | |
483 | -- Cloned_Subtype in an E_Record_Type or E_Class_Wide_Type entity. | |
484 | ||
485 | -- Comes_From_Source | |
486 | -- This flag appears on all nodes, including entities, and indicates | |
487 | -- that the node was created by the scanner or parser from the original | |
488 | -- source. Thus for entities, it indicates that the entity is defined | |
489 | -- in the original source program. | |
490 | ||
491 | -- Component_Alignment (special field) [base type only] | |
492 | -- Present in array and record entities. Contains a value of type | |
493 | -- Component_Alignment_Kind indicating the alignment of components. | |
494 | -- Set to Calign_Default normally, but can be overridden by use of | |
495 | -- the Component_Alignment pragma. Note: this field is currently | |
496 | -- stored in a non-standard way, see body for details. | |
497 | ||
498 | -- Component_Bit_Offset (Uint11) | |
499 | -- Present in record components (E_Component, E_Discriminant) if a | |
500 | -- component clause applies to the component. First bit position of | |
501 | -- given component, computed from the first bit and position values | |
502 | -- given in the component clause. A value of No_Uint means that the | |
503 | -- value is not yet known. The value can be set by the appearence of | |
504 | -- an explicit component clause in a record representation clause, | |
505 | -- or it can be set by the front-end in package Layout, or it can be | |
506 | -- set by the backend. By the time backend processing is completed, | |
507 | -- this field is always set. A negative value is used to represent | |
508 | -- a value which is not known at compile time, and must be computed | |
509 | -- at run-time (this happens if fields of a record have variable | |
510 | -- lengths). See package Layout for details of these values. | |
511 | -- | |
512 | -- Note: this field is obsolescent, to be eventually replaced entirely | |
513 | -- by Normalized_First_Bit and Normalized_Position, but for the moment, | |
514 | -- gigi is still using (and back annotating) this field, and gigi does | |
515 | -- not know about the new fields. For the front end layout case, the | |
516 | -- Component_Bit_Offset field is only set if it is static, and otherwise | |
517 | -- the new Normalized_First_Bit and Normalized_Position fields are used. | |
518 | ||
519 | -- Component_Clause (Node13) | |
520 | -- Present in record components and discriminants. If a record | |
521 | -- representation clause is present for the corresponding record | |
522 | -- type a that specifies a position for the component, then the | |
523 | -- Component_Clause field of the E_Component entity points to the | |
524 | -- N_Component_Claue node. Set to Empty if no record representation | |
525 | -- clause was present, or if there was no specification for this | |
526 | -- component. | |
527 | ||
528 | -- Component_Size (Uint22) [implementation base type only] | |
529 | -- Present in array types. It contains the component size value for | |
530 | -- the array. A value of zero means that the value is not yet set. | |
531 | -- The value can be set by the use of a component size clause, or | |
532 | -- by the front end in package Layout, or by the backend. A negative | |
533 | -- value is used to represent a value which is not known at compile | |
534 | -- time, and must be computed at run-time (this happens if the type | |
535 | -- of the component has a variable length size). See package Layout | |
536 | -- for details of these values. | |
537 | ||
538 | -- Component_Type (Node20) [implementation base type only] | |
07fc65c4 | 539 | -- Present in array types and string types. References component type. |
70482933 RK |
540 | |
541 | -- Constant_Value (synthesized) | |
fbf5a39b AC |
542 | -- Applies to variables, constants, named integers, and named reals. |
543 | -- Obtains the initialization expression for the entity. Will return | |
544 | -- Empty for for a deferred constant whose full view is not available | |
545 | -- or in some other cases of internal entities, which cannot be treated | |
546 | -- as constants from the point of view of constant folding. Empty is | |
547 | -- also returned for variables with no initialization expression. | |
70482933 RK |
548 | |
549 | -- Corresponding_Concurrent_Type (Node18) | |
550 | -- Present in record types that are constructed by the expander to | |
551 | -- represent task and protected types (Is_Concurrent_Record_Type flag | |
552 | -- set True). Points to the entity for the corresponding task type or | |
553 | -- protected type. | |
554 | ||
555 | -- Corresponding_Discriminant (Node19) | |
556 | -- Present in discriminants of a derived type, when the discriminant is | |
557 | -- used to constrain a discriminant of the parent type. Points to the | |
558 | -- corresponding discriminant in the parent type. Otherwise it is Empty. | |
559 | ||
560 | -- Corresponding_Equality (Node13) | |
561 | -- Present in function entities for implicit inequality operators. | |
562 | -- Denotes the explicit or derived equality operation that creates | |
563 | -- the implicit inequality. Note that this field is not present in | |
564 | -- other function entities, only in implicit inequality routines, | |
565 | -- where Comes_From_Source is always False. | |
566 | ||
567 | -- Corresponding_Record_Type (Node18) | |
568 | -- Present in protected and task types and subtypes. References the | |
569 | -- entity for the corresponding record type constructed by the expander | |
570 | -- (see Exp_Ch9). This type is used to represent values of the task type. | |
571 | ||
572 | -- Corresponding_Remote_Type (Node22) | |
573 | -- Present in record types that describe the fat pointer structure for | |
574 | -- Remote_Access_To_Subrogram types. References the original access type. | |
575 | ||
576 | -- CR_Discriminant (Node23) | |
577 | -- Present in discriminants of concurrent types. Denotes the homologous | |
578 | -- discriminant of the corresponding record type. The CR_Discriminant is | |
579 | -- created at the same time as the discriminal, and used to replace | |
580 | -- occurrences of the discriminant within the type declaration. | |
581 | ||
fbf5a39b AC |
582 | -- Current_Value (Node9) |
583 | -- Present in E_Variable, E_Out_Parameter and E_In_Out_Parameter | |
584 | -- entities. Set non-Empty if the (constant) current value of the | |
585 | -- variable is known. This value is valid only for references from | |
586 | -- the same sequential scope as the entity. The sequential scope | |
587 | -- of an entity includes the immediate scope and any contained | |
588 | -- scopes that are package specs, package bodies, or blocks (at | |
589 | -- any nesting level). For convenience in coding, this field is | |
590 | -- also present in other object entities (E_Loop_Parameter and | |
591 | -- E_In_Parameter and E_Constant), but is not used to hold a | |
592 | -- constant value, since value tracking is not needed in this case. | |
593 | -- | |
594 | -- Another related use of this field is to record information | |
595 | -- about the value obtained from an IF statement condition. | |
596 | -- If the IF/ELSIF condition has the form "[NOT] OBJ RELOP VAL", | |
597 | -- where OBJ is a reference to an entity with a Current_Value field, | |
598 | -- RELOP is one of the six relational operators, and VAL is a compile- | |
599 | -- time known valoue, then the Current_Value field if OBJ is set to | |
600 | -- point to the N_If_Statement or N_Elsif_Part node of the relevant | |
601 | -- construct. For more details on this usage, see the procedure | |
602 | -- Exp_Util.Get_Current_Value_Condition. | |
603 | ||
70482933 RK |
604 | -- Debug_Info_Off (Flag166) |
605 | -- Present in all entities. Set if a pragma Suppress_Debug_Info applies | |
606 | -- to the entity, or if internal processing in the compiler determines | |
fbf5a39b AC |
607 | -- that suppression of debug information is desirable. Note that this |
608 | -- flag is only for use by the front end as part of the processing for | |
609 | -- determining if Needs_Debug_Info should be set. The back end should | |
610 | -- always test Needs_Debug_Info, it should never test Debug_Info_Off. | |
70482933 RK |
611 | |
612 | -- Debug_Renaming_Link (Node13) | |
613 | -- Used to link the enumeration literal of a debug renaming declaration | |
614 | -- to the renamed entity. See Exp_Dbug.Debug_Renaming_Declaration for | |
615 | -- details of the use of this field. | |
616 | ||
617 | -- Declaration_Node (synthesized) | |
618 | -- Applies to all entities. Returns the tree node for the declaration | |
619 | -- that declared the entity. Normally this is just the Parent of the | |
620 | -- entity. One exception arises with child units, where the parent of | |
621 | -- the entity is a selected component or a defining program unit name. | |
622 | -- Another exception is that if the entity is an incomplete type that | |
623 | -- has been completed, then we obtain the declaration node denoted by | |
624 | -- the full type, i.e. the full type declaration node. | |
625 | ||
626 | -- Default_Expr_Function (Node21) | |
627 | -- Present in parameters. It holds the entity of the parameterless | |
628 | -- function that is built to evaluate the default expression if it is | |
629 | -- more complex than a simple identifier or literal. For the latter | |
630 | -- simple cases or if there is no default value, this field is Empty. | |
631 | ||
632 | -- Default_Expressions_Processed (Flag108) | |
633 | -- A flag in subprograms (functions, operators, procedures) and in | |
634 | -- entries and entry families used to indicate that default expressions | |
635 | -- have been processed and to avoid multiple calls to process the | |
636 | -- default expressions (see Freeze.Process_Default_Expressions), which | |
637 | -- would not only waste time, but also generate false error messages. | |
638 | ||
639 | -- Default_Value (Node20) | |
640 | -- Present in formal parameters. Points to the node representing the | |
641 | -- expression for the default value for the parameter. Empty if the | |
642 | -- parameter has no default value (which is always the case for OUT | |
643 | -- and IN OUT parameters in the absence of errors). | |
644 | ||
645 | -- Delay_Cleanups (Flag114) | |
646 | -- Present in entities that have finalization lists (subprograms | |
647 | -- blocks, and tasks). Set if there are pending generic body | |
648 | -- instantiations for the corresponding entity. If this flag is | |
649 | -- set, then generation of cleanup actions for the corresponding | |
650 | -- entity must be delayed, since the insertion of the generic body | |
651 | -- may affect cleanup generation (see Inline for further details). | |
652 | ||
653 | -- Delay_Subprogram_Descriptors (Flag50) | |
654 | -- Present in entities for which exception subprogram descriptors | |
655 | -- are generated (subprograms, package declarations and package | |
656 | -- bodies). Present if there are pending generic body instantiations | |
657 | -- for the corresponding entity. If this flag is set, then generation | |
658 | -- of the subprogram descriptor for the corresponding enities must | |
659 | -- be delayed, since the insertion of the generic body may add entries | |
660 | -- to the list of handlers. | |
661 | -- | |
662 | -- Note: for subprograms, Delay_Subprogram_Descriptors is set if and | |
663 | -- only if Delay_Cleanups is set. But Delay_Cleanups can be set for a | |
664 | -- a block (in which case Delay_Subprogram_Descriptors is set for the | |
665 | -- containing subprogram). In addition Delay_Subprogram_Descriptors is | |
666 | -- set for a library level package declaration or body which contains | |
667 | -- delayed instantiations (in this case the descriptor refers to the | |
668 | -- enclosing elaboration procedure). | |
669 | ||
670 | -- Delta_Value (Ureal18) | |
671 | -- Present in fixed and decimal types. Points to a universal real | |
672 | -- that holds value of delta for the type, as given in the declaration | |
673 | -- or as inherited by a subtype or derived type. | |
674 | ||
675 | -- Dependent_Instances (Elist8) | |
676 | -- Present in packages that are instances. Holds list of instances | |
677 | -- of inner generics. Used to place freeze nodes for those instances | |
678 | -- after that of the current one, i.e. after the corresponding generic | |
679 | -- bodies. | |
680 | ||
681 | -- Depends_On_Private (Flag14) | |
682 | -- Present in all type entities. Set if the type is private or if it | |
683 | -- depends on a private type. | |
684 | ||
685 | -- Designated_Type (synthesized) | |
686 | -- Applies to access types. Returns the designated type. Differs | |
687 | -- from Directly_Designated_Type in that if the access type refers | |
688 | -- to an incomplete type, and the full type is available, then this | |
689 | -- full type is returned instead of the incomplete type. | |
690 | ||
691 | -- Digits_Value (Uint17) | |
692 | -- Present in floating point types and subtypes and decimal types and | |
693 | -- subtypes. Contains the Digits value specified in the declaration. | |
694 | ||
695 | -- Directly_Designated_Type (Node20) | |
696 | -- Present in access types. This field points to the type that is | |
697 | -- directly designated by the access type. In the case of an access | |
698 | -- type to an incomplete type, this field references the incomplete | |
699 | -- type. Note that in the semantic processing, what is useful in | |
700 | -- nearly all cases is the full type designated by the access type. | |
701 | -- The function Designated_Type obtains this full type in the case of | |
702 | -- access to an incomplete type. | |
703 | ||
704 | -- Discard_Names (Flag88) | |
705 | -- Present in types and exception entities. Set if pragma Discard_Names | |
706 | -- applies to the entity. It is also set for declarative regions and | |
707 | -- package specs for which a Discard_Names pragma with zero arguments | |
708 | -- has been encountered. The purpose of setting this flag is to be able | |
709 | -- to set the Discard_Names attribute on enumeration types declared | |
fbf5a39b AC |
710 | -- after the pragma within the same declarative region. This flag is |
711 | -- set to False if a Keep_Names pragma appears for an enumeration type. | |
70482933 RK |
712 | |
713 | -- Discriminal (Node17) | |
714 | -- Present in discriminants (Discriminant formal: GNAT's first | |
715 | -- coinage). The entity used as a formal parameter that corresponds | |
fbf5a39b AC |
716 | -- to a discriminant. See section "Handling of Discriminants" for |
717 | -- full details of the use of discriminals. | |
70482933 RK |
718 | |
719 | -- Discriminal_Link (Node10) | |
720 | -- Present in discriminals (which have an Ekind of E_In_Parameter, | |
721 | -- or E_Constant), points back to corresponding discriminant. | |
722 | ||
723 | -- Discriminant_Checking_Func (Node20) | |
724 | -- Present in components. Points to the defining identifier of the | |
725 | -- function built by the expander returns a Boolean indicating whether | |
726 | -- the given record component exists for the current discriminant | |
727 | -- values. | |
728 | ||
729 | -- Discriminant_Constraint (Elist21) | |
730 | -- Present in entities whose Has_Discriminants flag is set (concurrent | |
731 | -- types, subtypes, record types and subtypes, private types and | |
732 | -- subtypes, limited private types and subtypes and incomplete types). | |
733 | -- It is an error to reference the Discriminant_Constraint field if | |
fbf5a39b | 734 | -- Has_Discriminants is False. |
70482933 RK |
735 | -- |
736 | -- If the Is_Constrained flag is set, Discriminant_Constraint points | |
737 | -- to an element list containing the discriminant constraints in the | |
738 | -- same order in which the discriminants are declared. | |
739 | -- | |
740 | -- If the Is_Constrained flag is not set but the discriminants of the | |
741 | -- unconstrained type have default initial values then this field | |
742 | -- points to an element list giving these default initial values in | |
743 | -- the same order in which the discriminants are declared. Note that | |
744 | -- in this case the entity cannot be a tagged record type, because | |
745 | -- discriminants in this case cannot have defaults. | |
746 | -- | |
747 | -- If the entity is a tagged record implicit type, then this field is | |
748 | -- inherited from the first subtype (so that the itype is subtype | |
749 | -- conformant with its first subtype, which is needed when the first | |
750 | -- subtype overrides primitive operations inherited by the implicit | |
751 | -- base type). | |
752 | -- | |
753 | -- In all other cases Discriminant_Constraint contains the empty | |
754 | -- Elist (ie it is initialized with a call to New_Elmt_List). | |
755 | ||
756 | -- Discriminant_Default_Value (Node20) | |
757 | -- Present in discriminants. Points to the node representing the | |
758 | -- expression for the default value of the discriminant. Set to | |
759 | -- Empty if the discriminant has no default value. | |
760 | ||
761 | -- Discriminant_Number (Uint15) | |
762 | -- Present in discriminants. Gives the ranking of a discriminant in | |
763 | -- the list of discriminants of the type, i.e. a sequential integer | |
764 | -- index starting at 1 and ranging up to Number_Discriminants. | |
765 | ||
766 | -- DTC_Entity (Node16) | |
767 | -- Present in function and procedure entities. Set to Empty unless | |
768 | -- the subprogram is dispatching in which case it references the | |
769 | -- Dispatch Table pointer Component. That is to say the component _tag | |
770 | -- for regular Ada tagged types, for CPP_Class types and their | |
771 | -- descendants this field points to the component entity in the record | |
772 | -- that is the Vtable pointer for the Vtable containing the entry that | |
773 | -- references the subprogram. | |
774 | ||
775 | -- DT_Entry_Count (Uint15) | |
776 | -- Present in E_Component entities. Only used for component marked | |
777 | -- Is_Tag. Store the number of entries in the Vtable (or Dispatch Table) | |
778 | ||
779 | -- DT_Position (Uint15) | |
780 | -- Present in function and procedure entities which are dispatching | |
781 | -- (should not be referenced without first checking that flag | |
782 | -- Is_Dispatching_Operation is True). Contains the offset into | |
783 | -- the Vtable for the entry that references the subprogram. | |
784 | ||
785 | -- Ekind (Ekind) | |
786 | -- Present in all entities. Contains a value of the enumeration type | |
787 | -- Entity_Kind declared in a subsequent section in this spec. | |
788 | ||
789 | -- Elaborate_All_Desirable (Flag146) | |
790 | -- Present in package and subprogram entities, and in generic package | |
791 | -- and subprogram entities. Set if internal analysis of a client that | |
792 | -- with's this unit determines that Elaborate_All is desirable, i.e. | |
793 | -- that there is a possibility that Program_Error may be raised if | |
794 | -- Elaborate_All conditions cannot be met. | |
795 | ||
796 | -- Elaboration_Entity (Node13) | |
797 | -- Present in generic and non-generic package and subprogram | |
798 | -- entities. This is a boolean entity associated with the unit that | |
799 | -- is initiallly set to False, and is set True when the unit is | |
800 | -- elaborated. This is used for two purposes. First, it is used to | |
801 | -- implement required access before elaboration checks (the flag | |
802 | -- must be true to call a subprogram at elaboration time). Second, | |
803 | -- it is used to guard against repeated execution of the generated | |
804 | -- elaboration code. | |
805 | -- | |
806 | -- Note that we always allocate this flag, and set this field, but | |
807 | -- we do not always actually use it. It is only used if it is needed | |
808 | -- for access-before-elaboration use (see Elaboration_Entity_Required | |
809 | -- flag) or if either the spec or the body has elaboration code. If | |
810 | -- neither of these two conditions holds, then the entity is still | |
811 | -- allocated (since we don't know early enough whether or not there | |
812 | -- is elaboration code), but is simply not used for any purpose. | |
813 | ||
814 | -- Elaboration_Entity_Required (Flag174) | |
815 | -- Present in generics and non-generic package and subprogram | |
816 | -- entities. Set only if Elaboration_Entity is non-Empty to indicate | |
817 | -- that the boolean is required to be set even if there is no other | |
818 | -- elaboration code. This occurs when the Elaboration_Entity flag | |
819 | -- is used for required access-before-elaboration checking. If the | |
820 | -- flag is only for preventing multiple execution of the elaboration | |
821 | -- code, then if there is no other elaboration code, obviously there | |
822 | -- is no need to set the flag. | |
823 | ||
824 | -- Enclosing_Dynamic_Scope (synthesized) | |
825 | -- Appliesa to all entities. Returns the closest dynamic scope in which | |
826 | -- the entity is declared or Standard_Standard for library-level entities | |
827 | ||
828 | -- Enclosing_Scope (Node18) | |
829 | -- Present in labels. Denotes the innermost enclosing construct that | |
830 | -- contains the label. Identical to the scope of the label, except for | |
831 | -- labels declared in the body of an accept statement, in which case the | |
832 | -- entry_name is the Enclosing_Scope. Used to validate goto's within | |
833 | -- accept statements. | |
834 | ||
835 | -- Entry_Accepted (Flag152) | |
836 | -- Present in E_Entry and E_Entry_Family entities. Set if there is | |
837 | -- at least one accept for this entry in the task body. Used to | |
838 | -- generate warnings for missing accepts. | |
839 | ||
840 | -- Entry_Bodies_Array (Node15) | |
841 | -- Present in protected types for which Has_Entries is true. | |
842 | -- This is the defining identifier for the array of entry body | |
843 | -- action procedures and barrier functions used by the runtime to | |
844 | -- execute the user code associated with each entry. | |
845 | ||
846 | -- Entry_Cancel_Parameter (Node23) | |
847 | -- Present in blocks. This only applies to a block statement for | |
848 | -- which the Is_Asynchronous_Call_Block flag is set. It | |
849 | -- contains the defining identifier of an object that must be | |
850 | -- passed to the Cancel_Task_Entry_Call or Cancel_Protected_Entry_Call | |
851 | -- call in the cleanup handler added to the block by | |
852 | -- Exp_Ch7.Expand_Cleanup_Actions. This parameter is a Boolean | |
853 | -- object for task entry calls and a Communications_Block object | |
854 | -- in the case of protected entry calls. In both cases the objects | |
855 | -- are declared in outer scopes to this block. | |
856 | ||
857 | -- Entry_Component (Node11) | |
858 | -- Present in formal parameters (in, in out and out parameters). Used | |
859 | -- only for formals of entries. References the corresponding component | |
860 | -- of the entry parameter record for the entry. | |
861 | ||
862 | -- Entry_Formal (Node16) | |
863 | -- Present in components of the record built to correspond to entry | |
864 | -- parameters. This field points from the component to the formal. It | |
865 | -- is the back pointer corresponding to Entry_Component. | |
866 | ||
867 | -- Entry_Index_Constant (Node18) | |
868 | -- Present in an entry index parameter. This is an identifier that | |
869 | -- eventually becomes the name of a constant representing the index | |
870 | -- of the entry family member whose entry body is being executed. Used | |
871 | -- to expand references to the entry index specification identifier. | |
872 | ||
873 | -- Entry_Index_Type (synthesized) | |
874 | -- Applies to an entry family. Denotes Etype of the subtype indication | |
875 | -- in the entry declaration. Used to resolve the index expression in an | |
876 | -- accept statement for a member of the family, and in the prefix of | |
877 | -- 'COUNT when it applies to a family member. | |
878 | ||
879 | -- Entry_Parameters_Type (Node15) | |
880 | -- Present in entries. Points to the access-to-record type that is | |
881 | -- constructed by the expander to hold a reference to the parameter | |
882 | -- values. This reference is manipulated (as an address) by the | |
883 | -- tasking runtime. The designated record represents a packaging | |
884 | -- up of the entry parameters (see Exp_Ch9.Expand_N_Entry_Declaration | |
885 | -- for further details). Entry_Parameters_Type is Empty if the entry | |
886 | -- has no parameters. | |
887 | ||
888 | -- Enumeration_Pos (Uint11) | |
889 | -- Present in enumeration literals. Contains the position number | |
890 | -- corresponding to the value of the enumeration literal. | |
891 | ||
892 | -- Enumeration_Rep (Uint12) | |
893 | -- Present in enumeration literals. Contains the representation that | |
894 | -- corresponds to the value of the enumeration literal. Note that | |
895 | -- this is normally the same as Enumeration_Pos except in the presence | |
896 | -- of representation clauses, where Pos will still represent the | |
897 | -- position of the literal within the type and Rep will have be the | |
898 | -- value given in the representation clause. | |
899 | ||
900 | -- Enumeration_Rep_Expr (Node22) | |
901 | -- Present in enumeration literals. Points to the expression in an | |
902 | -- associated enumeration rep clause that provides the representation | |
903 | -- value for this literal. Empty if no enumeration rep clause for this | |
904 | -- literal (or if rep clause does not have an entry for this literal, | |
905 | -- an error situation). This is also used to catch duplicate entries | |
906 | -- for the same literal. | |
907 | ||
908 | -- Enum_Pos_To_Rep (Node23) | |
909 | -- Present in enumeration types (but not enumeration subtypes). Set to | |
910 | -- Empty unless the enumeration type has a non-standard representation | |
911 | -- (i.e. at least one literal has a representation value different from | |
912 | -- its pos value). In this case, Enum_Pos_To_Rep is the entity for an | |
913 | -- array constructed when the type is frozen that maps Pos values to | |
914 | -- corresponding Rep values. The index type of this array is Natural, | |
915 | -- and the component type is a suitable integer type that holds the | |
916 | -- full range of representation values. | |
917 | ||
918 | -- Equivalent_Type (Node18) | |
919 | -- Present in class wide types and subtypes, access to protected | |
920 | -- subprogram types, and in exception_types. For a classwide type, it | |
921 | -- is always Empty. For a class wide subtype, it points to an entity | |
922 | -- created by the expander which gives Gigi an easily understandable | |
923 | -- equivalent of the class subtype with a known size (given by an | |
924 | -- initial value). See Exp_Util.Expand_Class_Wide_Subtype for further | |
925 | -- details. For E_exception_type, this points to the record containing | |
926 | -- the data necessary to represent exceptions (for further details, see | |
927 | -- System.Standard_Library. For access_to_protected subprograms, it | |
928 | -- denotes a record that holds pointers to the operation and to the | |
929 | -- protected object. For remote Access_To_Subprogram types, it denotes | |
930 | -- the record that is the fat pointer representation of an RAST. | |
931 | ||
932 | -- Esize (Uint12) | |
933 | -- Present in all types and subtypes, an also for components, constants, | |
934 | -- and variables. Contains the Object_Size of the type or of the object. | |
935 | -- A value of zero indicates that the value is not yet known. | |
936 | -- | |
937 | -- For the case of components where a component clause is present, the | |
938 | -- value is the value from the component clause, which must be non- | |
939 | -- negative (but may be zero, which is acceptable for the case of | |
940 | -- a type with only one possible value). It is also possible for Esize | |
941 | -- of a component to be set without a component clause present, which | |
942 | -- means that the component size is specified, but not the position. | |
943 | -- See also RM_Size and the section on "Handling of Type'Size Values". | |
944 | -- During gigi processing, the value is back annotated for all zero | |
945 | -- values, so that after the call to gigi, the value is properly set. | |
946 | ||
947 | -- Etype (Node5) | |
948 | -- Present in all entities. Represents the type of the entity, which | |
949 | -- is itself another entity. For a type entity, points to the parent | |
950 | -- type for a derived type, or if the type is not derived, points to | |
fbf5a39b AC |
951 | -- itself. For a subtype entity, Etype points to the base type. For |
952 | -- a class wide type, points to the parent type. For a subprogram or | |
953 | -- subprogram type, Etype has the return type of a function or is set | |
954 | -- to Standard_Void_Type to represent a procedure. | |
70482933 RK |
955 | |
956 | -- Exception_Code (Uint22) | |
957 | -- Present in exception entitites. Set to zero unless either an | |
958 | -- Import_Exception or Export_Exception pragma applies to the | |
959 | -- pragma and specifies a Code value. See description of these | |
960 | -- pragmas for details. Note that this field is relevant only if | |
961 | -- Is_VMS_Exception is set. | |
962 | ||
963 | -- Extra_Formal (Node15) | |
964 | -- Present in formal parameters in the non-generic case. Certain | |
965 | -- parameters require extra implicit information to be passed | |
966 | -- (e.g. the flag indicating if an unconstrained variant record | |
967 | -- argument is constrained, and the accessibility level for | |
968 | -- access parameters. See description of Extra_Constrained, | |
969 | -- Extra_Accessibility fields for further details. Extra formal | |
970 | -- parameters are constructed to represent these values, and | |
971 | -- chained to the end of the list of formals using the | |
972 | -- Extra_Formal field (i.e. the Extra_Formal field of the last | |
973 | -- "real" formal points to the first extra formal, and the | |
974 | -- Extra_Formal field of each extra formal points to the next | |
975 | -- one, with Empty indicating the end of the list of extra | |
976 | -- formals. | |
977 | ||
978 | -- Extra_Accessibility (Node13) | |
979 | -- Present in formal parameters in the non-generic case if | |
980 | -- expansion is active. Normally Empty, but if a parameter is | |
981 | -- one for which a dynamic accessibility check is required, then | |
982 | -- an extra formal of type Natural is created (see description | |
983 | -- of field Extra_Formal), and the Extra_Accessibility field of | |
984 | -- the formal parameter points to the entity for this extra | |
985 | -- formal. Also present in variables when compiling receiving | |
986 | -- stubs. In this case, a non Empty value means that this | |
987 | -- variable's accessibility depth has been transmitted by the | |
988 | -- caller and must be retrieved through the entity designed by | |
989 | -- this field instead of being computed. | |
990 | ||
991 | -- Extra_Constrained (Node23) | |
992 | -- Present in formal parameters in the non-generic case if | |
993 | -- expansion is active. Normally Empty, but if a parameter is | |
994 | -- one for which a dynamic indication of its constrained status | |
995 | -- is required, then an extra formal of type Boolean is created | |
996 | -- (see description of field Extra_Formal), and the | |
997 | -- Extra_Constrained field of the formal parameter points to the | |
998 | -- entity for this extra formal. Also present in variables when | |
999 | -- compiling receiving stubs. In this case, a non empty value | |
1000 | -- means that this variable's constrained status has been | |
1001 | -- transmitted by the caller and must be retrieved through the | |
1002 | -- entity designed by this field instead of being computed. | |
1003 | ||
1004 | -- Finalization_Chain_Entity (Node19) | |
1005 | -- Present in scopes which can have finalizable entities (blocks, | |
1006 | -- functions, procedures, tasks, entries). When this field is empty it | |
1007 | -- means that there are no finalization actions to perform on exit of the | |
1008 | -- scope. When this field contains 'Error', it means that no | |
1009 | -- finalization actions should happen at this level and the | |
1010 | -- finalization chain of a parent scope shall be used (??? this is | |
1011 | -- an improper use of 'Error' and should be changed). otherwise it | |
1012 | -- contains an entity of type Finalizable_Ptr that is the head of the | |
1013 | -- list of objects to finalize on exit. See "Finalization Management" | |
1014 | -- section in exp_ch7.adb for more details. | |
1015 | ||
1016 | -- Finalize_Storage_Only (Flag158) [base type only] | |
1017 | -- Present in all types. Set on direct controlled types to which a | |
1018 | -- valid Finalize_Storage_Only pragma applies. This flag is also set on | |
1019 | -- composite types when they have at least one controlled component and | |
1020 | -- all their controlled components are Finalize_Storage_Only. It is also | |
1021 | -- inherited by type derivation except for direct controlled types where | |
1022 | -- the Finalize_Storage_Only pragma is required at each level of | |
1023 | -- derivation. | |
1024 | ||
1025 | -- First_Component (synthesized) | |
1026 | -- Applies to record types. Returns the first component by following | |
1027 | -- the chain of declared entities for the record until a component | |
1028 | -- is found (one with an Ekind of E_Component). The discriminants are | |
1029 | -- skipped. If the record is null, then Empty is returned. | |
1030 | ||
1031 | -- First_Discriminant (synthesized) | |
1032 | -- Applies to types with discriminants. The discriminants are the | |
1033 | -- first entities declared in the type, so normally this is equivalent | |
1034 | -- to First_Entity. The exception arises for tagged types, where the | |
1035 | -- tag itself is prepended to the front of the entity chain, so the | |
1036 | -- First_Discriminant function steps past the tag if it is present. | |
1037 | ||
70482933 RK |
1038 | -- First_Entity (Node17) |
1039 | -- Present in all entities which act as scopes to which a list of | |
1040 | -- associated entities is attached (blocks, class subtypes and types, | |
1041 | -- entries, functions, loops, packages, procedures, protected objects, | |
1042 | -- record types and subtypes, private types, task types and subtypes). | |
1043 | -- Points to a list of associated entities using the Next_Entity field | |
1044 | -- as a chain pointer with Empty marking the end of the list. | |
1045 | ||
1046 | -- First_Formal (synthesized) | |
1047 | -- Applies to subprograms and subprogram types, and also in entries | |
1048 | -- and entry families. Returns first formal of the subprogram or entry. | |
1049 | -- The formals are the first entities declared in a subprogram or in | |
1050 | -- a subprogram type (the designated type of an Access_To_Subprogram | |
1051 | -- definition) or in an entry. | |
1052 | ||
1053 | -- First_Index (Node17) | |
1054 | -- Present in array types and subtypes and in string types and subtypes. | |
1055 | -- By introducing implicit subtypes for the index constraints, we have | |
1056 | -- the same structure for constrained and unconstrained arrays, subtype | |
1057 | -- marks and discrete ranges are both represented by a subtype. This | |
1058 | -- function returns the tree node corresponding to an occurrence of the | |
1059 | -- first index (NOT the entity for the type). Subsequent indexes are | |
1060 | -- obtained using Next_Index. Note that this field is present for the | |
1061 | -- case of string literal subtypes, but is always Empty. | |
1062 | ||
1063 | -- First_Literal (Node17) | |
1064 | -- Present in all enumeration types, including character and boolean | |
1065 | -- types. This field points to the first enumeration literal entity | |
1066 | -- for the type (i.e. it is set to First (Literals (N)) where N is | |
1067 | -- the enumeration type definition node. A special case occurs with | |
1068 | -- standard character and wide character types, where this field is | |
1069 | -- Empty, since there are no enumeration literal lists in these cases. | |
fbf5a39b AC |
1070 | -- Note that this field is set in enumeration subtypes, but it still |
1071 | -- points to the first literal of the base type in this case. | |
70482933 RK |
1072 | |
1073 | -- First_Optional_Parameter (Node14) | |
1074 | -- Present in (non-generic) function and procedure entities. Set to a | |
1075 | -- non-null value only if a pragma Import_Function, Import_Procedure | |
1076 | -- or Import_Valued_Procedure specifies a First_Optional_Parameter | |
1077 | -- argument, in which case this field points to the parameter entity | |
1078 | -- corresponding to the specified parameter. | |
1079 | ||
1080 | -- First_Private_Entity (Node16) | |
1081 | -- Present in all entities containing private parts (packages, | |
1082 | -- protected types and subtypes, task types and subtypes). The | |
1083 | -- entities on the entity chain are in order of declaration, so the | |
1084 | -- entries for private entities are at the end of the chain. This | |
1085 | -- field points to the first entity for the private part. It is | |
1086 | -- Empty if there are no entities declared in the private part or | |
1087 | -- if there is no private part. | |
1088 | ||
1089 | -- First_Rep_Item (Node6) | |
1090 | -- Present in all entities. If non-empty, points to a linked list of | |
1091 | -- representation pragmas nodes and representation clause nodes that | |
1092 | -- apply to the entity, linked using Next_Rep_Item, with Empty marking | |
1093 | -- the end of the list. In the case of derived types and subtypes, the | |
1094 | -- new entity inherits the chain at the point of declaration. This | |
1095 | -- means that it is possible to have multiple instances of the same | |
1096 | -- kind of rep item on the chain, in which case it is the first one | |
1097 | -- that applies to the entity. | |
1098 | -- | |
1099 | -- For most representation items, the representation information is | |
1100 | -- reflected in other fields and flags in the entity. For example if | |
1101 | -- a record representation clause is present, the component entities | |
1102 | -- reflect the specified information. However, there are some items | |
1103 | -- that are only reflected in the chain. These include: | |
1104 | -- | |
1105 | -- Alignment attribute definition clause | |
1106 | -- Machine_Attribute pragma | |
1107 | -- Link_Alias pragma | |
1108 | -- Link-Section pragma | |
1109 | -- Weak_External pragma | |
1110 | -- | |
1111 | -- If any of these items are present, then the flag Has_Gigi_Rep_Item | |
1112 | -- is set, indicating that Gigi should search the chain. | |
1113 | -- | |
1114 | -- Other representation items are included in the chain so that error | |
1115 | -- messages can easily locate the relevant nodes for posting errors. | |
1116 | -- Note in particular that size clauses are present only for this | |
1117 | -- purpose, and should only be accessed if Has_Size_Clause is set. | |
1118 | ||
fbf5a39b AC |
1119 | -- First_Stored_Discriminant (synthesized) |
1120 | -- Applies to types with discriminants. Gives the first discriminant | |
1121 | -- stored in the object. In many cases, these are the same as the | |
1122 | -- normal visible discriminants for the type, but in the case of | |
1123 | -- renamed discriminants, this is not always the case. | |
1124 | -- | |
1125 | -- For tagged types, and untagged types which are root types or | |
1126 | -- derived types but which do not rename discriminants in their | |
1127 | -- root type, the stored discriminants are the same as the actual | |
1128 | -- discriminants of the type, and hence this function is the same | |
1129 | -- as First_Discriminant. | |
1130 | -- | |
1131 | -- For derived non-tagged types that rename discriminants in the root | |
1132 | -- type this is the first of the discriminants that occurr in the | |
1133 | -- root type. To be precise, in this case stored discriminants are | |
1134 | -- entities attached to the entity chain of the derived type which | |
1135 | -- are a copy of the discriminants of the root type. Furthermore their | |
1136 | -- Is_Completely_Hidden flag is set since although they are actually | |
1137 | -- stored in the object, they are not in the set of discriminants that | |
1138 | -- is visble in the type. | |
1139 | -- | |
1140 | -- For derived untagged types, stored discriminants are the real | |
1141 | -- discriminants from Gigi's standpoint, i.e. those that will be | |
1142 | -- stored in actual objects of the type. | |
1143 | ||
70482933 RK |
1144 | -- First_Subtype (synthesized) |
1145 | -- Applies to all types and subtypes. For types, yields the first | |
1146 | -- subtype of the type. For subtypes, yields the first subtype of | |
1147 | -- the base type of the subtype. | |
1148 | ||
1149 | -- Freeze_Node (Node7) | |
1150 | -- Present in all entities. If there is an associated freeze node for | |
1151 | -- the entity, this field references this freeze node. If no freeze | |
1152 | -- node is associated with the entity, then this field is Empty. See | |
1153 | -- package Freeze for further details. | |
1154 | ||
1155 | -- From_With_Type (Flag159) | |
1156 | -- Present in package and type entities. Indicates that the entity | |
1157 | -- appears in a With_Type clause in the context of some other unit, | |
1158 | -- either as the prefix (which must be a package), or as a type name. | |
1159 | -- The package can only be used to retrieve such a type, and the type | |
1160 | -- can be used only in component declarations and access definitions. | |
1161 | -- The With_Type clause is used to construct mutually recursive | |
1162 | -- types, i.e. record types (Java classes) that hold pointers to each | |
1163 | -- other. If such a type is an access type, it has no explicit freeze | |
1164 | -- node, so that the back-end does not attempt to elaborate it. | |
1165 | ||
1166 | -- Full_View (Node11) | |
1167 | -- Present in all type and subtype entities and in deferred constants. | |
1168 | -- References the entity for the corresponding full type declaration. | |
1169 | -- For all types other than private and incomplete types, this field | |
1170 | -- always contains Empty. See also Underlying_Type. | |
1171 | ||
1172 | -- Function_Returns_With_DSP (Flag169) | |
1173 | -- Present in all subprogram entities, and type entities for access | |
1174 | -- to subprogram values. Set True if the function (or referenced | |
1175 | -- function in the case of an access value) returns with using the | |
1176 | -- DSP (depressed stack pointer) approach. This can only be set | |
1177 | -- True if Targparm.Functions_Return_By_DSP_On_Target is True and | |
1178 | -- the function returns a value of a type whose size is not known | |
1179 | -- at compile time. | |
1180 | ||
fbf5a39b AC |
1181 | -- Generic_Homonym (Node11) |
1182 | -- Present in generic packages. The generic homonym is the entity of | |
1183 | -- a renaming declaration inserted in every generic unit. It is used | |
1184 | -- to resolve the name of a local entity that is given by a qualified | |
1185 | -- name, when the generic entity itself is hidden by a local name. | |
1186 | ||
70482933 RK |
1187 | -- Generic_Renamings (Elist23) |
1188 | -- Present in package and subprogram instances. Holds mapping that | |
1189 | -- associates generic parameters with the corresponding instances, in | |
1190 | -- those cases where the instance is an entity. | |
1191 | ||
70482933 RK |
1192 | -- Handler_Records (List10) |
1193 | -- Present in subprogram and package entities. Points to a list of | |
1194 | -- identifiers referencing the handler record entities for the | |
1195 | -- corresponding unit. | |
1196 | ||
1197 | -- Has_Aliased_Components (Flag135) [implementation base type only] | |
1198 | -- Present in array type entities. Indicates that the component type | |
1199 | -- of the array is aliased. | |
1200 | ||
1201 | -- Has_Alignment_Clause (Flag46) | |
1202 | -- Present in all type entities and objects. Indicates if an alignment | |
1203 | -- clause has been given for the entity. If set, then Alignment_Clause | |
1204 | -- returns the N_Attribute_Definition node for the alignment attribute | |
1205 | -- definition clause. Note that it is possible for this flag to be False | |
1206 | -- even when Alignment_Clause returns non_Empty (this happens in the case | |
1207 | -- of derived type declarations). | |
1208 | ||
1209 | -- Has_All_Calls_Remote (Flag79) | |
1210 | -- Present in all library unit entities. Set true if the library unit | |
1211 | -- has an All_Calls_Remote pragma. Note that such entities must also | |
1212 | -- be RCI entities, so the flag Is_Remote_Call_Interface will always | |
1213 | -- be set if this flag is set. | |
1214 | ||
1215 | -- Has_Atomic_Components (Flag86) [implementation base type only] | |
1216 | -- Present in all types and objects. Set only for an array type or | |
1217 | -- an array object if a valid pragma Atomic_Components applies to the | |
1218 | -- type or object. Note that in the case of an object, this flag is | |
1219 | -- only set on the object if there was an explicit pragma for the | |
1220 | -- object. In other words, the proper test for whether an object has | |
1221 | -- atomic components is to see if either the object or its base type | |
1222 | -- has this flag set. Note that in the case of a type, the pragma will | |
1223 | -- be chained to the rep item chain of the first subtype in the usual | |
1224 | -- manner. | |
1225 | ||
1226 | -- Has_Attach_Handler (synthesized) | |
1227 | -- Applies to record types that are constructed by the expander to | |
1228 | -- represent protected types. Returns True if there is at least one | |
1229 | -- Attach_Handler pragma in the corresponding specification. | |
1230 | ||
1231 | -- Has_Biased_Representation (Flag139) | |
1232 | -- Present in discrete types (where it applies to the type'size value), | |
1233 | -- and to objects (both stand-alone and components), where it applies to | |
1234 | -- the size of the object from a size or record component clause. In | |
1235 | -- all cases it indicates that the size in question is smaller than | |
1236 | -- would normally be required, but that the size requirement can be | |
1237 | -- satisfied by using a biased representation, in which stored values | |
1238 | -- have the low bound (Expr_Value (Type_Low_Bound (T)) subtracted to | |
1239 | -- reduce the required size. For example, a type with a range of 1..2 | |
1240 | -- takes one bit, using 0 to represent 1 and 1 to represent 2. | |
1241 | -- | |
1242 | -- Note that in the object and component cases, the flag is only set | |
1243 | -- if the type is unbiased, but the object specifies a smaller size | |
1244 | -- than the size of the type, forcing biased representation for the | |
1245 | -- object, but the subtype is still an unbiased type. | |
1246 | ||
1247 | -- Has_Completion (Flag26) | |
1248 | -- Present in all entities that require a completion (functions, | |
1249 | -- procedures, private types, limited private types, incomplete types, | |
1250 | -- and packages that require a body). Set if the completion has been | |
1251 | -- encountered and analyzed. | |
1252 | ||
1253 | -- Has_Completion_In_Body (Flag71) | |
1254 | -- Present in "Taft amendment types" that is to say incomplete types | |
1255 | -- whose full declaration appears in the package body. | |
1256 | ||
1257 | -- Has_Complex_Representation (Flag140) [implementation base type only] | |
1258 | -- Present in all type entities. Set only for a record base type to | |
1259 | -- which a valid pragma Complex_Representation applies. | |
1260 | ||
1261 | -- Has_Component_Size_Clause (Flag68) [implementation base type only] | |
1262 | -- Present in all type entities. Set if a component size clause is | |
1263 | -- present for the given type. Note that this flag can be False even | |
1264 | -- if Component_Size is non-zero (happens in the case of derived types). | |
1265 | ||
fbf5a39b AC |
1266 | -- Has_Contiguous_Rep (Flag181) |
1267 | -- Present in enumeration types. True if the type as a representation | |
1268 | -- clause whose entries are successive integers. | |
1269 | ||
70482933 RK |
1270 | -- Has_Controlling_Result (Flag98) |
1271 | -- Present in E_Function entities. True if The function is a primitive | |
1272 | -- function of a tagged type which can dispatch on result | |
1273 | ||
1274 | -- Has_Controlled_Component (Flag43) [base type only] | |
1275 | -- Present in composite type entities. Indicates that the type has a | |
1276 | -- component that either is a controlled type, or itself contains a | |
1277 | -- controlled component (i.e. either Has_Controlled_Component or | |
1278 | -- Is_Controlled is set for at least one component). | |
1279 | ||
1280 | -- Has_Convention_Pragma (Flag119) | |
1281 | -- Present in an entity for which a Convention, Import, or Export | |
1282 | -- pragma has been given. Used to prevent more than one such pragma | |
1283 | -- appearing for a given entity (RM B.1(45)). | |
1284 | ||
1285 | -- Has_Delayed_Freeze (Flag18) | |
1286 | -- Present in all entities. Set to indicate that an explicit freeze | |
1287 | -- node must be generated for the entity at its freezing point. See | |
1288 | -- separate section ("Delayed Freezing and Elaboration") for details. | |
1289 | ||
1290 | -- Has_Discriminants (Flag5) | |
1291 | -- Present in all types and subtypes. For types that are allowed to have | |
1292 | -- discriminants (record types and subtypes, task types and subtypes, | |
1293 | -- protected types and subtypes, private types, limited private types, | |
1294 | -- and incomplete types), indicates if the corresponding type or subtype | |
1295 | -- has a known discriminant part. Always false for all other types. | |
1296 | ||
1297 | -- Has_Entries (synthesized) | |
1298 | -- Applies to concurrent types. True if any entries are declared | |
1299 | -- within the task or protected definition for the type. | |
1300 | ||
1301 | -- Has_Enumeration_Rep_Clause (Flag66) | |
1302 | -- Present in enumeration types. Set if an enumeration representation | |
1303 | -- clause has been given for this enumeration type. Used to prevent more | |
1304 | -- than one enumeration representation clause for a given type. Note | |
1305 | -- that this does not imply a representation with holes, since the rep | |
1306 | -- clause may merely confirm the default 0..N representation. | |
1307 | ||
1308 | -- Has_External_Tag_Rep_Clause (Flag110) | |
1309 | -- Present in tagged types. Set if an external_tag rep. clause has been | |
1310 | -- given for this type. Use to avoid the generation of the default | |
1311 | -- external_tag. | |
1312 | ||
1313 | -- Has_Exit (Flag47) | |
1314 | -- Present in loop entities. Set if the loop contains an exit statement. | |
1315 | ||
1316 | -- Has_Foreign_Convention (synthesized) | |
1317 | -- Applies to all entities. Determines if the Convention for the | |
1318 | -- entity is a foreign convention (i.e. is other than Convention_Ada, | |
1319 | -- Convention_Intrinsic, Convention_Entry or Convention_Protected). | |
1320 | ||
1321 | -- Has_Forward_Instantiation (Flag175) | |
1322 | -- Present in package entities. Set true for packages that contain | |
1323 | -- instantiations of local generic entities, before the corresponding | |
1324 | -- generic body has been seen. If a package has a forward instantiation, | |
1325 | -- we cannot inline subprograms appearing in the same package because | |
1326 | -- the placement requirements of the instance will conflict with the | |
1327 | -- linear elaboration of front-end inlining. | |
1328 | ||
1329 | -- Has_Fully_Qualified_Name (Flag173) | |
1330 | -- Present in all entities. Set True if the name in the Chars field | |
1331 | -- has been replaced by the fully qualified name, as used for debug | |
1332 | -- output. See Exp_Dbug for a full description of the use of this | |
1333 | -- flag and also the related flag Has_Qualified_Name. | |
1334 | ||
1335 | -- Has_Gigi_Rep_Item (Flag82) | |
1336 | -- This flag is set if the rep item chain (referenced by First_Rep_Item | |
1337 | -- and linked through the Next_Rep_Item chain contains a representation | |
1338 | -- item that needs to be specially processed by Gigi, i.e. one of the | |
1339 | -- following items: | |
1340 | -- | |
1341 | -- Machine_Attribute pragma | |
1342 | -- Linker_Alias pragma | |
1343 | -- Linker_Section pragma | |
1344 | -- Weak_External pragma | |
1345 | -- | |
1346 | -- If this flag is set, then Gigi should scan the rep item chain to | |
1347 | -- process any of these items that appear. At least one such item will | |
1348 | -- be present. | |
1349 | ||
1350 | -- Has_Homonym (Flag56) | |
1351 | -- Present in all entities. Set if an entity has a homonym in the same | |
1352 | -- scope. Used by Gigi to generate unique names for such entities. | |
1353 | ||
1354 | -- Has_Interrupt_Handler (synthesized) | |
fbf5a39b | 1355 | -- Applies to all protected type entities. Set if the protected type |
70482933 RK |
1356 | -- definition contains at least one procedure to which a pragma |
1357 | -- Interrupt_Handler applies. | |
1358 | ||
1359 | -- Has_Machine_Radix_Clause (Flag83) | |
1360 | -- Present in decimal types and subtypes, set if a Machine_Radix | |
1361 | -- representation clause is present. This flag is used to detect | |
1362 | -- the error of multiple machine radix clauses for a single type. | |
1363 | ||
1364 | -- Has_Master_Entity (Flag21) | |
1365 | -- Present in entities that can appear in the scope stack (see spec | |
1366 | -- of Sem). It is set if a task master entity (_master) has been | |
1367 | -- declared and initialized in the corresponding scope. | |
1368 | ||
1369 | -- Has_Missing_Return (Flag142) | |
1370 | -- Present in functions and generic functions. Set if there is one or | |
1371 | -- more missing return statements in the function. This is used to | |
1372 | -- control wrapping of the body in Exp_Ch6 to ensure that the program | |
1373 | -- error exeption is correctly raised in this case at runtime. | |
1374 | ||
1375 | -- Has_Nested_Block_With_Handler (Flag101) | |
1376 | -- Present in scope entities. Set if there is a nested block within the | |
1377 | -- scope that has an exception handler and the two scopes are in the | |
1378 | -- same procedure. This is used by the backend for controlling certain | |
1379 | -- optimizations to ensure that they are consistent with exceptions. | |
1380 | -- See documentation in Gigi for further details. | |
1381 | ||
1382 | -- Has_Non_Standard_Rep (Flag75) [implementation base type only] | |
1383 | -- Present in all type entities. Set when some representation clause | |
1384 | -- or pragma causes the representation of the item to be significantly | |
1385 | -- modified. In this category are changes of small or radix for a | |
1386 | -- fixed-point type, change of component size for an array, and record | |
1387 | -- or enumeration representation clauses, as well as packed pragmas. | |
1388 | -- All other representation clauses (e.g. Size and Alignment clauses) | |
1389 | -- are not considered to be significant since they do not affect | |
1390 | -- stored bit patterns. | |
1391 | ||
1392 | -- Has_Object_Size_Clause (Flag172) | |
1393 | -- Present in entities for types and subtypes. Set if an Object_Size | |
1394 | -- clause has been processed for the type Used to prevent multiple | |
1395 | -- Object_Size clauses for a given entity. | |
1396 | ||
1397 | -- Has_Per_Object_Constraint (Flag154) | |
1398 | -- Present in E_Component entities, true if the subtype of the | |
1399 | -- component has a per object constraint, i.e. an actual discriminant | |
1400 | -- value of the form T'Access, where T is the enclosing type. | |
1401 | ||
1402 | -- Has_Pragma_Controlled (Flag27) [implementation base type only] | |
1403 | -- Present in access type entities. It is set if a pragma Controlled | |
1404 | -- applies to the access type. | |
1405 | ||
1406 | -- Has_Pragma_Elaborate_Body (Flag150) | |
1407 | -- Present in all entities. Set in compilation unit entities if a | |
1408 | -- pragma Elaborate_Body applies to the compilation unit. | |
1409 | ||
1410 | -- Has_Pragma_Inline (Flag157) | |
1411 | -- Present in all entities. Set for functions and procedures for which | |
1412 | -- a pragma Inline or Inline_Always applies to the subprogram. Note | |
fbf5a39b AC |
1413 | -- that this flag can be set even if Is_Inlined is not set. This |
1414 | -- happens for pragma Inline (if Inline_Active is False). In other | |
1415 | -- words, the flag Has_Pragma_Inline represents the formal semantic | |
1416 | -- status, and is used for checking semantic correctness. | |
70482933 RK |
1417 | -- The flag Is_Inlined indicates whether inlining is actually active |
1418 | -- for the entity. | |
1419 | ||
1420 | -- Has_Pragma_Pack (Flag121) [implementation base type only] | |
1421 | -- Present in all entities. It indicates that a valid pragma Pack was | |
1422 | -- was given for the type. Note that this flag is not inherited by a | |
1423 | -- derived type. See also the Is_Packed flag. | |
1424 | ||
0839863c GB |
1425 | -- Has_Pragma_Pure_Function (Flag179) |
1426 | -- Present in subprogram entities. It indicates that a valid pragma | |
1427 | -- Pure_Function was given for the entity. In some cases, we need to | |
1428 | -- know that Is_Pure was explicitly set using this pragma. | |
1429 | ||
07fc65c4 GB |
1430 | -- Has_Pragma_Unreferenced (Flag180) |
1431 | -- Present in all entities. Set if a valid pragma Unreferenced applies | |
1432 | -- to the pragma, indicating that no warning should be given if the | |
1433 | -- entity has no references, but a warning should be given if it is | |
1434 | -- in fact referenced. | |
1435 | ||
70482933 RK |
1436 | -- Has_Primitive_Operations (Flag120) [base type only] |
1437 | -- Present in all type entities. Set if at least one primitive operation | |
07fc65c4 | 1438 | -- is defined for the type. |
70482933 RK |
1439 | |
1440 | -- Has_Private_Ancestor (synthesized) | |
1441 | -- Applies to all type and subtype entities. Returns True if at least | |
1442 | -- one ancestor is private, and otherwise False if there are no private | |
1443 | -- ancestors. | |
1444 | ||
1445 | -- Has_Private_Declaration (Flag155) | |
1446 | -- Present in all entities. Returns True if it is the defining entity | |
1447 | -- of a private type declaration or its corresponding full declaration. | |
1448 | -- This flag is thus preserved when the full and the partial views are | |
1449 | -- exchanged, to indicate if a full type declaration is a completion. | |
1450 | -- Used for semantic checks in E.4 (18), and elsewhere. | |
1451 | ||
1452 | -- Has_Qualified_Name (Flag161) | |
1453 | -- Present in all entities. Set True if the name in the Chars field | |
1454 | -- has been replaced by its qualified name, as used for debug output. | |
1455 | -- See Exp_Dbug for a full description of qualification requirements. | |
1456 | -- For some entities, the name is the fully qualified name, but there | |
1457 | -- are exceptions. In particular, for local variables in procedures, | |
1458 | -- we do not include the procedure itself or higher scopes. See also | |
1459 | -- the flag Has_Fully_Qualified_Name, which is set if the name does | |
1460 | -- indeed include the fully qualified name. | |
1461 | ||
07fc65c4 | 1462 | -- Has_Record_Rep_Clause (Flag65) [implementation base type only] |
70482933 RK |
1463 | -- Present in record types. Set if a record representation clause has |
1464 | -- been given for this record type. Used to prevent more than one such | |
1465 | -- clause for a given record type. Note that this is initially cleared | |
1466 | -- for a derived type, even though the representation is inherited. See | |
1467 | -- also the flag Has_Specified_Layout. | |
1468 | ||
1469 | -- Has_Recursive_Call (Flag143) | |
1470 | -- Present in procedures. Set if a direct parameterless recursive call | |
1471 | -- is detected while analyzing the body. Used to activate some error | |
1472 | -- checks for infinite recursion. | |
1473 | ||
1474 | -- Has_Size_Clause (Flag29) | |
1475 | -- Present in entities for types and objects. Set if a size clause is | |
1476 | -- present for the entity. Used to prevent multiple Size clauses for a | |
1477 | -- given entity. Note that it is always initially cleared for a derived | |
1478 | -- type, even though the Size for such a type is inherited from a Size | |
1479 | -- clause given for the parent type. | |
1480 | ||
1481 | -- Has_Small_Clause (Flag67) | |
1482 | -- Present in ordinary fixed point types (but not subtypes). Indicates | |
1483 | -- that a small clause has been given for the entity. Used to prevent | |
1484 | -- multiple Small clauses for a given entity. Note that it is always | |
1485 | -- initially cleared for a derived type, even though the Small for such | |
1486 | -- a type is inherited from a Small clause given for the parent type. | |
1487 | ||
07fc65c4 | 1488 | -- Has_Specified_Layout (Flag100) [implementation base type only] |
70482933 RK |
1489 | -- Present in all type entities. Set for a record type or subtype if |
1490 | -- the record layout has been specified by a record representation | |
1491 | -- clause. Note that this differs from the flag Has_Record_Rep_Clause | |
1492 | -- in that it is inherited by a derived type. Has_Record_Rep_Clause is | |
1493 | -- used to indicate that the type is mentioned explicitly in a record | |
1494 | -- representation clause, and thus is not inherited by a derived type. | |
1495 | -- This flag is always False for non-record types. | |
1496 | ||
1497 | -- Has_Storage_Size_Clause (Flag23) [implementation base type only] | |
1498 | -- Present in task types and access types. It is set if a Storage_Size | |
1499 | -- clause is present for the type. Used to prevent multiple clauses for | |
1500 | -- one type. Note that this flag is initially cleared for a derived type | |
1501 | -- even though the Storage_Size for such a type is inherited from a | |
1502 | -- Storage_Size clause given for the parent type. Note that in the case | |
1503 | -- of access types, this flag is present only in the root type, since a | |
1504 | -- storage size clause cannot be given to a derived type. | |
1505 | ||
1506 | -- Has_Subprogram_Descriptor (Flag93) | |
1507 | -- This flag is set on entities for which zero-cost exception subprogram | |
1508 | -- descriptors can be generated (subprograms and library level package | |
1509 | -- declarations and bodies). It indicates that a subprogram descriptor | |
1510 | -- has been generated, and is used to suppress generation of multiple | |
1511 | -- descriptors (e.g. when instantiating generic bodies). | |
1512 | ||
1513 | -- Has_Task (Flag30) [base type only] | |
1514 | -- Present in all type entities. Set on task types themselves, and also | |
1515 | -- (recursively) on any composite type which has a component for which | |
1516 | -- Has_Task is set. The meaning is that an allocator of such an object | |
1517 | -- must create the required tasks. Note that the flag is not set on | |
1518 | -- access types, even if they designate an object that Has_Task. | |
1519 | ||
1520 | -- Has_Unchecked_Union (Flag123) [base type only] | |
1521 | -- Present in all type entities. Set on unchecked unions themselves | |
1522 | -- and (recursively) on any composite type which has a component for | |
1523 | -- which Has_Unchecked_Union is set. The meaning is that a comparison | |
1524 | -- operation for the type is not permitted. Note that the flag is not | |
1525 | -- set on access types, even if they designate an object that has | |
1526 | -- the flag Has_Unchecked_Union set. | |
1527 | ||
1528 | -- Has_Unknown_Discriminants (Flag72) | |
1529 | -- Present in all type entities. Types can have unknown discriminants | |
1530 | -- either from their declaration or through type derivation. The use | |
1531 | -- of this flag exactly meets the spec in RM 3.7(26). Note that all | |
1532 | -- class-wide types are considered to have unknown discriminants. | |
1533 | ||
1534 | -- Has_Volatile_Components (Flag87) [implementation base type only] | |
1535 | -- Present in all types and objects. Set only for an array type or | |
1536 | -- array object if a valid pragma Volatile_Components or a valid | |
1537 | -- pragma Atomic_Components applies to the type or object. Note that | |
1538 | -- in the case of an object, this flag is only set on the object if | |
1539 | -- there was an explicit pragma for the object. In other words, the | |
1540 | -- proper test for whether an object has volatile components is to | |
1541 | -- see if either the object or its base type has this flag set. Note | |
1542 | -- that in the case of a type the pragma will be chained to the rep | |
1543 | -- item chain of the first subtype in the usual manner. | |
1544 | ||
fbf5a39b AC |
1545 | -- Has_Xref_Entry (Flag182) |
1546 | -- This flag is set if an entity has an entry in the Xref information | |
1547 | -- generated in ali files. This is true for all source entities in the | |
1548 | -- extended main source file. It is also true of entities in other | |
1549 | -- packages that are referenced directly or indirectly from the main | |
1550 | -- source file (indirect reference occurs when the main source file | |
1551 | -- references an entity with a type reference. See package Lib.Xref | |
1552 | -- for further details). | |
1553 | ||
70482933 RK |
1554 | -- Hiding_Loop_Variable (Node8) |
1555 | -- Present in variables. Set only if a variable of a discrete type is | |
1556 | -- hidden by a loop variable in the same local scope, in which case | |
1557 | -- the Hiding_Loop_Variable field of the hidden variable points to | |
fbf5a39b | 1558 | -- the E_Loop_Parameter entity doing the hiding. Used in processing |
70482933 RK |
1559 | -- warning messages if the hidden variable turns out to be unused |
1560 | -- or is referenced without being set. | |
1561 | ||
1562 | -- Homonym (Node4) | |
1563 | -- Present in all entities. Link for list of entities that have the | |
1564 | -- same source name and that are declared in the same or enclosing | |
1565 | -- scopes. Homonyms in the same scope are overloaded. Used for name | |
1566 | -- resolution and for the generation of debugging information. | |
1567 | ||
1568 | -- Implementation_Base_Type (synthesized) | |
1569 | -- Applies to all types. Similar to Base_Type, but never returns a | |
1570 | -- private type when applied to a non-private type. Instead in this | |
1571 | -- case, it always returns the Representation_Type of the base type | |
1572 | -- in this case, so that we still have a concrete type. Note: it is | |
1573 | -- allowed to apply Implementation_Base_Type to other than a type, | |
1574 | -- in which case it simply returns the entity unchanged. | |
1575 | ||
1576 | -- In_Package_Body (Flag48) | |
1577 | -- Set on the entity that denotes the package (the defining occurrence | |
1578 | -- of the package declaration) while analyzing and expanding the package | |
1579 | -- body. Reset on completion of analysis/expansion. | |
1580 | ||
1581 | -- In_Private_Part (Flag45) | |
1582 | -- Present in package entities. Flag is set to indicate that the | |
1583 | -- private part is being analyzed. The flag is reset at the end of the | |
1584 | -- package declaration. | |
1585 | ||
1586 | -- Inner_Instances (Elist23) | |
1587 | -- Present in generic units. Contains element list of units that are | |
1588 | -- instantiated within the given generic. Used to diagnose circular | |
1589 | -- instantiations. | |
1590 | ||
1591 | -- Interface_Name (Node21) | |
1592 | -- Present in exceptions, functions, procedures, variables, constants, | |
1593 | -- and packages. Set to Empty unless an export, import, or interface | |
1594 | -- name pragma has explicitly specified an external name, in which | |
1595 | -- case it references an N_String_Literal node for the specified | |
1596 | -- exteral name. In the case of exceptions, the field is set by | |
1597 | -- Import_Exception/Export_Exception (which can be used in OpenVMS | |
1598 | -- versions only). Note that if this field is Empty, and Is_Imported | |
1599 | -- or Is_Exported is set, then the default interface name is the name | |
1600 | -- of the entity, cased in a manner that is appropriate to the system | |
1601 | -- in use. Note that Interface_Name is ignored if an address clause | |
1602 | -- is present (since it is meaningless in this case). | |
1603 | -- | |
1604 | -- An additional special case usage of this field is in JGNAT for | |
1605 | -- E_Component and E_Discriminant. JGNAT allows these entities to | |
1606 | -- be imported by specifying pragma Import within a component's | |
1607 | -- containing record definition. This supports interfacing to | |
1608 | -- object fields defined within Java classes, and such pragmas | |
1609 | -- are generated by the jvm2ada binding generator tool whenever | |
1610 | -- it processes classes with public object fields. A pragma Import | |
1611 | -- for a component can define the External_Name of the imported | |
1612 | -- Java field (which is generally needed, because Java names are | |
1613 | -- case sensitive). | |
1614 | -- | |
1615 | -- In_Use (Flag8) | |
1616 | -- Present in packages and types. Set when analyzing a use clause for | |
1617 | -- the corresponding entity. Reset at end of corresponding declarative | |
1618 | -- part. The flag on a type is also used to determine the visibility of | |
1619 | -- the primitive operators of the type. | |
1620 | ||
1621 | -- Is_Abstract (Flag19) | |
1622 | -- Present in all types, and also for functions and procedures. Set | |
1623 | -- for abstract types and abstract subprograms. | |
1624 | ||
1625 | -- Is_Access_Constant (Flag69) | |
1626 | -- Present in access types and subtypes. Indicates that the keyword | |
1627 | -- constant was present in the access type definition. | |
1628 | ||
1629 | -- Is_Access_Type (synthesized) | |
1630 | -- Applies to all entities, true for access types and subtypes | |
1631 | ||
1632 | -- Is_Aliased (Flag15) | |
1633 | -- Present in objects whose declarations carry the keyword aliased, | |
1634 | -- and on record components that have the keyword. | |
1635 | ||
1636 | -- Is_Always_Inlined (synthesized) | |
1637 | -- Present in subprograms. True if there is a pragma Inline_Always for | |
1638 | -- the subprogram. | |
1639 | ||
1640 | -- Is_AST_Entry (Flag132) | |
1641 | -- Present in entry entities. Set if a valid pragma AST_Entry applies | |
1642 | -- to the entry. This flag can only be set in OpenVMS versions of GNAT. | |
1643 | -- Note: we also allow the flag to appear in entry families, but given | |
1644 | -- the current implementation of the pragma AST_Entry, this flag will | |
1645 | -- always be False in entry families. | |
1646 | ||
1647 | -- Is_Atomic (Flag85) | |
1648 | -- Present in all type entities, and also in constants, components and | |
1649 | -- variables. Set if a pragma Atomic or Shared applies to the entity. | |
1650 | -- In the case of private and incomplete types, this flag is set in | |
1651 | -- both the partial view and the full view. | |
1652 | ||
1653 | -- Is_Array_Type (synthesized) | |
1654 | -- Applies to all entities, true for array types and subtypes | |
1655 | ||
1656 | -- Is_Asynchronous (Flag81) | |
1657 | -- Present in all type entities and in procedure entities. Set | |
1658 | -- if a pragma Asynchronous applies to the entity. | |
1659 | ||
07fc65c4 | 1660 | -- Is_Bit_Packed_Array (Flag122) [implementation base type only] |
70482933 RK |
1661 | -- Present in all entities. This flag is set for a packed array |
1662 | -- type that is bit packed (i.e. the component size is known by the | |
1663 | -- front end and is in the range 1-7, 9-15, or 17-31). Is_Packed is | |
1664 | -- always set if Is_Bit_Packed_Array is set, but it is possible for | |
1665 | -- Is_Packed to be set without Is_Bit_Packed_Array or the case of an | |
1666 | -- array having one or more index types that are enumeration types | |
1667 | -- with non-standard enumeration representations. | |
1668 | ||
1669 | -- Is_Boolean_Type (synthesized) | |
1670 | -- Applies to all entities, true for boolean types and subtypes, | |
1671 | -- i.e. Standard.Boolean and all types ultimately derived from it. | |
1672 | ||
1673 | -- Is_By_Copy_Type (synthesized) | |
1674 | -- Applies to all type entities. Returns true if the entity is | |
1675 | -- a by copy type (RM 6.2(3)). | |
1676 | ||
1677 | -- Is_By_Reference_Type (synthesized) | |
1678 | -- Applies to all type entities. True if the type is required to | |
1679 | -- be passed by reference, as defined in (RM 6.2(4-9)). | |
1680 | ||
1681 | -- Is_Called (Flag102) | |
1682 | -- Present in subprograms. Returns true if the subprogram is called | |
1683 | -- in the unit being compiled or in a unit in the context. Used for | |
1684 | -- inlining. | |
1685 | ||
1686 | -- Is_Character_Type (Flag63) | |
1687 | -- Present in all entities, true for character types and subtypes, | |
1688 | -- i.e. enumeration types that have at least one character literal. | |
1689 | ||
1690 | -- Is_Child_Unit (Flag73) | |
1691 | -- Present in all entities. Set only for defining entities of program | |
1692 | -- units that are child units (but False for subunits). | |
1693 | ||
1694 | -- Is_Class_Wide_Type (synthesized) | |
1695 | -- Applies to all entities, true for class wide types and subtypes | |
1696 | ||
fbf5a39b AC |
1697 | -- Is_Class_Wide_Equivalent_Type (Flag35) |
1698 | -- Present in record types and subtypes. Set to True, if the type acts | |
1699 | -- as a class-wide equivalent type, i.e. the Equivalent_Type field of | |
1700 | -- some class-wide subtype entity references this record type. | |
1701 | ||
70482933 RK |
1702 | -- Is_Compilation_Unit (Flag149) |
1703 | -- Present in all entities. Set if the entity is a package or subprogram | |
1704 | -- entity for a compilation unit other than a subunit (since we treat | |
1705 | -- subunits as part of the same compilation operation as the ultimate | |
1706 | -- parent, we do not consider them to be separate units for this flag). | |
1707 | ||
1708 | -- Is_Completely_Hidden (Flag103) | |
1709 | -- A flag set on an E_Discriminant entity. This flag can be set only | |
1710 | -- for girder discriminants of untagged types. When set, the entity | |
1711 | -- is a girder discriminant of a derived untagged type which is not | |
1712 | -- directly visible in the derived type because the derived type or | |
1713 | -- one of its ancestors have renamed the discriminants in the root | |
1714 | -- type. Note that there are girder discriminants which are not | |
fbf5a39b | 1715 | -- Completely_Hidden (e.g. the discriminants of a root type). |
70482933 RK |
1716 | |
1717 | -- Is_Composite_Type (synthesized) | |
1718 | -- Applies to all entities, true for all composite types and | |
1719 | -- subtypes. Either Is_Composite_Type or Is_Elementary_Type (but | |
1720 | -- not both) is true of any type. | |
1721 | ||
1722 | -- Is_Concurrent_Record_Type (Flag20) | |
1723 | -- Present in record types and subtypes. Set if the type was created | |
1724 | -- by the expander to represent a task or protected type. For every | |
1725 | -- concurrent type, such as record type is constructed, and task and | |
1726 | -- protected objects are instances of this record type at runtime | |
1727 | -- (Gigi will replace declarations of the concurrent type using the | |
1728 | -- declarations of the corresponding record type). See package Exp_Ch9 | |
1729 | -- for further details. | |
1730 | ||
1731 | -- Is_Concurrent_Type (synthesized) | |
1732 | -- Applies to all entities, true for task types and subtypes and | |
1733 | -- for protected types and subtypes. | |
1734 | ||
1735 | -- Is_Constrained (Flag12) | |
1736 | -- Present in types or subtypes which may have index, discriminant | |
1737 | -- or range constraint (i.e. array types and subtypes, record types | |
1738 | -- and subtypes, string types and subtypes, and all numeric types). | |
1739 | -- Set if the type or subtype is constrained. | |
1740 | ||
1741 | -- Is_Constr_Subt_For_U_Nominal (Flag80) | |
1742 | -- Present in all types and subtypes. Set true only for the constructed | |
1743 | -- subtype of an object whose nominal subtype is unconstrained. Note | |
1744 | -- that the constructed subtype itself will be constrained. | |
1745 | ||
1746 | -- Is_Constr_Subt_For_UN_Aliased (Flag141) | |
1747 | -- This flag can only be set if Is_Constr_Subt_For_U_Nominal is set. It | |
1748 | -- indicates that in addition the object concerned is aliased. This flag | |
1749 | -- is used by Gigi to determine whether a template must be constructed. | |
1750 | ||
1751 | -- Is_Constructor (Flag76) | |
1752 | -- Present in function and procedure entities. Set if a pragma | |
1753 | -- CPP_Constructor applies to the subprogram. | |
1754 | ||
1755 | -- Is_Controlled (Flag42) [base type only] | |
1756 | -- Present in all type entities. Indicates that the type is controlled, | |
1757 | -- i.e. is either a descendant of Ada.Finalization.Controlled or of | |
1758 | -- Ada.Finalization.Limited_Controlled. | |
1759 | ||
1760 | -- Is_Controlling_Formal (Flag97) | |
1761 | -- Present in all Formal_Kind entity. Marks the controlling parameters | |
1762 | -- of dispatching operations. | |
1763 | ||
1764 | -- Is_CPP_Class (Flag74) | |
1765 | -- Present in all type entities, set only for tagged and untagged | |
1766 | -- record types to which the pragma CPP_Class has been applied. | |
1767 | ||
1768 | -- Is_Decimal_Fixed_Point_Type (synthesized) | |
1769 | -- Applies to all type entities, true for decimal fixed point | |
1770 | -- types and subtypes. | |
1771 | ||
1772 | -- Is_Derived_Type (synthesized) | |
1773 | -- Applies to all type entities. Determine if given entity is a | |
1774 | -- derived type | |
1775 | ||
70482933 RK |
1776 | -- Is_Discrete_Type (synthesized) |
1777 | -- Applies to all entities, true for all discrete types and subtypes | |
1778 | ||
1779 | -- Is_Discrete__Or_Fixed_Point_Type (synthesized) | |
1780 | -- Applies to all entities, true for all discrete types and subtypes | |
1781 | -- and all fixed-point types and subtypes. | |
1782 | ||
1783 | -- Is_Discrim_SO_Function (Flag176) | |
1784 | -- Present in all entities, set only in E_Function entities that Layout | |
1785 | -- creates to compute discriminant-dependent dynamic size/offset values. | |
1786 | ||
1787 | -- Is_Dispatching_Operation (Flag6) | |
1788 | -- Present in all entities. Set true for procedures, functions, | |
1789 | -- generic procedures and generic functions if the corresponding | |
1790 | -- operation is dispatching. | |
1791 | ||
1792 | -- Is_Dynamic_Scope (synthesized) | |
1793 | -- Applies to all Entities. Returns True if the entity is a dynamic | |
1794 | -- scope (i.e. a block, a subprogram a task_type or an entry). | |
1795 | ||
1796 | -- Is_Elementary_Type (synthesized) | |
1797 | -- Applies to all entities, true for all elementary types and | |
1798 | -- subtypes. Either Is_Composite_Type or Is_Elementary_Type (but | |
1799 | -- not both) is true of any type. | |
1800 | ||
1801 | -- Is_Eliminated (Flag124) | |
1802 | -- Present in type entities, subprogram entities, and object entities. | |
1803 | -- Indicates that the corresponding entity has been eliminated by use | |
07fc65c4 GB |
1804 | -- of pragma Eliminate. Also used to mark subprogram entities whose |
1805 | -- declaration and body are within unreachable code that is removed. | |
70482933 RK |
1806 | |
1807 | -- Is_Enumeration_Type (synthesized) | |
1808 | -- Present in all entities, true for enumeration types and subtypes | |
1809 | ||
1810 | -- Is_Entry (synthesized) | |
1811 | -- Applies to all entities, True only for entry and entry family | |
1812 | -- entities and False for all other entity kinds. | |
1813 | ||
1814 | -- Is_Entry_Formal (Flag52) | |
1815 | -- Present in all entities. Set only for entry formals (which can | |
1816 | -- only be in, in-out or out parameters). This flag is used to speed | |
1817 | -- up the test for the need to replace references in Exp_Ch2. | |
1818 | ||
1819 | -- Is_Exported (Flag99) | |
1820 | -- Present in all entities. Set if the entity is exported. For now we | |
1821 | -- only allow the export of constants, exceptions, functions, procedures | |
1822 | -- and variables, but that may well change later on. Exceptions can only | |
1823 | -- be exported in the OpenVMS and Java VM implementations of GNAT. | |
1824 | ||
1825 | -- Is_First_Subtype (Flag70) | |
1826 | -- Present in all entities. True for first subtypes (RM 3.2.1(6)), | |
1827 | -- i.e. the entity in the type declaration that introduced the type. | |
1828 | -- This may be the base type itself (e.g. for record declarations and | |
1829 | -- enumeration type declarations), or it may be the first subtype of | |
1830 | -- an anonymous base type (e.g. for integer type declarations or | |
1831 | -- constrained array declarations). | |
1832 | ||
1833 | -- Is_Fixed_Point_Type (synthesized) | |
1834 | -- Applies to all entities, true for decimal and ordinary fixed | |
1835 | -- point types and subtypes | |
1836 | ||
1837 | -- Is_Floating_Point_Type (synthesized) | |
1838 | -- Applies to all entities, true for float types and subtypes | |
1839 | ||
1840 | -- Is_Formal (synthesized) | |
1841 | -- Applies to all entities, true for IN, IN OUT and OUT parameters | |
1842 | ||
1843 | -- Is_Formal_Subprogram (Flag111) | |
1844 | -- Defined on all entities, true for generic formal subprograms. | |
1845 | ||
1846 | -- Is_For_Access_Subtype (Flag118) | |
1847 | -- Present in E_Private_Subtype and E_Record_Subtype entities. | |
1848 | -- Means the sole purpose of the type is to be designated by an | |
1849 | -- Access_Subtype and hence should not be expanded into components | |
1850 | -- because the type may not have been found or frozen yet. | |
1851 | ||
1852 | -- Is_Frozen (Flag4) | |
1853 | -- Present in all type entities. Set if the type has been frozen. | |
1854 | ||
1855 | -- Is_Generic_Actual_Type (Flag94) | |
1856 | -- Present in the subtype declaration that renames the generic formal | |
1857 | -- as a subtype of the actual. Guarantees that the subtype is not static | |
1858 | -- within the instance. | |
1859 | ||
1860 | -- Is_Generic_Instance (Flag130) | |
1861 | -- Present in all entities. Set to indicate that the entity is an | |
1862 | -- instance of a generic unit. | |
1863 | ||
fbf5a39b AC |
1864 | -- Is_Generic_Subprogram (synthesized) |
1865 | -- Applies to all entities. Yields True for a generic subprogram | |
1866 | -- (generic function, generic subprogram), False for all other entities. | |
1867 | ||
70482933 | 1868 | -- Is_Generic_Type (Flag13) |
fbf5a39b AC |
1869 | -- Present in all types and subtypes. Set for types which are generic |
1870 | -- formal types. Such types have an Ekind that corresponds to their | |
1871 | -- classification, so the Ekind cannot be used to identify generic types. | |
70482933 RK |
1872 | |
1873 | -- Is_Generic_Unit (synthesized) | |
1874 | -- Applies to all entities. Yields True for a generic unit (generic | |
1875 | -- package, generic function, generic procedure), and False for all | |
1876 | -- other entities. | |
1877 | ||
1878 | -- Is_Hidden (Flag57) | |
1879 | -- Present in all entities. Set true for all entities declared in the | |
1880 | -- private part or body of a package. Also marks generic formals of a | |
1881 | -- formal package declared without a box. For library level entities, | |
1882 | -- this flag is set if the entity is not publicly visible. | |
1883 | ||
1884 | -- Is_Hidden_Open_Scope (Flag171) | |
1885 | -- Present in all entities. Set true for a scope that contains the | |
1886 | -- instantiation of a child unit, and whose entities are not visible | |
1887 | -- during analysis of the instance. | |
1888 | ||
1889 | -- Is_Immediately_Visible (Flag7) | |
1890 | -- Present in all entities. Set if entity is immediately visible, i.e. | |
1891 | -- is defined in some currently open scope (RM 8.3(4)). | |
1892 | ||
1893 | -- Is_Imported (Flag24) | |
1894 | -- Present in all entities. Set if the entity is imported. For now we | |
1895 | -- only allow the import of exceptions, functions, procedures, packages. | |
1896 | -- and variables. Exceptions can only be imported in the OpenVMS and | |
1897 | -- Java VM implementations of GNAT. Packages and types can only be | |
1898 | -- imported in the Java VM implementation. | |
1899 | ||
1900 | -- Is_Incomplete_Or_Private_Type (synthesized) | |
1901 | -- Applies to all entities, true for private and incomplete types | |
1902 | ||
1903 | -- Is_Indefinite_Subtype (synthesized) | |
1904 | -- Applies to all entities for types and subtypes. Determines if given | |
1905 | -- entity is an unconstrained array type or subtype, a discriminated | |
1906 | -- record type or subtype with no initial discriminant values or a | |
1907 | -- class wide type or subtype. | |
1908 | ||
1909 | -- Is_Inlined (Flag11) | |
1910 | -- Present in all entities. Set for functions and procedures which are | |
1911 | -- to be inlined. For subprograms created during expansion, this flag | |
1912 | -- may be set directly by the expander to request inlining. Also set | |
1913 | -- for packages that contain inlined subprograms, whose bodies must be | |
1914 | -- be compiled. Is_Inlined is also set on generic subprograms and is | |
1915 | -- inherited by their instances. It is also set on the body entities | |
1916 | -- of inlined subprograms. See also Has_Pragma_Inline. | |
1917 | ||
1918 | -- Is_Instantiated (Flag126) | |
1919 | -- Present in generic packages and generic subprograms. Set if the unit | |
1920 | -- is instantiated from somewhere in the extended main source unit. This | |
1921 | -- flag is used to control warnings about the unit being uninstantiated. | |
1922 | -- Also set in a package that is used as an actual for a generic package | |
1923 | -- formal in an instantiation. Also set on a parent instance, in the | |
1924 | -- instantiation of a child, which is implicitly declared in the parent. | |
1925 | ||
1926 | -- Is_Integer_Type (synthesized) | |
1927 | -- Applies to all entities, true for integer types and subtypes | |
1928 | ||
1929 | -- Is_Internal (Flag17) | |
1930 | -- Present in all entities. Set to indicate an entity created during | |
1931 | -- semantic processing (e.g. an implicit type). Need more documentation | |
1932 | -- on this one! ??? | |
1933 | ||
1934 | -- Is_Interrupt_Handler (Flag89) | |
fbf5a39b AC |
1935 | -- Present in procedures. Set if a pragma Interrupt_Handler applies |
1936 | -- to the procedure. The procedure must be parameterless, and on all | |
1937 | -- targets except AAMP it must be a protected procedure. | |
70482933 RK |
1938 | |
1939 | -- Is_Intrinsic_Subprogram (Flag64) | |
1940 | -- Present in functions and procedures. It is set if a valid pragma | |
1941 | -- Interface or Import is present for this subprogram specifying pragma | |
1942 | -- Intrinsic. Valid means that the name and profile of the subprogram | |
1943 | -- match the requirements of one of the recognized intrinsic subprograms | |
1944 | -- (see package Sem_Intr for details). Note: the value of Convention for | |
1945 | -- such an entity will be set to Convention_Intrinsic, but it is the | |
1946 | -- setting of Is_Intrinsic_Subprogram, NOT simply having convention set | |
1947 | -- to intrinsic, which causes intrinsic code to be generated. | |
1948 | ||
1949 | -- Is_Itype (Flag91) | |
1950 | -- Present in all entities, set for Itypes. If it is set, then the | |
1951 | -- declaration for the type does not appear explicitly in the tree. | |
1952 | -- Instead gigi will elaborate the type when it is first used. | |
1953 | -- Has_Delayed_Freeze can be set for Itypes, and the meaning is that | |
1954 | -- the first use (the one which causes the type to be defined) will | |
1955 | -- be the freeze node. Note that an important restriction on Itypes | |
1956 | -- is that the first use of such a type (the one that causes it to be | |
1957 | -- defined) must be in the same scope as the type. | |
1958 | ||
fbf5a39b AC |
1959 | -- Is_Known_Non_Null (Flag37) |
1960 | -- Present in all entities. Relevant (and can be set True) only for | |
1961 | -- objects of an access type. It is set if the object is currently | |
1962 | -- known to have a non-null value (meaning that no access checks | |
1963 | -- are needed). The indication can for eample3 come from assignment | |
1964 | -- of an access parameter or an allocator. | |
1965 | -- | |
1966 | -- Note: this flag is set according to the sequential flow of the | |
1967 | -- program, watching the current value of the variable. However, | |
1968 | -- this processing can cases of changing the value of an aliased | |
1969 | -- or constant object, so even if this flag is set, it should not | |
1970 | -- be believed if the variable is aliased or volatile. It would | |
1971 | -- be a little neater to avoid the flag being set in the first | |
1972 | -- place in such cases, but that's trickier, and there is only | |
1973 | -- one place that tests the value anyway. | |
1974 | -- | |
1975 | -- The flag is dynamically set and reset as semantic analysis and | |
1976 | -- expansion proceeds. Its value is meaningless once the tree is | |
1977 | -- fully constructed, since it simply indicates the last state. | |
1978 | -- Thus this flag has no meaning to the back end. | |
1979 | ||
70482933 RK |
1980 | -- Is_Known_Valid (Flag170) |
1981 | -- Present in all entities. Relevant for types (and subtype) and | |
1982 | -- for objects (and enumeration literals) of a discrete type. | |
1983 | -- | |
1984 | -- The purpose of this flag is to implement the requirement stated | |
1985 | -- in (RM 13.9.1(9-11)) which require that the use of possibly invalid | |
1986 | -- values may not cause programs to become erroneous. See the function | |
1987 | -- Exp_Util.Expr_Known_Valid for further details. Note that the setting | |
1988 | -- is conservative, in the sense that if the flag is set, it must be | |
1989 | -- right. If the flag is not set, nothing is known about the validity. | |
1990 | -- | |
1991 | -- For enumeration literals, the flag is always set, since clearly | |
1992 | -- an enumeration literal represents a valid value. Range checks | |
1993 | -- where necessary will ensure that this valid value is appropriate. | |
1994 | -- | |
1995 | -- For objects, the flag indicates the state of knowledge about the | |
1996 | -- current value of the object. This may be modified during expansion, | |
1997 | -- and thus the final value is not relevant to gigi. | |
1998 | -- | |
1999 | -- For types and subtypes, the flag is set if all possible bit patterns | |
2000 | -- of length Object_Size (i.e. Esize of the type) represent valid values | |
2001 | -- of the type. In general for such tytpes, all values are valid, the | |
2002 | -- only exception being the case where an object of the type has an | |
2003 | -- explicit size that is greater than Object_Size. | |
2004 | -- | |
2005 | -- For non-discrete objects, the setting of the Is_Known_Valid flag is | |
2006 | -- not defined, and is not relevant, since the considerations of the | |
2007 | -- requirement in (RM 13.9.1(9-11)) do not apply. | |
fbf5a39b AC |
2008 | -- |
2009 | -- The flag is dynamically set and reset as semantic analysis and | |
2010 | -- expansion proceeds. Its value is meaningless once the tree is | |
2011 | -- fully constructed, since it simply indicates the last state. | |
2012 | -- Thus this flag has no meaning to the back end. | |
70482933 RK |
2013 | |
2014 | -- Is_Limited_Composite (Flag106) | |
2015 | -- Present in all entities. True for composite types that have a | |
2016 | -- limited component. Used to enforce the rule that operations on | |
2017 | -- the composite type that depend on the full view of the component | |
2018 | -- do not become visible until the immediate scope of the composite | |
2019 | -- type itself (RM 7.3.1 (5)). | |
2020 | ||
2021 | -- Is_Limited_Record (Flag25) | |
2022 | -- Present in all entities. Set to true for record (sub)types if the | |
2023 | -- record is declared to be limited. Note that this flag is not set | |
2024 | -- simply because some components of the record are limited. | |
2025 | ||
2026 | -- Is_Limited_Type (synthesized) | |
2027 | -- Applies to all entities. True if entity is a limited type (limited | |
2028 | -- private type, task type, protected type, composite containing a | |
2029 | -- limited component, or a subtype of any of these types). | |
2030 | ||
2031 | -- Is_Machine_Code_Subprogram (Flag137) | |
2032 | -- Present in subprogram entities. Set to indicate that the subprogram | |
2033 | -- is a machine code subprogram (i.e. its body includes at least one | |
2034 | -- code statement). Also indicates that all necessary semantic checks | |
fbf5a39b AC |
2035 | -- as required by RM 13.8(3) have been performed. |
2036 | ||
2037 | -- Is_Modular_Integer_Type (synthesized) | |
2038 | -- Applies to all entities. True if entity is a modular integer type | |
70482933 RK |
2039 | |
2040 | -- Is_Non_Static_Subtype (Flag109) | |
2041 | -- This flag is present in all type and subtype entities. It is set in | |
2042 | -- some (but not all) cases in which a subtype is known to be non-static. | |
2043 | -- Before this flag was added, the computation of whether a subtype was | |
2044 | -- static was entirely synthesized, by looking at the bounds, and the | |
2045 | -- immediate subtype parent. However, this method does not work for some | |
2046 | -- Itypes that have no parent set (and the only way to find the immediate | |
2047 | -- subtype parent is to go through the tree). For now, this flay is set | |
2048 | -- conservatively, i.e. if it is set then for sure the subtype is non- | |
2049 | -- static, but if it is not set, then the type may or may not be static. | |
2050 | -- Thus the test for a static subtype is that this flag is clear AND | |
2051 | -- that the bounds are static AND that the parent subtype (if available | |
2052 | -- to be tested) is static. Eventually we should make sure this flag | |
2053 | -- is always set right, at which point, these comments can be removed, | |
2054 | -- and the tests for static subtypes greatly simplified. | |
2055 | ||
2056 | -- Is_Null_Init_Proc (Flag178) | |
fbf5a39b | 2057 | -- Present in procedure entities. Set for generated init proc procedures |
70482933 RK |
2058 | -- (used to initialize composite types), if the code for the procedure |
2059 | -- is null (i.e. is a return and nothing else). Such null initialization | |
2060 | -- procedures are generated in case some client is compiled using the | |
2061 | -- Initialize_Scalars pragma, generating a call to this null procedure, | |
2062 | -- but there is no need to call such procedures within a compilation | |
2063 | -- unit, and this flag is used to suppress such calls. | |
2064 | ||
2065 | -- Is_Numeric_Type (synthesized) | |
2066 | -- Applies to all entities, true for all numeric types and subtypes | |
2067 | -- (integer, fixed, float). | |
2068 | ||
2069 | -- Is_Object (synthesized) | |
2070 | -- Applies to all entities, true for entities representing objects, | |
2071 | -- including generic formal parameters. | |
2072 | ||
2073 | -- Is_Optional_Parameter (Flag134) | |
2074 | -- Present in parameter entities. Set if the parameter is specified as | |
2075 | -- optional by use of a First_Optional_Parameter argument to one of the | |
2076 | -- extended Import pragmas. Can only be set for OpenVMS versions of GNAT. | |
2077 | ||
2078 | -- Is_Ordinary_Fixed_Point_Type (synthesized) | |
2079 | -- Applies to all entities, true for ordinary fixed point types | |
2080 | -- and subtypes | |
2081 | ||
fbf5a39b AC |
2082 | -- Is_Overriding_Operation (Flag39) |
2083 | -- Present in subprograms. Set if the subprogram is a primitive | |
2084 | -- operation of a derived type, that overrides an inherited operation. | |
2085 | ||
70482933 RK |
2086 | -- Is_Package (synthesized) |
2087 | -- Applies to all entities. True for packages and generic packages. | |
2088 | -- False for all other entities. | |
2089 | ||
2090 | -- Is_Package_Body_Entity (Flag160) | |
2091 | -- Present in all entities. Set for entities defined at the top level | |
2092 | -- of a package body. Used to control externally generated names. | |
2093 | ||
2094 | -- Is_Packed (Flag51) [implementation base type only] | |
2095 | -- Present in all type entities. This flag is set only for record and | |
2096 | -- array types which have a packed representation. There are three | |
2097 | -- cases which cause packing: | |
2098 | -- | |
2099 | -- 1. Explicit use of pragma Pack for an array of package components | |
2100 | -- 2. Explicit use of pragma Pack to pack a record | |
2101 | -- 4. Setting Component_Size of an array to a bit-packable value | |
2102 | -- 3. Indexing an array with a non-standard enumeration type. | |
2103 | -- | |
2104 | -- For records, Is_Packed is always set if Has_Pack_Pragma is set, | |
2105 | -- and can also be set on its own in a derived type which inherited | |
2106 | -- its packed status. | |
2107 | -- | |
2108 | -- For arrays, Is_Packed is set if an array is bit packed (i.e. the | |
2109 | -- component size is known at compile time and is 1-7, 9-15 or 17-31), | |
2110 | -- or if the array has one or more index types that are enumeration | |
2111 | -- types with non-standard representations (in GNAT, we store such | |
2112 | -- arrays compactly, using the Pos of the enumeration type value). | |
2113 | -- | |
2114 | -- As for the case of records, Is_Packed can be set on its own for a | |
2115 | -- derived type, with the same dual before/after freeze meaning. | |
2116 | -- Is_Packed can also be set as the result of an explicit component | |
2117 | -- size clause that specifies an appropriate component size. | |
2118 | -- | |
2119 | -- In the bit packed array case, Is_Bit_Packed_Array will be set in | |
2120 | -- the bit packed case once the array type is frozen. | |
2121 | -- | |
2122 | -- Before an array type is frozen, Is_Packed will always be set if | |
2123 | -- Has_Pack_Pragma is set. Before the freeze point, it is not possible | |
2124 | -- to know the component size, since the component type is not frozen | |
2125 | -- until the array type is frozen. Thus Is_Packed for an array type | |
2126 | -- before it is frozen means that packed is required. Then if it turns | |
2127 | -- out that the component size is not suitable for bit packing, the | |
2128 | -- Is_Packed flag gets turned off. | |
2129 | ||
2130 | -- Is_Packed_Array_Type (Flag138) | |
2131 | -- Present in all entities. This flag is set on the entity for the type | |
2132 | -- used to implement a packed array (either a modular type, or a subtype | |
2133 | -- of Packed_Bytes{1,2,4} as appropriate). The flag is set if and only | |
2134 | -- if the type appears in the Packed_Array_Type field of some other type | |
2135 | -- entity. It is used by Gigi to activate the special processing for such | |
2136 | -- types (unchecked conversions that would not otherwise be allowed are | |
07fc65c4 GB |
2137 | -- allowed for such types). If the Is_Packed_Array_Type flag is set in |
2138 | -- an entity, then the Original_Array_Type field of this entity points | |
2139 | -- to the original array type for which this is the packed array type. | |
70482933 RK |
2140 | |
2141 | -- Is_Potentially_Use_Visible (Flag9) | |
2142 | -- Present in all entities. Set if entity is potentially use visible, | |
2143 | -- i.e. it is defined in a package that appears in a currently active | |
2144 | -- use clause (RM 8.4(8)). Note that potentially use visible entities | |
2145 | -- are not necessarily use visible (RM 8.4(9-11)). | |
2146 | ||
2147 | -- Is_Preelaborated (Flag59) | |
2148 | -- Present in all entities, set in E_Package and E_Generic_Package | |
2149 | -- entities to which a pragma Preelaborate is applied, and also in | |
2150 | -- all entities within such packages. Note that the fact that this | |
2151 | -- flag is set does not necesarily mean that no elaboration code is | |
2152 | -- generated for the package. | |
2153 | ||
2154 | -- Is_Private_Composite (Flag107) | |
2155 | -- Present in composite types that have a private component. Used to | |
2156 | -- enforce the rule that operations on the composite type that depend | |
2157 | -- on the fulll view of the component, do not become visible until the | |
2158 | -- immediate scope of the composite type itself (7.3.1 (5)). Both this | |
2159 | -- flag and Is_Limited_Composite are needed. | |
2160 | ||
2161 | -- Is_Private_Descendant (Flag53) | |
2162 | -- Present in entities that can represent library units (packages, | |
2163 | -- functions, procedures). Set if the library unit is itself a private | |
2164 | -- child unit, or if it is the descendent of a private child unit. | |
2165 | ||
2166 | -- Is_Private_Type (synthesized) | |
2167 | -- Applies to all entities, true for private types and subtypes, | |
2168 | -- as well as for record with private types as subtypes | |
2169 | ||
2170 | -- Is_Protected_Type (synthesized) | |
2171 | -- Applies to all entities, true for protected types and subtypes | |
2172 | ||
2173 | -- Is_Psected (Flag153) | |
2174 | -- Present in entities for objects, true if a valid Psect_Object | |
2175 | -- pragma applies to the object. Used to detect duplicate pragmas. | |
2176 | ||
2177 | -- Is_Public (Flag10) | |
2178 | -- Present in all entities. Set to indicate that an entity defined in | |
2179 | -- one compilation unit can be referenced from other compilation units. | |
2180 | -- If this reference causes a reference in the generated variable, for | |
2181 | -- example in the case of a variable name, then Gigi will generate an | |
2182 | -- appropriate external name for use by the linker. | |
2183 | ||
2184 | -- Is_Protected_Private (synthesized) | |
2185 | -- Applies to a record component. Returns true if this component | |
2186 | -- is used to represent a private declaration of a protected type. | |
2187 | ||
2188 | -- Is_Protected_Record_Type (synthesized) | |
2189 | -- Applies to all entities, true if Is_Concurrent_Record_Type | |
2190 | -- Corresponding_Concurrent_Type is a protected type. | |
2191 | ||
2192 | -- Is_Pure (Flag44) | |
2193 | -- Present in all entities. Set in all entities of a unit to which a | |
2194 | -- pragma Pure is applied, and also set for the entity of the unit | |
2195 | -- itself. In addition, this flag may be set for any other functions | |
2196 | -- or procedures that are known to be side effect free, so in the case | |
2197 | -- of subprograms, the Is_Pure flag may be used by the optimizer to | |
2198 | -- imply that it can assume freedom from side effects (other than those | |
2199 | -- resulting from assignment to out parameters, or to objects designated | |
2200 | -- by access parameters). | |
2201 | ||
2202 | -- Is_Real_Type (synthesized) | |
2203 | -- Applies to all entities, true for real types and subtypes | |
2204 | ||
2205 | -- Is_Record_Type (synthesized) | |
2206 | -- Applies to all entities, true for record types and subtypes, | |
2207 | -- includes class-wide types and subtypes (which are also records) | |
2208 | ||
2209 | -- Is_Remote_Call_Interface (Flag62) | |
2210 | -- Present in all entities, set in E_Package and E_Generic_Package | |
2211 | -- entities to which a pragma Remote_Call_Interace is applied, and | |
2212 | -- also in all entities within such packages. | |
2213 | ||
2214 | -- Is_Remote_Types (Flag61) | |
2215 | -- Present in all entities, set in E_Package and E_Generic_Package | |
2216 | -- entities to which a pragma Remote_Types is applied, and also in | |
2217 | -- all entities within such packages. | |
2218 | ||
2219 | -- Is_Renaming_Of_Object (Flag112) | |
2220 | -- Present in all entities, set only for a variable or constant for | |
2221 | -- which the Renamed_Object field is non-empty and for which the | |
2222 | -- renaming is handled by the front end, by macro substitution of | |
2223 | -- a copy of the (evaluated) name tree whereever the variable is used. | |
2224 | ||
2225 | -- Is_Return_By_Reference_Type (synthesized) | |
2226 | -- Applies to all type entities. True if the type is required to | |
2227 | -- be returned by reference, as defined in 6.5(11-16). | |
2228 | ||
2229 | -- Is_Scalar_Type (synthesized) | |
2230 | -- Applies to all entities, true for scalar types and subtypes | |
2231 | ||
2232 | -- Is_Shared_Passive (Flag60) | |
2233 | -- Present in all entities, set in E_Package and E_Generic_Package | |
2234 | -- entities to which a pragma Shared_Passive is applied, and also in | |
2235 | -- all entities within such packages. | |
2236 | ||
2237 | -- Is_Statically_Allocated (Flag28) | |
2238 | -- Present in all entities. This can only be set True for exception, | |
2239 | -- variable, constant, and type/subtype entities. If the flag is set, | |
2240 | -- then the variable or constant must be allocated statically rather | |
2241 | -- than on the local stack frame. For exceptions, the meaning is that | |
2242 | -- the exception data should be allocated statically (and indeed this | |
2243 | -- flag is always set for exceptions, since exceptions do not have | |
2244 | -- local scope). For a type, the meaning is that the type must be | |
2245 | -- elaborated at the global level rather than locally. No type marked | |
2246 | -- with this flag may depend on a local variable, or on any other type | |
2247 | -- which does not also have this flag set to True. For a variable or | |
2248 | -- or constant, if the flag is set, then the type of the object must | |
2249 | -- either be declared at the library level, or it must also have the | |
2250 | -- flag set (since to allocate the oject statically, its type must | |
2251 | -- also be elaborated globally). | |
2252 | ||
2253 | -- Is_Subprogram (synthesized) | |
2254 | -- Applies to all entities, true for bodies of functions, procedures | |
2255 | -- and operators. | |
2256 | ||
2257 | -- Is_String_Type (synthesized) | |
2258 | -- Applies to all type entities. Determines if the given type is a | |
2259 | -- string type, i.e. it is directly a string type or string subtype, | |
2260 | -- or a string slice type, or an array type with one dimension and a | |
2261 | -- component type that is a character type. | |
2262 | ||
2263 | -- Is_Tag (Flag78) | |
2264 | -- Present in E_Component. For regular tagged type this flag is set on | |
2265 | -- the tag component (whose name is Name_uTag) and for CPP_Class tagged | |
2266 | -- types, this flag marks the pointer to the main vtable (i.e. the one | |
2267 | -- to be extended by derivation) | |
2268 | ||
2269 | -- Is_Tagged_Type (Flag55) | |
2270 | -- Present in all entities, true for an entity for a tagged type. | |
2271 | ||
2272 | -- Is_Task_Record_Type (synthesized) | |
2273 | -- Applies to all entities, true if Is_Concurrent_Record_Type | |
2274 | -- Corresponding_Concurrent_Type is a task type. | |
2275 | ||
2276 | -- Is_Task_Type (synthesized) | |
2277 | -- Applies to all entities, true for task types and subtypes | |
2278 | ||
2279 | -- Is_True_Constant (Flag163) | |
2280 | -- This flag is set in constants and variables which have an initial | |
2281 | -- value specified but which are never assigned, partially or in the | |
2282 | -- whole. For variables, it means that the variable was initialized | |
2283 | -- but never modified, and hence can be treated as a constant by the | |
2284 | -- code generator. For a constant, it means that the constant was not | |
2285 | -- modified by generated code (e.g. to set a discriminant in an init | |
2286 | -- proc). Assignments by user or generated code will reset this flag. | |
fbf5a39b AC |
2287 | -- |
2288 | -- Note: there is one situation in which the back end does not permit | |
2289 | -- this flag to be set, even if no assignments are generated. This is | |
2290 | -- the case of an object of a record or array type which is initialized | |
2291 | -- with an aggregate, and is itself used as the expression initializing | |
2292 | -- an atomic object, or the right hand side of an assignment to an atomic | |
2293 | -- object. In this case the object must not have Is_True_Constant set, | |
2294 | -- even though no assignments are generated (the reason for this is that | |
2295 | -- the back end must not optimize the object away, because that would | |
2296 | -- violate the restriction on aggregates in these positions). | |
70482933 RK |
2297 | |
2298 | -- Is_Type (synthesized) | |
2299 | -- Applies to all entities, true for a type entity | |
2300 | ||
2301 | -- Is_Unchecked_Union (Flag117) | |
2302 | -- Present in all entities. Set only in record types to which the | |
2303 | -- pragma Unchecked_Union has been validly applied. | |
2304 | ||
2305 | -- Is_Unsigned_Type (Flag144) | |
2306 | -- Present in all types, but can be set only for discrete and fixed-point | |
2307 | -- type and subtype entities. This flag is only valid if the entity is | |
2308 | -- frozen. If set it indicates that the representation is known to be | |
2309 | -- unsigned (i.e. that no negative values appear in the range). This is | |
2310 | -- normally just a reflection of the lower bound of the subtype or base | |
2311 | -- type, but there is one case in which the setting is non-obvious, | |
2312 | -- namely the case of an unsigned subtype of a signed type from which | |
2313 | -- a further subtype is obtained using variable bounds. This further | |
2314 | -- subtype is still unsigned, but this cannot be determined by looking | |
2315 | -- at its bounds or the bounds of the corresponding base type. | |
2316 | ||
2317 | -- Is_Valued_Procedure (Flag127) | |
2318 | -- Present in procedure entities. Set if an Import_Valued_Procedure | |
2319 | -- or Export_Valued_Procedure pragma applies to the procedure entity. | |
2320 | ||
2321 | -- Is_Visible_Child_Unit (Flag116) | |
2322 | -- Present in compilation units that are child units. Once compiled, | |
2323 | -- child units remain chained to the entities in the parent unit, and | |
2324 | -- a separate flag must be used to indicate whether the names are | |
2325 | -- visible by selected notation, or not. | |
2326 | ||
2327 | -- Is_VMS_Exception (Flag133) | |
2328 | -- Present in all entities. Set only for exception entities where the | |
2329 | -- exception was specified in an Import_Exception or Export_Exception | |
2330 | -- pragma with the VMS option for Form. See description of these pragmas | |
2331 | -- for details. This flag can only be set in OpenVMS versions of GNAT. | |
2332 | ||
2333 | -- Is_Volatile (Flag16) | |
2334 | -- Present in all type entities, and also in constants, components and | |
2335 | -- variables. Set if a pragma Volatile applies to the entity. Also set | |
2336 | -- if pragma Shared or pragma Atomic applies to entity. In the case of | |
2337 | -- private or incomplete types, this flag is set in both the private | |
fbf5a39b AC |
2338 | -- and full view. The flag is not set reliably on private subtypes, |
2339 | -- and is always retrieved from the base type (but this is not a base- | |
2340 | -- type-only attribute because it applies to other entities). Note that | |
2341 | -- the back end should use Treat_As_Volatile, rather than Is_Volatile | |
2342 | -- to indicate code generation requirements for volatile variables. | |
2343 | -- Similarly, any front end test which is concerned with suppressing | |
2344 | -- optimizations on volatile objects should test Treat_As_Volatile | |
2345 | -- rather than testing this flag. | |
70482933 RK |
2346 | |
2347 | -- Is_Wrapper_Package (synthesized) | |
2348 | -- Present in package entities. Indicates that the package has been | |
2349 | -- created as a wrapper for a subprogram instantiation. | |
2350 | ||
fbf5a39b AC |
2351 | -- Kill_Elaboration_Checks (Flag32) |
2352 | -- Present in all entities. Set by the expander to kill elaboration | |
2353 | -- checks which are known not to be needed. Equivalent in effect to | |
2354 | -- the use of pragma Supress (Elaboration_Checks) for that entity | |
2355 | -- except that the effect is permanent and cannot be undone by a | |
2356 | -- subsequent pragma Unsuppress. | |
2357 | ||
2358 | -- Kill_Range_Checks (Flag33) | |
2359 | -- Present in all entities. Set by the expander to kill elaboration | |
2360 | -- checks which are known not to be needed. Equivalent in effect to | |
2361 | -- the use of pragma Supress (Range_Checks) for that entity except | |
2362 | -- that the result is permanent and cannot be undone by a subsequent | |
2363 | -- pragma Unsuppress. | |
2364 | ||
2365 | -- Kill_Tag_Checks (Flag34) | |
2366 | -- Present in all entities. Set by the expander to kill elaboration | |
2367 | -- checks which are known not to be needed. Equivalent in effect to | |
2368 | -- the use of pragma Supress (Tag_Checks) for that entity except | |
2369 | -- that the result is permanent and cannot be undone by a subsequent | |
2370 | -- pragma Unsuppress. | |
2371 | ||
70482933 RK |
2372 | -- Last_Entity (Node20) |
2373 | -- Present in all entities which act as scopes to which a list of | |
2374 | -- associated entities is attached (blocks, class subtypes and types, | |
2375 | -- entries, functions, loops, packages, procedures, protected objects, | |
2376 | -- record types and subtypes, private types, task types and subtypes). | |
2377 | -- Points to a the last entry in the list of associated entities chained | |
2378 | -- through the Next_Entity field. Empty if no entities are chained. | |
2379 | ||
fbf5a39b AC |
2380 | -- Limited_Views (Elist23) |
2381 | -- Present in non-generic package entities that are not instances. | |
2382 | -- The elements of this list are the shadow entities created for the | |
2383 | -- types and local packages that are declared in a package that appears | |
2384 | -- in a limited_with clause. This list and Non_Limited_Views are built | |
2385 | -- at the same time, and their elements are in one-one correspondence. | |
2386 | ||
70482933 RK |
2387 | -- Lit_Indexes (Node15) |
2388 | -- Present in enumeration types and subtypes. Non-empty only for the | |
2389 | -- case of an enumeration root type, where it contains the entity for | |
2390 | -- the generated indexes entity. See unit Exp_Imgv for full details of | |
2391 | -- the nature and use of this entity for implkementing the Image and | |
2392 | -- Value attributes for the enumeration type in question. | |
2393 | -- | |
2394 | -- Lit_Strings (Node16) | |
2395 | -- Present in enumeration types and subtypes. Non-empty only for the | |
2396 | -- case of an enumeration root type, where it contains the entity for | |
2397 | -- the literals string entity. See unit Exp_Imgv for full details of | |
2398 | -- the nature and use of this entity for implementing the Image and | |
2399 | -- Value attributes for the enumeration type in question. | |
2400 | ||
2401 | -- Machine_Radix_10 (Flag84) | |
2402 | -- Present in decimal types and subtypes, set if the Machine_Radix | |
2403 | -- is 10, as the result of the specification of a machine radix | |
2404 | -- representation clause. Note that it is possible for this flag | |
2405 | -- to be set without having Has_Machine_Radix_Clause True. This | |
2406 | -- happens when a type is derived from a type with a clause present. | |
2407 | ||
2408 | -- Master_Id (Node17) | |
2409 | -- Present in access types and subtypes. Empty unless Has_Task is | |
2410 | -- set for the designated type, in which case it points to the entity | |
2411 | -- for the Master_Id for the access type master. | |
2412 | ||
2413 | -- Materialize_Entity (Flag168) | |
2414 | -- Present in all entities. Set only for constant or renamed entities | |
2415 | -- which should be materialized for debugging purposes. In the case of | |
2416 | -- a constant, a memory location should be allocated containing the | |
2417 | -- value. In the case of a renaming, a memory location containing the | |
2418 | -- renamed address should be allocated. | |
2419 | ||
2420 | -- Mechanism (Uint8) (returned as Mechanism_Type) | |
2421 | -- Present in functions and non-generic formal parameters. Indicates | |
2422 | -- the mechanism to be used for the function return or for the formal | |
07fc65c4 GB |
2423 | -- parameter. See separate section on passing mechanisms. This field |
2424 | -- is also set (to the default value of zero) in a subprogram body | |
2425 | -- entity but not used in this context. | |
70482933 RK |
2426 | |
2427 | -- Modulus (Uint17) [base type only] | |
2428 | -- Present in modular types. Contains the modulus. For the binary | |
2429 | -- case, this will be a power of 2, but if Non_Binary_Modulus is | |
2430 | -- set, then it will not be a power of 2. | |
2431 | ||
2432 | -- Needs_Debug_Info (Flag147) | |
2433 | -- Present in all entities. Set if the entity requires debugging | |
2434 | -- information to be generated. This is true of all entities that | |
2435 | -- have Comes_From_Source set, and also transitively for entities | |
2436 | -- associated with such components (e.g. their types). It is true | |
2437 | -- for all entities in Debug_Generated_Code mode (-gnatD switch). | |
fbf5a39b AC |
2438 | -- This is the flag that the back end should check to determine |
2439 | -- whether or not to generate debugging information for an entity. | |
70482933 RK |
2440 | |
2441 | -- Needs_No_Actuals (Flag22) | |
2442 | -- Present in callable entities (subprograms, entries, access to | |
2443 | -- subprograms) which can be called without actuals because all of | |
2444 | -- their formals (if any) have default values. This flag simplifies the | |
2445 | -- resolution of the syntactic ambiguity involving a call to these | |
2446 | -- entities when the return type is an array type, and a call can be | |
2447 | -- interpreted as an indexing of the result of the call. It is also | |
2448 | -- used to resolve various cases of entry calls. | |
2449 | ||
fbf5a39b | 2450 | -- Never_Set_In_Source (Flag115) |
70482933 | 2451 | -- Present in all entities, but relevant only for variables and |
fbf5a39b AC |
2452 | -- parameters. This flag is set if the object is never assigned |
2453 | -- a value in user source code, either by assignment or by the | |
2454 | -- use of an initial value, or by some other means. | |
2455 | ||
70482933 RK |
2456 | -- This flag is only for the purposes of issuing warnings, it must not |
2457 | -- be used by the code generator to indicate that the variable is in | |
2458 | -- fact a constant, since some assignments in generated code do not | |
fbf5a39b AC |
2459 | -- count (for example, the call to an init proc to assign some but |
2460 | -- not all of the fields in a partially initialized record). The code | |
70482933 RK |
2461 | -- generator should instead use the flag Is_True_Constant. |
2462 | -- | |
fbf5a39b AC |
2463 | -- For the purposes of this warning, the default assignment of |
2464 | -- access variables to null is not considered the assignment of | |
2465 | -- of a value (so the warning can be given for code that relies | |
2466 | -- on this initial null value, when no other value is ever set). | |
2467 | -- | |
70482933 RK |
2468 | -- In variables and out parameters, if this flag is set after full |
2469 | -- processing of the corresponding declarative unit, it indicates that | |
2470 | -- the variable or parameter was never set, and a warning message can | |
2471 | -- be issued. | |
2472 | -- | |
2473 | -- Note: this flag is initially set, and then cleared on encountering | |
2474 | -- any construct that might conceivably legitimately set the value. | |
2475 | -- Thus during the analysis of a declarative region and its associated | |
fbf5a39b AC |
2476 | -- statement sequence, the meaning of the flag is "not set yet", and |
2477 | -- once this analysis is complete the flag means "never assigned". | |
70482933 RK |
2478 | |
2479 | -- Note: for variables appearing in package declarations, this flag | |
2480 | -- is never set. That is because there is no way to tell if some | |
2481 | -- client modifies the variable (or in the case of variables in the | |
2482 | -- private part, if some child unit modifies the variables). | |
2483 | ||
2484 | -- Note: in the case of renamed objects, the flag must be set in the | |
2485 | -- ultimate renamed object. Clients noting a possible modification | |
2486 | -- should use the Note_Possible_Modification procedure in Sem_Util | |
fbf5a39b | 2487 | -- rather than Set_Never_Set_In_Source precisely to deal properly with |
70482933 RK |
2488 | -- the renaming possibility. |
2489 | ||
2490 | -- Next_Component (synthesized) | |
2491 | -- Applies to record components. Returns the next component by | |
2492 | -- following the chain of declared entities until one is found which | |
2493 | -- corresponds to a component (Ekind is E_Component). Any internal types | |
2494 | -- generated from the subtype indications of the record components are | |
2495 | -- skipped. Returns Empty if no more components. | |
2496 | ||
2497 | -- Next_Discriminant (synthesized) | |
2498 | -- Applies to discriminants returned by First/Next_Discriminant. | |
2499 | -- Returns the next language-defined (ie: perhaps non-girder) | |
2500 | -- discriminant by following the chain of declared entities as long as | |
2501 | -- the kind of the entity corresponds to a discriminant. Note that the | |
2502 | -- discriminants might be the only components of the record. | |
2503 | -- Returns Empty if there are no more. | |
2504 | ||
2505 | -- Next_Entity (Node2) | |
2506 | -- Present in all entities. The entities of a scope are chained, with | |
2507 | -- the head of the list being in the First_Entity field of the scope | |
2508 | -- entity. All entities use the Next_Entity field as a forward pointer | |
2509 | -- for this list, with Empty indicating the end of the list. Since this | |
2510 | -- field is in the base part of the entity, the access routines for this | |
2511 | -- field are in Sinfo. | |
2512 | ||
2513 | -- Next_Formal (synthesized) | |
2514 | -- Applies to the entity for a formal parameter. Returns the next | |
2515 | -- formal parameter of the subprogram or subprogram type. Returns | |
2516 | -- Empty if there are no more formals. | |
2517 | ||
2518 | -- Next_Formal_With_Extras (synthesized) | |
2519 | -- Applies to the entity for a formal parameter. Returns the next | |
2520 | -- formal parameter of the subprogram or subprogram type. Returns | |
2521 | -- Empty if there are no more formals. The list returned includes | |
2522 | -- all the extra formals (see description of Extra_Formal field) | |
2523 | ||
2524 | -- Next_Girder_Discriminant (synthesized) | |
2525 | -- Applies to discriminants. Set only for a discriminant returned by | |
2526 | -- a call to First/Next_Girder_Discriminant. Returns next girder | |
2527 | -- discriminant, if there are more (see complete description in | |
2528 | -- First_Girder_Discriminant), or Empty if there are no more. | |
2529 | ||
2530 | -- Next_Index (synthesized) | |
2531 | -- Applies to array types and subtypes and to string types and | |
2532 | -- subtypes. Yields the next index. The first index is obtained by | |
2533 | -- using the First_Index attribute, and then subsequent indexes are | |
2534 | -- obtained by applying Next_Index to the previous index. Empty is | |
2535 | -- returned to indicate that there are no more indexes. Note that | |
2536 | -- unlike most attributes in this package, Next_Index applies to | |
2537 | -- nodes for the indexes, not to entities. | |
2538 | ||
2539 | -- Next_Inlined_Subprogram (Node12) | |
2540 | -- Present in subprograms. Used to chain inlined subprograms used in | |
2541 | -- the current compilation, in the order in which they must be compiled | |
2542 | -- by Gigi to insure that all inlinings are performed. | |
2543 | ||
2544 | -- Next_Literal (synthesized) | |
2545 | -- Applies to enumeration literals, returns the next literal, or | |
2546 | -- Empty if applied to the last literal. This is actually a synonym | |
2547 | -- for Next, but its use is preferred in this context. | |
2548 | ||
2549 | -- Non_Binary_Modulus (Flag58) [base type only] | |
2550 | -- Present in modular integer types. Set if the modulus for the type | |
2551 | -- is other than a power of 2. | |
2552 | ||
fbf5a39b AC |
2553 | -- Non_Limited_View (Node17) |
2554 | -- Present in incomplete types, and local packages that are the | |
2555 | -- shadow entities created when analyzing a limited_with_clause. | |
2556 | -- Points to the definining entity in the original declaration. | |
2557 | ||
2558 | -- Non_Limited_Views (Elist8) | |
2559 | -- Present in non-generic packages that are not instances. The elements | |
2560 | -- of this list are defining identifiers for types and local packages | |
2561 | -- declared within a package that appears in a limited_with clause. | |
2562 | ||
70482933 RK |
2563 | -- Nonzero_Is_True (Flag162) [base type only] |
2564 | -- Present in enumeration types. True if any non-zero value is to be | |
2565 | -- interpreted as true. Currently this is set true for derived Boolean | |
2566 | -- types which have a convention of C, C++ or Fortran. | |
2567 | ||
2568 | -- No_Pool_Assigned (Flag131) [root type only] | |
2569 | -- Present in access types. Set if a storage size clause applies to | |
2570 | -- the variable with a compile time known value of zero. This flag is | |
fbf5a39b AC |
2571 | -- used to generate warnings if any attempt is made to allocate or free |
2572 | -- an instance of such an access type. This is set only in the root | |
07fc65c4 | 2573 | -- type, since derived types must have the same pool. |
70482933 RK |
2574 | |
2575 | -- No_Return (Flag113) | |
2576 | -- Present in procedure and generic procedure entries. Indicates that | |
2577 | -- a pragma No_Return applies to the procedure. | |
2578 | ||
2579 | -- Normalized_First_Bit (Uint8) | |
2580 | -- Present in components and discriminants. Indicates the normalized | |
2581 | -- value of First_Bit for the component, i.e. the offset within the | |
2582 | -- lowest addressed storage unit containing part or all of the field. | |
2583 | ||
fbf5a39b | 2584 | -- Normalized_Position (Uint14) |
70482933 RK |
2585 | -- Present in components and discriminants. Indicates the normalized |
2586 | -- value of Position for the component, i.e. the offset in storage | |
2587 | -- units from the start of the record to the lowest addressed storage | |
2588 | -- unit containing part or all of the field. | |
2589 | ||
2590 | -- Normalized_Position_Max (Uint10) | |
2591 | -- Present in components and discriminants. For almost all cases, this | |
2592 | -- is the same as Normalized_Position. The one exception is for the case | |
2593 | -- of a discriminated record containing one or more arrays whose length | |
2594 | -- depends on discriminants. In this case, the Normalized_Position_Max | |
2595 | -- field represents the maximum possible value of Normalized_Position | |
2596 | -- assuming min/max values for discriminant subscripts in all fields. | |
2597 | -- This is used by Layout in front end layout mode to properly computed | |
2598 | -- the maximum size such records (needed for allocation purposes when | |
2599 | -- there are default discriminants, and also for the 'Size value). | |
2600 | ||
2601 | -- Number_Dimensions (synthesized) | |
2602 | -- Applies to array types and subtypes. Returns the number of dimensions | |
2603 | -- of the array type or subtype as a value of type Pos. | |
2604 | ||
2605 | -- Number_Discriminants (synthesized) | |
2606 | -- Applies to all types with discriminants. Yields the number of | |
2607 | -- discriminants as a value of type Pos. | |
2608 | ||
2609 | -- Number_Entries (synthesized) | |
2610 | -- Applies to concurrent types. Returns the number of entries that are | |
2611 | -- declared within the task or protected definition for the type. | |
2612 | ||
2613 | -- Number_Formals (synthesized) | |
2614 | -- Applies to subprograms and subprogram types. Yields the number of | |
2615 | -- formals as a value of type Pos. | |
2616 | ||
07fc65c4 GB |
2617 | -- Original_Array_Type (Node21) |
2618 | -- Present in modular types and array types and subtypes. Set only | |
2619 | -- if the Is_Packed_Array_Type flag is set, indicating that the type | |
2620 | -- is the implementation type for a packed array, and in this case it | |
2621 | -- points to the original array type for which this is the packed | |
2622 | -- array implementation type. | |
2623 | ||
70482933 RK |
2624 | -- Object_Ref (Node17) |
2625 | -- Present in protected bodies. This is an implicit prival for the | |
2626 | -- Protection object associated with a protected object. See Prival | |
2627 | -- for further details on the use of privals. | |
2628 | ||
2629 | -- Original_Record_Component (Node22) | |
2630 | -- Present in components, including discriminants. The usage depends | |
2631 | -- on whether the record is a base type and whether it is tagged. | |
2632 | -- | |
2633 | -- In base tagged types: | |
2634 | -- When the component is inherited in a record extension, it points | |
2635 | -- to the original component (the entity of the ancestor component | |
2636 | -- which is not itself inherited) otherwise it points to itself. | |
2637 | -- Gigi uses this attribute to implement the automatic dereference in | |
2638 | -- the extension and to apply the transformation: | |
2639 | -- | |
2640 | -- Rec_Ext.Comp -> Rec_Ext.Parent. ... .Parent.Comp | |
2641 | -- | |
2642 | -- In base non-tagged types: | |
2643 | -- Always points to itself except for non-girder discriminants, where | |
2644 | -- it points to the girder discriminant it renames. | |
2645 | -- | |
2646 | -- In subtypes (tagged and untagged): | |
2647 | -- Points to the component in the base type. | |
2648 | ||
2649 | -- Packed_Array_Type (Node23) | |
2650 | -- Present in array types and subtypes, including the string literal | |
2651 | -- subtype case, if the corresponding type is packed (either bit packed | |
2652 | -- or packed to eliminate holes in non-contiguous enumeration type | |
2653 | -- index types). References the type used to represent the packed array, | |
2654 | -- which is either a modular type for short static arrays, or an | |
2655 | -- array of System.Unsigned. Note that in some situations (internal | |
2656 | -- types, and references to fields of variant records), it is not | |
2657 | -- always possible to construct this type in advance of its use. If | |
2658 | -- Packed_Array_Type is empty, then the necessary type is declared | |
2659 | -- on the fly for each reference to the array. | |
2660 | ||
2661 | -- Parameter_Mode (synthesized) | |
2662 | -- Applies to formal parameter entities. This is a synonym for Ekind, | |
2663 | -- used when obtaining the formal kind of a formal parameter (the result | |
07fc65c4 | 2664 | -- is one of E_[In/Out/In_Out]_Paramter) |
70482933 RK |
2665 | |
2666 | -- Parent_Subtype (Node19) | |
2667 | -- Present in E_Record_Type. Points to the subtype to use for a | |
fbf5a39b | 2668 | -- field that references the parent record. |
70482933 RK |
2669 | |
2670 | -- Primitive_Operations (Elist15) | |
2671 | -- Present in tagged record types and subtypes and in tagged private | |
2672 | -- types. Points to an element list of entities for primitive operations | |
2673 | -- for the tagged type. Not present (and not set) in untagged types (it | |
2674 | -- is an error to reference the primitive operations field of a type | |
2675 | -- that is not tagged). | |
2676 | ||
2677 | -- Private_Dependents (Elist18) | |
2678 | -- Present in private (sub)types. Records the subtypes of the | |
2679 | -- private type, derivations from it, and records and arrays | |
2680 | -- with components dependent on the type. | |
2681 | -- | |
2682 | -- The subtypes are traversed when installing and deinstalling | |
2683 | -- (the full view of) a private type in order to ensure correct | |
2684 | -- view of the subtypes. | |
2685 | -- | |
2686 | -- Used in similar fashion for incomplete types: holds list of subtypes | |
2687 | -- of these incomplete types that have discriminant constraints. The | |
2688 | -- full views of these subtypes are constructed when the full view of | |
2689 | -- the incomplete type is processed. | |
2690 | ||
2691 | -- In addition, if the incomplete type is the designated type in an | |
2692 | -- access definition for an access parameter, the operation may be | |
2693 | -- a dispatching primitive operation, which is only known when the full | |
2694 | -- declaration of the type is seen. Subprograms that have such an | |
2695 | -- access parameter are also placed in the list of private_dependents. | |
2696 | ||
2697 | -- Prival (Node17) | |
2698 | -- Present in components. Used for representing private declarations | |
2699 | -- of protected objects (private formal: by analogy to Discriminal_Link). | |
2700 | -- Empty unless the synthesized Is_Protected_Private attribute is | |
2701 | -- true. The entity used as a formal parameter that corresponds to | |
2702 | -- the to the private declaration in protected operations. See | |
2703 | -- "Private data in protected objects" for details. | |
2704 | ||
2705 | -- Privals_Chain (Elist23) | |
2706 | -- Present in protected operations (subprograms and entries). Links | |
2707 | -- all occurrences of the Privals in the body of the operation, in | |
2708 | -- order to patch their types at the end of their expansion. See | |
2709 | -- "Private data in protected objects" for details. | |
2710 | ||
2711 | -- Private_View (Node22) | |
2712 | -- For each private type, three entities are allocated, the private view, | |
2713 | -- the full view, and the shadow entity. The shadow entity contains a | |
2714 | -- copy of the private view and is used for restoring the proper private | |
2715 | -- view after a region in which the full view is visible (and is copied | |
2716 | -- into the entity normally used for the private view during this period | |
2717 | -- of visibility). The Private_View field is self-referential when the | |
2718 | -- private view lives in its normal entity, but in the copy that is made | |
2719 | -- in the shadow entity, it points to the proper location in which to | |
2720 | -- restore the private view saved in the shadow. | |
2721 | ||
2722 | -- Protected_Formal (Node22) | |
2723 | -- Present in formal parameters (in, in out and out parameters). Used | |
2724 | -- only for formals of protected operations. References corresponding | |
2725 | -- formal parameter in the unprotected version of the operation that | |
2726 | -- is created during expansion. | |
2727 | ||
2728 | -- Protected_Body_Subprogram (Node11) | |
2729 | -- Present in protected operations. References the entity for the | |
2730 | -- subprogram which implements the body of the operation. | |
2731 | ||
2732 | -- Protected_Operation (Node23) | |
2733 | -- Present in components. Used for representing private declarations | |
2734 | -- of protected objects. Empty unless the synthesized attribute | |
2735 | -- Is_Protected_Private is True. This is the entity corresponding | |
2736 | -- to the body of the protected operation currently being analyzed, | |
2737 | -- and which will eventually use the current Prival associated with | |
2738 | -- this component to refer to the renaming of a private object | |
2739 | -- component. As soon as the expander generates this renaming, this | |
2740 | -- attribute is changed to refer to the next protected subprogram. | |
2741 | -- See "Private data in protected objects" for details. | |
2742 | ||
2743 | -- Reachable (Flag49) | |
2744 | -- Present in labels. The flag is set over the range of statements in | |
2745 | -- which a goto to that label is legal. | |
2746 | ||
2747 | -- Referenced (Flag156) | |
fbf5a39b AC |
2748 | -- Present in all entities, set if the entity is referenced, except |
2749 | -- for the case of an appearence of a simple variable that is not a | |
2750 | -- renaming, as the left side of an assignment in which case the flag | |
2751 | -- Referenced_As_LHS is set instead. | |
2752 | ||
2753 | -- Referenced_As_LHS (Flag36): This flag is set instead of | |
2754 | -- Referenced if a simple variable that is not a renaming appears as | |
2755 | -- the left side of an assignment. The reason we distinguish this kind | |
2756 | -- of reference is that we have a separate warning for variables that | |
2757 | -- are only assigned and never read. | |
70482933 RK |
2758 | |
2759 | -- Referenced_Object (Node10) | |
2760 | -- Present in all type entities. Set non-Empty only for type entities | |
2761 | -- constructed for unconstrained objects, or objects that depend on | |
2762 | -- discriminants. Points to the expression from which the actual | |
2763 | -- subtype of the object can be evaluated. | |
2764 | ||
2765 | -- Register_Exception_Call (Node20) | |
2766 | -- Present in exception entities. When an exception is declared, | |
2767 | -- a call is expanded to Register_Exception. This field points to | |
2768 | -- the expanded N_Procedure_Call_Statement node for this call. It | |
2769 | -- is used for Import/Export_Exception processing to modify the | |
2770 | -- register call to make appropriate entries in the special tables | |
2771 | -- used for handling these pragmas at runtime. | |
2772 | ||
2773 | -- Related_Array_Object (Node19) | |
2774 | -- Present in array types and subtypes. Used only for the base type | |
2775 | -- and subtype created for an anonymous array object. Set to point | |
2776 | -- to the entity of the corresponding array object. Currently used | |
2777 | -- only for type-related error messages. | |
2778 | ||
2779 | -- Related_Instance (Node15) | |
2780 | -- Present in the wrapper packages created for subprogram instances. | |
2781 | -- The internal subprogram that implements the instance is inside the | |
2782 | -- wrapper package, but for debugging purposes its external symbol | |
2783 | -- must correspond to the name and scope of the related instance. | |
2784 | ||
2785 | -- Renamed_Entity (Node18) | |
2786 | -- Present in exceptions, packages and generic units that are defined | |
2787 | -- by a renaming declaration. Denotes the renamed entity, or transit- | |
2788 | -- itively the ultimate renamed entity if there is a chain of renaming | |
2789 | -- declarations. | |
2790 | ||
2791 | -- Renamed_Object (Node18) | |
2792 | -- Present in all objects (constants, variables, components, formal | |
fbf5a39b | 2793 | -- parameters, generic formal parameters, and loop parameters). Set |
70482933 RK |
2794 | -- non-Empty if the object was declared by a renaming declaration, in |
2795 | -- which case it references the tree node for the name of the renamed | |
2796 | -- object. This is only possible for the variable and constant cases. | |
2797 | -- For formal parameters, this field is used in the course of inline | |
2798 | -- expansion, to map the formals of a subprogram into the corresponding | |
fbf5a39b AC |
2799 | -- actuals. For formals of a task entry, it denotes the local renaming |
2800 | -- that replaces the actual within the accept statement. | |
2801 | -- The field is Empty otherwise. | |
70482933 RK |
2802 | |
2803 | -- Renaming_Map (Uint9) | |
2804 | -- Present in generic subprograms, generic packages, and their | |
2805 | -- instances. Also present in the instances of the corresponding | |
2806 | -- bodies. Denotes the renaming map (generic entities => instance | |
2807 | -- entities) used to construct the instance by givin an index into | |
2808 | -- the tables used to represent these maps. See Sem_Ch12 for further | |
2809 | -- details. The maps for package instances are also used when the | |
2810 | -- instance is the actual corresponding to a formal package. | |
2811 | ||
2812 | -- Return_Present (Flag54) | |
2813 | -- Present in function and generic function entities. Set if the | |
2814 | -- function contains a return statement (used for error checking). | |
2815 | -- This flag can also be set in procedure and generic procedure | |
2816 | -- entities (for convenience in setting it), but is only tested | |
2817 | -- for the function case. | |
2818 | ||
2819 | -- Returns_By_Ref (Flag90) | |
2820 | -- Present in function entities, to indicate that the function | |
2821 | -- returns the result by reference, either because its return typ is a | |
2822 | -- by-reference-type or because it uses explicitly the secondary stack. | |
2823 | ||
07fc65c4 | 2824 | -- Reverse_Bit_Order (Flag164) [base type only] |
70482933 RK |
2825 | -- Present in all record type entities. Set if a valid pragma an |
2826 | -- attribute represention clause for Bit_Order has reversed the order | |
2827 | -- of bits from the default value. When this flag is set, a component | |
2828 | -- clause must specify a set of bits entirely contained in a single | |
2829 | -- storage unit. | |
2830 | ||
2831 | -- RM_Size (Uint13) | |
2832 | -- Present in all type and subtype entities. Contains the value of | |
2833 | -- type'Size as defined in the RM. See also the Esize field and | |
2834 | -- and the description on "Handling of Type'Size Values". A value | |
2835 | -- of zero for in this field for a non-discrete type means that | |
2836 | -- the front end has not yet determined the size value. For the | |
2837 | -- case of a discrete type, this field is always set by the front | |
2838 | -- end and zero is a legitimate value for a type with one value. | |
2839 | ||
2840 | -- Root_Type (synthesized) | |
2841 | -- Applies to all type entities. For class-wide types, return the root | |
2842 | -- type of the class covered by the CW type, otherwise returns the | |
2843 | -- ultimate derivation ancestor of the given type. This function | |
2844 | -- preserves the view, i.e. the Root_Type of a partial view is the | |
2845 | -- partial view of the ulimate ancestor, the Root_Type of a full view | |
2846 | -- is the full view of the ultimate ancestor. Note that this function | |
2847 | -- does not correspond exactly to the use of root type in the RM, since | |
2848 | -- in the RM root type applies to a class of types, not to a type. | |
2849 | ||
2850 | -- Scalar_Range (Node20) | |
2851 | -- Present in all scalar types (including modular types, where the | |
2852 | -- bounds are 0 .. modulus - 1). References a node in the tree that | |
2853 | -- contains the bounds for the range. Note that this information | |
2854 | -- could be obtained by rummaging around the tree, but it is more | |
2855 | -- convenient to have it immediately at hand in the entity. The | |
2856 | -- contents of Scalar_Range can either be an N_Subtype_Indication | |
2857 | -- node (with a constraint), or a Range node, but not a simple | |
2858 | -- subtype reference (a subtype is converted into a range). | |
2859 | ||
2860 | -- Scale_Value (Uint15) | |
2861 | -- Present in decimal fixed-point types and subtypes. Contains the scale | |
2862 | -- for the type (i.e. the value of type'Scale = the number of decimal | |
2863 | -- digits after the decimal point). | |
2864 | ||
2865 | -- Scope (Node3) | |
2866 | -- Present in all entities. Points to the entity for the scope (block, | |
2867 | -- loop, subprogram, package etc.) in which the entity is declared. | |
2868 | -- Since this field is in the base part of the entity node, the access | |
2869 | -- routines for this field are in Sinfo. | |
2870 | ||
2871 | -- Scope_Depth (synth) | |
2872 | -- Applies to program units, blocks, concurrent types and entries, | |
2873 | -- and also to record types, i.e. to any entity that can appear on | |
2874 | -- the scope stack. Yields the scope depth value, which for those | |
2875 | -- entities other than records is simply the scope depth value, | |
2876 | -- for record entities, it is the Scope_Depth of the record scope. | |
2877 | ||
2878 | -- Scope_Depth_Value (Uint22) | |
2879 | -- Present in program units, blocks, concurrent types and entries. | |
2880 | -- Indicates the number of scopes that statically enclose the | |
2881 | -- declaration of the unit or type. Library units have a depth of zero. | |
2882 | -- Note that record types can act as scopes but do NOT have this field | |
2883 | -- set (see Scope_Depth above) | |
2884 | ||
2885 | -- Scope_Depth_Set (synthesized) | |
2886 | -- Applies to a special predicate function that returns a Boolean value | |
2887 | -- indicating whether or not the Scope_Depth field has been set. It | |
2888 | -- is needed, since returns an invalid value in this case! | |
2889 | ||
2890 | -- Sec_Stack_Needed_For_Return (Flag167) | |
2891 | -- Present in scope entities (blocks,functions, procedures, tasks, | |
2892 | -- entries). Set to True when secondary stack is used to hold | |
2893 | -- the returned value of a function and thus should not be | |
2894 | -- released on scope exit. | |
2895 | ||
2896 | -- Shadow_Entities (List14) | |
2897 | -- Present in package and generic package entities. Points to a list | |
2898 | -- of entities that correspond to private types. For each private type | |
2899 | -- a shadow entity is created that holds a copy of the private view. | |
2900 | -- In regions of the program where the full views of these private | |
2901 | -- entities are visible, the full view is copied into the entity that | |
2902 | -- is normally used to hold the private view, but the shadow entity | |
2903 | -- copy is unchanged. The shadow entities are then used to restore the | |
2904 | -- original private views at the end of the region. This list is a | |
2905 | -- standard format list (i.e. First (Shadow_Entities) is the first | |
2906 | -- entry and subsequent entries are obtained using Next. | |
2907 | ||
2908 | -- Shared_Var_Assign_Proc (Node22) | |
2909 | -- Present in variables. Set non-Empty only if Is_Shared_Passive is | |
2910 | -- set, in which case this is the entity for the shared memory assign | |
2911 | -- routine. See Exp_Smem for full details. | |
2912 | ||
2913 | -- Shared_Var_Read_Proc (Node15) | |
2914 | -- Present in variables. Set non-Empty only if Is_Shared_Passive is | |
2915 | -- set, in which case this is the entity for the shared memory read | |
2916 | -- routine. See Exp_Smem for full details. | |
2917 | ||
fbf5a39b | 2918 | -- Size_Check_Code (Node19) |
70482933 | 2919 | -- Present in constants and variables. Normally Empty. Set if code is |
fbf5a39b | 2920 | -- generated to check the size of the object. This field is used to |
70482933 RK |
2921 | -- suppress this code if a subsequent address clause is encountered. |
2922 | ||
2923 | -- Size_Clause (synthesized) | |
2924 | -- Applies to all entities. If a size clause is present in the rep | |
2925 | -- item chain for an entity then the attribute definition clause node | |
2926 | -- for the size clause is returned. Otherwise Size_Clause returns Empty | |
2927 | -- if no item is present. Usually this is only meaningful if the flag | |
2928 | -- Has_Size_Clause is set. This is because when the representation item | |
2929 | -- chain is copied for a derived type, it can inherit a size clause that | |
2930 | -- is not applicable to the entity. | |
2931 | ||
2932 | -- Size_Depends_On_Discriminant (Flag177) | |
2933 | -- Present in all entities for types and subtypes. Indicates that the | |
2934 | -- size of the type depends on the value of one or more discriminants. | |
2935 | -- Currently, this flag is only set in front end layout mode for arrays | |
2936 | -- which have one or more bounds depending on a discriminant value. | |
2937 | ||
2938 | -- Size_Known_At_Compile_Time (Flag92) | |
2939 | -- Present in all entities for types and subtypes. Indicates that the | |
2940 | -- size of objects of the type is known at compile time. This flag is | |
2941 | -- used to optimize some generated code sequences, and also to enable | |
2942 | -- some error checks (e.g. disallowing component clauses on variable | |
2943 | -- length objects. It is set conservatively (i.e. if it is True, the | |
2944 | -- size is certainly known at compile time, if it is False, then the | |
2945 | -- size may or may not be known at compile time, but the code will | |
2946 | -- assume that it is not known). | |
2947 | ||
2948 | -- Small_Value (Ureal21) | |
2949 | -- Present in fixed point types. Points to the universal real for the | |
2950 | -- Small of the type, either as given in a representation clause, or | |
2951 | -- as computed (as a power of two) by the compiler. | |
2952 | ||
2953 | -- Spec_Entity (Node19) | |
2954 | -- Present in package body entities. Points to corresponding package | |
2955 | -- spec entity. Also present in subprogram body parameters in the | |
2956 | -- case where there is a separate spec, where this field references | |
2957 | -- the corresponding parameter entities in the spec. | |
2958 | ||
2959 | -- Storage_Size_Variable (Node15) [implementation base type only] | |
2960 | -- Present in access types and task type entities. This flag is set | |
2961 | -- if a valid and effective pragma Storage_Size applies to the base | |
2962 | -- type. Points to the entity for a variable that is created to | |
2963 | -- hold the value given in a Storage_Size pragma for an access | |
2964 | -- collection or a task type. Note that in the access type case, | |
2965 | -- this field is present only in the root type (since derived types | |
2966 | -- share the same storage pool). | |
2967 | ||
fbf5a39b AC |
2968 | -- Stored_Constraint (Elist23) |
2969 | -- Present in entities that can have discriminants (concurrent types | |
2970 | -- subtypes, record types and subtypes, private types and subtypes, | |
2971 | -- limited private types and subtypes and incomplete types). Points | |
2972 | -- to an element list containing the expressions for each of the | |
2973 | -- stored discriminants for the record (sub)type. | |
2974 | ||
70482933 RK |
2975 | -- Strict_Alignment (Flag145) [implementation base type only] |
2976 | -- Present in all type entities. Indicates that some containing part | |
2977 | -- is either aliased or tagged. This prohibits packing the object | |
2978 | -- tighter than its natural size and alignment. | |
2979 | ||
2980 | -- String_Literal_Length (Uint16) | |
2981 | -- Present in string literal subtypes (which are created to correspond | |
2982 | -- to string literals in the program). Contains the length of the string | |
2983 | -- literal. | |
2984 | ||
2985 | -- String_Literal_Low_Bound (Node15) | |
2986 | -- Present in string literal subtypes (which are created to correspond | |
2987 | -- to string literals in the program). Contains an expression whose | |
2988 | -- value represents the low bound of the literal. This is a copy of | |
2989 | -- the low bound of the applicable index constraint if there is one, | |
2990 | -- or a copy of the low bound of the index base type if not. | |
2991 | ||
70482933 | 2992 | -- Suppress_Elaboration_Warnings (Flag148) |
fbf5a39b AC |
2993 | -- Present in all entities, relevant only for subprogram entities. If |
2994 | -- this flag is set then Sem_Elab will not generate elaboration warnings | |
2995 | -- for the subprogram. Suppression of such warnings is automatic for | |
2996 | -- subprograms for which elaboration checks are suppressed (without the | |
2997 | -- need to set this flag), but the flag is also set for various internal | |
2998 | -- entities (such as init procs) which are known not to generate any | |
2999 | -- possible access before elaboration. (we need a clear description of | |
3000 | -- how this flag differs in effect from Elaboration_Checks_Suppressed???) | |
70482933 RK |
3001 | |
3002 | -- Suppress_Init_Proc (Flag105) [base type only] | |
3003 | -- Present in all type entities. Set to suppress the generation of | |
3004 | -- initialization procedures where they are known to be not needed. | |
3005 | -- For example, the enumeration image table entity uses this flag. | |
3006 | ||
70482933 RK |
3007 | -- Suppress_Style_Checks (Flag165) |
3008 | -- Present in all entities. Suppresses any style checks specifically | |
3009 | -- associated with the given entity if set. | |
3010 | ||
70482933 RK |
3011 | -- Tag_Component (synthesized) |
3012 | -- Applies to tagged record types, returns the entity for the _Tag | |
3013 | -- field in this record, which must be present. | |
3014 | ||
fbf5a39b AC |
3015 | -- Treat_As_Volatile (Flag41) |
3016 | -- Present in all type entities, and also in constants, components and | |
3017 | -- variables. Set if this entity is to be treated as volatile for code | |
3018 | -- generation purposes. Always set if Is_Volatile is set, but can also | |
3019 | -- be set as a result of situations (such as address overlays) where | |
3020 | -- the front end wishes to force volatile handling to inhibit aliasing | |
3021 | -- optimization which might be legally ok, but is undesirable. Note | |
3022 | -- that the back end always tests this flag rather than Is_Volatile. | |
3023 | -- The front end tests Is_Volatile if it is concerned with legality | |
3024 | -- checks associated with declared volatile variables, but if the test | |
3025 | -- is for the purposes of suppressing optimizations, then the front | |
3026 | -- end should test Treat_As_Volatile rather than Is_Volatile. | |
3027 | ||
70482933 RK |
3028 | -- Type_High_Bound (synthesized) |
3029 | -- Applies to scalar types. Returns the tree node (Node_Id) that | |
3030 | -- contains the high bound of a scalar type. The returned value is a | |
3031 | -- literal for a base type, but may be an expression in the case of a | |
3032 | -- scalar type with dynamic bounds. Note that in the case of a fixed | |
3033 | -- point type, the high bound is in units of small, and is an integer. | |
3034 | ||
3035 | -- Type_Low_Bound (synthesized) | |
3036 | -- Applies to scalar types. Returns the tree node (Node_Id) that | |
3037 | -- contains the low bound of a scalar type. The returned value is a | |
3038 | -- literal for a base type, but may be an expression in the case of a | |
3039 | -- scalar type with dynamic bounds. Note that in the case of a fixed | |
3040 | -- point type, the low bound is in units of small, and is an integer. | |
3041 | ||
3042 | -- Underlying_Full_View (Node19) | |
3043 | -- Present in private subtypes that are the completion of other private | |
3044 | -- types, or in private types that are derived from private subtypes. | |
3045 | -- If the full view of a private type T is derived from another | |
3046 | -- private type with discriminants Td, the full view of T is also | |
3047 | -- private, and there is no way to attach to it a further full view that | |
3048 | -- would convey the structure of T to the back end. The Underlying_Full_ | |
3049 | -- View is an attribute of the full view that is a subtype of Td with | |
3050 | -- the same constraint as the declaration for T. The declaration for this | |
3051 | -- subtype is built at the point of the declaration of T, either as a | |
3052 | -- completion, or as a subtype declaration where the base type is private | |
3053 | -- and has a private completion. If Td is already constrained, then its | |
3054 | -- full view can serve directly as the full view of T. | |
3055 | ||
3056 | -- Underlying_Type (synthesized) | |
3057 | -- Applies to all entities. This is the identity function except in | |
3058 | -- the case where it is applied to an incomplete or private type, | |
3059 | -- in which case it is the underlying type of the type declared by | |
3060 | -- the completion, or Empty if the completion has not yet been | |
3061 | -- encountered and analyzed. | |
3062 | -- | |
3063 | -- Note: the reason this attribute applies to all entities, and not | |
3064 | -- just types, is to legitimize code where Underlying_Type is applied | |
3065 | -- to an entity which may or may not be a type, with the intent that | |
3066 | -- if it is a type, its underlying type is taken. | |
3067 | ||
3068 | -- Unset_Reference (Node16) | |
3069 | -- Present in variables and out parameters. This is normally Empty. | |
3070 | -- It is set to point to an identifier that represents a reference | |
3071 | -- to the entity before any value has been set. Only the first such | |
3072 | -- reference is identified. This field is used to generate a warning | |
3073 | -- message if necessary (see Sem_Warn.Check_Unset_Reference). | |
3074 | ||
3075 | -- Uses_Sec_Stack (Flag95) | |
3076 | -- Present in scope entities (blocks,functions, procedures, tasks, | |
3077 | -- entries). Set to True when secondary stack is used in this scope and | |
3078 | -- must be released on exit unless Sec_Stack_Needed_For_Return is set. | |
3079 | ||
3080 | -- Vax_Float (Flag151) [base type only] | |
3081 | -- Present in all type entities. Set only on the base type of float | |
3082 | -- types with Vax format. The particular format is determined by the | |
3083 | -- Digits_Value value which is 6,9,15 for F_Float, D_Float, G_Float. | |
3084 | ||
3085 | -- Warnings_Off (Flag96) | |
3086 | -- Present in all entities. Set if a pragma Warnings (Off, entity-name) | |
3087 | -- is used to suppress warnings for a given entity. It is also used by | |
3088 | -- the compiler in some situations to kill spurious warnings. | |
3089 | ||
3090 | ------------------ | |
3091 | -- Access Kinds -- | |
3092 | ------------------ | |
3093 | ||
3094 | -- The following three entity kinds are introduced by the corresponding | |
3095 | -- type definitions: | |
3096 | ||
3097 | -- E_Access_Type, E_General_Access_Type, E_Anonymous_Access_Type. | |
3098 | ||
3099 | -- In addition, we define the kind E_Allocator_Type to label | |
3100 | -- allocators. This is because special resolution rules apply to this | |
3101 | -- construct. Eventually the constructs are labeled with the access | |
3102 | -- type imposed by the context. Gigi should never see the type | |
3103 | -- E_Allocator. | |
3104 | ||
3105 | -- Similarly, the type E_Access_Attribute_Type is used as the initial | |
3106 | -- kind associated with an access attribute. After resolution a specific | |
3107 | -- access type will be established as determined by the context. | |
3108 | ||
3109 | -- Finally, the type Any_Access is used to label -null- during type | |
3110 | -- resolution. Any_Access is also replaced by the context type after | |
3111 | -- resolution. | |
3112 | ||
3113 | -------------------------------- | |
3114 | -- Classification of Entities -- | |
3115 | -------------------------------- | |
3116 | ||
3117 | -- The classification of program entities which follows is a refinement of | |
3118 | -- the list given in RM 3.1(1). E.g., separate entities denote subtypes of | |
3119 | -- different type classes. Ada 95 entities include class wide types, | |
3120 | -- protected types, subprogram types, generalized access types, generic | |
3121 | -- formal derived types and generic formal packages. | |
3122 | ||
3123 | -- The order chosen for these kinds allows us to classify related entities | |
3124 | -- so that they are contiguous. As a result, they do not appear in the | |
3125 | -- exact same order as their order of first appearance in the LRM (For | |
3126 | -- example, private types are listed before packages). The contiguity | |
3127 | -- allows us to define useful subtypes (see below) such as type entities, | |
3128 | -- overloaded entities, etc. | |
3129 | ||
3130 | -- Each entity (explicitly or implicitly declared) has a kind, which is | |
3131 | -- a value of the following type: | |
3132 | ||
3133 | type Entity_Kind is ( | |
3134 | ||
3135 | E_Void, | |
3136 | -- The initial Ekind value for a newly created entity. Also used as | |
3137 | -- the Ekind for Standard_Void_Type, a type entity in Standard used | |
3138 | -- as a dummy type for the return type of a procedure (the reason we | |
3139 | -- create this type is to share the circuits for performing overload | |
3140 | -- resolution on calls). | |
3141 | ||
3142 | ------------- | |
3143 | -- Objects -- | |
3144 | ------------- | |
3145 | ||
3146 | E_Variable, | |
3147 | -- Variables created by an object declaration with no constant keyword | |
3148 | ||
3149 | E_Component, | |
3150 | -- Components of a record declaration, private declarations of | |
3151 | -- protected objects. | |
3152 | ||
3153 | E_Constant, | |
3154 | -- Constants created by an object declaration with a constant keyword | |
3155 | ||
3156 | E_Discriminant, | |
3157 | -- A discriminant, created by the use of a discriminant in a type | |
3158 | -- declaration. | |
3159 | ||
3160 | E_Loop_Parameter, | |
3161 | -- A loop parameter created by a for loop | |
3162 | ||
3163 | ------------------------ | |
3164 | -- Parameter Entities -- | |
3165 | ------------------------ | |
3166 | ||
3167 | -- Parameters are also objects | |
3168 | ||
3169 | E_In_Parameter, | |
3170 | -- An in parameter of a subprogram or entry | |
3171 | ||
3172 | E_Out_Parameter, | |
3173 | -- An out parameter of a subprogram or entry | |
3174 | ||
3175 | E_In_Out_Parameter, | |
3176 | -- An in-out parameter of a subprogram or entry | |
3177 | ||
3178 | -------------------------------- | |
3179 | -- Generic Parameter Entities -- | |
3180 | -------------------------------- | |
3181 | ||
3182 | -- Generic parameters are also objects | |
3183 | ||
3184 | E_Generic_In_Out_Parameter, | |
3185 | -- A generic in out parameter, created by the use of a generic in out | |
3186 | -- parameter in a generic declaration. | |
3187 | ||
3188 | E_Generic_In_Parameter, | |
3189 | -- A generic in parameter, created by the use of a generic in | |
3190 | -- parameter in a generic declaration. | |
3191 | ||
3192 | ------------------- | |
3193 | -- Named Numbers -- | |
3194 | ------------------- | |
3195 | ||
3196 | E_Named_Integer, | |
3197 | -- Named numbers created by a number declaration with an integer value | |
3198 | ||
3199 | E_Named_Real, | |
3200 | -- Named numbers created by a number declaration with a real value | |
3201 | ||
3202 | ----------------------- | |
3203 | -- Enumeration Types -- | |
3204 | ----------------------- | |
3205 | ||
3206 | E_Enumeration_Type, | |
3207 | -- Enumeration types, created by an enumeration type declaration | |
3208 | ||
3209 | E_Enumeration_Subtype, | |
3210 | -- Enumeration subtypes, created by an explicit or implicit subtype | |
3211 | -- declaration applied to an enumeration type or subtype. | |
3212 | ||
3213 | ------------------- | |
3214 | -- Numeric Types -- | |
3215 | ------------------- | |
3216 | ||
3217 | E_Signed_Integer_Type, | |
3218 | -- Signed integer type, used for the anonymous base type of the | |
3219 | -- integer subtype created by an integer type declaration. | |
3220 | ||
3221 | E_Signed_Integer_Subtype, | |
3222 | -- Signed integer subtype, created by either an integer subtype or | |
3223 | -- integer type declaration (in the latter case an integer type is | |
3224 | -- created for the base type, and this is the first named subtype). | |
3225 | ||
3226 | E_Modular_Integer_Type, | |
3227 | -- Modular integer type, used for the anonymous base type of the | |
3228 | -- integer subtype created by a modular integer type declaration. | |
3229 | ||
3230 | E_Modular_Integer_Subtype, | |
3231 | -- Modular integer subtype, created by either an modular subtype | |
3232 | -- or modular type declaration (in the latter case a modular type | |
3233 | -- is created for the base type, and this is the first named subtype). | |
3234 | ||
3235 | E_Ordinary_Fixed_Point_Type, | |
3236 | -- Ordinary fixed type, used for the anonymous base type of the | |
3237 | -- fixed subtype created by an ordinary fixed point type declaration. | |
3238 | ||
3239 | E_Ordinary_Fixed_Point_Subtype, | |
3240 | -- Ordinary fixed point subtype, created by either an ordinary fixed | |
3241 | -- point subtype or ordinary fixed point type declaration (in the | |
3242 | -- latter case a fixed point type is created for the base type, and | |
3243 | -- this is the first named subtype). | |
3244 | ||
3245 | E_Decimal_Fixed_Point_Type, | |
3246 | -- Decimal fixed type, used for the anonymous base type of the decimal | |
3247 | -- fixed subtype created by an ordinary fixed point type declaration. | |
3248 | ||
3249 | E_Decimal_Fixed_Point_Subtype, | |
3250 | -- Decimal fixed point subtype, created by either a decimal fixed point | |
3251 | -- subtype or decimal fixed point type declaration (in the latter case | |
3252 | -- a fixed point type is created for the base type, and this is the | |
3253 | -- first named subtype). | |
3254 | ||
3255 | E_Floating_Point_Type, | |
3256 | -- Floating point type, used for the anonymous base type of the | |
3257 | -- floating point subtype created by a floating point type declaration. | |
3258 | ||
3259 | E_Floating_Point_Subtype, | |
3260 | -- Floating point subtype, created by either a floating point subtype | |
3261 | -- or floating point type declaration (in the latter case a floating | |
3262 | -- point type is created for the base type, and this is the first | |
3263 | -- named subtype). | |
3264 | ||
3265 | ------------------ | |
3266 | -- Access Types -- | |
3267 | ------------------ | |
3268 | ||
3269 | E_Access_Type, | |
3270 | -- An access type created by an access type declaration with no all | |
3271 | -- keyword present. Note that the predefined type Any_Access, which | |
3272 | -- has E_Access_Type Ekind, is used to label NULL in the upwards pass | |
3273 | -- of type analysis, to be replaced by the true access type in the | |
3274 | -- downwards resolution pass. | |
3275 | ||
3276 | E_Access_Subtype, | |
3277 | -- An access subtype created by a subtype declaration for any access | |
3278 | -- type (whether or not it is a general access type). | |
3279 | ||
3280 | E_Access_Attribute_Type, | |
3281 | -- An access type created for an access attribute (such as 'Access, | |
3282 | -- 'Unrestricted_Access and Unchecked_Access) | |
3283 | ||
3284 | E_Allocator_Type, | |
3285 | -- A special internal type used to label allocators and attribute | |
3286 | -- references using 'Access. This is needed because special resolution | |
3287 | -- rules apply to these constructs. On the resolution pass, this type | |
3288 | -- is always replaced by the actual access type, so Gigi should never | |
3289 | -- see types with this Ekind. | |
3290 | ||
3291 | E_General_Access_Type, | |
3292 | -- An access type created by an access type declaration with the all | |
3293 | -- keyword present. | |
3294 | ||
3295 | E_Access_Subprogram_Type, | |
3296 | -- An access to subprogram type, created by an access to subprogram | |
3297 | -- declaration. | |
3298 | ||
3299 | E_Access_Protected_Subprogram_Type, | |
3300 | -- An access to a protected subprogram, created by the corresponding | |
3301 | -- declaration. Values of such a type denote both a protected object | |
3302 | -- and a protected operation within, and have different compile-time | |
3303 | -- and run-time properties than other access to subprograms. | |
3304 | ||
3305 | E_Anonymous_Access_Type, | |
3306 | -- An anonymous access type created by an access parameter or access | |
3307 | -- discriminant. | |
3308 | ||
3309 | --------------------- | |
3310 | -- Composite Types -- | |
3311 | --------------------- | |
3312 | ||
3313 | E_Array_Type, | |
3314 | -- An array type created by an array type declaration. Includes all | |
3315 | -- cases of arrays, except for string types. | |
3316 | ||
3317 | E_Array_Subtype, | |
3318 | -- An array subtype, created by an explicit array subtype declaration, | |
3319 | -- or the use of an anonymous array subtype. | |
3320 | ||
3321 | E_String_Type, | |
3322 | -- A string type, i.e. an array type whose component type is a character | |
3323 | -- type, and for which string literals can thus be written. | |
3324 | ||
3325 | E_String_Subtype, | |
3326 | -- A string subtype, created by an explicit subtype declaration for a | |
3327 | -- string type, or the use of an anonymous subtype of a string type, | |
3328 | ||
3329 | E_String_Literal_Subtype, | |
3330 | -- A special string subtype, used only to describe the type of a string | |
3331 | -- literal (will always be one dimensional, with literal bounds). | |
3332 | ||
3333 | E_Class_Wide_Type, | |
3334 | -- A class wide type, created by any tagged type declaration (i.e. if | |
3335 | -- a tagged type is declared, the corresponding class type is always | |
3336 | -- created, using this Ekind value). | |
3337 | ||
3338 | E_Class_Wide_Subtype, | |
3339 | -- A subtype of a class wide type, created by a subtype declaration | |
3340 | -- used to declare a subtype of a class type. | |
3341 | ||
3342 | E_Record_Type, | |
3343 | -- A record type, created by a record type declaration | |
3344 | ||
3345 | E_Record_Subtype, | |
3346 | -- A record subtype, created by a record subtype declaration. | |
3347 | ||
3348 | E_Record_Type_With_Private, | |
3349 | -- Used for types defined by a private extension declaration. Includes | |
3350 | -- the fields for both private types and for record types (with the | |
3351 | -- sole exception of Corresponding_Concurrent_Type which is obviously | |
3352 | -- not needed). This entity is considered to be both a record type and | |
3353 | -- a private type. | |
3354 | ||
3355 | E_Record_Subtype_With_Private, | |
3356 | -- A subtype of a type defined by a private extension declaration. | |
3357 | ||
3358 | E_Private_Type, | |
3359 | -- A private type, created by a private type declaration that does | |
3360 | -- not have the keyword limited. | |
3361 | ||
3362 | E_Private_Subtype, | |
3363 | -- A subtype of a private type, created by a subtype declaration used | |
3364 | -- to declare a subtype of a private type. | |
3365 | ||
3366 | E_Limited_Private_Type, | |
3367 | -- A limited private type, created by a private type declaration that | |
3368 | -- has the keyword limited. | |
3369 | ||
3370 | E_Limited_Private_Subtype, | |
3371 | -- A subtype of a limited private type, created by a subtype declaration | |
3372 | -- used to declare a subtype of a limited private type. | |
3373 | ||
3374 | E_Incomplete_Type, | |
3375 | -- An incomplete type, created by an incomplete type declaration | |
3376 | ||
3377 | E_Task_Type, | |
3378 | -- A task type, created by a task type declaration. An entity with this | |
3379 | -- Ekind is also created to describe the anonymous type of a task that | |
3380 | -- is created by a single task declaration. | |
3381 | ||
3382 | E_Task_Subtype, | |
3383 | -- A subtype of a task type, created by a subtype declaration used to | |
3384 | -- declare a subtype of a task type. | |
3385 | ||
3386 | E_Protected_Type, | |
3387 | -- A protected type, created by a protected type declaration. An entity | |
3388 | -- with this Ekind is also created to describe the anonymous type of | |
3389 | -- a protected object created by a single protected declaration. | |
3390 | ||
3391 | E_Protected_Subtype, | |
3392 | -- A subtype of a protected type, created by a subtype declaration used | |
3393 | -- to declare a subtype of a protected type. | |
3394 | ||
3395 | ----------------- | |
3396 | -- Other Types -- | |
3397 | ----------------- | |
3398 | ||
3399 | E_Exception_Type, | |
3400 | -- The type of an exception created by an exception declaration | |
3401 | ||
3402 | E_Subprogram_Type, | |
3403 | -- This is the designated type of an Access_To_Subprogram. Has type | |
3404 | -- and signature like a subprogram entity, so can appear in calls, | |
3405 | -- which are resolved like regular calls, except that such an entity | |
3406 | -- is not overloadable. | |
3407 | ||
3408 | --------------------------- | |
3409 | -- Overloadable Entities -- | |
3410 | --------------------------- | |
3411 | ||
3412 | E_Enumeration_Literal, | |
3413 | -- An enumeration literal, created by the use of the literal in an | |
3414 | -- enumeration type definition. | |
3415 | ||
3416 | E_Function, | |
3417 | -- A function, created by a function declaration or a function body | |
3418 | -- that acts as its own declaration. | |
3419 | ||
3420 | E_Operator, | |
3421 | -- A predefined operator, appearing in Standard, or an implicitly | |
3422 | -- defined concatenation operator created whenever an array is | |
3423 | -- declared. We do not make normal derived operators explicit in | |
3424 | -- the tree, but the concatenation operators are made explicit. | |
3425 | ||
3426 | E_Procedure, | |
3427 | -- A procedure, created by a procedure declaration or a procedure | |
3428 | -- body that acts as its own declaration. | |
3429 | ||
3430 | E_Entry, | |
3431 | -- An entry, created by an entry declaration in a task or protected | |
3432 | -- object. | |
3433 | ||
3434 | -------------------- | |
3435 | -- Other Entities -- | |
3436 | -------------------- | |
3437 | ||
3438 | E_Entry_Family, | |
3439 | -- An entry family, created by an entry family declaration in a | |
3440 | -- task or protected type definition. | |
3441 | ||
3442 | E_Block, | |
3443 | -- A block identifier, created by an explicit or implicit label on | |
3444 | -- a block or declare statement. | |
3445 | ||
3446 | E_Entry_Index_Parameter, | |
3447 | -- An entry index parameter created by an entry index specification | |
3448 | -- for the body of a protected entry family. | |
3449 | ||
3450 | E_Exception, | |
3451 | -- An exception created by an exception declaration. The exception | |
3452 | -- itself uses E_Exception for the Ekind, the implicit type that is | |
3453 | -- created to represent its type uses the Ekind E_Exception_Type. | |
3454 | ||
3455 | E_Generic_Function, | |
3456 | -- A generic function. This is the entity for a generic function | |
3457 | -- created by a generic subprogram declaration. | |
3458 | ||
70482933 RK |
3459 | E_Generic_Procedure, |
3460 | -- A generic function. This is the entity for a generic procedure | |
3461 | -- created by a generic subprogram declaration. | |
3462 | ||
fbf5a39b AC |
3463 | E_Generic_Package, |
3464 | -- A generic package, this is the entity for a generic package created | |
3465 | -- by a generic package declaration. | |
3466 | ||
70482933 RK |
3467 | E_Label, |
3468 | -- The defining entity for a label. Note that this is created by the | |
3469 | -- implicit label declaration, not the occurrence of the label itself, | |
3470 | -- which is simply a direct name referring to the label. | |
3471 | ||
3472 | E_Loop, | |
3473 | -- A loop identifier, created by an explicit or implicit label on a | |
3474 | -- loop statement. | |
3475 | ||
3476 | E_Package, | |
3477 | -- A package, created by a package declaration | |
3478 | ||
3479 | E_Package_Body, | |
3480 | -- A package body. This entity serves only limited functions, since | |
3481 | -- most semantic analysis uses the package entity (E_Package). However | |
3482 | -- there are some attributes that are significant for the body entity. | |
3483 | -- For example, collection of exception handlers. | |
3484 | ||
3485 | E_Protected_Object, | |
3486 | -- A protected object, created by an object declaration that declares | |
3487 | -- an object of a protected type. | |
3488 | ||
3489 | E_Protected_Body, | |
3490 | -- A protected body. This entity serves almost no function, since all | |
3491 | -- semantic analysis uses the protected entity (E_Protected_Type) | |
3492 | ||
3493 | E_Task_Body, | |
3494 | -- A task body. This entity serves almost no function, since all | |
3495 | -- semantic analysis uses the protected entity (E_Task_Type). | |
3496 | ||
3497 | E_Subprogram_Body | |
3498 | -- A subprogram body. Used when a subprogram has a separate declaration | |
3499 | -- to represent the entity for the body. This entity serves almost no | |
3500 | -- function, since all semantic analysis uses the subprogram entity | |
3501 | -- for the declaration (E_Function or E_Procedure). | |
3502 | ); | |
3503 | ||
3504 | for Entity_Kind'Size use 8; | |
3505 | -- The data structures in Atree assume this! | |
3506 | ||
3507 | -------------------------- | |
3508 | -- Subtype Declarations -- | |
3509 | -------------------------- | |
3510 | ||
3511 | -- The above entities are arranged so that they can be conveniently | |
fbf5a39b | 3512 | -- grouped into subtype ranges. Note that for each of the xxx_Kind |
70482933 RK |
3513 | -- ranges defined below, there is a corresponding Is_xxx.. predicate |
3514 | -- which is to be used in preference to direct range tests using the | |
3515 | -- subtype name. However, the subtype names are available for direct | |
3516 | -- use, e.g. as choices in case statements. | |
3517 | ||
3518 | subtype Access_Kind is Entity_Kind range | |
3519 | E_Access_Type .. | |
3520 | -- E_Access_Subtype | |
3521 | -- E_Access_Attribute_Type | |
3522 | -- E_Allocator_Type | |
3523 | -- E_General_Access_Type | |
3524 | -- E_Access_Subprogram_Type | |
3525 | -- E_Access_Protected_Subprogram_Type | |
3526 | E_Anonymous_Access_Type; | |
3527 | ||
3528 | subtype Array_Kind is Entity_Kind range | |
3529 | E_Array_Type .. | |
3530 | -- E_Array_Subtype | |
3531 | -- E_String_Type | |
3532 | -- E_String_Subtype | |
3533 | E_String_Literal_Subtype; | |
3534 | ||
3535 | subtype Class_Wide_Kind is Entity_Kind range | |
3536 | E_Class_Wide_Type .. | |
3537 | E_Class_Wide_Subtype; | |
3538 | ||
3539 | subtype Composite_Kind is Entity_Kind range | |
3540 | E_Array_Type .. | |
3541 | -- E_Array_Subtype | |
3542 | -- E_String_Type | |
3543 | -- E_String_Subtype | |
3544 | -- E_String_Literal_Subtype | |
3545 | -- E_Class_Wide_Type | |
3546 | -- E_Class_Wide_Subtype | |
3547 | -- E_Record_Type | |
3548 | -- E_Record_Subtype | |
3549 | -- E_Record_Type_With_Private | |
3550 | -- E_Record_Subtype_With_Private | |
3551 | -- E_Private_Type | |
3552 | -- E_Private_Subtype | |
3553 | -- E_Limited_Private_Type | |
3554 | -- E_Limited_Private_Subtype | |
3555 | -- E_Incomplete_Type | |
3556 | -- E_Task_Type | |
3557 | -- E_Task_Subtype, | |
3558 | -- E_Protected_Type, | |
3559 | E_Protected_Subtype; | |
3560 | ||
3561 | subtype Concurrent_Kind is Entity_Kind range | |
3562 | E_Task_Type .. | |
3563 | -- E_Task_Subtype, | |
3564 | -- E_Protected_Type, | |
3565 | E_Protected_Subtype; | |
3566 | ||
3567 | subtype Concurrent_Body_Kind is Entity_Kind range | |
3568 | E_Protected_Body .. | |
3569 | E_Task_Body; | |
3570 | ||
3571 | subtype Decimal_Fixed_Point_Kind is Entity_Kind range | |
3572 | E_Decimal_Fixed_Point_Type .. | |
3573 | E_Decimal_Fixed_Point_Subtype; | |
3574 | ||
3575 | subtype Digits_Kind is Entity_Kind range | |
3576 | E_Decimal_Fixed_Point_Type .. | |
3577 | -- E_Decimal_Fixed_Point_Subtype | |
3578 | -- E_Floating_Point_Type | |
3579 | E_Floating_Point_Subtype; | |
3580 | ||
3581 | subtype Discrete_Kind is Entity_Kind range | |
3582 | E_Enumeration_Type .. | |
3583 | -- E_Enumeration_Subtype | |
3584 | -- E_Signed_Integer_Type | |
3585 | -- E_Signed_Integer_Subtype | |
3586 | -- E_Modular_Integer_Type | |
3587 | E_Modular_Integer_Subtype; | |
3588 | ||
3589 | subtype Discrete_Or_Fixed_Point_Kind is Entity_Kind range | |
3590 | E_Enumeration_Type .. | |
3591 | -- E_Enumeration_Subtype | |
3592 | -- E_Signed_Integer_Type | |
3593 | -- E_Signed_Integer_Subtype | |
3594 | -- E_Modular_Integer_Type | |
3595 | -- E_Modular_Integer_Subtype | |
3596 | -- E_Ordinary_Fixed_Point_Type | |
3597 | -- E_Ordinary_Fixed_Point_Subtype | |
3598 | -- E_Decimal_Fixed_Point_Type | |
3599 | E_Decimal_Fixed_Point_Subtype; | |
3600 | ||
3601 | subtype Elementary_Kind is Entity_Kind range | |
3602 | E_Enumeration_Type .. | |
3603 | -- E_Enumeration_Subtype | |
3604 | -- E_Signed_Integer_Type | |
3605 | -- E_Signed_Integer_Subtype | |
3606 | -- E_Modular_Integer_Type | |
3607 | -- E_Modular_Integer_Subtype | |
3608 | -- E_Ordinary_Fixed_Point_Type | |
3609 | -- E_Ordinary_Fixed_Point_Subtype | |
3610 | -- E_Decimal_Fixed_Point_Type | |
3611 | -- E_Decimal_Fixed_Point_Subtype | |
3612 | -- E_Floating_Point_Type | |
3613 | -- E_Floating_Point_Subtype | |
3614 | -- E_Access_Type | |
3615 | -- E_Access_Subtype | |
3616 | -- E_Access_Attribute_Type | |
3617 | -- E_Allocator_Type | |
3618 | -- E_General_Access_Type | |
3619 | -- E_Access_Subprogram_Type | |
3620 | -- E_Access_Protected_Subprogram_Type | |
3621 | E_Anonymous_Access_Type; | |
3622 | ||
3623 | subtype Enumeration_Kind is Entity_Kind range | |
3624 | E_Enumeration_Type .. | |
3625 | E_Enumeration_Subtype; | |
3626 | ||
3627 | subtype Entry_Kind is Entity_Kind range | |
3628 | E_Entry .. | |
3629 | E_Entry_Family; | |
3630 | ||
3631 | subtype Fixed_Point_Kind is Entity_Kind range | |
3632 | E_Ordinary_Fixed_Point_Type .. | |
3633 | -- E_Ordinary_Fixed_Point_Subtype | |
3634 | -- E_Decimal_Fixed_Point_Type | |
3635 | E_Decimal_Fixed_Point_Subtype; | |
3636 | ||
3637 | subtype Float_Kind is Entity_Kind range | |
3638 | E_Floating_Point_Type .. | |
3639 | E_Floating_Point_Subtype; | |
3640 | ||
3641 | subtype Formal_Kind is Entity_Kind range | |
3642 | E_In_Parameter .. | |
3643 | -- E_Out_Parameter | |
3644 | E_In_Out_Parameter; | |
3645 | ||
fbf5a39b | 3646 | subtype Generic_Subprogram_Kind is Entity_Kind range |
70482933 | 3647 | E_Generic_Function .. |
70482933 RK |
3648 | E_Generic_Procedure; |
3649 | ||
fbf5a39b AC |
3650 | subtype Generic_Unit_Kind is Entity_Kind range |
3651 | E_Generic_Function .. | |
3652 | -- E_Generic_Procedure | |
3653 | E_Generic_Package; | |
3654 | ||
70482933 RK |
3655 | subtype Incomplete_Or_Private_Kind is Entity_Kind range |
3656 | E_Record_Type_With_Private .. | |
3657 | -- E_Record_Subtype_With_Private | |
3658 | -- E_Private_Type | |
3659 | -- E_Private_Subtype | |
3660 | -- E_Limited_Private_Type | |
3661 | -- E_Limited_Private_Subtype | |
3662 | E_Incomplete_Type; | |
3663 | ||
3664 | subtype Integer_Kind is Entity_Kind range | |
3665 | E_Signed_Integer_Type .. | |
3666 | -- E_Signed_Integer_Subtype | |
3667 | -- E_Modular_Integer_Type | |
3668 | E_Modular_Integer_Subtype; | |
3669 | ||
3670 | subtype Modular_Integer_Kind is Entity_Kind range | |
3671 | E_Modular_Integer_Type .. | |
3672 | E_Modular_Integer_Subtype; | |
3673 | ||
3674 | subtype Named_Kind is Entity_Kind range | |
3675 | E_Named_Integer .. | |
3676 | E_Named_Real; | |
3677 | ||
3678 | subtype Numeric_Kind is Entity_Kind range | |
3679 | E_Signed_Integer_Type .. | |
3680 | -- E_Signed_Integer_Subtype | |
3681 | -- E_Modular_Integer_Type | |
3682 | -- E_Modular_Integer_Subtype | |
3683 | -- E_Ordinary_Fixed_Point_Type | |
3684 | -- E_Ordinary_Fixed_Point_Subtype | |
3685 | -- E_Decimal_Fixed_Point_Type | |
3686 | -- E_Decimal_Fixed_Point_Subtype | |
3687 | -- E_Floating_Point_Type | |
3688 | E_Floating_Point_Subtype; | |
3689 | ||
3690 | subtype Object_Kind is Entity_Kind range | |
3691 | E_Variable .. | |
3692 | -- E_Component | |
3693 | -- E_Constant | |
3694 | -- E_Discriminant | |
3695 | -- E_Loop_Parameter | |
3696 | -- E_In_Parameter | |
3697 | -- E_Out_Parameter | |
3698 | -- E_In_Out_Parameter | |
3699 | -- E_Generic_In_Out_Parameter | |
3700 | E_Generic_In_Parameter; | |
3701 | ||
3702 | subtype Ordinary_Fixed_Point_Kind is Entity_Kind range | |
3703 | E_Ordinary_Fixed_Point_Type .. | |
3704 | E_Ordinary_Fixed_Point_Subtype; | |
3705 | ||
3706 | subtype Overloadable_Kind is Entity_Kind range | |
3707 | E_Enumeration_Literal .. | |
3708 | -- E_Function | |
3709 | -- E_Operator | |
3710 | -- E_Procedure | |
3711 | E_Entry; | |
3712 | ||
3713 | subtype Private_Kind is Entity_Kind range | |
3714 | E_Record_Type_With_Private .. | |
3715 | -- E_Record_Subtype_With_Private | |
3716 | -- E_Private_Type | |
3717 | -- E_Private_Subtype | |
3718 | -- E_Limited_Private_Type | |
3719 | E_Limited_Private_Subtype; | |
3720 | ||
3721 | subtype Protected_Kind is Entity_Kind range | |
3722 | E_Protected_Type .. | |
3723 | E_Protected_Subtype; | |
3724 | ||
3725 | subtype Real_Kind is Entity_Kind range | |
3726 | E_Ordinary_Fixed_Point_Type .. | |
3727 | -- E_Ordinary_Fixed_Point_Subtype | |
3728 | -- E_Decimal_Fixed_Point_Type | |
3729 | -- E_Decimal_Fixed_Point_Subtype | |
3730 | -- E_Floating_Point_Type | |
3731 | E_Floating_Point_Subtype; | |
3732 | ||
3733 | subtype Record_Kind is Entity_Kind range | |
3734 | E_Class_Wide_Type .. | |
3735 | -- E_Class_Wide_Subtype | |
3736 | -- E_Record_Type | |
3737 | -- E_Record_Subtype | |
3738 | -- E_Record_Type_With_Private | |
3739 | E_Record_Subtype_With_Private; | |
3740 | ||
3741 | subtype Scalar_Kind is Entity_Kind range | |
3742 | E_Enumeration_Type .. | |
3743 | -- E_Enumeration_Subtype | |
3744 | -- E_Signed_Integer_Type | |
3745 | -- E_Signed_Integer_Subtype | |
3746 | -- E_Modular_Integer_Type | |
3747 | -- E_Modular_Integer_Subtype | |
3748 | -- E_Ordinary_Fixed_Point_Type | |
3749 | -- E_Ordinary_Fixed_Point_Subtype | |
3750 | -- E_Decimal_Fixed_Point_Type | |
3751 | -- E_Decimal_Fixed_Point_Subtype | |
3752 | -- E_Floating_Point_Type | |
3753 | E_Floating_Point_Subtype; | |
3754 | ||
3755 | subtype String_Kind is Entity_Kind range | |
3756 | E_String_Type .. | |
3757 | -- E_String_Subtype | |
3758 | E_String_Literal_Subtype; | |
3759 | ||
3760 | subtype Subprogram_Kind is Entity_Kind range | |
3761 | E_Function .. | |
3762 | -- E_Operator | |
3763 | E_Procedure; | |
3764 | ||
3765 | subtype Signed_Integer_Kind is Entity_Kind range | |
3766 | E_Signed_Integer_Type .. | |
3767 | E_Signed_Integer_Subtype; | |
3768 | ||
3769 | subtype Task_Kind is Entity_Kind range | |
3770 | E_Task_Type .. | |
3771 | E_Task_Subtype; | |
3772 | ||
3773 | subtype Type_Kind is Entity_Kind range | |
3774 | E_Enumeration_Type .. | |
3775 | -- E_Enumeration_Subtype | |
3776 | -- E_Signed_Integer_Type | |
3777 | -- E_Signed_Integer_Subtype | |
3778 | -- E_Modular_Integer_Type | |
3779 | -- E_Modular_Integer_Subtype | |
3780 | -- E_Ordinary_Fixed_Point_Type | |
3781 | -- E_Ordinary_Fixed_Point_Subtype | |
3782 | -- E_Decimal_Fixed_Point_Type | |
3783 | -- E_Decimal_Fixed_Point_Subtype | |
3784 | -- E_Floating_Point_Type | |
3785 | -- E_Floating_Point_Subtype | |
3786 | -- E_Access_Type | |
3787 | -- E_Access_Subtype | |
3788 | -- E_Access_Attribute_Type | |
3789 | -- E_Allocator_Type, | |
3790 | -- E_General_Access_Type | |
3791 | -- E_Access_Subprogram_Type, | |
3792 | -- E_Access_Protected_Subprogram_Type | |
3793 | -- E_Anonymous_Access_Type | |
3794 | -- E_Array_Type | |
3795 | -- E_Array_Subtype | |
3796 | -- E_String_Type | |
3797 | -- E_String_Subtype | |
3798 | -- E_String_Literal_Subtype | |
3799 | -- E_Class_Wide_Subtype | |
3800 | -- E_Class_Wide_Type | |
3801 | -- E_Record_Type | |
3802 | -- E_Record_Subtype | |
3803 | -- E_Record_Type_With_Private | |
3804 | -- E_Record_Subtype_With_Private | |
3805 | -- E_Private_Type | |
3806 | -- E_Private_Subtype | |
3807 | -- E_Limited_Private_Type | |
3808 | -- E_Limited_Private_Subtype | |
3809 | -- E_Incomplete_Type | |
3810 | -- E_Task_Type | |
3811 | -- E_Task_Subtype | |
3812 | -- E_Protected_Type | |
3813 | -- E_Protected_Subtype | |
3814 | -- E_Exception_Type | |
3815 | E_Subprogram_Type; | |
3816 | ||
3817 | -------------------------------------------------------- | |
3818 | -- Description of Defined Attributes for Entity_Kinds -- | |
3819 | -------------------------------------------------------- | |
3820 | ||
3821 | -- For each enumeration value defined in Entity_Kind we list all the | |
3822 | -- attributes defined in Einfo which can legally be applied to an entity | |
3823 | -- of that kind. The implementation of the attribute functions (and for | |
3824 | -- non-synthesized attributes, or the corresponding set procedures) are | |
3825 | -- in the Einfo body. | |
3826 | ||
3827 | -- The following attributes apply to all entities | |
3828 | ||
3829 | -- Ekind (Ekind) | |
3830 | ||
3831 | -- Chars (Name1) | |
3832 | -- Next_Entity (Node2) | |
3833 | -- Scope (Node3) | |
3834 | -- Homonym (Node4) | |
3835 | -- Etype (Node5) | |
3836 | -- First_Rep_Item (Node6) | |
3837 | -- Freeze_Node (Node7) | |
3838 | ||
3839 | -- Address_Taken (Flag104) | |
fbf5a39b AC |
3840 | -- Can_Never_Be_Null (Flag38) |
3841 | -- Checks_May_Be_Suppressed (Flag31) | |
70482933 RK |
3842 | -- Debug_Info_Off (Flag166) |
3843 | -- Has_Convention_Pragma (Flag119) | |
3844 | -- Has_Delayed_Freeze (Flag18) | |
3845 | -- Has_Fully_Qualified_Name (Flag173) | |
3846 | -- Has_Gigi_Rep_Item (Flag82) | |
3847 | -- Has_Homonym (Flag56) | |
3848 | -- Has_Pragma_Elaborate_Body (Flag150) | |
3849 | -- Has_Pragma_Inline (Flag157) | |
07fc65c4 | 3850 | -- Has_Pragma_Unreferenced (Flag180) |
70482933 RK |
3851 | -- Has_Private_Declaration (Flag155) |
3852 | -- Has_Qualified_Name (Flag161) | |
3853 | -- Has_Unknown_Discriminants (Flag72) | |
fbf5a39b | 3854 | -- Has_Xref_Entry (Flag182) |
07fc65c4 | 3855 | -- Is_Bit_Packed_Array (Flag122) (base type only) |
70482933 RK |
3856 | -- Is_Child_Unit (Flag73) |
3857 | -- Is_Compilation_Unit (Flag149) | |
3858 | -- Is_Completely_Hidden (Flag103) | |
3859 | -- Is_Discrim_SO_Function (Flag176) | |
3860 | -- Is_Dispatching_Operation (Flag6) | |
3861 | -- Is_Exported (Flag99) | |
3862 | -- Is_First_Subtype (Flag70) | |
3863 | -- Is_Formal_Subprogram (Flag111) | |
3864 | -- Is_Generic_Instance (Flag130) | |
3865 | -- Is_Hidden (Flag57) | |
3866 | -- Is_Hidden_Open_Scope (Flag171) | |
3867 | -- Is_Immediately_Visible (Flag7) | |
3868 | -- Is_Imported (Flag24) | |
3869 | -- Is_Inlined (Flag11) | |
3870 | -- Is_Internal (Flag17) | |
3871 | -- Is_Itype (Flag91) | |
fbf5a39b | 3872 | -- Is_Known_Non_Null (Flag37) |
70482933 RK |
3873 | -- Is_Known_Valid (Flag170) |
3874 | -- Is_Limited_Composite (Flag106) | |
3875 | -- Is_Limited_Record (Flag25) | |
3876 | -- Is_Package_Body_Entity (Flag160) | |
3877 | -- Is_Packed_Array_Type (Flag138) | |
3878 | -- Is_Potentially_Use_Visible (Flag9) | |
3879 | -- Is_Preelaborated (Flag59) | |
3880 | -- Is_Public (Flag10) | |
3881 | -- Is_Pure (Flag44) | |
3882 | -- Is_Remote_Call_Interface (Flag62) | |
3883 | -- Is_Remote_Types (Flag61) | |
3884 | -- Is_Shared_Passive (Flag60) | |
3885 | -- Is_Statically_Allocated (Flag28) | |
3886 | -- Is_Unchecked_Union (Flag117) | |
3887 | -- Is_VMS_Exception (Flag133) | |
fbf5a39b AC |
3888 | -- Kill_Elaboration_Checks (Flag32) |
3889 | -- Kill_Range_Checks (Flag33) | |
3890 | -- Kill_Tag_Checks (Flag34) | |
70482933 RK |
3891 | -- Materialize_Entity (Flag168) |
3892 | -- Needs_Debug_Info (Flag147) | |
3893 | -- Referenced (Flag156) | |
fbf5a39b | 3894 | -- Referenced_As_LHS (Flag36) |
70482933 | 3895 | -- Suppress_Elaboration_Warnings (Flag148) |
70482933 | 3896 | -- Suppress_Style_Checks (Flag165) |
70482933 RK |
3897 | |
3898 | -- Declaration_Node (synth) | |
3899 | -- Enclosing_Dynamic_Scope (synth) | |
3900 | -- Has_Foreign_Convention (synth) | |
3901 | -- Is_Dynamic_Scope (synth) | |
70482933 RK |
3902 | -- Is_Limited_Type (synth) |
3903 | -- Underlying_Type (synth) | |
3904 | -- all classification attributes (synth) | |
3905 | ||
3906 | -- The following list of access functions applies to all entities for | |
3907 | -- types and subtypes. References to this list appear subsequently as | |
3908 | -- as "(plus type attributes)" for each appropriate Entity_Kind. | |
3909 | ||
3910 | -- Associated_Node_For_Itype (Node8) | |
3911 | -- Class_Wide_Type (Node9) | |
3912 | -- Referenced_Object (Node10) | |
3913 | -- Full_View (Node11) | |
3914 | -- Esize (Uint12) | |
3915 | -- RM_Size (Uint13) | |
3916 | -- Alignment (Uint14) | |
3917 | ||
3918 | -- Depends_On_Private (Flag14) | |
3919 | -- Discard_Names (Flag88) | |
3920 | -- Finalize_Storage_Only (Flag158) (base type only) | |
3921 | -- From_With_Type (Flag159) | |
07fc65c4 | 3922 | -- Has_Aliased_Components (Flag135) (base type only) |
70482933 RK |
3923 | -- Has_Alignment_Clause (Flag46) |
3924 | -- Has_Atomic_Components (Flag86) (base type only) | |
3925 | -- Has_Complex_Representation (Flag140) (base type only) | |
3926 | -- Has_Discriminants (Flag5) | |
07fc65c4 | 3927 | -- Has_Non_Standard_Rep (Flag75) (base type only) |
70482933 RK |
3928 | -- Has_Object_Size_Clause (Flag172) |
3929 | -- Has_Primitive_Operations (Flag120) (base type only) | |
3930 | -- Has_Size_Clause (Flag29) | |
3931 | -- Has_Specified_Layout (Flag100) (base type only) | |
3932 | -- Has_Task (Flag30) (base type only) | |
3933 | -- Has_Unchecked_Union (Flag123) (base type only) | |
3934 | -- Has_Volatile_Components (Flag87) (base type only) | |
3935 | -- In_Use (Flag8) | |
3936 | -- Is_Abstract (Flag19) | |
3937 | -- Is_Asynchronous (Flag81) | |
3938 | -- Is_Atomic (Flag85) | |
3939 | -- Is_Constr_Subt_For_U_Nominal (Flag80) | |
3940 | -- Is_Constr_Subt_For_UN_Aliased (Flag141) | |
3941 | -- Is_Controlled (Flag42) (base type only) | |
3942 | -- Is_Eliminated (Flag124) | |
3943 | -- Is_Frozen (Flag4) | |
3944 | -- Is_Generic_Actual_Type (Flag94) | |
3945 | -- Is_Generic_Type (Flag13) | |
3946 | -- Is_Non_Static_Subtype (Flag109) | |
3947 | -- Is_Packed (Flag51) (base type only) | |
3948 | -- Is_Private_Composite (Flag107) | |
3949 | -- Is_Renaming_Of_Object (Flag112) | |
3950 | -- Is_Tagged_Type (Flag55) | |
3951 | -- Is_Unsigned_Type (Flag144) | |
3952 | -- Is_Volatile (Flag16) | |
3953 | -- Size_Depends_On_Discriminant (Flag177) | |
3954 | -- Size_Known_At_Compile_Time (Flag92) | |
07fc65c4 | 3955 | -- Strict_Alignment (Flag145) (base type only) |
70482933 | 3956 | -- Suppress_Init_Proc (Flag105) (base type only) |
fbf5a39b | 3957 | -- Treat_As_Volatile (Flag41) |
70482933 RK |
3958 | |
3959 | -- Alignment_Clause (synth) | |
3960 | -- Ancestor_Subtype (synth) | |
3961 | -- Base_Type (synth) | |
3962 | -- First_Subtype (synth) | |
3963 | -- Has_Private_Ancestor (synth) | |
3964 | -- Implementation_Base_Type (synth) | |
3965 | -- Is_By_Copy_Type (synth) | |
3966 | -- Is_By_Reference_Type (synth) | |
3967 | -- Is_Return_By_Reference_Type (synth) | |
3968 | -- Root_Type (synth) | |
3969 | -- Size_Clause (synth) | |
3970 | ||
3971 | ------------------------------------------ | |
3972 | -- Applicable attributes by entity kind -- | |
3973 | ------------------------------------------ | |
3974 | ||
3975 | -- E_Access_Protected_Subprogram_Type | |
3976 | -- Equivalent_Type (Node18) | |
3977 | -- Directly_Designated_Type (Node20) | |
3978 | -- Needs_No_Actuals (Flag22) | |
3979 | -- (plus type attributes) | |
3980 | ||
3981 | -- E_Access_Subprogram_Type | |
3982 | -- Equivalent_Type (Node18) (remote types only) | |
3983 | -- Directly_Designated_Type (Node20) | |
3984 | -- Needs_No_Actuals (Flag22) | |
3985 | -- (plus type attributes) | |
3986 | ||
3987 | -- E_Access_Type | |
3988 | -- E_Access_Subtype | |
07fc65c4 | 3989 | -- Storage_Size_Variable (Node15) (base type only) |
70482933 RK |
3990 | -- Master_Id (Node17) |
3991 | -- Directly_Designated_Type (Node20) | |
07fc65c4 | 3992 | -- Associated_Storage_Pool (Node22) (base type only) |
70482933 RK |
3993 | -- Associated_Final_Chain (Node23) |
3994 | -- Has_Pragma_Controlled (Flag27) (base type only) | |
07fc65c4 | 3995 | -- Has_Storage_Size_Clause (Flag23) (base type only) |
70482933 | 3996 | -- Is_Access_Constant (Flag69) |
07fc65c4 | 3997 | -- No_Pool_Assigned (Flag131) (base type only) |
70482933 RK |
3998 | -- (plus type attributes) |
3999 | ||
4000 | -- E_Access_Attribute_Type | |
4001 | -- Directly_Designated_Type (Node20) | |
4002 | -- (plus type attributes) | |
4003 | ||
4004 | -- E_Allocator_Type | |
4005 | -- Directly_Designated_Type (Node20) | |
4006 | -- (plus type attributes) | |
4007 | ||
4008 | -- E_Anonymous_Access_Type | |
4009 | -- Storage_Size_Variable (Node15) ??? is this needed ??? | |
4010 | -- Directly_Designated_Type (Node20) | |
4011 | -- (plus type attributes) | |
4012 | ||
4013 | -- E_Array_Type | |
4014 | -- E_Array_Subtype | |
4015 | -- First_Index (Node17) | |
4016 | -- Related_Array_Object (Node19) | |
4017 | -- Component_Type (Node20) (base type only) | |
07fc65c4 | 4018 | -- Original_Array_Type (Node21) |
70482933 RK |
4019 | -- Component_Size (Uint22) (base type only) |
4020 | -- Packed_Array_Type (Node23) | |
4021 | -- Component_Alignment (special) (base type only) | |
4022 | -- Has_Component_Size_Clause (Flag68) (base type only) | |
4023 | -- Has_Controlled_Component (Flag43) (base type only) | |
4024 | -- Has_Pragma_Pack (Flag121) (base type only) | |
4025 | -- Is_Aliased (Flag15) | |
4026 | -- Is_Constrained (Flag12) | |
4027 | -- Next_Index (synth) | |
4028 | -- Number_Dimensions (synth) | |
4029 | -- (plus type attributes) | |
4030 | ||
4031 | -- E_Block | |
4032 | -- Block_Node (Node11) | |
4033 | -- First_Entity (Node17) | |
4034 | -- Last_Entity (Node20) | |
4035 | -- Delay_Cleanups (Flag114) | |
4036 | -- Discard_Names (Flag88) | |
4037 | -- Finalization_Chain_Entity (Node19) | |
4038 | -- Scope_Depth_Value (Uint22) | |
70482933 RK |
4039 | -- Entry_Cancel_Parameter (Node23) |
4040 | -- Has_Master_Entity (Flag21) | |
4041 | -- Has_Nested_Block_With_Handler (Flag101) | |
4042 | -- Sec_Stack_Needed_For_Return (Flag167) | |
4043 | -- Uses_Sec_Stack (Flag95) | |
fbf5a39b | 4044 | -- Scope_Depth (synth) |
70482933 RK |
4045 | |
4046 | -- E_Class_Wide_Type | |
4047 | -- E_Class_Wide_Subtype | |
4048 | -- Cloned_Subtype (Node16) (subtype case only) | |
4049 | -- First_Entity (Node17) | |
4050 | -- Equivalent_Type (Node18) (always Empty in type case) | |
4051 | -- Last_Entity (Node20) | |
4052 | -- Has_Controlled_Component (Flag43) (base type only) | |
4053 | -- First_Component (synth) | |
4054 | -- (plus type attributes) | |
4055 | ||
4056 | -- E_Component | |
4057 | -- Normalized_First_Bit (Uint8) | |
fbf5a39b | 4058 | -- Current_Value (Node9) (always Empty) |
70482933 RK |
4059 | -- Normalized_Position_Max (Uint10) |
4060 | -- Component_Bit_Offset (Uint11) | |
4061 | -- Esize (Uint12) | |
4062 | -- Component_Clause (Node13) | |
fbf5a39b | 4063 | -- Normalized_Position (Uint14) |
70482933 RK |
4064 | -- DT_Entry_Count (Uint15) |
4065 | -- Entry_Formal (Node16) | |
4066 | -- Prival (Node17) | |
4067 | -- Renamed_Object (Node18) (always Empty) | |
4068 | -- Discriminant_Checking_Func (Node20) | |
4069 | -- Interface_Name (Node21) (JGNAT usage only) | |
4070 | -- Original_Record_Component (Node22) | |
4071 | -- Protected_Operation (Node23) | |
4072 | -- Has_Biased_Representation (Flag139) | |
4073 | -- Has_Per_Object_Constraint (Flag154) | |
4074 | -- Is_Atomic (Flag85) | |
4075 | -- Is_Tag (Flag78) | |
4076 | -- Is_Volatile (Flag16) | |
fbf5a39b | 4077 | -- Treat_As_Volatile (Flag41) |
70482933 | 4078 | -- Is_Protected_Private (synth) |
fbf5a39b | 4079 | -- Next_Component (synth) |
70482933 RK |
4080 | |
4081 | -- E_Constant | |
4082 | -- E_Loop_Parameter | |
fbf5a39b | 4083 | -- Current_Value (Node9) (always Empty) |
70482933 RK |
4084 | -- Discriminal_Link (Node10) (discriminals only) |
4085 | -- Full_View (Node11) | |
4086 | -- Esize (Uint12) | |
4087 | -- Alignment (Uint14) | |
4088 | -- Actual_Subtype (Node17) | |
4089 | -- Renamed_Object (Node18) | |
fbf5a39b | 4090 | -- Size_Check_Code (Node19) (constants only) |
70482933 RK |
4091 | -- Interface_Name (Node21) |
4092 | -- Has_Alignment_Clause (Flag46) | |
4093 | -- Has_Atomic_Components (Flag86) | |
4094 | -- Has_Biased_Representation (Flag139) | |
4095 | -- Has_Size_Clause (Flag29) | |
4096 | -- Has_Volatile_Components (Flag87) | |
4097 | -- Is_Atomic (Flag85) | |
4098 | -- Is_Eliminated (Flag124) | |
4099 | -- Is_Psected (Flag153) | |
4100 | -- Is_True_Constant (Flag163) | |
4101 | -- Is_Volatile (Flag16) | |
fbf5a39b AC |
4102 | -- Never_Set_In_Source (Flag115) |
4103 | -- Treat_As_Volatile (Flag41) | |
70482933 RK |
4104 | -- Address_Clause (synth) |
4105 | -- Alignment_Clause (synth) | |
4106 | -- Constant_Value (synth) | |
4107 | -- Size_Clause (synth) | |
4108 | ||
4109 | -- E_Decimal_Fixed_Point_Type | |
4110 | -- E_Decimal_Fixed_Subtype | |
4111 | -- Scale_Value (Uint15) | |
4112 | -- Digits_Value (Uint17) | |
4113 | -- Scalar_Range (Node20) | |
4114 | -- Delta_Value (Ureal18) | |
4115 | -- Small_Value (Ureal21) | |
4116 | -- Has_Machine_Radix_Clause (Flag83) | |
4117 | -- Machine_Radix_10 (Flag84) | |
4118 | -- Type_Low_Bound (synth) | |
4119 | -- Type_High_Bound (synth) | |
4120 | -- (plus type attributes) | |
4121 | ||
4122 | -- E_Discriminant | |
4123 | -- Normalized_First_Bit (Uint8) | |
fbf5a39b | 4124 | -- Current_Value (Node9) (always Empty) |
70482933 RK |
4125 | -- Normalized_Position_Max (Uint10) |
4126 | -- Component_Bit_Offset (Uint11) | |
4127 | -- Esize (Uint12) | |
4128 | -- Component_Clause (Node13) | |
fbf5a39b | 4129 | -- Normalized_Position (Uint14) |
70482933 RK |
4130 | -- Discriminant_Number (Uint15) |
4131 | -- Discriminal (Node17) | |
4132 | -- Renamed_Object (Node18) (always Empty) | |
4133 | -- Corresponding_Discriminant (Node19) | |
4134 | -- Discriminant_Default_Value (Node20) | |
4135 | -- Interface_Name (Node21) (JGNAT usage only) | |
4136 | -- Original_Record_Component (Node22) | |
4137 | -- CR_Discriminant (Node23) | |
4138 | -- Next_Discriminant (synth) | |
fbf5a39b | 4139 | -- Next_Stored_Discriminant (synth) |
70482933 RK |
4140 | |
4141 | -- E_Entry | |
4142 | -- E_Entry_Family | |
4143 | -- Protected_Body_Subprogram (Node11) | |
4144 | -- Barrier_Function (Node12) | |
4145 | -- Entry_Parameters_Type (Node15) | |
4146 | -- First_Entity (Node17) | |
4147 | -- Alias (Node18) (Entry only. Always empty) | |
4148 | -- Finalization_Chain_Entity (Node19) | |
4149 | -- Last_Entity (Node20) | |
4150 | -- Accept_Address (Elist21) | |
4151 | -- Scope_Depth_Value (Uint22) | |
70482933 RK |
4152 | -- Privals_Chain (Elist23) (for a protected entry) |
4153 | -- Default_Expressions_Processed (Flag108) | |
4154 | -- Entry_Accepted (Flag152) | |
4155 | -- Is_AST_Entry (Flag132) (for entry only) | |
4156 | -- Needs_No_Actuals (Flag22) | |
4157 | -- Sec_Stack_Needed_For_Return (Flag167) | |
4158 | -- Uses_Sec_Stack (Flag95) | |
4159 | -- Address_Clause (synth) | |
4160 | -- First_Formal (synth) | |
4161 | -- Entry_Index_Type (synth) | |
4162 | -- Number_Formals (synth) | |
fbf5a39b | 4163 | -- Scope_Depth (synth) |
70482933 RK |
4164 | |
4165 | -- E_Entry_Index_Parameter | |
4166 | -- Entry_Index_Constant (Node18) | |
4167 | ||
4168 | -- E_Enumeration_Literal | |
4169 | -- Enumeration_Pos (Uint11) | |
4170 | -- Enumeration_Rep (Uint12) | |
4171 | -- Debug_Renaming_Link (Node13) | |
4172 | -- Alias (Node18) | |
4173 | -- Enumeration_Rep_Expr (Node22) | |
4174 | -- Next_Literal (synth) | |
4175 | ||
4176 | -- E_Enumeration_Type | |
4177 | -- E_Enumeration_Subtype | |
4178 | -- Lit_Indexes (Node15) (root type only) | |
4179 | -- Lit_Strings (Node16) (root type only) | |
4180 | -- First_Literal (Node17) | |
4181 | -- Scalar_Range (Node20) | |
4182 | -- Enum_Pos_To_Rep (Node23) (type only, not subtype) | |
4183 | -- Has_Biased_Representation (Flag139) | |
fbf5a39b | 4184 | -- Has_Contiguous_Rep (Flag181) |
70482933 RK |
4185 | -- Has_Enumeration_Rep_Clause (Flag66) |
4186 | -- Nonzero_Is_True (Flag162) (base type only) | |
4187 | -- Type_Low_Bound (synth) | |
4188 | -- Type_High_Bound (synth) | |
4189 | -- (plus type attributes) | |
4190 | ||
4191 | -- E_Exception | |
fbf5a39b | 4192 | -- Alignment (Uint14) |
70482933 RK |
4193 | -- Renamed_Entity (Node18) |
4194 | -- Register_Exception_Call (Node20) | |
4195 | -- Interface_Name (Node21) | |
4196 | -- Exception_Code (Uint22) | |
4197 | -- Discard_Names (Flag88) | |
4198 | -- Is_VMS_Exception (Flag133) | |
4199 | ||
4200 | -- E_Exception_Type | |
4201 | -- Equivalent_Type (Node18) | |
4202 | -- (plus type attributes) | |
4203 | ||
4204 | -- E_Floating_Point_Type | |
4205 | -- E_Floating_Point_Subtype | |
4206 | -- Digits_Value (Uint17) | |
70482933 | 4207 | -- Scalar_Range (Node20) |
fbf5a39b | 4208 | -- Type_Low_Bound (synth) |
70482933 RK |
4209 | -- Type_High_Bound (synth) |
4210 | -- (plus type attributes) | |
4211 | ||
4212 | -- E_Function | |
4213 | -- E_Generic_Function | |
4214 | -- Mechanism (Uint8) (returns Mechanism_Type) | |
4215 | -- Renaming_Map (Uint9) | |
4216 | -- Handler_Records (List10) (non-generic case only) | |
4217 | -- Protected_Body_Subprogram (Node11) | |
4218 | -- Next_Inlined_Subprogram (Node12) | |
4219 | -- Corresponding_Equality (Node13) (implicit /= only) | |
4220 | -- Elaboration_Entity (Node13) (all other cases) | |
4221 | -- First_Optional_Parameter (Node14) (non-generic case only) | |
4222 | -- DT_Position (Uint15) | |
4223 | -- DTC_Entity (Node16) | |
4224 | -- First_Entity (Node17) | |
4225 | -- Alias (Node18) (non-generic case only) | |
4226 | -- Renamed_Entity (Node18) (generic case only) | |
4227 | -- Finalization_Chain_Entity (Node19) | |
4228 | -- Last_Entity (Node20) | |
4229 | -- Interface_Name (Node21) | |
4230 | -- Scope_Depth_Value (Uint22) | |
70482933 RK |
4231 | -- Generic_Renamings (Elist23) (for an instance) |
4232 | -- Inner_Instances (Elist23) (for a generic function) | |
4233 | -- Privals_Chain (Elist23) (for a protected function) | |
fbf5a39b | 4234 | -- Body_Needed_For_SAL (Flag40) |
70482933 RK |
4235 | -- Elaboration_Entity_Required (Flag174) |
4236 | -- Function_Returns_With_DSP (Flag169) | |
4237 | -- Default_Expressions_Processed (Flag108) | |
4238 | -- Delay_Cleanups (Flag114) | |
4239 | -- Delay_Subprogram_Descriptors (Flag50) | |
4240 | -- Discard_Names (Flag88) | |
4241 | -- Elaborate_All_Desirable (Flag146) | |
4242 | -- Has_Completion (Flag26) | |
4243 | -- Has_Controlling_Result (Flag98) | |
4244 | -- Has_Master_Entity (Flag21) | |
4245 | -- Has_Missing_Return (Flag142) | |
4246 | -- Has_Nested_Block_With_Handler (Flag101) | |
0839863c | 4247 | -- Has_Pragma_Pure_Function (Flag179) (non-generic case only) |
70482933 RK |
4248 | -- Has_Recursive_Call (Flag143) |
4249 | -- Has_Subprogram_Descriptor (Flag93) | |
4250 | -- Is_Abstract (Flag19) | |
4251 | -- Is_Called (Flag102) (non-generic case only) | |
4252 | -- Is_Constructor (Flag76) | |
70482933 RK |
4253 | -- Is_Discrim_SO_Function (Flag176) |
4254 | -- Is_Eliminated (Flag124) | |
4255 | -- Is_Instantiated (Flag126) (generic case only) | |
4256 | -- Is_Intrinsic_Subprogram (Flag64) | |
4257 | -- Is_Machine_Code_Subprogram (Flag137) (non-generic case only) | |
fbf5a39b | 4258 | -- Is_Overriding_Operation (Flag39) (non-generic case only) |
70482933 RK |
4259 | -- Is_Private_Descendant (Flag53) |
4260 | -- Is_Pure (Flag44) | |
4261 | -- Is_Visible_Child_Unit (Flag116) | |
4262 | -- Needs_No_Actuals (Flag22) | |
4263 | -- Return_Present (Flag54) | |
4264 | -- Returns_By_Ref (Flag90) | |
4265 | -- Sec_Stack_Needed_For_Return (Flag167) | |
4266 | -- Uses_Sec_Stack (Flag95) | |
4267 | -- Address_Clause (synth) | |
4268 | -- First_Formal (synth) | |
4269 | -- Number_Formals (synth) | |
fbf5a39b | 4270 | -- Scope_Depth (synth) |
70482933 RK |
4271 | |
4272 | -- E_General_Access_Type | |
4273 | -- Storage_Size_Variable (Node15) (base type only) | |
4274 | -- Master_Id (Node17) | |
4275 | -- Directly_Designated_Type (Node20) | |
07fc65c4 | 4276 | -- Associated_Storage_Pool (Node22) (base type only) |
70482933 RK |
4277 | -- Associated_Final_Chain (Node23) |
4278 | -- (plus type attributes) | |
4279 | ||
4280 | -- E_Generic_In_Parameter | |
4281 | -- E_Generic_In_Out_Parameter | |
fbf5a39b | 4282 | -- Current_Value (Node9) (always Empty) |
70482933 RK |
4283 | -- Entry_Component (Node11) |
4284 | -- Actual_Subtype (Node17) | |
4285 | -- Renamed_Object (Node18) (always Empty) | |
4286 | -- Default_Value (Node20) | |
4287 | -- Protected_Formal (Node22) | |
4288 | -- Is_Controlling_Formal (Flag97) | |
4289 | -- Is_Entry_Formal (Flag52) | |
4290 | -- Parameter_Mode (synth) | |
4291 | ||
4292 | -- E_Incomplete_Type | |
fbf5a39b | 4293 | -- Non_Limited_View (Node17) |
70482933 RK |
4294 | -- Private_Dependents (Elist18) |
4295 | -- Discriminant_Constraint (Elist21) | |
fbf5a39b | 4296 | -- Stored_Constraint (Elist23) |
70482933 | 4297 | -- First_Discriminant (synth) |
fbf5a39b | 4298 | -- First_Stored_Discriminant (synth) |
70482933 RK |
4299 | -- (plus type attributes) |
4300 | ||
4301 | -- E_In_Parameter | |
4302 | -- E_In_Out_Parameter | |
4303 | -- E_Out_Parameter | |
4304 | -- Mechanism (Uint8) (returns Mechanism_Type) | |
fbf5a39b | 4305 | -- Current_Value (Node9) (always Empty for IN case) |
70482933 RK |
4306 | -- Discriminal_Link (Node10) (discriminals only) |
4307 | -- Entry_Component (Node11) | |
4308 | -- Esize (Uint12) | |
4309 | -- Extra_Accessibility (Node13) | |
4310 | -- Alignment (Uint14) | |
4311 | -- Extra_Formal (Node15) | |
4312 | -- Unset_Reference (Node16) | |
4313 | -- Actual_Subtype (Node17) | |
4314 | -- Renamed_Object (Node18) | |
4315 | -- Spec_Entity (Node19) | |
4316 | -- Default_Value (Node20) | |
4317 | -- Default_Expr_Function (Node21) | |
4318 | -- Protected_Formal (Node22) | |
4319 | -- Extra_Constrained (Node23) | |
4320 | -- Is_Controlling_Formal (Flag97) | |
4321 | -- Is_Entry_Formal (Flag52) | |
4322 | -- Is_Optional_Parameter (Flag134) | |
fbf5a39b | 4323 | -- Never_Set_In_Source (Flag115) |
70482933 RK |
4324 | -- Parameter_Mode (synth) |
4325 | ||
4326 | -- E_Label | |
4327 | -- Enclosing_Scope (Node18) | |
4328 | -- Reachable (Flag49) | |
4329 | ||
4330 | -- E_Limited_Private_Type | |
4331 | -- E_Limited_Private_Subtype | |
4332 | -- First_Entity (Node17) | |
4333 | -- Private_Dependents (Elist18) | |
4334 | -- Underlying_Full_View (Node19) | |
4335 | -- Last_Entity (Node20) | |
4336 | -- Discriminant_Constraint (Elist21) | |
4337 | -- Private_View (Node22) | |
fbf5a39b | 4338 | -- Stored_Constraint (Elist23) |
70482933 RK |
4339 | -- Has_Completion (Flag26) |
4340 | -- Has_Completion_In_Body (Flag71) | |
4341 | -- First_Discriminant (synth) | |
fbf5a39b | 4342 | -- First_Stored_Discriminant (synth) |
70482933 RK |
4343 | -- (plus type attributes) |
4344 | ||
4345 | -- E_Loop | |
4346 | -- Has_Exit (Flag47) | |
4347 | -- Has_Master_Entity (Flag21) | |
4348 | -- Has_Nested_Block_With_Handler (Flag101) | |
4349 | ||
4350 | -- E_Modular_Integer_Type | |
4351 | -- E_Modular_Integer_Subtype | |
4352 | -- Modulus (Uint17) (base type only) | |
07fc65c4 | 4353 | -- Original_Array_Type (Node21) |
70482933 RK |
4354 | -- Scalar_Range (Node20) |
4355 | -- Non_Binary_Modulus (Flag58) (base type only) | |
4356 | -- Has_Biased_Representation (Flag139) | |
4357 | -- Type_Low_Bound (synth) | |
4358 | -- Type_High_Bound (synth) | |
4359 | -- (plus type attributes) | |
4360 | ||
4361 | -- E_Named_Integer | |
4362 | -- Constant_Value (synth) | |
4363 | ||
4364 | -- E_Named_Real | |
4365 | -- Constant_Value (synth) | |
4366 | ||
4367 | -- E_Operator | |
4368 | -- First_Entity (Node17) | |
4369 | -- Alias (Node18) | |
4370 | -- Last_Entity (Node20) | |
4371 | -- Is_Machine_Code_Subprogram (Flag137) | |
4372 | -- Is_Pure (Flag44) | |
4373 | -- Is_Intrinsic_Subprogram (Flag64) | |
fbf5a39b | 4374 | -- Is_Overriding_Operation (Flag39) |
70482933 | 4375 | -- Default_Expressions_Processed (Flag108) |
0839863c | 4376 | -- Has_Pragma_Pure_Function (Flag179) |
70482933 RK |
4377 | |
4378 | -- E_Ordinary_Fixed_Point_Type | |
4379 | -- E_Ordinary_Fixed_Point_Subtype | |
4380 | -- Delta_Value (Ureal18) | |
4381 | -- Scalar_Range (Node20) | |
4382 | -- Small_Value (Ureal21) | |
4383 | -- Has_Small_Clause (Flag67) | |
4384 | -- Type_Low_Bound (synth) | |
4385 | -- Type_High_Bound (synth) | |
4386 | -- (plus type attributes) | |
4387 | ||
4388 | -- E_Package | |
4389 | -- E_Generic_Package | |
4390 | -- Dependent_Instances (Elist8) (for an instance) | |
fbf5a39b | 4391 | -- Non_Limited_Views (Elist8) (non-generic, not instance) |
70482933 RK |
4392 | -- Renaming_Map (Uint9) |
4393 | -- Handler_Records (List10) (non-generic case only) | |
fbf5a39b | 4394 | -- Generic_Homonym (Node11) (generic case only) |
70482933 RK |
4395 | -- Associated_Formal_Package (Node12) |
4396 | -- Elaboration_Entity (Node13) | |
4397 | -- Shadow_Entities (List14) | |
4398 | -- Related_Instance (Node15) (non-generic case only) | |
4399 | -- First_Private_Entity (Node16) | |
4400 | -- First_Entity (Node17) | |
4401 | -- Renamed_Entity (Node18) | |
4402 | -- Body_Entity (Node19) | |
4403 | -- Last_Entity (Node20) | |
4404 | -- Interface_Name (Node21) | |
4405 | -- Scope_Depth_Value (Uint22) | |
70482933 RK |
4406 | -- Generic_Renamings (Elist23) (for an instance) |
4407 | -- Inner_Instances (Elist23) (generic case only) | |
fbf5a39b | 4408 | -- Limited_Views (Elist23) (non-generic, not instance) |
70482933 | 4409 | -- Delay_Subprogram_Descriptors (Flag50) |
fbf5a39b | 4410 | -- Body_Needed_For_SAL (Flag40) |
70482933 RK |
4411 | -- Discard_Names (Flag88) |
4412 | -- Elaborate_All_Desirable (Flag146) | |
4413 | -- Elaboration_Entity_Required (Flag174) | |
4414 | -- From_With_Type (Flag159) | |
4415 | -- Has_All_Calls_Remote (Flag79) | |
4416 | -- Has_Completion (Flag26) | |
4417 | -- Has_Forward_Instantiation (Flag175) | |
4418 | -- Has_Master_Entity (Flag21) | |
4419 | -- Has_Subprogram_Descriptor (Flag93) | |
4420 | -- In_Package_Body (Flag48) | |
4421 | -- In_Private_Part (Flag45) | |
4422 | -- In_Use (Flag8) | |
4423 | -- Is_Instantiated (Flag126) | |
4424 | -- Is_Private_Descendant (Flag53) | |
4425 | -- Is_Visible_Child_Unit (Flag116) | |
4426 | -- Is_Wrapper_Package (synth) (non-generic case only) | |
fbf5a39b | 4427 | -- Scope_Depth (synth) |
70482933 RK |
4428 | |
4429 | -- E_Package_Body | |
4430 | -- Handler_Records (List10) (non-generic case only) | |
fbf5a39b | 4431 | -- Related_Instance (Node15) (non-generic case only) |
70482933 RK |
4432 | -- First_Entity (Node17) |
4433 | -- Spec_Entity (Node19) | |
4434 | -- Last_Entity (Node20) | |
4435 | -- Scope_Depth_Value (Uint22) | |
4436 | -- Scope_Depth (synth) | |
4437 | -- Delay_Subprogram_Descriptors (Flag50) | |
4438 | -- Has_Subprogram_Descriptor (Flag93) | |
4439 | ||
4440 | -- E_Private_Type | |
4441 | -- E_Private_Subtype | |
4442 | -- Primitive_Operations (Elist15) | |
4443 | -- First_Entity (Node17) | |
4444 | -- Private_Dependents (Elist18) | |
4445 | -- Underlying_Full_View (Node19) | |
4446 | -- Last_Entity (Node20) | |
4447 | -- Discriminant_Constraint (Elist21) | |
4448 | -- Private_View (Node22) | |
fbf5a39b | 4449 | -- Stored_Constraint (Elist23) |
70482933 RK |
4450 | -- Has_Completion (Flag26) |
4451 | -- Has_Completion_In_Body (Flag71) | |
4452 | -- Is_Controlled (Flag42) (base type only) | |
4453 | -- Is_For_Access_Subtype (Flag118) (subtype only) | |
4454 | -- First_Discriminant (synth) | |
fbf5a39b | 4455 | -- First_Stored_Discriminant (synth) |
70482933 RK |
4456 | -- (plus type attributes) |
4457 | ||
4458 | -- E_Procedure | |
4459 | -- E_Generic_Procedure | |
4460 | -- Renaming_Map (Uint9) | |
4461 | -- Handler_Records (List10) (non-generic case only) | |
4462 | -- Protected_Body_Subprogram (Node11) | |
4463 | -- Next_Inlined_Subprogram (Node12) | |
4464 | -- Elaboration_Entity (Node13) | |
4465 | -- First_Optional_Parameter (Node14) (non-generic case only) | |
4466 | -- DT_Position (Uint15) | |
4467 | -- DTC_Entity (Node16) | |
4468 | -- First_Entity (Node17) | |
4469 | -- Alias (Node18) (non-generic case only) | |
4470 | -- Renamed_Entity (Node18) (generic case only) | |
4471 | -- Finalization_Chain_Entity (Node19) | |
4472 | -- Last_Entity (Node20) | |
4473 | -- Interface_Name (Node21) | |
4474 | -- Scope_Depth_Value (Uint22) | |
4475 | -- Scope_Depth (synth) | |
4476 | -- Generic_Renamings (Elist23) (for an instance) | |
4477 | -- Inner_Instances (Elist23) (for a generic procedure) | |
4478 | -- Privals_Chain (Elist23) (for a protected procedure) | |
fbf5a39b | 4479 | -- Body_Needed_For_SAL (Flag40) |
70482933 RK |
4480 | -- Elaboration_Entity_Required (Flag174) |
4481 | -- Function_Returns_With_DSP (Flag169) (always False for procedure) | |
4482 | -- Default_Expressions_Processed (Flag108) | |
4483 | -- Delay_Cleanups (Flag114) | |
4484 | -- Delay_Subprogram_Descriptors (Flag50) | |
4485 | -- Discard_Names (Flag88) | |
4486 | -- Elaborate_All_Desirable (Flag146) | |
4487 | -- Has_Completion (Flag26) | |
4488 | -- Has_Master_Entity (Flag21) | |
4489 | -- Has_Nested_Block_With_Handler (Flag101) | |
0839863c | 4490 | -- Has_Pragma_Pure_Function (Flag179) (non-generic case only) |
70482933 RK |
4491 | -- Has_Subprogram_Descriptor (Flag93) |
4492 | -- Is_Visible_Child_Unit (Flag116) | |
4493 | -- Is_Abstract (Flag19) | |
4494 | -- Is_Asynchronous (Flag81) | |
4495 | -- Is_Called (Flag102) (non-generic subprogram) | |
4496 | -- Is_Constructor (Flag76) | |
70482933 RK |
4497 | -- Is_Eliminated (Flag124) |
4498 | -- Is_Instantiated (Flag126) (generic case only) | |
4499 | -- Is_Interrupt_Handler (Flag89) | |
4500 | -- Is_Intrinsic_Subprogram (Flag64) | |
4501 | -- Is_Machine_Code_Subprogram (Flag137) (non-generic case only) | |
4502 | -- Is_Null_Init_Proc (Flag178) | |
fbf5a39b | 4503 | -- Is_Overriding_Operation (Flag39) (non-generic case only) |
70482933 RK |
4504 | -- Is_Private_Descendant (Flag53) |
4505 | -- Is_Pure (Flag44) | |
4506 | -- Is_Valued_Procedure (Flag127) | |
4507 | -- Is_Visible_Child_Unit (Flag116) | |
4508 | -- Needs_No_Actuals (Flag22) | |
4509 | -- No_Return (Flag113) | |
4510 | -- Sec_Stack_Needed_For_Return (Flag167) | |
4511 | -- Address_Clause (synth) | |
4512 | -- First_Formal (synth) | |
4513 | -- Number_Formals (synth) | |
4514 | ||
4515 | -- E_Protected_Body | |
4516 | -- Object_Ref (Node17) | |
4517 | -- (any others??? First/Last Entity, Scope_Depth???) | |
4518 | ||
4519 | -- E_Protected_Object | |
4520 | ||
4521 | -- E_Protected_Type | |
4522 | -- E_Protected_Subtype | |
4523 | -- Entry_Bodies_Array (Node15) | |
4524 | -- First_Private_Entity (Node16) | |
4525 | -- First_Entity (Node17) | |
4526 | -- Corresponding_Record_Type (Node18) | |
4527 | -- Finalization_Chain_Entity (Node19) | |
4528 | -- Last_Entity (Node20) | |
4529 | -- Discriminant_Constraint (Elist21) | |
4530 | -- Scope_Depth_Value (Uint22) | |
4531 | -- Scope_Depth (synth) | |
fbf5a39b | 4532 | -- Stored_Constraint (Elist23) |
70482933 RK |
4533 | -- Has_Controlled_Component (Flag43) (base type only) |
4534 | -- Has_Interrupt_Handler (synth) | |
4535 | -- Sec_Stack_Needed_For_Return (Flag167) ??? | |
4536 | -- Uses_Sec_Stack (Flag95) ??? | |
4537 | -- Has_Entries (synth) | |
4538 | -- Number_Entries (synth) | |
4539 | ||
4540 | -- E_Record_Type | |
4541 | -- E_Record_Subtype | |
4542 | -- Primitive_Operations (Elist15) | |
4543 | -- Access_Disp_Table (Node16) (base type only) | |
4544 | -- Cloned_Subtype (Node16) (subtype case only) | |
4545 | -- First_Entity (Node17) | |
4546 | -- Corresponding_Concurrent_Type (Node18) | |
4547 | -- Parent_Subtype (Node19) | |
4548 | -- Last_Entity (Node20) | |
4549 | -- Discriminant_Constraint (Elist21) | |
07fc65c4 | 4550 | -- Corresponding_Remote_Type (Node22) |
fbf5a39b | 4551 | -- Stored_Constraint (Elist23) |
70482933 RK |
4552 | -- Component_Alignment (special) (base type only) |
4553 | -- C_Pass_By_Copy (Flag125) (base type only) | |
4554 | -- Has_Controlled_Component (Flag43) (base type only) | |
4555 | -- Has_External_Tag_Rep_Clause (Flag110) | |
07fc65c4 | 4556 | -- Has_Record_Rep_Clause (Flag65) (base type only) |
fbf5a39b | 4557 | -- Is_Class_Wide_Equivalent_Type (Flag35) |
70482933 RK |
4558 | -- Is_Concurrent_Record_Type (Flag20) |
4559 | -- Is_Constrained (Flag12) | |
4560 | -- Is_Controlled (Flag42) (base type only) | |
4561 | -- Reverse_Bit_Order (Flag164) (base type only) | |
4562 | -- First_Component (synth) | |
4563 | -- First_Discriminant (synth) | |
fbf5a39b | 4564 | -- First_Stored_Discriminant (synth) |
70482933 RK |
4565 | -- Tag_Component (synth) |
4566 | -- (plus type attributes) | |
4567 | ||
4568 | -- E_Record_Type_With_Private | |
4569 | -- E_Record_Subtype_With_Private | |
4570 | -- Primitive_Operations (Elist15) | |
4571 | -- Access_Disp_Table (Node16) (base type only) | |
4572 | -- First_Entity (Node17) | |
4573 | -- Private_Dependents (Elist18) | |
4574 | -- Underlying_Full_View (Node19) | |
4575 | -- Last_Entity (Node20) | |
4576 | -- Discriminant_Constraint (Elist21) | |
4577 | -- Private_View (Node22) | |
fbf5a39b | 4578 | -- Stored_Constraint (Elist23) |
70482933 RK |
4579 | -- Has_Completion (Flag26) |
4580 | -- Has_Completion_In_Body (Flag71) | |
4581 | -- Has_Controlled_Component (Flag43) (base type only) | |
07fc65c4 | 4582 | -- Has_Record_Rep_Clause (Flag65) (base type only) |
70482933 RK |
4583 | -- Has_External_Tag_Rep_Clause (Flag110) |
4584 | -- Is_Concurrent_Record_Type (Flag20) | |
4585 | -- Is_Constrained (Flag12) | |
4586 | -- Is_Controlled (Flag42) (base type only) | |
4587 | -- Reverse_Bit_Order (Flag164) (base type only) | |
4588 | -- First_Component (synth) | |
4589 | -- First_Discriminant (synth) | |
fbf5a39b | 4590 | -- First_Stored_Discriminant (synth) |
70482933 RK |
4591 | -- Tag_Component (synth) |
4592 | -- (plus type attributes) | |
4593 | ||
4594 | -- E_Signed_Integer_Type | |
4595 | -- E_Signed_Integer_Subtype | |
4596 | -- Scalar_Range (Node20) | |
4597 | -- Has_Biased_Representation (Flag139) | |
4598 | -- Type_Low_Bound (synth) | |
4599 | -- Type_High_Bound (synth) | |
4600 | -- (plus type attributes) | |
4601 | ||
4602 | -- E_String_Type | |
4603 | -- E_String_Subtype | |
4604 | -- First_Index (Node17) | |
4605 | -- Component_Type (Node20) (base type only) | |
4606 | -- Is_Constrained (Flag12) | |
4607 | -- Next_Index (synth) | |
4608 | -- Number_Dimensions (synth) | |
4609 | -- (plus type attributes) | |
4610 | ||
4611 | -- E_String_Literal_Subtype | |
4612 | -- String_Literal_Low_Bound (Node15) | |
4613 | -- String_Literal_Length (Uint16) | |
4614 | -- First_Index (Node17) (always Empty) | |
70482933 RK |
4615 | -- Packed_Array_Type (Node23) |
4616 | -- (plus type attributes) | |
4617 | ||
4618 | -- E_Subprogram_Body | |
07fc65c4 | 4619 | -- Mechanism (Uint8) |
70482933 RK |
4620 | -- First_Entity (Node17) |
4621 | -- Last_Entity (Node20) | |
4622 | -- Scope_Depth_Value (Uint22) | |
4623 | -- Scope_Depth (synth) | |
4624 | ||
4625 | -- E_Subprogram_Type | |
4626 | -- Directly_Designated_Type (Node20) | |
4627 | -- First_Formal (synth) | |
4628 | -- Number_Formals (synth) | |
4629 | -- Function_Returns_With_DSP (Flag169) | |
4630 | -- (plus type attributes) | |
4631 | ||
4632 | -- E_Task_Body | |
4633 | -- (any others??? First/Last Entity, Scope_Depth???) | |
4634 | ||
4635 | -- E_Task_Type | |
4636 | -- E_Task_Subtype | |
4637 | -- Storage_Size_Variable (Node15) (base type only) | |
4638 | -- First_Private_Entity (Node16) | |
4639 | -- First_Entity (Node17) | |
4640 | -- Corresponding_Record_Type (Node18) | |
4641 | -- Finalization_Chain_Entity (Node19) | |
4642 | -- Last_Entity (Node20) | |
4643 | -- Discriminant_Constraint (Elist21) | |
4644 | -- Scope_Depth_Value (Uint22) | |
4645 | -- Scope_Depth (synth) | |
fbf5a39b | 4646 | -- Stored_Constraint (Elist23) |
70482933 RK |
4647 | -- Delay_Cleanups (Flag114) |
4648 | -- Has_Master_Entity (Flag21) | |
4649 | -- Has_Storage_Size_Clause (Flag23) (base type only) | |
4650 | -- Uses_Sec_Stack (Flag95) ??? | |
4651 | -- Sec_Stack_Needed_For_Return (Flag167) ??? | |
4652 | -- Has_Entries (synth) | |
4653 | -- Number_Entries (synth) | |
4654 | -- (plus type attributes) | |
4655 | ||
4656 | -- E_Variable | |
4657 | -- Hiding_Loop_Variable (Node8) | |
fbf5a39b | 4658 | -- Current_Value (Node9) |
70482933 RK |
4659 | -- Esize (Uint12) |
4660 | -- Extra_Accessibility (Node13) | |
4661 | -- Alignment (Uint14) | |
4662 | -- Shared_Var_Read_Proc (Node15) | |
4663 | -- Unset_Reference (Node16) | |
4664 | -- Actual_Subtype (Node17) | |
4665 | -- Renamed_Object (Node18) | |
fbf5a39b | 4666 | -- Size_Check_Code (Node19) |
70482933 RK |
4667 | -- Interface_Name (Node21) |
4668 | -- Shared_Var_Assign_Proc (Node22) | |
4669 | -- Extra_Constrained (Node23) | |
4670 | -- Has_Alignment_Clause (Flag46) | |
4671 | -- Has_Atomic_Components (Flag86) | |
4672 | -- Has_Biased_Representation (Flag139) | |
4673 | -- Has_Size_Clause (Flag29) | |
4674 | -- Has_Volatile_Components (Flag87) | |
4675 | -- Is_Atomic (Flag85) | |
4676 | -- Is_Eliminated (Flag124) | |
4677 | -- Is_Psected (Flag153) | |
4678 | -- Is_Shared_Passive (Flag60) | |
4679 | -- Is_True_Constant (Flag163) | |
4680 | -- Is_Volatile (Flag16) | |
fbf5a39b AC |
4681 | -- Never_Set_In_Source (Flag115) |
4682 | -- Treat_As_Volatile (Flag41) | |
70482933 RK |
4683 | -- Address_Clause (synth) |
4684 | -- Alignment_Clause (synth) | |
fbf5a39b | 4685 | -- Constant_Value (synth) |
70482933 RK |
4686 | -- Size_Clause (synth) |
4687 | ||
4688 | -- E_Void | |
4689 | -- Since E_Void is the initial Ekind value of an entity when it is first | |
4690 | -- created, one might expect that no attributes would be defined on such | |
4691 | -- an entity until its Ekind field is set. However, in practice, there | |
4692 | -- are many instances in which fields of an E_Void entity are set in the | |
4693 | -- code prior to setting the Ekind field. This is not well documented or | |
4694 | -- well controlled, and needs cleaning up later. Meanwhile, the access | |
4695 | -- procedures in the body of Einfo permit many, but not all, attributes | |
4696 | -- to be applied to an E_Void entity, precisely so that this kind of | |
4697 | -- pre-setting of attributes works. This is really a hole in the dynamic | |
4698 | -- type checking, since there is no assurance that the eventual Ekind | |
4699 | -- value will be appropriate for the attributes set, and the consequence | |
4700 | -- is that the dynamic type checking in the Einfo body is unnecessarily | |
4701 | -- weak. To be looked at systematically some time ??? | |
4702 | ||
4703 | --------------------------------- | |
4704 | -- Component_Alignment Control -- | |
4705 | --------------------------------- | |
4706 | ||
4707 | -- There are four types of alignment possible for array and record | |
4708 | -- types, and a field in the type entities contains a value of the | |
4709 | -- following type indicating which alignment choice applies. For full | |
4710 | -- details of the meaning of these aligment types, see description | |
4711 | -- of the Component_Alignment pragma | |
4712 | ||
4713 | type Component_Alignment_Kind is ( | |
4714 | Calign_Default, -- default alignment | |
4715 | Calign_Component_Size, -- natural alignment for component size | |
4716 | Calign_Component_Size_4, -- natural for size <= 4, 4 for size >= 4 | |
4717 | Calign_Storage_Unit); -- all components byte aligned | |
4718 | ||
4719 | --------------- | |
4720 | -- Iterators -- | |
4721 | --------------- | |
4722 | ||
4723 | -- In addition to attributes that are stored as plain data, other | |
4724 | -- attributes are procedural, and require some small amount of | |
4725 | -- computation. Of course, from the point of view of a user of this | |
4726 | -- package, the distinction is not visible (even the field information | |
4727 | -- provided below should be disregarded, as it is subject to change | |
4728 | -- without notice!). A number of attributes appear as lists: lists of | |
4729 | -- formals, lists of actuals, of discriminants, etc. For these, pairs | |
4730 | -- of functions are defined, which take the form: | |
4731 | ||
4732 | -- function First_Thing (E : Enclosing_Construct) return Thing; | |
4733 | -- function Next_Thing (T : Thing) return Thing; | |
4734 | ||
4735 | -- The end of iteration is always signaled by a value of Empty, so that | |
4736 | -- loops over these chains invariably have the form: | |
4737 | ||
4738 | -- This : Thing; | |
4739 | -- ... | |
4740 | -- This := First_Thing (E); | |
4741 | ||
4742 | -- while Present (This) loop | |
4743 | -- Do_Something_With (This); | |
4744 | -- ... | |
4745 | -- This := Next_Thing (This); | |
4746 | -- end loop; | |
4747 | ||
4748 | ----------------------------------- | |
4749 | -- Handling of Check Suppression -- | |
4750 | ----------------------------------- | |
4751 | ||
4752 | -- There are three ways that checks can be suppressed: | |
4753 | ||
fbf5a39b AC |
4754 | -- 1. At the command line level |
4755 | -- 2. At the scope level. | |
4756 | -- 3. At the entity level. | |
70482933 | 4757 | |
fbf5a39b AC |
4758 | -- See spec of Sem in sem.ads for details of the data structures used |
4759 | -- to keep track of these various methods for suppressing checks. | |
70482933 RK |
4760 | |
4761 | ------------------------------- | |
4762 | -- Handling of Discriminants -- | |
4763 | ------------------------------- | |
4764 | ||
4765 | -- During semantic processing, discriminants are separate entities which | |
4766 | -- reflect the semantic properties and allowed usage of discriminants in | |
4767 | -- the language. | |
4768 | ||
4769 | -- In the case of discriminants used as bounds, the references are handled | |
4770 | -- directly, since special processing is needed in any case. However, there | |
4771 | -- are two circumstances in which discriminants are referenced in a quite | |
4772 | -- general manner, like any other variables: | |
4773 | ||
4774 | -- In initialization expressions for records. Note that the expressions | |
4775 | -- used in Priority, Storage_Size, and Task_Info pragmas are effectively | |
4776 | -- in this category, since these pragmas are converted to initialized | |
4777 | -- record fields in the Corresponding_Record_Type. | |
4778 | ||
4779 | -- In task and protected bodies, where the discriminant values may be | |
4780 | -- referenced freely within these bodies. Discriminants can also appear | |
4781 | -- in bounds of entry families and in defaults of operations. | |
4782 | ||
4783 | -- In both these cases, the discriminants must be treated essentially as | |
4784 | -- objects. The following approach is used to simplify and minimize the | |
4785 | -- special processing that is required. | |
4786 | ||
4787 | -- When a record type with discriminants is processed, the semantic | |
4788 | -- processing creates the entities for the discriminants. It also creates | |
4789 | -- an additional set of entities, called discriminals, one for each of | |
4790 | -- the discriminants, and the Discriminal field of the discriminant entity | |
4791 | -- points to this additional entity, which is initially created as an | |
4792 | -- uninitialized (E_Void) entity. | |
4793 | ||
4794 | -- During expansion of expressions, any discriminant reference is replaced | |
4795 | -- by a reference to the corresponding discriminal. When the initialization | |
4796 | -- procedure for the record is created (there will always be one, since | |
4797 | -- discriminants are present, see Exp_Ch3 for further details), the | |
4798 | -- discriminals are used as the entities for the formal parameters of | |
4799 | -- this initialization procedure. The references to these discriminants | |
4800 | -- have already been replaced by references to these discriminals, which | |
4801 | -- are now the formal parameters corresponding to the required objects. | |
4802 | ||
4803 | -- In the case of a task or protected body, the semantics similarly | |
4804 | -- creates a set of discriminals for the discriminants of the task or | |
4805 | -- protected type. When the procedure is created for the task body, | |
4806 | -- the parameter passed in is a reference to the task value type, which | |
4807 | -- contains the required discriminant values. The expander creates a | |
4808 | -- set of declarations of the form: | |
4809 | ||
4810 | -- discriminal : constant dtype renames _Task.discriminant; | |
4811 | ||
4812 | -- where discriminal is the discriminal entity referenced by the task | |
4813 | -- discriminant, and _Task is the task value passed in as the parameter. | |
4814 | -- Again, any references to discriminants in the task body have been | |
4815 | -- replaced by the discriminal reference, which is now an object that | |
4816 | -- contains the required value. | |
4817 | ||
4818 | -- This approach for tasks means that two sets of discriminals are needed | |
4819 | -- for a task type, one for the initialization procedure, and one for the | |
4820 | -- task body. This works out nicely, since the semantics allocates one set | |
4821 | -- for the task itself, and one set for the corresponding record. | |
4822 | ||
4823 | -- The one bit of trickiness arises in making sure that the right set of | |
4824 | -- discriminals is used at the right time. First the task definition is | |
4825 | -- processed. Any references to discriminants here are replaced by the | |
4826 | -- the corresponding *task* discriminals (the record type doesn't even | |
4827 | -- exist yet, since it is constructed as part of the expansion of the | |
4828 | -- task declaration, which happens after the semantic processing of the | |
4829 | -- task definition). The discriminants to be used for the corresponding | |
4830 | -- record are created at the same time as the other discriminals, and | |
4831 | -- held in the CR_Discriminant field of the discriminant. A use of the | |
4832 | -- discriminant in a bound for an entry family is replaced with the CR_ | |
4833 | -- discriminant because it controls the bound of the entry queue array | |
4834 | -- which is a component of the corresponding record. | |
4835 | ||
4836 | -- Just before the record initialization routine is constructed, the | |
4837 | -- expander exchanges the task and record discriminals. This has two | |
4838 | -- effects. First the generation of the record initialization routine | |
4839 | -- uses the discriminals that are now on the record, which is the set | |
4840 | -- that used to be on the task, which is what we want. | |
4841 | ||
4842 | -- Second, a new set of (so far unused) discriminals is now on the task | |
4843 | -- discriminants, and it is this set that will be used for expanding the | |
4844 | -- task body, and also for the discriminal declarations at the start of | |
4845 | -- the task body. | |
4846 | ||
4847 | --------------------------------------- | |
4848 | -- Private data in protected objects -- | |
4849 | --------------------------------------- | |
4850 | ||
4851 | -- Private object declarations in protected types pose problems | |
4852 | -- similar to those of discriminants. They are expanded to components | |
4853 | -- of a record which is passed as the parameter "_object" to expanded | |
4854 | -- forms of all protected operations. As with discriminants, timing | |
4855 | -- of this expansion is a problem. The sequence of statements for a | |
4856 | -- protected operation is expanded before the operation itself, so the | |
4857 | -- formal parameter for the record object containing the private data | |
4858 | -- does not exist when the references to that data are expanded. | |
4859 | ||
4860 | -- For this reason, private data is handled in the same way as | |
4861 | -- discriminants, expanding references to private data in protected | |
4862 | -- operations (which appear as components) to placeholders which will | |
4863 | -- eventually become renamings of the private selected components | |
4864 | -- of the "_object" formal parameter. These placeholders are called | |
4865 | -- "privals", by analogy to the "discriminals" used to implement | |
4866 | -- discriminants. They are attached to the component declaration nodes | |
4867 | -- representing the private object declarations of the protected type. | |
4868 | ||
4869 | -- As with discriminals, each protected subprogram needs a unique set | |
4870 | -- of privals, since they must refer to renamings of components of a | |
4871 | -- formal parameter of that operation. Entry bodies need another set, | |
4872 | -- which they all share and which is associated with renamings in the | |
4873 | -- Service_Entries procedure for the protected type (this is not yet | |
4874 | -- implemented???). This means that we must associate a new set of | |
4875 | -- privals (and discriminals) with the private declarations after | |
4876 | -- the body of a protected subprogram is processed. | |
4877 | ||
4878 | -- The last complication is the presence of discriminants and discriminated | |
4879 | -- components. In the corresponding record, the components are constrained | |
4880 | -- by the discriminants of the record, but within each protected operation | |
4881 | -- they are constrained by the discriminants of the actual. The actual | |
4882 | -- subtypes of those components are constructed as for other unconstrained | |
4883 | -- formals, but the privals are created before the formal object is added | |
4884 | -- to the parameter list of the protected operation, so they carry the | |
4885 | -- nominal subtype of the original component. After the protected operation | |
4886 | -- is actually created (in the expansion of the protected body) we must | |
4887 | -- patch the types of each prival occurrence with the proper actual subtype | |
4888 | -- which is by now set. The Privals_Chain is used for this patching. | |
4889 | ||
4890 | ------------------- | |
4891 | -- Type Synonyms -- | |
4892 | ------------------- | |
4893 | ||
4894 | -- The following type synonyms are used to tidy up the function and | |
4895 | -- procedure declarations that follow, and also to make it possible | |
4896 | -- to meet the requirement for the XEINFO utility that all function | |
4897 | -- specs must fit on a single source line. | |
4898 | ||
4899 | subtype B is Boolean; | |
4900 | subtype C is Component_Alignment_Kind; | |
4901 | subtype E is Entity_Id; | |
4902 | subtype M is Mechanism_Type; | |
4903 | subtype N is Node_Id; | |
4904 | subtype U is Uint; | |
4905 | subtype R is Ureal; | |
4906 | subtype L is Elist_Id; | |
4907 | subtype S is List_Id; | |
4908 | ||
4909 | --------------------------------- | |
4910 | -- Attribute Access Functions -- | |
4911 | --------------------------------- | |
4912 | ||
4913 | -- All attributes are manipulated through a procedural interface. This | |
4914 | -- section contains the functions used to obtain attribute values which | |
4915 | -- correspond to values in fields or flags in the entity itself. | |
4916 | ||
4917 | function Accept_Address (Id : E) return L; | |
4918 | function Access_Disp_Table (Id : E) return E; | |
4919 | function Actual_Subtype (Id : E) return E; | |
4920 | function Address_Taken (Id : E) return B; | |
4921 | function Alias (Id : E) return E; | |
4922 | function Alignment (Id : E) return U; | |
4923 | function Associated_Final_Chain (Id : E) return E; | |
4924 | function Associated_Formal_Package (Id : E) return E; | |
4925 | function Associated_Node_For_Itype (Id : E) return N; | |
4926 | function Associated_Storage_Pool (Id : E) return E; | |
4927 | function Barrier_Function (Id : E) return N; | |
4928 | function Block_Node (Id : E) return N; | |
4929 | function Body_Entity (Id : E) return E; | |
fbf5a39b | 4930 | function Body_Needed_For_SAL (Id : E) return B; |
70482933 RK |
4931 | function CR_Discriminant (Id : E) return E; |
4932 | function C_Pass_By_Copy (Id : E) return B; | |
fbf5a39b AC |
4933 | function Can_Never_Be_Null (Id : E) return B; |
4934 | function Checks_May_Be_Suppressed (Id : E) return B; | |
70482933 RK |
4935 | function Class_Wide_Type (Id : E) return E; |
4936 | function Cloned_Subtype (Id : E) return E; | |
4937 | function Component_Alignment (Id : E) return C; | |
4938 | function Component_Clause (Id : E) return N; | |
4939 | function Component_Bit_Offset (Id : E) return U; | |
4940 | function Component_Size (Id : E) return U; | |
4941 | function Component_Type (Id : E) return E; | |
4942 | function Corresponding_Concurrent_Type (Id : E) return E; | |
4943 | function Corresponding_Discriminant (Id : E) return E; | |
4944 | function Corresponding_Equality (Id : E) return E; | |
4945 | function Corresponding_Record_Type (Id : E) return E; | |
4946 | function Corresponding_Remote_Type (Id : E) return E; | |
fbf5a39b | 4947 | function Current_Value (Id : E) return N; |
70482933 RK |
4948 | function Debug_Info_Off (Id : E) return B; |
4949 | function Debug_Renaming_Link (Id : E) return E; | |
4950 | function DTC_Entity (Id : E) return E; | |
4951 | function DT_Entry_Count (Id : E) return U; | |
4952 | function DT_Position (Id : E) return U; | |
4953 | function Default_Expr_Function (Id : E) return E; | |
4954 | function Default_Expressions_Processed (Id : E) return B; | |
4955 | function Default_Value (Id : E) return N; | |
4956 | function Delay_Cleanups (Id : E) return B; | |
4957 | function Delay_Subprogram_Descriptors (Id : E) return B; | |
4958 | function Delta_Value (Id : E) return R; | |
4959 | function Dependent_Instances (Id : E) return L; | |
4960 | function Depends_On_Private (Id : E) return B; | |
4961 | function Digits_Value (Id : E) return U; | |
4962 | function Directly_Designated_Type (Id : E) return E; | |
4963 | function Discard_Names (Id : E) return B; | |
4964 | function Discriminal (Id : E) return E; | |
4965 | function Discriminal_Link (Id : E) return E; | |
4966 | function Discriminant_Checking_Func (Id : E) return E; | |
4967 | function Discriminant_Constraint (Id : E) return L; | |
4968 | function Discriminant_Default_Value (Id : E) return N; | |
4969 | function Discriminant_Number (Id : E) return U; | |
4970 | function Elaborate_All_Desirable (Id : E) return B; | |
4971 | function Elaboration_Entity (Id : E) return E; | |
4972 | function Elaboration_Entity_Required (Id : E) return B; | |
4973 | function Enclosing_Scope (Id : E) return E; | |
4974 | function Entry_Accepted (Id : E) return B; | |
4975 | function Entry_Bodies_Array (Id : E) return E; | |
4976 | function Entry_Cancel_Parameter (Id : E) return E; | |
4977 | function Entry_Component (Id : E) return E; | |
4978 | function Entry_Formal (Id : E) return E; | |
4979 | function Entry_Index_Constant (Id : E) return E; | |
4980 | function Entry_Index_Type (Id : E) return E; | |
4981 | function Entry_Parameters_Type (Id : E) return E; | |
4982 | function Enum_Pos_To_Rep (Id : E) return E; | |
4983 | function Enumeration_Pos (Id : E) return U; | |
4984 | function Enumeration_Rep (Id : E) return U; | |
4985 | function Enumeration_Rep_Expr (Id : E) return N; | |
4986 | function Equivalent_Type (Id : E) return E; | |
4987 | function Esize (Id : E) return U; | |
4988 | function Exception_Code (Id : E) return U; | |
4989 | function Extra_Accessibility (Id : E) return E; | |
4990 | function Extra_Constrained (Id : E) return E; | |
4991 | function Extra_Formal (Id : E) return E; | |
4992 | function Finalization_Chain_Entity (Id : E) return E; | |
4993 | function Finalize_Storage_Only (Id : E) return B; | |
4994 | function First_Entity (Id : E) return E; | |
4995 | function First_Index (Id : E) return N; | |
4996 | function First_Literal (Id : E) return E; | |
4997 | function First_Optional_Parameter (Id : E) return E; | |
4998 | function First_Private_Entity (Id : E) return E; | |
4999 | function First_Rep_Item (Id : E) return N; | |
5000 | function Freeze_Node (Id : E) return N; | |
5001 | function From_With_Type (Id : E) return B; | |
5002 | function Full_View (Id : E) return E; | |
5003 | function Function_Returns_With_DSP (Id : E) return B; | |
fbf5a39b | 5004 | function Generic_Homonym (Id : E) return E; |
70482933 | 5005 | function Generic_Renamings (Id : E) return L; |
70482933 RK |
5006 | function Handler_Records (Id : E) return S; |
5007 | function Has_Aliased_Components (Id : E) return B; | |
5008 | function Has_Alignment_Clause (Id : E) return B; | |
5009 | function Has_All_Calls_Remote (Id : E) return B; | |
5010 | function Has_Atomic_Components (Id : E) return B; | |
5011 | function Has_Biased_Representation (Id : E) return B; | |
5012 | function Has_Completion (Id : E) return B; | |
5013 | function Has_Completion_In_Body (Id : E) return B; | |
5014 | function Has_Complex_Representation (Id : E) return B; | |
5015 | function Has_Component_Size_Clause (Id : E) return B; | |
fbf5a39b | 5016 | function Has_Contiguous_Rep (Id : E) return B; |
70482933 RK |
5017 | function Has_Controlled_Component (Id : E) return B; |
5018 | function Has_Controlling_Result (Id : E) return B; | |
5019 | function Has_Convention_Pragma (Id : E) return B; | |
5020 | function Has_Delayed_Freeze (Id : E) return B; | |
5021 | function Has_Discriminants (Id : E) return B; | |
5022 | function Has_Enumeration_Rep_Clause (Id : E) return B; | |
5023 | function Has_Exit (Id : E) return B; | |
5024 | function Has_External_Tag_Rep_Clause (Id : E) return B; | |
5025 | function Has_Fully_Qualified_Name (Id : E) return B; | |
5026 | function Has_Gigi_Rep_Item (Id : E) return B; | |
5027 | function Has_Homonym (Id : E) return B; | |
5028 | function Has_Interrupt_Handler (Id : E) return B; | |
5029 | function Has_Machine_Radix_Clause (Id : E) return B; | |
5030 | function Has_Master_Entity (Id : E) return B; | |
5031 | function Has_Missing_Return (Id : E) return B; | |
5032 | function Has_Nested_Block_With_Handler (Id : E) return B; | |
5033 | function Has_Forward_Instantiation (Id : E) return B; | |
5034 | function Has_Non_Standard_Rep (Id : E) return B; | |
5035 | function Has_Object_Size_Clause (Id : E) return B; | |
5036 | function Has_Per_Object_Constraint (Id : E) return B; | |
5037 | function Has_Pragma_Controlled (Id : E) return B; | |
5038 | function Has_Pragma_Elaborate_Body (Id : E) return B; | |
5039 | function Has_Pragma_Inline (Id : E) return B; | |
5040 | function Has_Pragma_Pack (Id : E) return B; | |
0839863c | 5041 | function Has_Pragma_Pure_Function (Id : E) return B; |
07fc65c4 | 5042 | function Has_Pragma_Unreferenced (Id : E) return B; |
70482933 RK |
5043 | function Has_Primitive_Operations (Id : E) return B; |
5044 | function Has_Qualified_Name (Id : E) return B; | |
5045 | function Has_Record_Rep_Clause (Id : E) return B; | |
5046 | function Has_Recursive_Call (Id : E) return B; | |
5047 | function Has_Size_Clause (Id : E) return B; | |
5048 | function Has_Small_Clause (Id : E) return B; | |
5049 | function Has_Specified_Layout (Id : E) return B; | |
5050 | function Has_Storage_Size_Clause (Id : E) return B; | |
5051 | function Has_Subprogram_Descriptor (Id : E) return B; | |
5052 | function Has_Task (Id : E) return B; | |
5053 | function Has_Unchecked_Union (Id : E) return B; | |
5054 | function Has_Unknown_Discriminants (Id : E) return B; | |
5055 | function Has_Volatile_Components (Id : E) return B; | |
fbf5a39b | 5056 | function Has_Xref_Entry (Id : E) return B; |
70482933 | 5057 | function Hiding_Loop_Variable (Id : E) return E; |
fbf5a39b | 5058 | function Homonym (Id : E) return E; |
70482933 RK |
5059 | function In_Package_Body (Id : E) return B; |
5060 | function In_Private_Part (Id : E) return B; | |
5061 | function In_Use (Id : E) return B; | |
5062 | function Inner_Instances (Id : E) return L; | |
5063 | function Interface_Name (Id : E) return N; | |
5064 | function Is_AST_Entry (Id : E) return B; | |
5065 | function Is_Abstract (Id : E) return B; | |
5066 | function Is_Access_Constant (Id : E) return B; | |
5067 | function Is_Aliased (Id : E) return B; | |
5068 | function Is_Asynchronous (Id : E) return B; | |
5069 | function Is_Atomic (Id : E) return B; | |
5070 | function Is_Bit_Packed_Array (Id : E) return B; | |
5071 | function Is_CPP_Class (Id : E) return B; | |
5072 | function Is_Called (Id : E) return B; | |
5073 | function Is_Character_Type (Id : E) return B; | |
5074 | function Is_Child_Unit (Id : E) return B; | |
fbf5a39b | 5075 | function Is_Class_Wide_Equivalent_Type (Id : E) return B; |
70482933 RK |
5076 | function Is_Compilation_Unit (Id : E) return B; |
5077 | function Is_Completely_Hidden (Id : E) return B; | |
5078 | function Is_Constr_Subt_For_UN_Aliased (Id : E) return B; | |
5079 | function Is_Constr_Subt_For_U_Nominal (Id : E) return B; | |
5080 | function Is_Constrained (Id : E) return B; | |
5081 | function Is_Constructor (Id : E) return B; | |
5082 | function Is_Controlled (Id : E) return B; | |
5083 | function Is_Controlling_Formal (Id : E) return B; | |
70482933 RK |
5084 | function Is_Discrim_SO_Function (Id : E) return B; |
5085 | function Is_Dispatching_Operation (Id : E) return B; | |
5086 | function Is_Eliminated (Id : E) return B; | |
5087 | function Is_Entry_Formal (Id : E) return B; | |
5088 | function Is_Exported (Id : E) return B; | |
5089 | function Is_First_Subtype (Id : E) return B; | |
5090 | function Is_For_Access_Subtype (Id : E) return B; | |
5091 | function Is_Frozen (Id : E) return B; | |
5092 | function Is_Generic_Instance (Id : E) return B; | |
5093 | function Is_Hidden (Id : E) return B; | |
5094 | function Is_Hidden_Open_Scope (Id : E) return B; | |
5095 | function Is_Immediately_Visible (Id : E) return B; | |
5096 | function Is_Imported (Id : E) return B; | |
5097 | function Is_Inlined (Id : E) return B; | |
5098 | function Is_Instantiated (Id : E) return B; | |
5099 | function Is_Internal (Id : E) return B; | |
5100 | function Is_Interrupt_Handler (Id : E) return B; | |
5101 | function Is_Intrinsic_Subprogram (Id : E) return B; | |
5102 | function Is_Itype (Id : E) return B; | |
fbf5a39b | 5103 | function Is_Known_Non_Null (Id : E) return B; |
70482933 RK |
5104 | function Is_Known_Valid (Id : E) return B; |
5105 | function Is_Limited_Composite (Id : E) return B; | |
5106 | function Is_Machine_Code_Subprogram (Id : E) return B; | |
5107 | function Is_Non_Static_Subtype (Id : E) return B; | |
5108 | function Is_Null_Init_Proc (Id : E) return B; | |
5109 | function Is_Optional_Parameter (Id : E) return B; | |
5110 | function Is_Package_Body_Entity (Id : E) return B; | |
5111 | function Is_Packed (Id : E) return B; | |
5112 | function Is_Packed_Array_Type (Id : E) return B; | |
5113 | function Is_Potentially_Use_Visible (Id : E) return B; | |
5114 | function Is_Preelaborated (Id : E) return B; | |
5115 | function Is_Private_Composite (Id : E) return B; | |
5116 | function Is_Private_Descendant (Id : E) return B; | |
5117 | function Is_Psected (Id : E) return B; | |
5118 | function Is_Public (Id : E) return B; | |
5119 | function Is_Pure (Id : E) return B; | |
5120 | function Is_Remote_Call_Interface (Id : E) return B; | |
5121 | function Is_Remote_Types (Id : E) return B; | |
5122 | function Is_Renaming_Of_Object (Id : E) return B; | |
5123 | function Is_Shared_Passive (Id : E) return B; | |
5124 | function Is_Statically_Allocated (Id : E) return B; | |
5125 | function Is_Tag (Id : E) return B; | |
5126 | function Is_Tagged_Type (Id : E) return B; | |
5127 | function Is_True_Constant (Id : E) return B; | |
5128 | function Is_Unchecked_Union (Id : E) return B; | |
5129 | function Is_Unsigned_Type (Id : E) return B; | |
5130 | function Is_VMS_Exception (Id : E) return B; | |
5131 | function Is_Valued_Procedure (Id : E) return B; | |
5132 | function Is_Visible_Child_Unit (Id : E) return B; | |
5133 | function Is_Volatile (Id : E) return B; | |
5134 | function Is_Wrapper_Package (Id : E) return B; | |
fbf5a39b AC |
5135 | function Kill_Elaboration_Checks (Id : E) return B; |
5136 | function Kill_Range_Checks (Id : E) return B; | |
5137 | function Kill_Tag_Checks (Id : E) return B; | |
70482933 | 5138 | function Last_Entity (Id : E) return E; |
fbf5a39b | 5139 | function Limited_Views (Id : E) return L; |
70482933 RK |
5140 | function Lit_Indexes (Id : E) return E; |
5141 | function Lit_Strings (Id : E) return E; | |
5142 | function Machine_Radix_10 (Id : E) return B; | |
5143 | function Master_Id (Id : E) return E; | |
5144 | function Materialize_Entity (Id : E) return B; | |
5145 | function Mechanism (Id : E) return M; | |
5146 | function Modulus (Id : E) return U; | |
5147 | function Needs_Debug_Info (Id : E) return B; | |
5148 | function Needs_No_Actuals (Id : E) return B; | |
fbf5a39b | 5149 | function Never_Set_In_Source (Id : E) return B; |
70482933 RK |
5150 | function Next_Inlined_Subprogram (Id : E) return E; |
5151 | function No_Pool_Assigned (Id : E) return B; | |
5152 | function No_Return (Id : E) return B; | |
5153 | function Non_Binary_Modulus (Id : E) return B; | |
fbf5a39b AC |
5154 | function Non_Limited_View (Id : E) return E; |
5155 | function Non_Limited_Views (Id : E) return L; | |
70482933 RK |
5156 | function Nonzero_Is_True (Id : E) return B; |
5157 | function Normalized_First_Bit (Id : E) return U; | |
5158 | function Normalized_Position (Id : E) return U; | |
5159 | function Normalized_Position_Max (Id : E) return U; | |
70482933 | 5160 | function Object_Ref (Id : E) return E; |
07fc65c4 | 5161 | function Original_Array_Type (Id : E) return E; |
70482933 RK |
5162 | function Original_Record_Component (Id : E) return E; |
5163 | function Packed_Array_Type (Id : E) return E; | |
5164 | function Parent_Subtype (Id : E) return E; | |
5165 | function Primitive_Operations (Id : E) return L; | |
5166 | function Prival (Id : E) return E; | |
5167 | function Privals_Chain (Id : E) return L; | |
5168 | function Private_Dependents (Id : E) return L; | |
5169 | function Private_View (Id : E) return N; | |
5170 | function Protected_Body_Subprogram (Id : E) return E; | |
5171 | function Protected_Formal (Id : E) return E; | |
5172 | function Protected_Operation (Id : E) return E; | |
5173 | function RM_Size (Id : E) return U; | |
5174 | function Reachable (Id : E) return B; | |
5175 | function Referenced (Id : E) return B; | |
fbf5a39b | 5176 | function Referenced_As_LHS (Id : E) return B; |
70482933 RK |
5177 | function Referenced_Object (Id : E) return N; |
5178 | function Register_Exception_Call (Id : E) return N; | |
5179 | function Related_Array_Object (Id : E) return E; | |
5180 | function Related_Instance (Id : E) return E; | |
5181 | function Renamed_Entity (Id : E) return N; | |
5182 | function Renamed_Object (Id : E) return N; | |
5183 | function Renaming_Map (Id : E) return U; | |
5184 | function Return_Present (Id : E) return B; | |
5185 | function Returns_By_Ref (Id : E) return B; | |
5186 | function Reverse_Bit_Order (Id : E) return B; | |
5187 | function Scalar_Range (Id : E) return N; | |
5188 | function Scale_Value (Id : E) return U; | |
5189 | function Scope_Depth_Value (Id : E) return U; | |
5190 | function Sec_Stack_Needed_For_Return (Id : E) return B; | |
5191 | function Shadow_Entities (Id : E) return S; | |
5192 | function Shared_Var_Assign_Proc (Id : E) return E; | |
5193 | function Shared_Var_Read_Proc (Id : E) return E; | |
5194 | function Size_Check_Code (Id : E) return N; | |
5195 | function Size_Known_At_Compile_Time (Id : E) return B; | |
5196 | function Size_Depends_On_Discriminant (Id : E) return B; | |
5197 | function Small_Value (Id : E) return R; | |
5198 | function Spec_Entity (Id : E) return E; | |
5199 | function Storage_Size_Variable (Id : E) return E; | |
fbf5a39b | 5200 | function Stored_Constraint (Id : E) return L; |
70482933 RK |
5201 | function Strict_Alignment (Id : E) return B; |
5202 | function String_Literal_Length (Id : E) return U; | |
5203 | function String_Literal_Low_Bound (Id : E) return N; | |
70482933 | 5204 | function Suppress_Elaboration_Warnings (Id : E) return B; |
70482933 | 5205 | function Suppress_Init_Proc (Id : E) return B; |
70482933 | 5206 | function Suppress_Style_Checks (Id : E) return B; |
fbf5a39b | 5207 | function Treat_As_Volatile (Id : E) return B; |
70482933 RK |
5208 | function Underlying_Full_View (Id : E) return E; |
5209 | function Unset_Reference (Id : E) return N; | |
5210 | function Uses_Sec_Stack (Id : E) return B; | |
5211 | function Vax_Float (Id : E) return B; | |
5212 | function Warnings_Off (Id : E) return B; | |
5213 | ||
5214 | ------------------------------- | |
5215 | -- Classification Attributes -- | |
5216 | ------------------------------- | |
5217 | ||
5218 | -- These functions provide a convenient functional notation for testing | |
5219 | -- whether an Ekind value belongs to a specified kind, for example the | |
5220 | -- function Is_Elementary_Type tests if its argument is in Elementary_Kind. | |
5221 | -- In some cases, the test is of an entity attribute (e.g. in the case of | |
5222 | -- Is_Generic_Type where the Ekind does not provide the needed information) | |
5223 | ||
5224 | function Is_Access_Type (Id : E) return B; | |
5225 | function Is_Array_Type (Id : E) return B; | |
5226 | function Is_Class_Wide_Type (Id : E) return B; | |
5227 | function Is_Composite_Type (Id : E) return B; | |
5228 | function Is_Concurrent_Body (Id : E) return B; | |
5229 | function Is_Concurrent_Record_Type (Id : E) return B; | |
5230 | function Is_Concurrent_Type (Id : E) return B; | |
5231 | function Is_Decimal_Fixed_Point_Type (Id : E) return B; | |
5232 | function Is_Digits_Type (Id : E) return B; | |
5233 | function Is_Discrete_Or_Fixed_Point_Type (Id : E) return B; | |
5234 | function Is_Discrete_Type (Id : E) return B; | |
5235 | function Is_Elementary_Type (Id : E) return B; | |
5236 | function Is_Entry (Id : E) return B; | |
5237 | function Is_Enumeration_Type (Id : E) return B; | |
5238 | function Is_Fixed_Point_Type (Id : E) return B; | |
5239 | function Is_Floating_Point_Type (Id : E) return B; | |
5240 | function Is_Formal (Id : E) return B; | |
5241 | function Is_Formal_Subprogram (Id : E) return B; | |
5242 | function Is_Generic_Actual_Type (Id : E) return B; | |
70482933 | 5243 | function Is_Generic_Unit (Id : E) return B; |
fbf5a39b AC |
5244 | function Is_Generic_Type (Id : E) return B; |
5245 | function Is_Generic_Subprogram (Id : E) return B; | |
70482933 RK |
5246 | function Is_Incomplete_Or_Private_Type (Id : E) return B; |
5247 | function Is_Integer_Type (Id : E) return B; | |
5248 | function Is_Limited_Record (Id : E) return B; | |
5249 | function Is_Modular_Integer_Type (Id : E) return B; | |
5250 | function Is_Named_Number (Id : E) return B; | |
5251 | function Is_Numeric_Type (Id : E) return B; | |
5252 | function Is_Object (Id : E) return B; | |
5253 | function Is_Ordinary_Fixed_Point_Type (Id : E) return B; | |
5254 | function Is_Overloadable (Id : E) return B; | |
fbf5a39b | 5255 | function Is_Overriding_Operation (Id : E) return B; |
70482933 RK |
5256 | function Is_Private_Type (Id : E) return B; |
5257 | function Is_Protected_Type (Id : E) return B; | |
5258 | function Is_Real_Type (Id : E) return B; | |
5259 | function Is_Record_Type (Id : E) return B; | |
5260 | function Is_Scalar_Type (Id : E) return B; | |
5261 | function Is_Signed_Integer_Type (Id : E) return B; | |
5262 | function Is_Subprogram (Id : E) return B; | |
5263 | function Is_Task_Type (Id : E) return B; | |
5264 | function Is_Type (Id : E) return B; | |
5265 | ||
5266 | ------------------------------------- | |
5267 | -- Synthesized Attribute Functions -- | |
5268 | ------------------------------------- | |
5269 | ||
5270 | -- The functions in this section synthesize attributes from the tree, | |
5271 | -- so they do not correspond to defined fields in the entity itself. | |
5272 | ||
5273 | function Address_Clause (Id : E) return N; | |
5274 | function Alignment_Clause (Id : E) return N; | |
5275 | function Ancestor_Subtype (Id : E) return E; | |
5276 | function Base_Type (Id : E) return E; | |
5277 | function Constant_Value (Id : E) return N; | |
5278 | function Declaration_Node (Id : E) return N; | |
5279 | function Designated_Type (Id : E) return E; | |
5280 | function Enclosing_Dynamic_Scope (Id : E) return E; | |
5281 | function First_Component (Id : E) return E; | |
5282 | function First_Discriminant (Id : E) return E; | |
5283 | function First_Formal (Id : E) return E; | |
fbf5a39b | 5284 | function First_Stored_Discriminant (Id : E) return E; |
70482933 RK |
5285 | function First_Subtype (Id : E) return E; |
5286 | function Has_Attach_Handler (Id : E) return B; | |
5287 | function Has_Entries (Id : E) return B; | |
5288 | function Has_Foreign_Convention (Id : E) return B; | |
5289 | function Has_Private_Ancestor (Id : E) return B; | |
5290 | function Has_Private_Declaration (Id : E) return B; | |
5291 | function Implementation_Base_Type (Id : E) return E; | |
5292 | function Is_Always_Inlined (Id : E) return B; | |
5293 | function Is_Boolean_Type (Id : E) return B; | |
5294 | function Is_By_Copy_Type (Id : E) return B; | |
5295 | function Is_By_Reference_Type (Id : E) return B; | |
5296 | function Is_Derived_Type (Id : E) return B; | |
5297 | function Is_Dynamic_Scope (Id : E) return B; | |
5298 | function Is_Indefinite_Subtype (Id : E) return B; | |
5299 | function Is_Limited_Type (Id : E) return B; | |
5300 | function Is_Package (Id : E) return B; | |
5301 | function Is_Protected_Private (Id : E) return B; | |
5302 | function Is_Protected_Record_Type (Id : E) return B; | |
5303 | function Is_Return_By_Reference_Type (Id : E) return B; | |
5304 | function Is_String_Type (Id : E) return B; | |
5305 | function Is_Task_Record_Type (Id : E) return B; | |
5306 | function Next_Component (Id : E) return E; | |
5307 | function Next_Discriminant (Id : E) return E; | |
5308 | function Next_Formal (Id : E) return E; | |
5309 | function Next_Formal_With_Extras (Id : E) return E; | |
70482933 | 5310 | function Next_Literal (Id : E) return E; |
fbf5a39b | 5311 | function Next_Stored_Discriminant (Id : E) return E; |
70482933 RK |
5312 | function Number_Dimensions (Id : E) return Pos; |
5313 | function Number_Discriminants (Id : E) return Pos; | |
5314 | function Number_Entries (Id : E) return Nat; | |
5315 | function Number_Formals (Id : E) return Pos; | |
5316 | function Parameter_Mode (Id : E) return Formal_Kind; | |
5317 | function Root_Type (Id : E) return E; | |
5318 | function Scope_Depth_Set (Id : E) return B; | |
5319 | function Size_Clause (Id : E) return N; | |
5320 | function Tag_Component (Id : E) return E; | |
5321 | function Type_High_Bound (Id : E) return N; | |
5322 | function Type_Low_Bound (Id : E) return N; | |
5323 | function Underlying_Type (Id : E) return E; | |
5324 | ||
5325 | ---------------------------------------------- | |
5326 | -- Type Representation Attribute Predicates -- | |
5327 | ---------------------------------------------- | |
5328 | ||
5329 | -- These predicates test the setting of the indicated attribute. If | |
5330 | -- the value has been set, then Known is True, and Unknown is False. | |
5331 | -- If no value is set, then Known is False and Unknown is True. The | |
5332 | -- Known_Static predicate is true only if the value is set (Known) | |
5333 | -- and is set to a compile time known value. Note that in the case | |
5334 | -- of Alignment and Normalized_First_Bit, dynamic values are not | |
5335 | -- possible, so we do not need a separate Known_Static calls in | |
5336 | -- these cases. The not set (unknown values are as follows: | |
5337 | ||
07fc65c4 GB |
5338 | -- Alignment Uint_0 or No_Uint |
5339 | -- Component_Size Uint_0 or No_Uint | |
70482933 | 5340 | -- Component_Bit_Offset No_Uint |
07fc65c4 GB |
5341 | -- Digits_Value Uint_0 or No_Uint |
5342 | -- Esize Uint_0 or No_Uint | |
70482933 RK |
5343 | -- Normalized_First_Bit No_Uint |
5344 | -- Normalized_Position No_Uint | |
5345 | -- Normalized_Position_Max No_Uint | |
07fc65c4 | 5346 | -- RM_Size Uint_0 or No_Uint |
70482933 RK |
5347 | |
5348 | -- It would be cleaner to use No_Uint in all these cases, but historically | |
5349 | -- we chose to use Uint_0 at first, and the change over will take time ??? | |
5350 | -- This is particularly true for the RM_Size field, where a value of zero | |
5351 | -- is legitimate. We deal with this by a nasty kludge that knows that the | |
5352 | -- value is always known static for discrete types (and no other types can | |
5353 | -- have an RM_Size value of zero). | |
5354 | ||
5355 | function Known_Alignment (E : Entity_Id) return B; | |
5356 | function Known_Component_Bit_Offset (E : Entity_Id) return B; | |
5357 | function Known_Component_Size (E : Entity_Id) return B; | |
5358 | function Known_Esize (E : Entity_Id) return B; | |
5359 | function Known_Normalized_First_Bit (E : Entity_Id) return B; | |
5360 | function Known_Normalized_Position (E : Entity_Id) return B; | |
5361 | function Known_Normalized_Position_Max (E : Entity_Id) return B; | |
5362 | function Known_RM_Size (E : Entity_Id) return B; | |
5363 | ||
5364 | function Known_Static_Component_Bit_Offset (E : Entity_Id) return B; | |
5365 | function Known_Static_Component_Size (E : Entity_Id) return B; | |
5366 | function Known_Static_Esize (E : Entity_Id) return B; | |
07fc65c4 | 5367 | function Known_Static_Normalized_First_Bit (E : Entity_Id) return B; |
70482933 RK |
5368 | function Known_Static_Normalized_Position (E : Entity_Id) return B; |
5369 | function Known_Static_Normalized_Position_Max (E : Entity_Id) return B; | |
5370 | function Known_Static_RM_Size (E : Entity_Id) return B; | |
5371 | ||
5372 | function Unknown_Alignment (E : Entity_Id) return B; | |
5373 | function Unknown_Component_Bit_Offset (E : Entity_Id) return B; | |
5374 | function Unknown_Component_Size (E : Entity_Id) return B; | |
5375 | function Unknown_Esize (E : Entity_Id) return B; | |
5376 | function Unknown_Normalized_First_Bit (E : Entity_Id) return B; | |
5377 | function Unknown_Normalized_Position (E : Entity_Id) return B; | |
5378 | function Unknown_Normalized_Position_Max (E : Entity_Id) return B; | |
5379 | function Unknown_RM_Size (E : Entity_Id) return B; | |
5380 | ||
5381 | ------------------------------ | |
5382 | -- Attribute Set Procedures -- | |
5383 | ------------------------------ | |
5384 | ||
5385 | procedure Set_Accept_Address (Id : E; V : L); | |
5386 | procedure Set_Access_Disp_Table (Id : E; V : E); | |
5387 | procedure Set_Actual_Subtype (Id : E; V : E); | |
5388 | procedure Set_Address_Taken (Id : E; V : B := True); | |
5389 | procedure Set_Alias (Id : E; V : E); | |
5390 | procedure Set_Alignment (Id : E; V : U); | |
5391 | procedure Set_Associated_Final_Chain (Id : E; V : E); | |
5392 | procedure Set_Associated_Formal_Package (Id : E; V : E); | |
5393 | procedure Set_Associated_Node_For_Itype (Id : E; V : N); | |
5394 | procedure Set_Associated_Storage_Pool (Id : E; V : E); | |
5395 | procedure Set_Barrier_Function (Id : E; V : N); | |
5396 | procedure Set_Block_Node (Id : E; V : N); | |
5397 | procedure Set_Body_Entity (Id : E; V : E); | |
fbf5a39b | 5398 | procedure Set_Body_Needed_For_SAL (Id : E; V : B := True); |
70482933 RK |
5399 | procedure Set_CR_Discriminant (Id : E; V : E); |
5400 | procedure Set_C_Pass_By_Copy (Id : E; V : B := True); | |
fbf5a39b AC |
5401 | procedure Set_Can_Never_Be_Null (Id : E; V : B := True); |
5402 | procedure Set_Checks_May_Be_Suppressed (Id : E; V : B := True); | |
70482933 RK |
5403 | procedure Set_Class_Wide_Type (Id : E; V : E); |
5404 | procedure Set_Cloned_Subtype (Id : E; V : E); | |
5405 | procedure Set_Component_Alignment (Id : E; V : C); | |
5406 | procedure Set_Component_Bit_Offset (Id : E; V : U); | |
5407 | procedure Set_Component_Clause (Id : E; V : N); | |
5408 | procedure Set_Component_Size (Id : E; V : U); | |
5409 | procedure Set_Component_Type (Id : E; V : E); | |
5410 | procedure Set_Corresponding_Concurrent_Type (Id : E; V : E); | |
5411 | procedure Set_Corresponding_Discriminant (Id : E; V : E); | |
5412 | procedure Set_Corresponding_Equality (Id : E; V : E); | |
5413 | procedure Set_Corresponding_Record_Type (Id : E; V : E); | |
5414 | procedure Set_Corresponding_Remote_Type (Id : E; V : E); | |
fbf5a39b | 5415 | procedure Set_Current_Value (Id : E; V : N); |
70482933 RK |
5416 | procedure Set_Debug_Info_Off (Id : E; V : B := True); |
5417 | procedure Set_Debug_Renaming_Link (Id : E; V : E); | |
5418 | procedure Set_DTC_Entity (Id : E; V : E); | |
5419 | procedure Set_DT_Entry_Count (Id : E; V : U); | |
5420 | procedure Set_DT_Position (Id : E; V : U); | |
5421 | procedure Set_Default_Expr_Function (Id : E; V : E); | |
5422 | procedure Set_Default_Expressions_Processed (Id : E; V : B := True); | |
5423 | procedure Set_Default_Value (Id : E; V : N); | |
5424 | procedure Set_Delay_Cleanups (Id : E; V : B := True); | |
5425 | procedure Set_Delay_Subprogram_Descriptors (Id : E; V : B := True); | |
5426 | procedure Set_Delta_Value (Id : E; V : R); | |
5427 | procedure Set_Dependent_Instances (Id : E; V : L); | |
5428 | procedure Set_Depends_On_Private (Id : E; V : B := True); | |
5429 | procedure Set_Digits_Value (Id : E; V : U); | |
5430 | procedure Set_Directly_Designated_Type (Id : E; V : E); | |
5431 | procedure Set_Discard_Names (Id : E; V : B := True); | |
5432 | procedure Set_Discriminal (Id : E; V : E); | |
5433 | procedure Set_Discriminal_Link (Id : E; V : E); | |
5434 | procedure Set_Discriminant_Checking_Func (Id : E; V : E); | |
5435 | procedure Set_Discriminant_Constraint (Id : E; V : L); | |
5436 | procedure Set_Discriminant_Default_Value (Id : E; V : N); | |
5437 | procedure Set_Discriminant_Number (Id : E; V : U); | |
5438 | procedure Set_Elaborate_All_Desirable (Id : E; V : B := True); | |
5439 | procedure Set_Elaboration_Entity (Id : E; V : E); | |
5440 | procedure Set_Elaboration_Entity_Required (Id : E; V : B := True); | |
5441 | procedure Set_Enclosing_Scope (Id : E; V : E); | |
5442 | procedure Set_Entry_Accepted (Id : E; V : B := True); | |
5443 | procedure Set_Entry_Bodies_Array (Id : E; V : E); | |
5444 | procedure Set_Entry_Cancel_Parameter (Id : E; V : E); | |
5445 | procedure Set_Entry_Component (Id : E; V : E); | |
5446 | procedure Set_Entry_Formal (Id : E; V : E); | |
5447 | procedure Set_Entry_Index_Constant (Id : E; V : E); | |
5448 | procedure Set_Entry_Parameters_Type (Id : E; V : E); | |
5449 | procedure Set_Enum_Pos_To_Rep (Id : E; V : E); | |
5450 | procedure Set_Enumeration_Pos (Id : E; V : U); | |
5451 | procedure Set_Enumeration_Rep (Id : E; V : U); | |
5452 | procedure Set_Enumeration_Rep_Expr (Id : E; V : N); | |
5453 | procedure Set_Equivalent_Type (Id : E; V : E); | |
5454 | procedure Set_Esize (Id : E; V : U); | |
5455 | procedure Set_Exception_Code (Id : E; V : U); | |
5456 | procedure Set_Extra_Accessibility (Id : E; V : E); | |
5457 | procedure Set_Extra_Constrained (Id : E; V : E); | |
5458 | procedure Set_Extra_Formal (Id : E; V : E); | |
5459 | procedure Set_Finalization_Chain_Entity (Id : E; V : E); | |
5460 | procedure Set_Finalize_Storage_Only (Id : E; V : B := True); | |
5461 | procedure Set_First_Entity (Id : E; V : E); | |
5462 | procedure Set_First_Index (Id : E; V : N); | |
5463 | procedure Set_First_Literal (Id : E; V : E); | |
5464 | procedure Set_First_Optional_Parameter (Id : E; V : E); | |
5465 | procedure Set_First_Private_Entity (Id : E; V : E); | |
5466 | procedure Set_First_Rep_Item (Id : E; V : N); | |
5467 | procedure Set_Freeze_Node (Id : E; V : N); | |
5468 | procedure Set_From_With_Type (Id : E; V : B := True); | |
5469 | procedure Set_Full_View (Id : E; V : E); | |
5470 | procedure Set_Function_Returns_With_DSP (Id : E; V : B := True); | |
fbf5a39b | 5471 | procedure Set_Generic_Homonym (Id : E; V : E); |
70482933 | 5472 | procedure Set_Generic_Renamings (Id : E; V : L); |
70482933 RK |
5473 | procedure Set_Handler_Records (Id : E; V : S); |
5474 | procedure Set_Has_Aliased_Components (Id : E; V : B := True); | |
5475 | procedure Set_Has_Alignment_Clause (Id : E; V : B := True); | |
5476 | procedure Set_Has_All_Calls_Remote (Id : E; V : B := True); | |
5477 | procedure Set_Has_Atomic_Components (Id : E; V : B := True); | |
5478 | procedure Set_Has_Biased_Representation (Id : E; V : B := True); | |
5479 | procedure Set_Has_Completion (Id : E; V : B := True); | |
5480 | procedure Set_Has_Completion_In_Body (Id : E; V : B := True); | |
5481 | procedure Set_Has_Complex_Representation (Id : E; V : B := True); | |
5482 | procedure Set_Has_Component_Size_Clause (Id : E; V : B := True); | |
fbf5a39b | 5483 | procedure Set_Has_Contiguous_Rep (Id : E; V : B := True); |
70482933 RK |
5484 | procedure Set_Has_Controlled_Component (Id : E; V : B := True); |
5485 | procedure Set_Has_Controlling_Result (Id : E; V : B := True); | |
5486 | procedure Set_Has_Convention_Pragma (Id : E; V : B := True); | |
5487 | procedure Set_Has_Delayed_Freeze (Id : E; V : B := True); | |
5488 | procedure Set_Has_Discriminants (Id : E; V : B := True); | |
5489 | procedure Set_Has_Enumeration_Rep_Clause (Id : E; V : B := True); | |
5490 | procedure Set_Has_Exit (Id : E; V : B := True); | |
5491 | procedure Set_Has_External_Tag_Rep_Clause (Id : E; V : B := True); | |
5492 | procedure Set_Has_Fully_Qualified_Name (Id : E; V : B := True); | |
5493 | procedure Set_Has_Gigi_Rep_Item (Id : E; V : B := True); | |
5494 | procedure Set_Has_Homonym (Id : E; V : B := True); | |
5495 | procedure Set_Has_Machine_Radix_Clause (Id : E; V : B := True); | |
5496 | procedure Set_Has_Master_Entity (Id : E; V : B := True); | |
5497 | procedure Set_Has_Missing_Return (Id : E; V : B := True); | |
5498 | procedure Set_Has_Nested_Block_With_Handler (Id : E; V : B := True); | |
5499 | procedure Set_Has_Forward_Instantiation (Id : E; V : B := True); | |
5500 | procedure Set_Has_Non_Standard_Rep (Id : E; V : B := True); | |
5501 | procedure Set_Has_Object_Size_Clause (Id : E; V : B := True); | |
5502 | procedure Set_Has_Per_Object_Constraint (Id : E; V : B := True); | |
5503 | procedure Set_Has_Pragma_Controlled (Id : E; V : B := True); | |
5504 | procedure Set_Has_Pragma_Elaborate_Body (Id : E; V : B := True); | |
5505 | procedure Set_Has_Pragma_Inline (Id : E; V : B := True); | |
5506 | procedure Set_Has_Pragma_Pack (Id : E; V : B := True); | |
0839863c | 5507 | procedure Set_Has_Pragma_Pure_Function (Id : E; V : B := True); |
07fc65c4 | 5508 | procedure Set_Has_Pragma_Unreferenced (Id : E; V : B := True); |
70482933 RK |
5509 | procedure Set_Has_Primitive_Operations (Id : E; V : B := True); |
5510 | procedure Set_Has_Private_Declaration (Id : E; V : B := True); | |
5511 | procedure Set_Has_Qualified_Name (Id : E; V : B := True); | |
5512 | procedure Set_Has_Record_Rep_Clause (Id : E; V : B := True); | |
5513 | procedure Set_Has_Recursive_Call (Id : E; V : B := True); | |
5514 | procedure Set_Has_Size_Clause (Id : E; V : B := True); | |
5515 | procedure Set_Has_Small_Clause (Id : E; V : B := True); | |
5516 | procedure Set_Has_Specified_Layout (Id : E; V : B := True); | |
5517 | procedure Set_Has_Storage_Size_Clause (Id : E; V : B := True); | |
5518 | procedure Set_Has_Subprogram_Descriptor (Id : E; V : B := True); | |
5519 | procedure Set_Has_Task (Id : E; V : B := True); | |
5520 | procedure Set_Has_Unchecked_Union (Id : E; V : B := True); | |
5521 | procedure Set_Has_Unknown_Discriminants (Id : E; V : B := True); | |
5522 | procedure Set_Has_Volatile_Components (Id : E; V : B := True); | |
fbf5a39b | 5523 | procedure Set_Has_Xref_Entry (Id : E; V : B := True); |
70482933 RK |
5524 | procedure Set_Hiding_Loop_Variable (Id : E; V : E); |
5525 | procedure Set_Homonym (Id : E; V : E); | |
5526 | procedure Set_In_Package_Body (Id : E; V : B := True); | |
5527 | procedure Set_In_Private_Part (Id : E; V : B := True); | |
5528 | procedure Set_In_Use (Id : E; V : B := True); | |
5529 | procedure Set_Inner_Instances (Id : E; V : L); | |
5530 | procedure Set_Interface_Name (Id : E; V : N); | |
5531 | procedure Set_Is_AST_Entry (Id : E; V : B := True); | |
5532 | procedure Set_Is_Abstract (Id : E; V : B := True); | |
5533 | procedure Set_Is_Access_Constant (Id : E; V : B := True); | |
5534 | procedure Set_Is_Aliased (Id : E; V : B := True); | |
5535 | procedure Set_Is_Asynchronous (Id : E; V : B := True); | |
5536 | procedure Set_Is_Atomic (Id : E; V : B := True); | |
5537 | procedure Set_Is_Bit_Packed_Array (Id : E; V : B := True); | |
5538 | procedure Set_Is_CPP_Class (Id : E; V : B := True); | |
5539 | procedure Set_Is_Called (Id : E; V : B := True); | |
5540 | procedure Set_Is_Character_Type (Id : E; V : B := True); | |
5541 | procedure Set_Is_Child_Unit (Id : E; V : B := True); | |
fbf5a39b | 5542 | procedure Set_Is_Class_Wide_Equivalent_Type (Id : E; V : B := True); |
70482933 RK |
5543 | procedure Set_Is_Compilation_Unit (Id : E; V : B := True); |
5544 | procedure Set_Is_Completely_Hidden (Id : E; V : B := True); | |
5545 | procedure Set_Is_Concurrent_Record_Type (Id : E; V : B := True); | |
5546 | procedure Set_Is_Constr_Subt_For_UN_Aliased (Id : E; V : B := True); | |
5547 | procedure Set_Is_Constr_Subt_For_U_Nominal (Id : E; V : B := True); | |
5548 | procedure Set_Is_Constrained (Id : E; V : B := True); | |
5549 | procedure Set_Is_Constructor (Id : E; V : B := True); | |
5550 | procedure Set_Is_Controlled (Id : E; V : B := True); | |
5551 | procedure Set_Is_Controlling_Formal (Id : E; V : B := True); | |
70482933 RK |
5552 | procedure Set_Is_Discrim_SO_Function (Id : E; V : B := True); |
5553 | procedure Set_Is_Dispatching_Operation (Id : E; V : B := True); | |
5554 | procedure Set_Is_Eliminated (Id : E; V : B := True); | |
5555 | procedure Set_Is_Entry_Formal (Id : E; V : B := True); | |
5556 | procedure Set_Is_Exported (Id : E; V : B := True); | |
5557 | procedure Set_Is_First_Subtype (Id : E; V : B := True); | |
5558 | procedure Set_Is_For_Access_Subtype (Id : E; V : B := True); | |
5559 | procedure Set_Is_Formal_Subprogram (Id : E; V : B := True); | |
5560 | procedure Set_Is_Frozen (Id : E; V : B := True); | |
5561 | procedure Set_Is_Generic_Actual_Type (Id : E; V : B := True); | |
5562 | procedure Set_Is_Generic_Instance (Id : E; V : B := True); | |
5563 | procedure Set_Is_Generic_Type (Id : E; V : B := True); | |
5564 | procedure Set_Is_Hidden (Id : E; V : B := True); | |
5565 | procedure Set_Is_Hidden_Open_Scope (Id : E; V : B := True); | |
5566 | procedure Set_Is_Immediately_Visible (Id : E; V : B := True); | |
5567 | procedure Set_Is_Imported (Id : E; V : B := True); | |
5568 | procedure Set_Is_Inlined (Id : E; V : B := True); | |
5569 | procedure Set_Is_Instantiated (Id : E; V : B := True); | |
5570 | procedure Set_Is_Internal (Id : E; V : B := True); | |
5571 | procedure Set_Is_Interrupt_Handler (Id : E; V : B := True); | |
5572 | procedure Set_Is_Intrinsic_Subprogram (Id : E; V : B := True); | |
5573 | procedure Set_Is_Itype (Id : E; V : B := True); | |
fbf5a39b | 5574 | procedure Set_Is_Known_Non_Null (Id : E; V : B := True); |
70482933 RK |
5575 | procedure Set_Is_Known_Valid (Id : E; V : B := True); |
5576 | procedure Set_Is_Limited_Composite (Id : E; V : B := True); | |
5577 | procedure Set_Is_Limited_Record (Id : E; V : B := True); | |
5578 | procedure Set_Is_Machine_Code_Subprogram (Id : E; V : B := True); | |
5579 | procedure Set_Is_Non_Static_Subtype (Id : E; V : B := True); | |
5580 | procedure Set_Is_Null_Init_Proc (Id : E; V : B := True); | |
5581 | procedure Set_Is_Optional_Parameter (Id : E; V : B := True); | |
fbf5a39b | 5582 | procedure Set_Is_Overriding_Operation (Id : E; V : B := True); |
70482933 RK |
5583 | procedure Set_Is_Package_Body_Entity (Id : E; V : B := True); |
5584 | procedure Set_Is_Packed (Id : E; V : B := True); | |
5585 | procedure Set_Is_Packed_Array_Type (Id : E; V : B := True); | |
5586 | procedure Set_Is_Potentially_Use_Visible (Id : E; V : B := True); | |
5587 | procedure Set_Is_Preelaborated (Id : E; V : B := True); | |
5588 | procedure Set_Is_Private_Composite (Id : E; V : B := True); | |
5589 | procedure Set_Is_Private_Descendant (Id : E; V : B := True); | |
5590 | procedure Set_Is_Psected (Id : E; V : B := True); | |
5591 | procedure Set_Is_Public (Id : E; V : B := True); | |
5592 | procedure Set_Is_Pure (Id : E; V : B := True); | |
5593 | procedure Set_Is_Remote_Call_Interface (Id : E; V : B := True); | |
5594 | procedure Set_Is_Remote_Types (Id : E; V : B := True); | |
5595 | procedure Set_Is_Renaming_Of_Object (Id : E; V : B := True); | |
5596 | procedure Set_Is_Shared_Passive (Id : E; V : B := True); | |
5597 | procedure Set_Is_Statically_Allocated (Id : E; V : B := True); | |
5598 | procedure Set_Is_Tag (Id : E; V : B := True); | |
5599 | procedure Set_Is_Tagged_Type (Id : E; V : B := True); | |
5600 | procedure Set_Is_True_Constant (Id : E; V : B := True); | |
5601 | procedure Set_Is_Unchecked_Union (Id : E; V : B := True); | |
5602 | procedure Set_Is_Unsigned_Type (Id : E; V : B := True); | |
5603 | procedure Set_Is_VMS_Exception (Id : E; V : B := True); | |
5604 | procedure Set_Is_Valued_Procedure (Id : E; V : B := True); | |
5605 | procedure Set_Is_Visible_Child_Unit (Id : E; V : B := True); | |
5606 | procedure Set_Is_Volatile (Id : E; V : B := True); | |
fbf5a39b AC |
5607 | procedure Set_Kill_Elaboration_Checks (Id : E; V : B := True); |
5608 | procedure Set_Kill_Range_Checks (Id : E; V : B := True); | |
5609 | procedure Set_Kill_Tag_Checks (Id : E; V : B := True); | |
70482933 | 5610 | procedure Set_Last_Entity (Id : E; V : E); |
fbf5a39b | 5611 | procedure Set_Limited_Views (Id : E; V : L); |
70482933 RK |
5612 | procedure Set_Lit_Indexes (Id : E; V : E); |
5613 | procedure Set_Lit_Strings (Id : E; V : E); | |
5614 | procedure Set_Machine_Radix_10 (Id : E; V : B := True); | |
5615 | procedure Set_Master_Id (Id : E; V : E); | |
5616 | procedure Set_Materialize_Entity (Id : E; V : B := True); | |
5617 | procedure Set_Mechanism (Id : E; V : M); | |
5618 | procedure Set_Modulus (Id : E; V : U); | |
5619 | procedure Set_Needs_Debug_Info (Id : E; V : B := True); | |
5620 | procedure Set_Needs_No_Actuals (Id : E; V : B := True); | |
fbf5a39b | 5621 | procedure Set_Never_Set_In_Source (Id : E; V : B := True); |
70482933 RK |
5622 | procedure Set_Next_Inlined_Subprogram (Id : E; V : E); |
5623 | procedure Set_No_Pool_Assigned (Id : E; V : B := True); | |
5624 | procedure Set_No_Return (Id : E; V : B := True); | |
5625 | procedure Set_Non_Binary_Modulus (Id : E; V : B := True); | |
fbf5a39b AC |
5626 | procedure Set_Non_Limited_View (Id : E; V : E); |
5627 | procedure Set_Non_Limited_Views (Id : E; V : L); | |
70482933 RK |
5628 | procedure Set_Nonzero_Is_True (Id : E; V : B := True); |
5629 | procedure Set_Normalized_First_Bit (Id : E; V : U); | |
5630 | procedure Set_Normalized_Position (Id : E; V : U); | |
5631 | procedure Set_Normalized_Position_Max (Id : E; V : U); | |
70482933 | 5632 | procedure Set_Object_Ref (Id : E; V : E); |
07fc65c4 | 5633 | procedure Set_Original_Array_Type (Id : E; V : E); |
70482933 RK |
5634 | procedure Set_Original_Record_Component (Id : E; V : E); |
5635 | procedure Set_Packed_Array_Type (Id : E; V : E); | |
5636 | procedure Set_Parent_Subtype (Id : E; V : E); | |
5637 | procedure Set_Primitive_Operations (Id : E; V : L); | |
5638 | procedure Set_Prival (Id : E; V : E); | |
5639 | procedure Set_Privals_Chain (Id : E; V : L); | |
5640 | procedure Set_Private_Dependents (Id : E; V : L); | |
5641 | procedure Set_Private_View (Id : E; V : N); | |
5642 | procedure Set_Protected_Body_Subprogram (Id : E; V : E); | |
5643 | procedure Set_Protected_Formal (Id : E; V : E); | |
5644 | procedure Set_Protected_Operation (Id : E; V : N); | |
5645 | procedure Set_RM_Size (Id : E; V : U); | |
5646 | procedure Set_Reachable (Id : E; V : B := True); | |
5647 | procedure Set_Referenced (Id : E; V : B := True); | |
fbf5a39b | 5648 | procedure Set_Referenced_As_LHS (Id : E; V : B := True); |
70482933 RK |
5649 | procedure Set_Referenced_Object (Id : E; V : N); |
5650 | procedure Set_Register_Exception_Call (Id : E; V : N); | |
5651 | procedure Set_Related_Array_Object (Id : E; V : E); | |
5652 | procedure Set_Related_Instance (Id : E; V : E); | |
5653 | procedure Set_Renamed_Entity (Id : E; V : N); | |
5654 | procedure Set_Renamed_Object (Id : E; V : N); | |
5655 | procedure Set_Renaming_Map (Id : E; V : U); | |
5656 | procedure Set_Return_Present (Id : E; V : B := True); | |
5657 | procedure Set_Returns_By_Ref (Id : E; V : B := True); | |
5658 | procedure Set_Reverse_Bit_Order (Id : E; V : B := True); | |
5659 | procedure Set_Scalar_Range (Id : E; V : N); | |
5660 | procedure Set_Scale_Value (Id : E; V : U); | |
5661 | procedure Set_Scope_Depth_Value (Id : E; V : U); | |
5662 | procedure Set_Sec_Stack_Needed_For_Return (Id : E; V : B := True); | |
5663 | procedure Set_Shadow_Entities (Id : E; V : S); | |
5664 | procedure Set_Shared_Var_Assign_Proc (Id : E; V : E); | |
5665 | procedure Set_Shared_Var_Read_Proc (Id : E; V : E); | |
5666 | procedure Set_Size_Check_Code (Id : E; V : N); | |
5667 | procedure Set_Size_Depends_On_Discriminant (Id : E; V : B := True); | |
5668 | procedure Set_Size_Known_At_Compile_Time (Id : E; V : B := True); | |
5669 | procedure Set_Small_Value (Id : E; V : R); | |
5670 | procedure Set_Spec_Entity (Id : E; V : E); | |
5671 | procedure Set_Storage_Size_Variable (Id : E; V : E); | |
fbf5a39b | 5672 | procedure Set_Stored_Constraint (Id : E; V : L); |
70482933 RK |
5673 | procedure Set_Strict_Alignment (Id : E; V : B := True); |
5674 | procedure Set_String_Literal_Length (Id : E; V : U); | |
5675 | procedure Set_String_Literal_Low_Bound (Id : E; V : N); | |
70482933 | 5676 | procedure Set_Suppress_Elaboration_Warnings (Id : E; V : B := True); |
70482933 | 5677 | procedure Set_Suppress_Init_Proc (Id : E; V : B := True); |
70482933 | 5678 | procedure Set_Suppress_Style_Checks (Id : E; V : B := True); |
fbf5a39b | 5679 | procedure Set_Treat_As_Volatile (Id : E; V : B := True); |
70482933 RK |
5680 | procedure Set_Underlying_Full_View (Id : E; V : E); |
5681 | procedure Set_Unset_Reference (Id : E; V : N); | |
5682 | procedure Set_Uses_Sec_Stack (Id : E; V : B := True); | |
5683 | procedure Set_Vax_Float (Id : E; V : B := True); | |
5684 | procedure Set_Warnings_Off (Id : E; V : B := True); | |
5685 | ||
5686 | ----------------------------------- | |
5687 | -- Field Initialization Routines -- | |
5688 | ----------------------------------- | |
5689 | ||
5690 | -- These routines are overloadings of some of the above Set procedures | |
5691 | -- where the argument is normally a Uint. The overloadings take an Int | |
5692 | -- parameter instead, and appropriately convert it. There are also | |
5693 | -- versions that implicitly initialize to the appropriate "not set" | |
5694 | -- value. The not set (unknown) values are as follows: | |
5695 | ||
5696 | -- Alignment Uint_0 | |
5697 | -- Component_Size Uint_0 | |
5698 | -- Component_Bit_Offset No_Uint | |
5699 | -- Digits_Value Uint_0 | |
5700 | -- Esize Uint_0 | |
5701 | -- Normalized_First_Bit No_Uint | |
5702 | -- Normalized_Position No_Uint | |
5703 | -- Normalized_Position_Max No_Uint | |
5704 | -- RM_Size Uint_0 | |
5705 | ||
5706 | -- It would be cleaner to use No_Uint in all these cases, but historically | |
5707 | -- we chose to use Uint_0 at first, and the change over will take time ??? | |
5708 | -- This is particularly true for the RM_Size field, where a value of zero | |
5709 | -- is legitimate and causes some kludges around the code. | |
5710 | ||
5711 | procedure Init_Alignment (Id : E; V : Int); | |
5712 | procedure Init_Component_Size (Id : E; V : Int); | |
5713 | procedure Init_Component_Bit_Offset (Id : E; V : Int); | |
5714 | procedure Init_Digits_Value (Id : E; V : Int); | |
5715 | procedure Init_Esize (Id : E; V : Int); | |
5716 | procedure Init_Normalized_First_Bit (Id : E; V : Int); | |
5717 | procedure Init_Normalized_Position (Id : E; V : Int); | |
5718 | procedure Init_Normalized_Position_Max (Id : E; V : Int); | |
5719 | procedure Init_RM_Size (Id : E; V : Int); | |
5720 | ||
5721 | procedure Init_Alignment (Id : E); | |
5722 | procedure Init_Component_Size (Id : E); | |
5723 | procedure Init_Component_Bit_Offset (Id : E); | |
5724 | procedure Init_Digits_Value (Id : E); | |
5725 | procedure Init_Esize (Id : E); | |
5726 | procedure Init_Normalized_First_Bit (Id : E); | |
5727 | procedure Init_Normalized_Position (Id : E); | |
5728 | procedure Init_Normalized_Position_Max (Id : E); | |
5729 | procedure Init_RM_Size (Id : E); | |
5730 | ||
5731 | procedure Init_Size_Align (Id : E); | |
5732 | -- This procedure initializes both size fields and the alignment | |
5733 | -- field to all be Unknown. | |
5734 | ||
5735 | procedure Init_Size (Id : E; V : Int); | |
5736 | -- Initialize both the Esize and RM_Size fields of E to V | |
5737 | ||
5738 | procedure Init_Component_Location (Id : E); | |
5739 | -- Initializes all fields describing the location of a component | |
5740 | -- (Normalized_Position, Component_Bit_Offset, Normalized_First_Bit, | |
5741 | -- Normalized_Position_Max, Esize) to all be Unknown. | |
5742 | ||
5743 | --------------- | |
5744 | -- Iterators -- | |
5745 | --------------- | |
5746 | ||
5747 | -- The call to Next_xxx (obj) is equivalent to obj := Next_xxx (obj) | |
5748 | -- We define the set of Proc_Next_xxx routines simply for the purposes | |
5749 | -- of inlining them without necessarily inlining the function. | |
5750 | ||
5751 | procedure Proc_Next_Component (N : in out Node_Id); | |
5752 | procedure Proc_Next_Discriminant (N : in out Node_Id); | |
5753 | procedure Proc_Next_Formal (N : in out Node_Id); | |
5754 | procedure Proc_Next_Formal_With_Extras (N : in out Node_Id); | |
70482933 RK |
5755 | procedure Proc_Next_Index (N : in out Node_Id); |
5756 | procedure Proc_Next_Inlined_Subprogram (N : in out Node_Id); | |
5757 | procedure Proc_Next_Literal (N : in out Node_Id); | |
fbf5a39b | 5758 | procedure Proc_Next_Stored_Discriminant (N : in out Node_Id); |
70482933 RK |
5759 | |
5760 | pragma Inline (Proc_Next_Component); | |
5761 | pragma Inline (Proc_Next_Discriminant); | |
5762 | pragma Inline (Proc_Next_Formal); | |
5763 | pragma Inline (Proc_Next_Formal_With_Extras); | |
70482933 RK |
5764 | pragma Inline (Proc_Next_Index); |
5765 | pragma Inline (Proc_Next_Inlined_Subprogram); | |
5766 | pragma Inline (Proc_Next_Literal); | |
fbf5a39b | 5767 | pragma Inline (Proc_Next_Stored_Discriminant); |
70482933 RK |
5768 | |
5769 | procedure Next_Component (N : in out Node_Id) | |
5770 | renames Proc_Next_Component; | |
5771 | ||
5772 | procedure Next_Discriminant (N : in out Node_Id) | |
5773 | renames Proc_Next_Discriminant; | |
5774 | ||
5775 | procedure Next_Formal (N : in out Node_Id) | |
5776 | renames Proc_Next_Formal; | |
5777 | ||
5778 | procedure Next_Formal_With_Extras (N : in out Node_Id) | |
5779 | renames Proc_Next_Formal_With_Extras; | |
5780 | ||
70482933 RK |
5781 | procedure Next_Index (N : in out Node_Id) |
5782 | renames Proc_Next_Index; | |
5783 | ||
5784 | procedure Next_Inlined_Subprogram (N : in out Node_Id) | |
5785 | renames Proc_Next_Inlined_Subprogram; | |
5786 | ||
5787 | procedure Next_Literal (N : in out Node_Id) | |
5788 | renames Proc_Next_Literal; | |
5789 | ||
fbf5a39b AC |
5790 | procedure Next_Stored_Discriminant (N : in out Node_Id) |
5791 | renames Proc_Next_Stored_Discriminant; | |
5792 | ||
70482933 RK |
5793 | ------------------------------- |
5794 | -- Miscellaneous Subprograms -- | |
5795 | ------------------------------- | |
5796 | ||
5797 | procedure Append_Entity (Id : Entity_Id; V : Entity_Id); | |
5798 | -- Add an entity to the list of entities declared in the scope V | |
5799 | ||
07fc65c4 GB |
5800 | function Get_Rep_Pragma (E : Entity_Id; Nam : Name_Id) return Node_Id; |
5801 | -- Searches the Rep_Item chain for the given entity E, for an instance | |
5802 | -- of a representation pragma with the given name Nam. If found then | |
5803 | -- the value returned is the N_Pragma node, otherwise Empty is returned. | |
5804 | ||
5805 | function Get_Attribute_Definition_Clause | |
5806 | (E : Entity_Id; | |
5807 | Id : Attribute_Id) | |
5808 | return Node_Id; | |
5809 | -- Searches the Rep_Item chain for a given entity E, for an instance | |
5810 | -- of an attribute definition clause with the given attibute Id Id. If | |
5811 | -- found, the value returned is the N_Attribute_Definition_Clause node, | |
5812 | -- otherwise Empty is returned. | |
5813 | ||
70482933 RK |
5814 | function Is_Entity_Name (N : Node_Id) return Boolean; |
5815 | -- Test if the node N is the name of an entity (i.e. is an identifier, | |
5816 | -- expanded name, or an attribute reference that returns an entity). | |
5817 | ||
5818 | function Next_Index (Id : Node_Id) return Node_Id; | |
5819 | -- Given an index from a previous call to First_Index or Next_Index, | |
5820 | -- returns a node representing the occurrence of the next index subtype, | |
5821 | -- or Empty if there are no more index subtypes. | |
5822 | ||
5823 | function Scope_Depth (Id : Entity_Id) return Uint; | |
5824 | -- Returns the scope depth value of the Id, unless the Id is a record | |
5825 | -- type, in which case it returns the scope depth of the record scope. | |
5826 | ||
5827 | function Subtype_Kind (K : Entity_Kind) return Entity_Kind; | |
5828 | -- Given an entity_kind K this function returns the entity_kind | |
5829 | -- corresponding to subtype kind of the type represented by K. For | |
5830 | -- example if K is E_Signed_Integer_Type then E_Signed_Integer_Subtype | |
5831 | -- is returned. If K is already a subtype kind it itself is returned. An | |
5832 | -- internal error is generated if no such correspondence exists for K. | |
5833 | ||
5834 | ---------------------------------- | |
5835 | -- Debugging Output Subprograms -- | |
5836 | ---------------------------------- | |
5837 | ||
5838 | procedure Write_Entity_Flags (Id : Entity_Id; Prefix : String); | |
5839 | -- Writes a series of entries giving a line for each flag that is | |
5840 | -- set to True. Each line is prefixed by the given string | |
5841 | ||
5842 | procedure Write_Entity_Info (Id : Entity_Id; Prefix : String); | |
5843 | -- A debugging procedure to write out information about an entity | |
5844 | ||
5845 | procedure Write_Field6_Name (Id : Entity_Id); | |
5846 | procedure Write_Field7_Name (Id : Entity_Id); | |
5847 | procedure Write_Field8_Name (Id : Entity_Id); | |
5848 | procedure Write_Field9_Name (Id : Entity_Id); | |
5849 | procedure Write_Field10_Name (Id : Entity_Id); | |
5850 | procedure Write_Field11_Name (Id : Entity_Id); | |
5851 | procedure Write_Field12_Name (Id : Entity_Id); | |
5852 | procedure Write_Field13_Name (Id : Entity_Id); | |
5853 | procedure Write_Field14_Name (Id : Entity_Id); | |
5854 | procedure Write_Field15_Name (Id : Entity_Id); | |
5855 | procedure Write_Field16_Name (Id : Entity_Id); | |
5856 | procedure Write_Field17_Name (Id : Entity_Id); | |
5857 | procedure Write_Field18_Name (Id : Entity_Id); | |
5858 | procedure Write_Field19_Name (Id : Entity_Id); | |
5859 | procedure Write_Field20_Name (Id : Entity_Id); | |
5860 | procedure Write_Field21_Name (Id : Entity_Id); | |
5861 | procedure Write_Field22_Name (Id : Entity_Id); | |
5862 | procedure Write_Field23_Name (Id : Entity_Id); | |
5863 | -- These routines are used to output a nice symbolic name for the given | |
5864 | -- field, depending on the Ekind. No blanks or end of lines are output, | |
5865 | -- just the characters of the field name. | |
5866 | ||
5867 | -------------------- | |
5868 | -- Inline Pragmas -- | |
5869 | -------------------- | |
5870 | ||
5871 | -- Note that these inline pragmas are referenced by the XEINFO utility | |
5872 | -- program in preparing the corresponding C header, and only those | |
5873 | -- subprograms meeting the requirements documented in the section on | |
5874 | -- XEINFO may be referenced in this section. | |
5875 | ||
5876 | pragma Inline (Accept_Address); | |
5877 | pragma Inline (Access_Disp_Table); | |
5878 | pragma Inline (Actual_Subtype); | |
5879 | pragma Inline (Address_Taken); | |
5880 | pragma Inline (Alias); | |
5881 | pragma Inline (Alignment); | |
5882 | pragma Inline (Associated_Final_Chain); | |
5883 | pragma Inline (Associated_Formal_Package); | |
5884 | pragma Inline (Associated_Node_For_Itype); | |
5885 | pragma Inline (Associated_Storage_Pool); | |
5886 | pragma Inline (Barrier_Function); | |
5887 | pragma Inline (Block_Node); | |
5888 | pragma Inline (Body_Entity); | |
fbf5a39b | 5889 | pragma Inline (Body_Needed_For_SAL); |
70482933 RK |
5890 | pragma Inline (CR_Discriminant); |
5891 | pragma Inline (C_Pass_By_Copy); | |
fbf5a39b AC |
5892 | pragma Inline (Can_Never_Be_Null); |
5893 | pragma Inline (Checks_May_Be_Suppressed); | |
70482933 RK |
5894 | pragma Inline (Class_Wide_Type); |
5895 | pragma Inline (Cloned_Subtype); | |
5896 | pragma Inline (Component_Bit_Offset); | |
5897 | pragma Inline (Component_Clause); | |
5898 | pragma Inline (Component_Size); | |
5899 | pragma Inline (Component_Type); | |
5900 | pragma Inline (Corresponding_Concurrent_Type); | |
5901 | pragma Inline (Corresponding_Discriminant); | |
5902 | pragma Inline (Corresponding_Equality); | |
5903 | pragma Inline (Corresponding_Record_Type); | |
5904 | pragma Inline (Corresponding_Remote_Type); | |
fbf5a39b | 5905 | pragma Inline (Current_Value); |
70482933 RK |
5906 | pragma Inline (Debug_Info_Off); |
5907 | pragma Inline (Debug_Renaming_Link); | |
5908 | pragma Inline (DTC_Entity); | |
5909 | pragma Inline (DT_Entry_Count); | |
5910 | pragma Inline (DT_Position); | |
5911 | pragma Inline (Default_Expr_Function); | |
5912 | pragma Inline (Default_Expressions_Processed); | |
5913 | pragma Inline (Default_Value); | |
5914 | pragma Inline (Delay_Cleanups); | |
5915 | pragma Inline (Delay_Subprogram_Descriptors); | |
5916 | pragma Inline (Delta_Value); | |
5917 | pragma Inline (Dependent_Instances); | |
5918 | pragma Inline (Depends_On_Private); | |
5919 | pragma Inline (Digits_Value); | |
5920 | pragma Inline (Directly_Designated_Type); | |
5921 | pragma Inline (Discard_Names); | |
5922 | pragma Inline (Discriminal); | |
5923 | pragma Inline (Discriminal_Link); | |
5924 | pragma Inline (Discriminant_Checking_Func); | |
5925 | pragma Inline (Discriminant_Constraint); | |
5926 | pragma Inline (Discriminant_Default_Value); | |
5927 | pragma Inline (Discriminant_Number); | |
5928 | pragma Inline (Elaborate_All_Desirable); | |
5929 | pragma Inline (Elaboration_Entity); | |
5930 | pragma Inline (Elaboration_Entity_Required); | |
5931 | pragma Inline (Enclosing_Scope); | |
5932 | pragma Inline (Entry_Accepted); | |
5933 | pragma Inline (Entry_Bodies_Array); | |
5934 | pragma Inline (Entry_Cancel_Parameter); | |
5935 | pragma Inline (Entry_Component); | |
5936 | pragma Inline (Entry_Formal); | |
5937 | pragma Inline (Entry_Index_Constant); | |
5938 | pragma Inline (Entry_Index_Type); | |
5939 | pragma Inline (Entry_Parameters_Type); | |
5940 | pragma Inline (Enum_Pos_To_Rep); | |
5941 | pragma Inline (Enumeration_Pos); | |
5942 | pragma Inline (Enumeration_Rep); | |
5943 | pragma Inline (Enumeration_Rep_Expr); | |
5944 | pragma Inline (Equivalent_Type); | |
5945 | pragma Inline (Esize); | |
5946 | pragma Inline (Exception_Code); | |
5947 | pragma Inline (Extra_Accessibility); | |
5948 | pragma Inline (Extra_Constrained); | |
5949 | pragma Inline (Extra_Formal); | |
5950 | pragma Inline (Finalization_Chain_Entity); | |
5951 | pragma Inline (First_Entity); | |
5952 | pragma Inline (First_Index); | |
5953 | pragma Inline (First_Literal); | |
5954 | pragma Inline (First_Optional_Parameter); | |
5955 | pragma Inline (First_Private_Entity); | |
5956 | pragma Inline (First_Rep_Item); | |
5957 | pragma Inline (Freeze_Node); | |
5958 | pragma Inline (From_With_Type); | |
5959 | pragma Inline (Full_View); | |
5960 | pragma Inline (Function_Returns_With_DSP); | |
fbf5a39b | 5961 | pragma Inline (Generic_Homonym); |
70482933 | 5962 | pragma Inline (Generic_Renamings); |
70482933 RK |
5963 | pragma Inline (Handler_Records); |
5964 | pragma Inline (Has_Aliased_Components); | |
5965 | pragma Inline (Has_Alignment_Clause); | |
5966 | pragma Inline (Has_All_Calls_Remote); | |
5967 | pragma Inline (Has_Atomic_Components); | |
5968 | pragma Inline (Has_Biased_Representation); | |
5969 | pragma Inline (Has_Completion); | |
5970 | pragma Inline (Has_Completion_In_Body); | |
5971 | pragma Inline (Has_Complex_Representation); | |
5972 | pragma Inline (Has_Component_Size_Clause); | |
fbf5a39b | 5973 | pragma Inline (Has_Contiguous_Rep); |
70482933 RK |
5974 | pragma Inline (Has_Controlled_Component); |
5975 | pragma Inline (Has_Controlling_Result); | |
5976 | pragma Inline (Has_Convention_Pragma); | |
5977 | pragma Inline (Has_Delayed_Freeze); | |
5978 | pragma Inline (Has_Discriminants); | |
5979 | pragma Inline (Has_Enumeration_Rep_Clause); | |
5980 | pragma Inline (Has_Exit); | |
5981 | pragma Inline (Has_External_Tag_Rep_Clause); | |
5982 | pragma Inline (Has_Fully_Qualified_Name); | |
5983 | pragma Inline (Has_Gigi_Rep_Item); | |
5984 | pragma Inline (Has_Homonym); | |
5985 | pragma Inline (Has_Machine_Radix_Clause); | |
5986 | pragma Inline (Has_Master_Entity); | |
5987 | pragma Inline (Has_Missing_Return); | |
5988 | pragma Inline (Has_Nested_Block_With_Handler); | |
5989 | pragma Inline (Has_Forward_Instantiation); | |
5990 | pragma Inline (Has_Non_Standard_Rep); | |
5991 | pragma Inline (Has_Object_Size_Clause); | |
5992 | pragma Inline (Has_Per_Object_Constraint); | |
5993 | pragma Inline (Has_Pragma_Controlled); | |
5994 | pragma Inline (Has_Pragma_Elaborate_Body); | |
5995 | pragma Inline (Has_Pragma_Inline); | |
5996 | pragma Inline (Has_Pragma_Pack); | |
0839863c | 5997 | pragma Inline (Has_Pragma_Pure_Function); |
07fc65c4 | 5998 | pragma Inline (Has_Pragma_Unreferenced); |
70482933 RK |
5999 | pragma Inline (Has_Primitive_Operations); |
6000 | pragma Inline (Has_Private_Declaration); | |
6001 | pragma Inline (Has_Qualified_Name); | |
6002 | pragma Inline (Has_Record_Rep_Clause); | |
6003 | pragma Inline (Has_Recursive_Call); | |
6004 | pragma Inline (Has_Size_Clause); | |
6005 | pragma Inline (Has_Small_Clause); | |
6006 | pragma Inline (Has_Specified_Layout); | |
6007 | pragma Inline (Has_Storage_Size_Clause); | |
6008 | pragma Inline (Has_Subprogram_Descriptor); | |
6009 | pragma Inline (Has_Task); | |
6010 | pragma Inline (Has_Unchecked_Union); | |
6011 | pragma Inline (Has_Unknown_Discriminants); | |
6012 | pragma Inline (Has_Volatile_Components); | |
fbf5a39b | 6013 | pragma Inline (Has_Xref_Entry); |
70482933 RK |
6014 | pragma Inline (Hiding_Loop_Variable); |
6015 | pragma Inline (Homonym); | |
6016 | pragma Inline (In_Package_Body); | |
6017 | pragma Inline (In_Private_Part); | |
6018 | pragma Inline (In_Use); | |
6019 | pragma Inline (Inner_Instances); | |
6020 | pragma Inline (Interface_Name); | |
6021 | pragma Inline (Is_AST_Entry); | |
6022 | pragma Inline (Is_Abstract); | |
6023 | pragma Inline (Is_Access_Constant); | |
6024 | pragma Inline (Is_Access_Type); | |
6025 | pragma Inline (Is_Aliased); | |
6026 | pragma Inline (Is_Array_Type); | |
6027 | pragma Inline (Is_Asynchronous); | |
6028 | pragma Inline (Is_Atomic); | |
6029 | pragma Inline (Is_Bit_Packed_Array); | |
6030 | pragma Inline (Is_CPP_Class); | |
6031 | pragma Inline (Is_Called); | |
6032 | pragma Inline (Is_Character_Type); | |
6033 | pragma Inline (Is_Child_Unit); | |
fbf5a39b | 6034 | pragma Inline (Is_Class_Wide_Equivalent_Type); |
70482933 RK |
6035 | pragma Inline (Is_Class_Wide_Type); |
6036 | pragma Inline (Is_Compilation_Unit); | |
6037 | pragma Inline (Is_Completely_Hidden); | |
6038 | pragma Inline (Is_Composite_Type); | |
6039 | pragma Inline (Is_Concurrent_Body); | |
6040 | pragma Inline (Is_Concurrent_Record_Type); | |
6041 | pragma Inline (Is_Concurrent_Type); | |
6042 | pragma Inline (Is_Constr_Subt_For_UN_Aliased); | |
6043 | pragma Inline (Is_Constr_Subt_For_U_Nominal); | |
6044 | pragma Inline (Is_Constrained); | |
6045 | pragma Inline (Is_Constructor); | |
6046 | pragma Inline (Is_Controlled); | |
6047 | pragma Inline (Is_Controlling_Formal); | |
6048 | pragma Inline (Is_Decimal_Fixed_Point_Type); | |
70482933 RK |
6049 | pragma Inline (Is_Discrim_SO_Function); |
6050 | pragma Inline (Is_Digits_Type); | |
6051 | pragma Inline (Is_Discrete_Or_Fixed_Point_Type); | |
6052 | pragma Inline (Is_Discrete_Type); | |
6053 | pragma Inline (Is_Dispatching_Operation); | |
6054 | pragma Inline (Is_Elementary_Type); | |
6055 | pragma Inline (Is_Eliminated); | |
6056 | pragma Inline (Is_Entry); | |
6057 | pragma Inline (Is_Entry_Formal); | |
6058 | pragma Inline (Is_Enumeration_Type); | |
6059 | pragma Inline (Is_Exported); | |
6060 | pragma Inline (Is_First_Subtype); | |
6061 | pragma Inline (Is_Fixed_Point_Type); | |
6062 | pragma Inline (Is_Floating_Point_Type); | |
6063 | pragma Inline (Is_For_Access_Subtype); | |
6064 | pragma Inline (Is_Formal); | |
6065 | pragma Inline (Is_Formal_Subprogram); | |
6066 | pragma Inline (Is_Frozen); | |
6067 | pragma Inline (Is_Generic_Actual_Type); | |
6068 | pragma Inline (Is_Generic_Instance); | |
fbf5a39b | 6069 | pragma Inline (Is_Generic_Subprogram); |
70482933 RK |
6070 | pragma Inline (Is_Generic_Type); |
6071 | pragma Inline (Is_Generic_Unit); | |
6072 | pragma Inline (Is_Hidden); | |
6073 | pragma Inline (Is_Hidden_Open_Scope); | |
6074 | pragma Inline (Is_Immediately_Visible); | |
6075 | pragma Inline (Is_Imported); | |
6076 | pragma Inline (Is_Incomplete_Or_Private_Type); | |
6077 | pragma Inline (Is_Inlined); | |
6078 | pragma Inline (Is_Instantiated); | |
6079 | pragma Inline (Is_Integer_Type); | |
6080 | pragma Inline (Is_Internal); | |
6081 | pragma Inline (Is_Interrupt_Handler); | |
6082 | pragma Inline (Is_Intrinsic_Subprogram); | |
6083 | pragma Inline (Is_Itype); | |
fbf5a39b | 6084 | pragma Inline (Is_Known_Non_Null); |
70482933 RK |
6085 | pragma Inline (Is_Known_Valid); |
6086 | pragma Inline (Is_Limited_Composite); | |
6087 | pragma Inline (Is_Limited_Record); | |
6088 | pragma Inline (Is_Machine_Code_Subprogram); | |
6089 | pragma Inline (Is_Modular_Integer_Type); | |
6090 | pragma Inline (Is_Named_Number); | |
6091 | pragma Inline (Is_Non_Static_Subtype); | |
6092 | pragma Inline (Is_Null_Init_Proc); | |
6093 | pragma Inline (Is_Numeric_Type); | |
6094 | pragma Inline (Is_Object); | |
6095 | pragma Inline (Is_Optional_Parameter); | |
6096 | pragma Inline (Is_Package_Body_Entity); | |
6097 | pragma Inline (Is_Ordinary_Fixed_Point_Type); | |
6098 | pragma Inline (Is_Overloadable); | |
fbf5a39b | 6099 | pragma Inline (Is_Overriding_Operation); |
70482933 RK |
6100 | pragma Inline (Is_Packed); |
6101 | pragma Inline (Is_Packed_Array_Type); | |
6102 | pragma Inline (Is_Potentially_Use_Visible); | |
6103 | pragma Inline (Is_Preelaborated); | |
6104 | pragma Inline (Is_Private_Composite); | |
6105 | pragma Inline (Is_Private_Descendant); | |
6106 | pragma Inline (Is_Private_Type); | |
6107 | pragma Inline (Is_Protected_Type); | |
6108 | pragma Inline (Is_Psected); | |
6109 | pragma Inline (Is_Public); | |
6110 | pragma Inline (Is_Pure); | |
6111 | pragma Inline (Is_Real_Type); | |
6112 | pragma Inline (Is_Record_Type); | |
6113 | pragma Inline (Is_Remote_Call_Interface); | |
6114 | pragma Inline (Is_Remote_Types); | |
6115 | pragma Inline (Is_Renaming_Of_Object); | |
6116 | pragma Inline (Is_Scalar_Type); | |
6117 | pragma Inline (Is_Shared_Passive); | |
6118 | pragma Inline (Is_Signed_Integer_Type); | |
6119 | pragma Inline (Is_Statically_Allocated); | |
6120 | pragma Inline (Is_Subprogram); | |
6121 | pragma Inline (Is_Tag); | |
6122 | pragma Inline (Is_Tagged_Type); | |
6123 | pragma Inline (Is_True_Constant); | |
6124 | pragma Inline (Is_Task_Type); | |
6125 | pragma Inline (Is_Type); | |
6126 | pragma Inline (Is_Unchecked_Union); | |
6127 | pragma Inline (Is_Unsigned_Type); | |
6128 | pragma Inline (Is_VMS_Exception); | |
6129 | pragma Inline (Is_Valued_Procedure); | |
6130 | pragma Inline (Is_Visible_Child_Unit); | |
fbf5a39b AC |
6131 | pragma Inline (Kill_Elaboration_Checks); |
6132 | pragma Inline (Kill_Range_Checks); | |
6133 | pragma Inline (Kill_Tag_Checks); | |
70482933 | 6134 | pragma Inline (Last_Entity); |
fbf5a39b | 6135 | pragma Inline (Limited_Views); |
70482933 RK |
6136 | pragma Inline (Lit_Indexes); |
6137 | pragma Inline (Lit_Strings); | |
6138 | pragma Inline (Machine_Radix_10); | |
6139 | pragma Inline (Master_Id); | |
6140 | pragma Inline (Materialize_Entity); | |
6141 | pragma Inline (Mechanism); | |
6142 | pragma Inline (Modulus); | |
6143 | pragma Inline (Needs_Debug_Info); | |
6144 | pragma Inline (Needs_No_Actuals); | |
fbf5a39b | 6145 | pragma Inline (Never_Set_In_Source); |
70482933 RK |
6146 | pragma Inline (Next_Index); |
6147 | pragma Inline (Next_Inlined_Subprogram); | |
6148 | pragma Inline (Next_Literal); | |
6149 | pragma Inline (No_Pool_Assigned); | |
6150 | pragma Inline (No_Return); | |
6151 | pragma Inline (Non_Binary_Modulus); | |
fbf5a39b AC |
6152 | pragma Inline (Non_Limited_View); |
6153 | pragma Inline (Non_Limited_Views); | |
70482933 RK |
6154 | pragma Inline (Nonzero_Is_True); |
6155 | pragma Inline (Normalized_First_Bit); | |
6156 | pragma Inline (Normalized_Position); | |
6157 | pragma Inline (Normalized_Position_Max); | |
70482933 | 6158 | pragma Inline (Object_Ref); |
07fc65c4 | 6159 | pragma Inline (Original_Array_Type); |
70482933 RK |
6160 | pragma Inline (Original_Record_Component); |
6161 | pragma Inline (Packed_Array_Type); | |
6162 | pragma Inline (Parameter_Mode); | |
6163 | pragma Inline (Parent_Subtype); | |
6164 | pragma Inline (Primitive_Operations); | |
6165 | pragma Inline (Prival); | |
6166 | pragma Inline (Privals_Chain); | |
6167 | pragma Inline (Private_Dependents); | |
6168 | pragma Inline (Private_View); | |
6169 | pragma Inline (Protected_Body_Subprogram); | |
6170 | pragma Inline (Protected_Formal); | |
6171 | pragma Inline (Protected_Operation); | |
6172 | pragma Inline (RM_Size); | |
6173 | pragma Inline (Reachable); | |
6174 | pragma Inline (Referenced); | |
fbf5a39b | 6175 | pragma Inline (Referenced_As_LHS); |
70482933 RK |
6176 | pragma Inline (Referenced_Object); |
6177 | pragma Inline (Register_Exception_Call); | |
6178 | pragma Inline (Related_Array_Object); | |
6179 | pragma Inline (Related_Instance); | |
6180 | pragma Inline (Renamed_Entity); | |
6181 | pragma Inline (Renamed_Object); | |
6182 | pragma Inline (Renaming_Map); | |
6183 | pragma Inline (Return_Present); | |
6184 | pragma Inline (Returns_By_Ref); | |
6185 | pragma Inline (Reverse_Bit_Order); | |
6186 | pragma Inline (Scalar_Range); | |
6187 | pragma Inline (Scale_Value); | |
6188 | pragma Inline (Scope_Depth_Value); | |
6189 | pragma Inline (Sec_Stack_Needed_For_Return); | |
6190 | pragma Inline (Shadow_Entities); | |
6191 | pragma Inline (Shared_Var_Assign_Proc); | |
6192 | pragma Inline (Shared_Var_Read_Proc); | |
6193 | pragma Inline (Size_Check_Code); | |
6194 | pragma Inline (Size_Depends_On_Discriminant); | |
6195 | pragma Inline (Size_Known_At_Compile_Time); | |
6196 | pragma Inline (Small_Value); | |
6197 | pragma Inline (Spec_Entity); | |
6198 | pragma Inline (Storage_Size_Variable); | |
fbf5a39b | 6199 | pragma Inline (Stored_Constraint); |
70482933 RK |
6200 | pragma Inline (Strict_Alignment); |
6201 | pragma Inline (String_Literal_Length); | |
6202 | pragma Inline (String_Literal_Low_Bound); | |
70482933 | 6203 | pragma Inline (Suppress_Elaboration_Warnings); |
70482933 | 6204 | pragma Inline (Suppress_Init_Proc); |
70482933 | 6205 | pragma Inline (Suppress_Style_Checks); |
fbf5a39b | 6206 | pragma Inline (Treat_As_Volatile); |
70482933 RK |
6207 | pragma Inline (Underlying_Full_View); |
6208 | pragma Inline (Unset_Reference); | |
6209 | pragma Inline (Uses_Sec_Stack); | |
6210 | pragma Inline (Vax_Float); | |
6211 | pragma Inline (Warnings_Off); | |
6212 | ||
6213 | pragma Inline (Init_Alignment); | |
6214 | pragma Inline (Init_Component_Bit_Offset); | |
6215 | pragma Inline (Init_Component_Size); | |
6216 | pragma Inline (Init_Digits_Value); | |
6217 | pragma Inline (Init_Esize); | |
6218 | pragma Inline (Init_RM_Size); | |
6219 | ||
70482933 RK |
6220 | pragma Inline (Set_Accept_Address); |
6221 | pragma Inline (Set_Access_Disp_Table); | |
6222 | pragma Inline (Set_Actual_Subtype); | |
6223 | pragma Inline (Set_Address_Taken); | |
6224 | pragma Inline (Set_Alias); | |
6225 | pragma Inline (Set_Alignment); | |
6226 | pragma Inline (Set_Associated_Final_Chain); | |
6227 | pragma Inline (Set_Associated_Formal_Package); | |
6228 | pragma Inline (Set_Associated_Node_For_Itype); | |
6229 | pragma Inline (Set_Associated_Storage_Pool); | |
6230 | pragma Inline (Set_Barrier_Function); | |
6231 | pragma Inline (Set_Block_Node); | |
6232 | pragma Inline (Set_Body_Entity); | |
fbf5a39b | 6233 | pragma Inline (Set_Body_Needed_For_SAL); |
70482933 RK |
6234 | pragma Inline (Set_CR_Discriminant); |
6235 | pragma Inline (Set_C_Pass_By_Copy); | |
fbf5a39b AC |
6236 | pragma Inline (Set_Can_Never_Be_Null); |
6237 | pragma Inline (Set_Checks_May_Be_Suppressed); | |
70482933 RK |
6238 | pragma Inline (Set_Class_Wide_Type); |
6239 | pragma Inline (Set_Cloned_Subtype); | |
6240 | pragma Inline (Set_Component_Bit_Offset); | |
6241 | pragma Inline (Set_Component_Clause); | |
6242 | pragma Inline (Set_Component_Size); | |
6243 | pragma Inline (Set_Component_Type); | |
6244 | pragma Inline (Set_Corresponding_Concurrent_Type); | |
6245 | pragma Inline (Set_Corresponding_Discriminant); | |
6246 | pragma Inline (Set_Corresponding_Equality); | |
6247 | pragma Inline (Set_Corresponding_Record_Type); | |
6248 | pragma Inline (Set_Corresponding_Remote_Type); | |
fbf5a39b | 6249 | pragma Inline (Set_Current_Value); |
70482933 RK |
6250 | pragma Inline (Set_Debug_Info_Off); |
6251 | pragma Inline (Set_Debug_Renaming_Link); | |
6252 | pragma Inline (Set_DTC_Entity); | |
6253 | pragma Inline (Set_DT_Position); | |
6254 | pragma Inline (Set_Default_Expr_Function); | |
6255 | pragma Inline (Set_Default_Expressions_Processed); | |
6256 | pragma Inline (Set_Default_Value); | |
6257 | pragma Inline (Set_Delay_Cleanups); | |
6258 | pragma Inline (Set_Delay_Subprogram_Descriptors); | |
6259 | pragma Inline (Set_Delta_Value); | |
6260 | pragma Inline (Set_Dependent_Instances); | |
6261 | pragma Inline (Set_Depends_On_Private); | |
6262 | pragma Inline (Set_Digits_Value); | |
6263 | pragma Inline (Set_Directly_Designated_Type); | |
6264 | pragma Inline (Set_Discard_Names); | |
6265 | pragma Inline (Set_Discriminal); | |
6266 | pragma Inline (Set_Discriminal_Link); | |
6267 | pragma Inline (Set_Discriminant_Checking_Func); | |
6268 | pragma Inline (Set_Discriminant_Constraint); | |
6269 | pragma Inline (Set_Discriminant_Default_Value); | |
6270 | pragma Inline (Set_Discriminant_Number); | |
6271 | pragma Inline (Set_Elaborate_All_Desirable); | |
6272 | pragma Inline (Set_Elaboration_Entity); | |
6273 | pragma Inline (Set_Elaboration_Entity_Required); | |
6274 | pragma Inline (Set_Enclosing_Scope); | |
6275 | pragma Inline (Set_Entry_Accepted); | |
6276 | pragma Inline (Set_Entry_Bodies_Array); | |
6277 | pragma Inline (Set_Entry_Cancel_Parameter); | |
6278 | pragma Inline (Set_Entry_Component); | |
6279 | pragma Inline (Set_Entry_Formal); | |
6280 | pragma Inline (Set_Entry_Parameters_Type); | |
6281 | pragma Inline (Set_Enum_Pos_To_Rep); | |
6282 | pragma Inline (Set_Enumeration_Pos); | |
6283 | pragma Inline (Set_Enumeration_Rep); | |
6284 | pragma Inline (Set_Enumeration_Rep_Expr); | |
6285 | pragma Inline (Set_Equivalent_Type); | |
6286 | pragma Inline (Set_Esize); | |
6287 | pragma Inline (Set_Exception_Code); | |
6288 | pragma Inline (Set_Extra_Accessibility); | |
6289 | pragma Inline (Set_Extra_Constrained); | |
6290 | pragma Inline (Set_Extra_Formal); | |
6291 | pragma Inline (Set_Finalization_Chain_Entity); | |
6292 | pragma Inline (Set_First_Entity); | |
6293 | pragma Inline (Set_First_Index); | |
6294 | pragma Inline (Set_First_Literal); | |
6295 | pragma Inline (Set_First_Optional_Parameter); | |
6296 | pragma Inline (Set_First_Private_Entity); | |
6297 | pragma Inline (Set_First_Rep_Item); | |
6298 | pragma Inline (Set_Freeze_Node); | |
6299 | pragma Inline (Set_From_With_Type); | |
6300 | pragma Inline (Set_Full_View); | |
6301 | pragma Inline (Set_Function_Returns_With_DSP); | |
fbf5a39b | 6302 | pragma Inline (Set_Generic_Homonym); |
70482933 | 6303 | pragma Inline (Set_Generic_Renamings); |
70482933 RK |
6304 | pragma Inline (Set_Handler_Records); |
6305 | pragma Inline (Set_Has_Aliased_Components); | |
6306 | pragma Inline (Set_Has_Alignment_Clause); | |
6307 | pragma Inline (Set_Has_All_Calls_Remote); | |
6308 | pragma Inline (Set_Has_Atomic_Components); | |
6309 | pragma Inline (Set_Has_Biased_Representation); | |
6310 | pragma Inline (Set_Has_Completion); | |
6311 | pragma Inline (Set_Has_Completion_In_Body); | |
6312 | pragma Inline (Set_Has_Complex_Representation); | |
6313 | pragma Inline (Set_Has_Component_Size_Clause); | |
fbf5a39b | 6314 | pragma Inline (Set_Has_Contiguous_Rep); |
70482933 RK |
6315 | pragma Inline (Set_Has_Controlled_Component); |
6316 | pragma Inline (Set_Has_Controlling_Result); | |
6317 | pragma Inline (Set_Has_Convention_Pragma); | |
6318 | pragma Inline (Set_Has_Delayed_Freeze); | |
6319 | pragma Inline (Set_Has_Discriminants); | |
6320 | pragma Inline (Set_Has_Enumeration_Rep_Clause); | |
6321 | pragma Inline (Set_Has_Exit); | |
6322 | pragma Inline (Set_Has_External_Tag_Rep_Clause); | |
6323 | pragma Inline (Set_Has_Fully_Qualified_Name); | |
6324 | pragma Inline (Set_Has_Gigi_Rep_Item); | |
6325 | pragma Inline (Set_Has_Homonym); | |
6326 | pragma Inline (Set_Has_Machine_Radix_Clause); | |
6327 | pragma Inline (Set_Has_Master_Entity); | |
6328 | pragma Inline (Set_Has_Missing_Return); | |
6329 | pragma Inline (Set_Has_Nested_Block_With_Handler); | |
6330 | pragma Inline (Set_Has_Forward_Instantiation); | |
6331 | pragma Inline (Set_Has_Non_Standard_Rep); | |
6332 | pragma Inline (Set_Has_Object_Size_Clause); | |
6333 | pragma Inline (Set_Has_Per_Object_Constraint); | |
6334 | pragma Inline (Set_Has_Pragma_Controlled); | |
6335 | pragma Inline (Set_Has_Pragma_Elaborate_Body); | |
6336 | pragma Inline (Set_Has_Pragma_Inline); | |
6337 | pragma Inline (Set_Has_Pragma_Pack); | |
0839863c | 6338 | pragma Inline (Set_Has_Pragma_Pure_Function); |
07fc65c4 | 6339 | pragma Inline (Set_Has_Pragma_Unreferenced); |
70482933 RK |
6340 | pragma Inline (Set_Has_Primitive_Operations); |
6341 | pragma Inline (Set_Has_Private_Declaration); | |
6342 | pragma Inline (Set_Has_Qualified_Name); | |
6343 | pragma Inline (Set_Has_Record_Rep_Clause); | |
6344 | pragma Inline (Set_Has_Recursive_Call); | |
6345 | pragma Inline (Set_Has_Size_Clause); | |
6346 | pragma Inline (Set_Has_Small_Clause); | |
6347 | pragma Inline (Set_Has_Specified_Layout); | |
6348 | pragma Inline (Set_Has_Storage_Size_Clause); | |
6349 | pragma Inline (Set_Has_Subprogram_Descriptor); | |
6350 | pragma Inline (Set_Has_Task); | |
6351 | pragma Inline (Set_Has_Unchecked_Union); | |
6352 | pragma Inline (Set_Has_Unknown_Discriminants); | |
6353 | pragma Inline (Set_Has_Volatile_Components); | |
fbf5a39b | 6354 | pragma Inline (Set_Has_Xref_Entry); |
70482933 RK |
6355 | pragma Inline (Set_Hiding_Loop_Variable); |
6356 | pragma Inline (Set_Homonym); | |
6357 | pragma Inline (Set_In_Package_Body); | |
6358 | pragma Inline (Set_In_Private_Part); | |
6359 | pragma Inline (Set_In_Use); | |
6360 | pragma Inline (Set_Inner_Instances); | |
6361 | pragma Inline (Set_Interface_Name); | |
6362 | pragma Inline (Set_Is_AST_Entry); | |
6363 | pragma Inline (Set_Is_Abstract); | |
6364 | pragma Inline (Set_Is_Access_Constant); | |
6365 | pragma Inline (Set_Is_Aliased); | |
6366 | pragma Inline (Set_Is_Asynchronous); | |
6367 | pragma Inline (Set_Is_Atomic); | |
6368 | pragma Inline (Set_Is_Bit_Packed_Array); | |
6369 | pragma Inline (Set_Is_CPP_Class); | |
6370 | pragma Inline (Set_Is_Called); | |
6371 | pragma Inline (Set_Is_Character_Type); | |
6372 | pragma Inline (Set_Is_Child_Unit); | |
fbf5a39b | 6373 | pragma Inline (Set_Is_Class_Wide_Equivalent_Type); |
70482933 RK |
6374 | pragma Inline (Set_Is_Compilation_Unit); |
6375 | pragma Inline (Set_Is_Completely_Hidden); | |
6376 | pragma Inline (Set_Is_Concurrent_Record_Type); | |
6377 | pragma Inline (Set_Is_Constr_Subt_For_U_Nominal); | |
6378 | pragma Inline (Set_Is_Constr_Subt_For_UN_Aliased); | |
6379 | pragma Inline (Set_Is_Constrained); | |
6380 | pragma Inline (Set_Is_Constructor); | |
6381 | pragma Inline (Set_Is_Controlled); | |
6382 | pragma Inline (Set_Is_Controlling_Formal); | |
70482933 RK |
6383 | pragma Inline (Set_Is_Discrim_SO_Function); |
6384 | pragma Inline (Set_Is_Dispatching_Operation); | |
6385 | pragma Inline (Set_Is_Eliminated); | |
6386 | pragma Inline (Set_Is_Entry_Formal); | |
6387 | pragma Inline (Set_Is_Exported); | |
6388 | pragma Inline (Set_Is_First_Subtype); | |
6389 | pragma Inline (Set_Is_For_Access_Subtype); | |
6390 | pragma Inline (Set_Is_Formal_Subprogram); | |
6391 | pragma Inline (Set_Is_Frozen); | |
6392 | pragma Inline (Set_Is_Generic_Actual_Type); | |
6393 | pragma Inline (Set_Is_Generic_Instance); | |
6394 | pragma Inline (Set_Is_Generic_Type); | |
6395 | pragma Inline (Set_Is_Hidden); | |
6396 | pragma Inline (Set_Is_Hidden_Open_Scope); | |
6397 | pragma Inline (Set_Is_Immediately_Visible); | |
6398 | pragma Inline (Set_Is_Imported); | |
6399 | pragma Inline (Set_Is_Inlined); | |
6400 | pragma Inline (Set_Is_Instantiated); | |
6401 | pragma Inline (Set_Is_Internal); | |
6402 | pragma Inline (Set_Is_Interrupt_Handler); | |
6403 | pragma Inline (Set_Is_Intrinsic_Subprogram); | |
6404 | pragma Inline (Set_Is_Itype); | |
fbf5a39b | 6405 | pragma Inline (Set_Is_Known_Non_Null); |
70482933 RK |
6406 | pragma Inline (Set_Is_Known_Valid); |
6407 | pragma Inline (Set_Is_Limited_Composite); | |
6408 | pragma Inline (Set_Is_Limited_Record); | |
6409 | pragma Inline (Set_Is_Machine_Code_Subprogram); | |
6410 | pragma Inline (Set_Is_Non_Static_Subtype); | |
6411 | pragma Inline (Set_Is_Null_Init_Proc); | |
6412 | pragma Inline (Set_Is_Optional_Parameter); | |
fbf5a39b | 6413 | pragma Inline (Set_Is_Overriding_Operation); |
70482933 RK |
6414 | pragma Inline (Set_Is_Package_Body_Entity); |
6415 | pragma Inline (Set_Is_Packed); | |
6416 | pragma Inline (Set_Is_Packed_Array_Type); | |
6417 | pragma Inline (Set_Is_Potentially_Use_Visible); | |
6418 | pragma Inline (Set_Is_Preelaborated); | |
6419 | pragma Inline (Set_Is_Private_Composite); | |
6420 | pragma Inline (Set_Is_Private_Descendant); | |
6421 | pragma Inline (Set_Is_Psected); | |
6422 | pragma Inline (Set_Is_Public); | |
6423 | pragma Inline (Set_Is_Pure); | |
6424 | pragma Inline (Set_Is_Remote_Call_Interface); | |
6425 | pragma Inline (Set_Is_Remote_Types); | |
6426 | pragma Inline (Set_Is_Renaming_Of_Object); | |
6427 | pragma Inline (Set_Is_Shared_Passive); | |
6428 | pragma Inline (Set_Is_Statically_Allocated); | |
6429 | pragma Inline (Set_Is_Tag); | |
6430 | pragma Inline (Set_Is_Tagged_Type); | |
6431 | pragma Inline (Set_Is_True_Constant); | |
6432 | pragma Inline (Set_Is_Unchecked_Union); | |
6433 | pragma Inline (Set_Is_Unsigned_Type); | |
6434 | pragma Inline (Set_Is_VMS_Exception); | |
6435 | pragma Inline (Set_Is_Valued_Procedure); | |
6436 | pragma Inline (Set_Is_Visible_Child_Unit); | |
6437 | pragma Inline (Set_Is_Volatile); | |
fbf5a39b AC |
6438 | pragma Inline (Set_Kill_Elaboration_Checks); |
6439 | pragma Inline (Set_Kill_Range_Checks); | |
6440 | pragma Inline (Set_Kill_Tag_Checks); | |
70482933 | 6441 | pragma Inline (Set_Last_Entity); |
fbf5a39b | 6442 | pragma Inline (Set_Limited_Views); |
70482933 RK |
6443 | pragma Inline (Set_Lit_Indexes); |
6444 | pragma Inline (Set_Lit_Strings); | |
6445 | pragma Inline (Set_Machine_Radix_10); | |
6446 | pragma Inline (Set_Master_Id); | |
6447 | pragma Inline (Set_Materialize_Entity); | |
6448 | pragma Inline (Set_Mechanism); | |
6449 | pragma Inline (Set_Modulus); | |
6450 | pragma Inline (Set_Needs_Debug_Info); | |
6451 | pragma Inline (Set_Needs_No_Actuals); | |
fbf5a39b | 6452 | pragma Inline (Set_Never_Set_In_Source); |
70482933 RK |
6453 | pragma Inline (Set_Next_Inlined_Subprogram); |
6454 | pragma Inline (Set_No_Pool_Assigned); | |
6455 | pragma Inline (Set_No_Return); | |
6456 | pragma Inline (Set_Non_Binary_Modulus); | |
fbf5a39b AC |
6457 | pragma Inline (Set_Non_Limited_View); |
6458 | pragma Inline (Set_Non_Limited_Views); | |
70482933 RK |
6459 | pragma Inline (Set_Nonzero_Is_True); |
6460 | pragma Inline (Set_Normalized_First_Bit); | |
6461 | pragma Inline (Set_Normalized_Position); | |
6462 | pragma Inline (Set_Normalized_Position_Max); | |
70482933 | 6463 | pragma Inline (Set_Object_Ref); |
07fc65c4 | 6464 | pragma Inline (Set_Original_Array_Type); |
70482933 RK |
6465 | pragma Inline (Set_Original_Record_Component); |
6466 | pragma Inline (Set_Packed_Array_Type); | |
6467 | pragma Inline (Set_Parent_Subtype); | |
6468 | pragma Inline (Set_Primitive_Operations); | |
6469 | pragma Inline (Set_Prival); | |
6470 | pragma Inline (Set_Privals_Chain); | |
6471 | pragma Inline (Set_Private_Dependents); | |
6472 | pragma Inline (Set_Private_View); | |
6473 | pragma Inline (Set_Protected_Body_Subprogram); | |
6474 | pragma Inline (Set_Protected_Formal); | |
6475 | pragma Inline (Set_Protected_Operation); | |
6476 | pragma Inline (Set_RM_Size); | |
6477 | pragma Inline (Set_Reachable); | |
6478 | pragma Inline (Set_Referenced); | |
fbf5a39b | 6479 | pragma Inline (Set_Referenced_As_LHS); |
70482933 RK |
6480 | pragma Inline (Set_Referenced_Object); |
6481 | pragma Inline (Set_Register_Exception_Call); | |
6482 | pragma Inline (Set_Related_Array_Object); | |
6483 | pragma Inline (Set_Related_Instance); | |
6484 | pragma Inline (Set_Renamed_Entity); | |
6485 | pragma Inline (Set_Renamed_Object); | |
6486 | pragma Inline (Set_Renaming_Map); | |
6487 | pragma Inline (Set_Return_Present); | |
6488 | pragma Inline (Set_Returns_By_Ref); | |
6489 | pragma Inline (Set_Reverse_Bit_Order); | |
6490 | pragma Inline (Set_Scalar_Range); | |
6491 | pragma Inline (Set_Scale_Value); | |
6492 | pragma Inline (Set_Scope_Depth_Value); | |
6493 | pragma Inline (Set_Sec_Stack_Needed_For_Return); | |
6494 | pragma Inline (Set_Shadow_Entities); | |
6495 | pragma Inline (Set_Shared_Var_Assign_Proc); | |
6496 | pragma Inline (Set_Shared_Var_Read_Proc); | |
6497 | pragma Inline (Set_Size_Check_Code); | |
6498 | pragma Inline (Set_Size_Depends_On_Discriminant); | |
6499 | pragma Inline (Set_Size_Known_At_Compile_Time); | |
6500 | pragma Inline (Set_Small_Value); | |
6501 | pragma Inline (Set_Spec_Entity); | |
6502 | pragma Inline (Set_Storage_Size_Variable); | |
fbf5a39b | 6503 | pragma Inline (Set_Stored_Constraint); |
70482933 RK |
6504 | pragma Inline (Set_Strict_Alignment); |
6505 | pragma Inline (Set_String_Literal_Length); | |
6506 | pragma Inline (Set_String_Literal_Low_Bound); | |
70482933 | 6507 | pragma Inline (Set_Suppress_Elaboration_Warnings); |
70482933 | 6508 | pragma Inline (Set_Suppress_Init_Proc); |
70482933 | 6509 | pragma Inline (Set_Suppress_Style_Checks); |
fbf5a39b | 6510 | pragma Inline (Set_Treat_As_Volatile); |
70482933 RK |
6511 | pragma Inline (Set_Underlying_Full_View); |
6512 | pragma Inline (Set_Unset_Reference); | |
6513 | pragma Inline (Set_Uses_Sec_Stack); | |
6514 | pragma Inline (Set_Vax_Float); | |
6515 | pragma Inline (Set_Warnings_Off); | |
6516 | ||
6517 | -- END XEINFO INLINES | |
6518 | ||
6519 | -- The following Inline pragmas are *not* read by xeinfo when building | |
6520 | -- the C version of this interface automatically (so the C version will | |
6521 | -- end up making out of line calls). The pragma scan in xeinfo will be | |
6522 | -- terminated on encountering the END XEINFO INLINES line. We inline | |
6523 | -- things here which are small, but not of the canonical attribute | |
6524 | -- access/set format that can be handled by xeinfo. | |
6525 | ||
6526 | pragma Inline (Is_Package); | |
6527 | pragma Inline (Is_Wrapper_Package); | |
6528 | pragma Inline (Known_RM_Size); | |
6529 | pragma Inline (Known_Static_Component_Bit_Offset); | |
6530 | pragma Inline (Known_Static_RM_Size); | |
6531 | pragma Inline (Scope_Depth); | |
6532 | pragma Inline (Scope_Depth_Set); | |
6533 | pragma Inline (Unknown_RM_Size); | |
6534 | ||
6535 | end Einfo; |