]>
Commit | Line | Data |
---|---|---|
cb2d884d AC |
1 | .. _Implementation_Defined_Aspects: |
2 | ||
3 | ****************************** | |
4 | Implementation Defined Aspects | |
5 | ****************************** | |
6 | ||
7 | Ada defines (throughout the Ada 2012 reference manual, summarized | |
8 | in Annex K) a set of aspects that can be specified for certain entities. | |
9 | These language defined aspects are implemented in GNAT in Ada 2012 mode | |
10 | and work as described in the Ada 2012 Reference Manual. | |
11 | ||
12 | In addition, Ada 2012 allows implementations to define additional aspects | |
13 | whose meaning is defined by the implementation. GNAT provides | |
14 | a number of these implementation-defined aspects which can be used | |
15 | to extend and enhance the functionality of the compiler. This section of | |
16 | the GNAT reference manual describes these additional aspects. | |
17 | ||
18 | Note that any program using these aspects may not be portable to | |
19 | other compilers (although GNAT implements this set of aspects on all | |
20 | platforms). Therefore if portability to other compilers is an important | |
21 | consideration, you should minimize the use of these aspects. | |
22 | ||
23 | Note that for many of these aspects, the effect is essentially similar | |
24 | to the use of a pragma or attribute specification with the same name | |
25 | applied to the entity. For example, if we write: | |
26 | ||
27 | ||
28 | .. code-block:: ada | |
29 | ||
30 | type R is range 1 .. 100 | |
31 | with Value_Size => 10; | |
32 | ||
33 | ||
34 | then the effect is the same as: | |
35 | ||
36 | .. code-block:: ada | |
37 | ||
38 | type R is range 1 .. 100; | |
39 | for R'Value_Size use 10; | |
40 | ||
41 | ||
42 | and if we write: | |
43 | ||
44 | .. code-block:: ada | |
45 | ||
46 | type R is new Integer | |
47 | with Shared => True; | |
48 | ||
49 | ||
50 | then the effect is the same as: | |
51 | ||
52 | .. code-block:: ada | |
53 | ||
54 | type R is new Integer; | |
55 | pragma Shared (R); | |
56 | ||
57 | ||
58 | In the documentation below, such cases are simply marked | |
59 | as being boolean aspects equivalent to the corresponding pragma | |
60 | or attribute definition clause. | |
61 | ||
62 | Aspect Abstract_State | |
63 | ===================== | |
64 | ||
65 | .. index:: Abstract_State | |
66 | ||
c25f170d | 67 | This aspect is equivalent to :ref:`pragma Abstract_State<Pragma-Abstract_State>`. |
cb2d884d | 68 | |
9c533e7d AC |
69 | Aspect Annotate |
70 | =============== | |
71 | ||
cb2d884d AC |
72 | .. index:: Annotate |
73 | ||
74 | There are three forms of this aspect (where ID is an identifier, | |
c25f170d AC |
75 | and ARG is a general expression), |
76 | corresponding to :ref:`pragma Annotate<Pragma-Annotate>`. | |
cb2d884d AC |
77 | |
78 | ||
79 | ||
80 | *Annotate => ID* | |
08705a15 | 81 | Equivalent to ``pragma Annotate (ID, Entity => Name);`` |
cb2d884d AC |
82 | |
83 | ||
84 | *Annotate => (ID)* | |
08705a15 | 85 | Equivalent to ``pragma Annotate (ID, Entity => Name);`` |
cb2d884d AC |
86 | |
87 | ||
88 | *Annotate => (ID ,ID {, ARG})* | |
08705a15 | 89 | Equivalent to ``pragma Annotate (ID, ID {, ARG}, Entity => Name);`` |
cb2d884d AC |
90 | |
91 | Aspect Async_Readers | |
92 | ==================== | |
93 | .. index:: Async_Readers | |
94 | ||
c25f170d | 95 | This boolean aspect is equivalent to :ref:`pragma Async_Readers<Pragma-Async_Readers>`. |
cb2d884d AC |
96 | |
97 | Aspect Async_Writers | |
98 | ==================== | |
99 | .. index:: Async_Writers | |
100 | ||
c25f170d | 101 | This boolean aspect is equivalent to :ref:`pragma Async_Writers<Pragma-Async_Writers>`. |
cb2d884d | 102 | |
abcb651b AC |
103 | Aspect Constant_After_Elaboration |
104 | ================================= | |
105 | .. index:: Constant_After_Elaboration | |
106 | ||
c25f170d | 107 | This aspect is equivalent to :ref:`pragma Constant_After_Elaboration<Pragma-Constant_After_Elaboration>`. |
abcb651b | 108 | |
cb2d884d AC |
109 | Aspect Contract_Cases |
110 | ===================== | |
111 | .. index:: Contract_Cases | |
112 | ||
c25f170d | 113 | This aspect is equivalent to :ref:`pragma Contract_Cases<Pragma-Contract_Cases>`, the sequence |
cb2d884d AC |
114 | of clauses being enclosed in parentheses so that syntactically it is an |
115 | aggregate. | |
116 | ||
117 | Aspect Depends | |
118 | ============== | |
119 | .. index:: Depends | |
120 | ||
c25f170d | 121 | This aspect is equivalent to :ref:`pragma Depends<Pragma-Depends>`. |
cb2d884d | 122 | |
abcb651b AC |
123 | Aspect Default_Initial_Condition |
124 | ================================ | |
125 | .. index:: Default_Initial_Condition | |
126 | ||
c25f170d | 127 | This aspect is equivalent to :ref:`pragma Default_Initial_Condition<Pragma-Default_Initial_Condition>`. |
abcb651b | 128 | |
cb2d884d AC |
129 | Aspect Dimension |
130 | ================ | |
131 | .. index:: Dimension | |
132 | ||
08705a15 | 133 | The ``Dimension`` aspect is used to specify the dimensions of a given |
cb2d884d AC |
134 | subtype of a dimensioned numeric type. The aspect also specifies a symbol |
135 | used when doing formatted output of dimensioned quantities. The syntax is:: | |
136 | ||
137 | with Dimension => | |
138 | ([Symbol =>] SYMBOL, DIMENSION_VALUE {, DIMENSION_Value}) | |
139 | ||
140 | SYMBOL ::= STRING_LITERAL | CHARACTER_LITERAL | |
141 | ||
142 | DIMENSION_VALUE ::= | |
143 | RATIONAL | |
144 | | others => RATIONAL | |
145 | | DISCRETE_CHOICE_LIST => RATIONAL | |
146 | ||
147 | RATIONAL ::= [-] NUMERIC_LITERAL [/ NUMERIC_LITERAL] | |
148 | ||
149 | ||
150 | This aspect can only be applied to a subtype whose parent type has | |
08705a15 | 151 | a ``Dimension_System`` aspect. The aspect must specify values for |
cb2d884d AC |
152 | all dimensions of the system. The rational values are the powers of the |
153 | corresponding dimensions that are used by the compiler to verify that | |
154 | physical (numeric) computations are dimensionally consistent. For example, | |
155 | the computation of a force must result in dimensions (L => 1, M => 1, T => -2). | |
156 | For further examples of the usage | |
08705a15 | 157 | of this aspect, see package ``System.Dim.Mks``. |
cb2d884d AC |
158 | Note that when the dimensioned type is an integer type, then any |
159 | dimension value must be an integer literal. | |
160 | ||
161 | Aspect Dimension_System | |
162 | ======================= | |
163 | .. index:: Dimension_System | |
164 | ||
08705a15 | 165 | The ``Dimension_System`` aspect is used to define a system of |
cb2d884d | 166 | dimensions that will be used in subsequent subtype declarations with |
08705a15 | 167 | ``Dimension`` aspects that reference this system. The syntax is:: |
cb2d884d AC |
168 | |
169 | with Dimension_System => (DIMENSION {, DIMENSION}); | |
170 | ||
171 | DIMENSION ::= ([Unit_Name =>] IDENTIFIER, | |
172 | [Unit_Symbol =>] SYMBOL, | |
173 | [Dim_Symbol =>] SYMBOL) | |
174 | ||
175 | SYMBOL ::= CHARACTER_LITERAL | STRING_LITERAL | |
176 | ||
177 | ||
178 | This aspect is applied to a type, which must be a numeric derived type | |
179 | (typically a floating-point type), that | |
08705a15 | 180 | will represent values within the dimension system. Each ``DIMENSION`` |
cb2d884d | 181 | corresponds to one particular dimension. A maximum of 7 dimensions may |
08705a15 AC |
182 | be specified. ``Unit_Name`` is the name of the dimension (for example |
183 | ``Meter``). ``Unit_Symbol`` is the shorthand used for quantities | |
184 | of this dimension (for example ``m`` for ``Meter``). | |
185 | ``Dim_Symbol`` gives | |
cb2d884d | 186 | the identification within the dimension system (typically this is a |
08705a15 AC |
187 | single letter, e.g. ``L`` standing for length for unit name ``Meter``). |
188 | The ``Unit_Symbol`` is used in formatted output of dimensioned quantities. | |
189 | The ``Dim_Symbol`` is used in error messages when numeric operations have | |
cb2d884d AC |
190 | inconsistent dimensions. |
191 | ||
192 | GNAT provides the standard definition of the International MKS system in | |
08705a15 | 193 | the run-time package ``System.Dim.Mks``. You can easily define |
cb2d884d AC |
194 | similar packages for cgs units or British units, and define conversion factors |
195 | between values in different systems. The MKS system is characterized by the | |
196 | following aspect: | |
197 | ||
198 | .. code-block:: ada | |
199 | ||
200 | type Mks_Type is new Long_Long_Float with | |
201 | Dimension_System => ( | |
202 | (Unit_Name => Meter, Unit_Symbol => 'm', Dim_Symbol => 'L'), | |
203 | (Unit_Name => Kilogram, Unit_Symbol => "kg", Dim_Symbol => 'M'), | |
204 | (Unit_Name => Second, Unit_Symbol => 's', Dim_Symbol => 'T'), | |
205 | (Unit_Name => Ampere, Unit_Symbol => 'A', Dim_Symbol => 'I'), | |
206 | (Unit_Name => Kelvin, Unit_Symbol => 'K', Dim_Symbol => '@'), | |
207 | (Unit_Name => Mole, Unit_Symbol => "mol", Dim_Symbol => 'N'), | |
208 | (Unit_Name => Candela, Unit_Symbol => "cd", Dim_Symbol => 'J')); | |
209 | ||
210 | ||
08705a15 | 211 | Note that in the above type definition, we use the ``at`` symbol (``@``) to |
cb2d884d AC |
212 | represent a theta character (avoiding the use of extended Latin-1 |
213 | characters in this context). | |
214 | ||
215 | See section 'Performing Dimensionality Analysis in GNAT' in the GNAT Users | |
216 | Guide for detailed examples of use of the dimension system. | |
217 | ||
74e9ae98 AC |
218 | Aspect Disable_Controlled |
219 | ========================= | |
220 | .. index:: Disable_Controlled | |
221 | ||
08705a15 AC |
222 | The aspect ``Disable_Controlled`` is defined for controlled record types. If |
223 | active, this aspect causes suppression of all related calls to ``Initialize``, | |
224 | ``Adjust``, and ``Finalize``. The intended use is for conditional compilation, | |
74e9ae98 AC |
225 | where for example you might want a record to be controlled or not depending on |
226 | whether some run-time check is enabled or suppressed. | |
227 | ||
cb2d884d AC |
228 | Aspect Effective_Reads |
229 | ====================== | |
230 | .. index:: Effective_Reads | |
231 | ||
c25f170d | 232 | This aspect is equivalent to :ref:`pragma Effective_Reads<Pragma-Effective_Reads>`. |
cb2d884d AC |
233 | |
234 | Aspect Effective_Writes | |
235 | ======================= | |
236 | .. index:: Effective_Writes | |
237 | ||
c25f170d | 238 | This aspect is equivalent to :ref:`pragma Effective_Writes<Pragma-Effective_Writes>`. |
cb2d884d | 239 | |
abcb651b AC |
240 | Aspect Extensions_Visible |
241 | ========================= | |
242 | .. index:: Extensions_Visible | |
243 | ||
c25f170d | 244 | This aspect is equivalent to :ref:`pragma Extensions_Visible<Pragma-Extensions_Visible>`. |
abcb651b | 245 | |
cb2d884d AC |
246 | Aspect Favor_Top_Level |
247 | ====================== | |
248 | .. index:: Favor_Top_Level | |
249 | ||
c25f170d | 250 | This boolean aspect is equivalent to :ref:`pragma Favor_Top_Level<Pragma-Favor_Top_Level>`. |
cb2d884d | 251 | |
abcb651b AC |
252 | Aspect Ghost |
253 | ============= | |
254 | .. index:: Ghost | |
255 | ||
c25f170d | 256 | This aspect is equivalent to :ref:`pragma Ghost<Pragma-Ghost>`. |
abcb651b | 257 | |
cb2d884d AC |
258 | Aspect Global |
259 | ============= | |
260 | .. index:: Global | |
261 | ||
c25f170d | 262 | This aspect is equivalent to :ref:`pragma Global<Pragma-Global>`. |
cb2d884d AC |
263 | |
264 | Aspect Initial_Condition | |
265 | ======================== | |
266 | .. index:: Initial_Condition | |
267 | ||
c25f170d | 268 | This aspect is equivalent to :ref:`pragma Initial_Condition<Pragma-Initial_Condition>`. |
cb2d884d AC |
269 | |
270 | Aspect Initializes | |
271 | ================== | |
272 | .. index:: Initializes | |
273 | ||
c25f170d | 274 | This aspect is equivalent to :ref:`pragma Initializes<Pragma-Initializes>`. |
cb2d884d AC |
275 | |
276 | Aspect Inline_Always | |
277 | ==================== | |
278 | .. index:: Inline_Always | |
279 | ||
c25f170d | 280 | This boolean aspect is equivalent to :ref:`pragma Inline_Always<Pragma-Inline_Always>`. |
cb2d884d AC |
281 | |
282 | Aspect Invariant | |
283 | ================ | |
284 | .. index:: Invariant | |
285 | ||
c25f170d | 286 | This aspect is equivalent to :ref:`pragma Invariant<Pragma-Invariant>`. It is a |
08705a15 AC |
287 | synonym for the language defined aspect ``Type_Invariant`` except |
288 | that it is separately controllable using pragma ``Assertion_Policy``. | |
cb2d884d AC |
289 | |
290 | Aspect Invariant'Class | |
291 | ====================== | |
292 | .. index:: Invariant'Class | |
293 | ||
c25f170d | 294 | This aspect is equivalent to :ref:`pragma Type_Invariant_Class<Pragma-Type_Invariant_Class>`. It is a |
08705a15 AC |
295 | synonym for the language defined aspect ``Type_Invariant'Class`` except |
296 | that it is separately controllable using pragma ``Assertion_Policy``. | |
cb2d884d AC |
297 | |
298 | Aspect Iterable | |
299 | =============== | |
300 | .. index:: Iterable | |
301 | ||
302 | This aspect provides a light-weight mechanism for loops and quantified | |
303 | expressions over container types, without the overhead imposed by the tampering | |
304 | checks of standard Ada 2012 iterators. The value of the aspect is an aggregate | |
f5c31a46 BB |
305 | with six named components, of which the last three are optional: ``First``, |
306 | ``Next``, ``Has_Element``, ``Element``, ``Last``, and ``Previous``. | |
2e60feb5 PMR |
307 | When only the first three components are specified, only the |
308 | ``for .. in`` form of iteration over cursors is available. When ``Element`` | |
309 | is specified, both this form and the ``for .. of`` form of iteration over | |
310 | elements are available. If the last two components are specified, reverse | |
311 | iterations over the container can be specified (analogous to what can be done | |
f5c31a46 | 312 | over predefined containers that support the ``Reverse_Iterator`` interface). |
2e60feb5 | 313 | The following is a typical example of use: |
cb2d884d AC |
314 | |
315 | .. code-block:: ada | |
316 | ||
317 | type List is private with | |
318 | Iterable => (First => First_Cursor, | |
319 | Next => Advance, | |
320 | Has_Element => Cursor_Has_Element, | |
321 | [Element => Get_Element]); | |
322 | ||
08705a15 AC |
323 | * The value denoted by ``First`` must denote a primitive operation of the |
324 | container type that returns a ``Cursor``, which must a be a type declared in | |
cb2d884d AC |
325 | the container package or visible from it. For example: |
326 | ||
327 | .. code-block:: ada | |
328 | ||
329 | function First_Cursor (Cont : Container) return Cursor; | |
330 | ||
08705a15 | 331 | * The value of ``Next`` is a primitive operation of the container type that takes |
cb2d884d AC |
332 | both a container and a cursor and yields a cursor. For example: |
333 | ||
334 | .. code-block:: ada | |
335 | ||
336 | function Advance (Cont : Container; Position : Cursor) return Cursor; | |
337 | ||
08705a15 | 338 | * The value of ``Has_Element`` is a primitive operation of the container type |
cb2d884d AC |
339 | that takes both a container and a cursor and yields a boolean. For example: |
340 | ||
341 | .. code-block:: ada | |
342 | ||
343 | function Cursor_Has_Element (Cont : Container; Position : Cursor) return Boolean; | |
344 | ||
08705a15 AC |
345 | * The value of ``Element`` is a primitive operation of the container type that |
346 | takes both a container and a cursor and yields an ``Element_Type``, which must | |
cb2d884d AC |
347 | be a type declared in the container package or visible from it. For example: |
348 | ||
349 | .. code-block:: ada | |
350 | ||
351 | function Get_Element (Cont : Container; Position : Cursor) return Element_Type; | |
352 | ||
353 | This aspect is used in the GNAT-defined formal container packages. | |
354 | ||
355 | Aspect Linker_Section | |
356 | ===================== | |
357 | .. index:: Linker_Section | |
358 | ||
c25f170d | 359 | This aspect is equivalent to :ref:`pragma Linker_Section<Pragma-Linker_Section>`. |
cb2d884d AC |
360 | |
361 | Aspect Lock_Free | |
362 | ================ | |
363 | .. index:: Lock_Free | |
364 | ||
c25f170d | 365 | This boolean aspect is equivalent to :ref:`pragma Lock_Free<Pragma-Lock_Free>`. |
cb2d884d | 366 | |
33c51287 AC |
367 | Aspect Max_Queue_Length |
368 | ======================= | |
33c51287 AC |
369 | .. index:: Max_Queue_Length |
370 | ||
371 | This aspect is equivalent to :ref:`pragma Max_Queue_Length<Pragma-Max_Queue_Length>`. | |
372 | ||
9dfc6c55 YM |
373 | Aspect No_Caching |
374 | ================= | |
375 | .. index:: No_Caching | |
376 | ||
377 | This boolean aspect is equivalent to :ref:`pragma No_Caching<Pragma-No_Caching>`. | |
378 | ||
cb2d884d AC |
379 | Aspect No_Elaboration_Code_All |
380 | ============================== | |
381 | .. index:: No_Elaboration_Code_All | |
382 | ||
c25f170d AC |
383 | This aspect is equivalent to :ref:`pragma No_Elaboration_Code_All<Pragma-No_Elaboration_Code_All>` |
384 | for a program unit. | |
cb2d884d | 385 | |
08705a15 AC |
386 | Aspect No_Inline |
387 | ================ | |
388 | .. index:: No_Inline | |
389 | ||
390 | This boolean aspect is equivalent to :ref:`pragma No_Inline<Pragma-No_Inline>`. | |
391 | ||
cb2d884d AC |
392 | Aspect No_Tagged_Streams |
393 | ======================== | |
394 | .. index:: No_Tagged_Streams | |
395 | ||
c25f170d | 396 | This aspect is equivalent to :ref:`pragma No_Tagged_Streams<Pragma-No_Tagged_Streams>` with an |
cb2d884d AC |
397 | argument specifying a root tagged type (thus this aspect can only be |
398 | applied to such a type). | |
399 | ||
400 | Aspect Object_Size | |
401 | ================== | |
402 | .. index:: Object_Size | |
403 | ||
c25f170d | 404 | This aspect is equivalent to :ref:`attribute Object_Size<Attribute-Object_Size>`. |
cb2d884d AC |
405 | |
406 | Aspect Obsolescent | |
407 | ================== | |
408 | .. index:: Obsolsecent | |
409 | ||
c25f170d | 410 | This aspect is equivalent to :ref:`pragma Obsolescent<Pragma_Obsolescent>`. Note that the |
cb2d884d AC |
411 | evaluation of this aspect happens at the point of occurrence, it is not |
412 | delayed until the freeze point. | |
413 | ||
414 | Aspect Part_Of | |
415 | ============== | |
416 | .. index:: Part_Of | |
417 | ||
c25f170d | 418 | This aspect is equivalent to :ref:`pragma Part_Of<Pragma-Part_Of>`. |
cb2d884d AC |
419 | |
420 | Aspect Persistent_BSS | |
421 | ===================== | |
422 | .. index:: Persistent_BSS | |
423 | ||
c25f170d | 424 | This boolean aspect is equivalent to :ref:`pragma Persistent_BSS<Pragma-Persistent_BSS>`. |
cb2d884d AC |
425 | |
426 | Aspect Predicate | |
427 | ================ | |
428 | .. index:: Predicate | |
429 | ||
c25f170d | 430 | This aspect is equivalent to :ref:`pragma Predicate<Pragma-Predicate>`. It is thus |
08705a15 AC |
431 | similar to the language defined aspects ``Dynamic_Predicate`` |
432 | and ``Static_Predicate`` except that whether the resulting | |
cb2d884d AC |
433 | predicate is static or dynamic is controlled by the form of the |
434 | expression. It is also separately controllable using pragma | |
08705a15 | 435 | ``Assertion_Policy``. |
cb2d884d AC |
436 | |
437 | Aspect Pure_Function | |
438 | ==================== | |
439 | .. index:: Pure_Function | |
440 | ||
c25f170d | 441 | This boolean aspect is equivalent to :ref:`pragma Pure_Function<Pragma-Pure_Function>`. |
cb2d884d AC |
442 | |
443 | Aspect Refined_Depends | |
444 | ====================== | |
445 | .. index:: Refined_Depends | |
446 | ||
c25f170d | 447 | This aspect is equivalent to :ref:`pragma Refined_Depends<Pragma-Refined_Depends>`. |
cb2d884d AC |
448 | |
449 | Aspect Refined_Global | |
450 | ===================== | |
451 | .. index:: Refined_Global | |
452 | ||
c25f170d | 453 | This aspect is equivalent to :ref:`pragma Refined_Global<Pragma-Refined_Global>`. |
cb2d884d AC |
454 | |
455 | Aspect Refined_Post | |
456 | =================== | |
457 | .. index:: Refined_Post | |
458 | ||
c25f170d | 459 | This aspect is equivalent to :ref:`pragma Refined_Post<Pragma-Refined_Post>`. |
cb2d884d AC |
460 | |
461 | Aspect Refined_State | |
462 | ==================== | |
463 | .. index:: Refined_State | |
464 | ||
c25f170d | 465 | This aspect is equivalent to :ref:`pragma Refined_State<Pragma-Refined_State>`. |
cb2d884d | 466 | |
6ba3247d PT |
467 | Aspect Relaxed_Initialization |
468 | ============================= | |
469 | .. index:: Refined_Initialization | |
470 | ||
471 | For the syntax and semantics of this aspect, see the SPARK 2014 Reference | |
472 | Manual, section 6.10. | |
473 | ||
cb2d884d AC |
474 | Aspect Remote_Access_Type |
475 | ========================= | |
476 | .. index:: Remote_Access_Type | |
477 | ||
c25f170d | 478 | This aspect is equivalent to :ref:`pragma Remote_Access_Type<Pragma-Remote_Access_Type>`. |
cb2d884d | 479 | |
33c51287 AC |
480 | Aspect Secondary_Stack_Size |
481 | =========================== | |
482 | ||
483 | .. index:: Secondary_Stack_Size | |
484 | ||
485 | This aspect is equivalent to :ref:`pragma Secondary_Stack_Size<Pragma-Secondary_Stack_Size>`. | |
486 | ||
487 | ||
cb2d884d AC |
488 | Aspect Scalar_Storage_Order |
489 | =========================== | |
490 | .. index:: Scalar_Storage_Order | |
491 | ||
c25f170d | 492 | This aspect is equivalent to a :ref:`attribute Scalar_Storage_Order<Attribute-Scalar_Storage_Order>`. |
cb2d884d AC |
493 | |
494 | Aspect Shared | |
495 | ============= | |
496 | .. index:: Shared | |
497 | ||
c25f170d | 498 | This boolean aspect is equivalent to :ref:`pragma Shared<Pragma-Shared>` |
08705a15 | 499 | and is thus a synonym for aspect ``Atomic``. |
cb2d884d AC |
500 | |
501 | Aspect Simple_Storage_Pool | |
502 | ========================== | |
503 | .. index:: Simple_Storage_Pool | |
504 | ||
c25f170d | 505 | This aspect is equivalent to :ref:`attribute Simple_Storage_Pool<Attribute_Simple_Storage_Pool>`. |
cb2d884d AC |
506 | |
507 | Aspect Simple_Storage_Pool_Type | |
508 | =============================== | |
509 | .. index:: Simple_Storage_Pool_Type | |
510 | ||
c25f170d | 511 | This boolean aspect is equivalent to :ref:`pragma Simple_Storage_Pool_Type<Pragma-Simple_Storage_Pool_Type>`. |
cb2d884d AC |
512 | |
513 | Aspect SPARK_Mode | |
514 | ================= | |
515 | .. index:: SPARK_Mode | |
516 | ||
c25f170d | 517 | This aspect is equivalent to :ref:`pragma SPARK_Mode<Pragma-SPARK_Mode>` and |
cb2d884d AC |
518 | may be specified for either or both of the specification and body |
519 | of a subprogram or package. | |
520 | ||
521 | Aspect Suppress_Debug_Info | |
522 | ========================== | |
523 | .. index:: Suppress_Debug_Info | |
524 | ||
c25f170d | 525 | This boolean aspect is equivalent to :ref:`pragma Suppress_Debug_Info<Pragma-Suppress_Debug_Info>`. |
cb2d884d AC |
526 | |
527 | Aspect Suppress_Initialization | |
528 | ============================== | |
529 | .. index:: Suppress_Initialization | |
530 | ||
c25f170d | 531 | This boolean aspect is equivalent to :ref:`pragma Suppress_Initialization<Pragma-Suppress_Initialization>`. |
cb2d884d AC |
532 | |
533 | Aspect Test_Case | |
534 | ================ | |
535 | .. index:: Test_Case | |
536 | ||
c25f170d | 537 | This aspect is equivalent to :ref:`pragma Test_Case<Pragma-Test_Case>`. |
cb2d884d AC |
538 | |
539 | Aspect Thread_Local_Storage | |
540 | =========================== | |
541 | .. index:: Thread_Local_Storage | |
542 | ||
c25f170d | 543 | This boolean aspect is equivalent to :ref:`pragma Thread_Local_Storage<Pragma-Thread_Local_Storage>`. |
cb2d884d AC |
544 | |
545 | Aspect Universal_Aliasing | |
546 | ========================= | |
547 | .. index:: Universal_Aliasing | |
548 | ||
c25f170d | 549 | This boolean aspect is equivalent to :ref:`pragma Universal_Aliasing<Pragma-Universal_Aliasing>`. |
cb2d884d AC |
550 | |
551 | Aspect Universal_Data | |
552 | ===================== | |
553 | .. index:: Universal_Data | |
554 | ||
c25f170d | 555 | This aspect is equivalent to :ref:`pragma Universal_Data<Pragma-Universal_Data>`. |
cb2d884d AC |
556 | |
557 | Aspect Unmodified | |
558 | ================= | |
559 | .. index:: Unmodified | |
560 | ||
c25f170d | 561 | This boolean aspect is equivalent to :ref:`pragma Unmodified<Pragma-Unmodified>`. |
cb2d884d AC |
562 | |
563 | Aspect Unreferenced | |
564 | =================== | |
565 | .. index:: Unreferenced | |
566 | ||
71400efc AC |
567 | This boolean aspect is equivalent to :ref:`pragma Unreferenced<Pragma-Unreferenced>`. |
568 | ||
81e68a19 | 569 | When using the ``-gnat2022`` switch, this aspect is also supported on formal |
71400efc AC |
570 | parameters, which is in particular the only form possible for expression |
571 | functions. | |
cb2d884d AC |
572 | |
573 | Aspect Unreferenced_Objects | |
574 | =========================== | |
575 | .. index:: Unreferenced_Objects | |
576 | ||
c25f170d | 577 | This boolean aspect is equivalent to :ref:`pragma Unreferenced_Objects<Pragma-Unreferenced_Objects>`. |
cb2d884d AC |
578 | |
579 | Aspect Value_Size | |
580 | ================= | |
581 | .. index:: Value_Size | |
582 | ||
c25f170d | 583 | This aspect is equivalent to :ref:`attribute Value_Size<Attribute-Value_Size>`. |
cb2d884d | 584 | |
74e9ae98 AC |
585 | Aspect Volatile_Full_Access |
586 | =========================== | |
587 | .. index:: Volatile_Full_Access | |
588 | ||
c25f170d | 589 | This boolean aspect is equivalent to :ref:`pragma Volatile_Full_Access<Pragma-Volatile_Full_Access>`. |
74e9ae98 | 590 | |
abcb651b AC |
591 | Aspect Volatile_Function |
592 | =========================== | |
593 | .. index:: Volatile_Function | |
594 | ||
c25f170d | 595 | This boolean aspect is equivalent to :ref:`pragma Volatile_Function<Pragma-Volatile_Function>`. |
abcb651b | 596 | |
cb2d884d AC |
597 | Aspect Warnings |
598 | =============== | |
599 | .. index:: Warnings | |
600 | ||
c25f170d | 601 | This aspect is equivalent to the two argument form of :ref:`pragma Warnings<Pragma_Warnings>`, |
08705a15 | 602 | where the first argument is ``ON`` or ``OFF`` and the second argument |
cb2d884d | 603 | is the entity. |