annotate gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 .. _Implementation_Defined_Characteristics:
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 **************************************
kono
parents:
diff changeset
4 Implementation Defined Characteristics
kono
parents:
diff changeset
5 **************************************
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 In addition to the implementation dependent pragmas and attributes, and the
kono
parents:
diff changeset
8 implementation advice, there are a number of other Ada features that are
kono
parents:
diff changeset
9 potentially implementation dependent and are designated as
kono
parents:
diff changeset
10 implementation-defined. These are mentioned throughout the Ada Reference
kono
parents:
diff changeset
11 Manual, and are summarized in Annex M.
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 A requirement for conforming Ada compilers is that they provide
kono
parents:
diff changeset
14 documentation describing how the implementation deals with each of these
kono
parents:
diff changeset
15 issues. In this chapter you will find each point in Annex M listed,
kono
parents:
diff changeset
16 followed by a description of how GNAT
kono
parents:
diff changeset
17 handles the implementation dependence.
kono
parents:
diff changeset
18
kono
parents:
diff changeset
19 You can use this chapter as a guide to minimizing implementation
kono
parents:
diff changeset
20 dependent features in your programs if portability to other compilers
kono
parents:
diff changeset
21 and other operating systems is an important consideration. The numbers
kono
parents:
diff changeset
22 in each entry below correspond to the paragraph numbers in the Ada
kono
parents:
diff changeset
23 Reference Manual.
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 *
kono
parents:
diff changeset
26 "Whether or not each recommendation given in Implementation
kono
parents:
diff changeset
27 Advice is followed. See 1.1.2(37)."
kono
parents:
diff changeset
28
kono
parents:
diff changeset
29 See :ref:`Implementation_Advice`.
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 *
kono
parents:
diff changeset
32 "Capacity limitations of the implementation. See 1.1.3(3)."
kono
parents:
diff changeset
33
kono
parents:
diff changeset
34 The complexity of programs that can be processed is limited only by the
kono
parents:
diff changeset
35 total amount of available virtual memory, and disk space for the
kono
parents:
diff changeset
36 generated object files.
kono
parents:
diff changeset
37
kono
parents:
diff changeset
38 *
kono
parents:
diff changeset
39 "Variations from the standard that are impractical to avoid
kono
parents:
diff changeset
40 given the implementation's execution environment. See 1.1.3(6)."
kono
parents:
diff changeset
41
kono
parents:
diff changeset
42 There are no variations from the standard.
kono
parents:
diff changeset
43
kono
parents:
diff changeset
44 *
kono
parents:
diff changeset
45 "Which code_statements cause external
kono
parents:
diff changeset
46 interactions. See 1.1.3(10)."
kono
parents:
diff changeset
47
kono
parents:
diff changeset
48 Any *code_statement* can potentially cause external interactions.
kono
parents:
diff changeset
49
kono
parents:
diff changeset
50 *
kono
parents:
diff changeset
51 "The coded representation for the text of an Ada
kono
parents:
diff changeset
52 program. See 2.1(4)."
kono
parents:
diff changeset
53
kono
parents:
diff changeset
54 See separate section on source representation.
kono
parents:
diff changeset
55
kono
parents:
diff changeset
56 *
kono
parents:
diff changeset
57 "The control functions allowed in comments. See 2.1(14)."
kono
parents:
diff changeset
58
kono
parents:
diff changeset
59 See separate section on source representation.
kono
parents:
diff changeset
60
kono
parents:
diff changeset
61 *
kono
parents:
diff changeset
62 "The representation for an end of line. See 2.2(2)."
kono
parents:
diff changeset
63
kono
parents:
diff changeset
64 See separate section on source representation.
kono
parents:
diff changeset
65
kono
parents:
diff changeset
66 *
kono
parents:
diff changeset
67 "Maximum supported line length and lexical element
kono
parents:
diff changeset
68 length. See 2.2(15)."
kono
parents:
diff changeset
69
kono
parents:
diff changeset
70 The maximum line length is 255 characters and the maximum length of
kono
parents:
diff changeset
71 a lexical element is also 255 characters. This is the default setting
kono
parents:
diff changeset
72 if not overridden by the use of compiler switch *-gnaty* (which
kono
parents:
diff changeset
73 sets the maximum to 79) or *-gnatyMnn* which allows the maximum
kono
parents:
diff changeset
74 line length to be specified to be any value up to 32767. The maximum
kono
parents:
diff changeset
75 length of a lexical element is the same as the maximum line length.
kono
parents:
diff changeset
76
kono
parents:
diff changeset
77 *
kono
parents:
diff changeset
78 "Implementation defined pragmas. See 2.8(14)."
kono
parents:
diff changeset
79
kono
parents:
diff changeset
80 See :ref:`Implementation_Defined_Pragmas`.
kono
parents:
diff changeset
81
kono
parents:
diff changeset
82 *
kono
parents:
diff changeset
83 "Effect of pragma ``Optimize``. See 2.8(27)."
kono
parents:
diff changeset
84
kono
parents:
diff changeset
85 Pragma ``Optimize``, if given with a ``Time`` or ``Space``
kono
parents:
diff changeset
86 parameter, checks that the optimization flag is set, and aborts if it is
kono
parents:
diff changeset
87 not.
kono
parents:
diff changeset
88
kono
parents:
diff changeset
89 *
kono
parents:
diff changeset
90 "The sequence of characters of the value returned by
kono
parents:
diff changeset
91 ``S'Image`` when some of the graphic characters of
kono
parents:
diff changeset
92 ``S'Wide_Image`` are not defined in ``Character``. See
kono
parents:
diff changeset
93 3.5(37)."
kono
parents:
diff changeset
94
kono
parents:
diff changeset
95 The sequence of characters is as defined by the wide character encoding
kono
parents:
diff changeset
96 method used for the source. See section on source representation for
kono
parents:
diff changeset
97 further details.
kono
parents:
diff changeset
98
kono
parents:
diff changeset
99 *
kono
parents:
diff changeset
100 "The predefined integer types declared in
kono
parents:
diff changeset
101 ``Standard``. See 3.5.4(25)."
kono
parents:
diff changeset
102
kono
parents:
diff changeset
103 ====================== =======================================
kono
parents:
diff changeset
104 Type Representation
kono
parents:
diff changeset
105 ====================== =======================================
kono
parents:
diff changeset
106 *Short_Short_Integer* 8 bit signed
kono
parents:
diff changeset
107 *Short_Integer* (Short) 16 bit signed
kono
parents:
diff changeset
108 *Integer* 32 bit signed
kono
parents:
diff changeset
109 *Long_Integer* 64 bit signed (on most 64 bit targets,
kono
parents:
diff changeset
110 depending on the C definition of long).
kono
parents:
diff changeset
111 32 bit signed (all other targets)
kono
parents:
diff changeset
112 *Long_Long_Integer* 64 bit signed
kono
parents:
diff changeset
113 ====================== =======================================
kono
parents:
diff changeset
114
kono
parents:
diff changeset
115 *
kono
parents:
diff changeset
116 "Any nonstandard integer types and the operators defined
kono
parents:
diff changeset
117 for them. See 3.5.4(26)."
kono
parents:
diff changeset
118
kono
parents:
diff changeset
119 There are no nonstandard integer types.
kono
parents:
diff changeset
120
kono
parents:
diff changeset
121 *
kono
parents:
diff changeset
122 "Any nonstandard real types and the operators defined for
kono
parents:
diff changeset
123 them. See 3.5.6(8)."
kono
parents:
diff changeset
124
kono
parents:
diff changeset
125 There are no nonstandard real types.
kono
parents:
diff changeset
126
kono
parents:
diff changeset
127 *
kono
parents:
diff changeset
128 "What combinations of requested decimal precision and range
kono
parents:
diff changeset
129 are supported for floating point types. See 3.5.7(7)."
kono
parents:
diff changeset
130
kono
parents:
diff changeset
131 The precision and range is as defined by the IEEE standard.
kono
parents:
diff changeset
132
kono
parents:
diff changeset
133 *
kono
parents:
diff changeset
134 "The predefined floating point types declared in
kono
parents:
diff changeset
135 ``Standard``. See 3.5.7(16)."
kono
parents:
diff changeset
136
kono
parents:
diff changeset
137 ====================== ====================================================
kono
parents:
diff changeset
138 Type Representation
kono
parents:
diff changeset
139 ====================== ====================================================
kono
parents:
diff changeset
140 *Short_Float* 32 bit IEEE short
kono
parents:
diff changeset
141 *Float* (Short) 32 bit IEEE short
kono
parents:
diff changeset
142 *Long_Float* 64 bit IEEE long
kono
parents:
diff changeset
143 *Long_Long_Float* 64 bit IEEE long (80 bit IEEE long on x86 processors)
kono
parents:
diff changeset
144 ====================== ====================================================
kono
parents:
diff changeset
145
kono
parents:
diff changeset
146 *
kono
parents:
diff changeset
147 "The small of an ordinary fixed point type. See 3.5.9(8)."
kono
parents:
diff changeset
148
kono
parents:
diff changeset
149 ``Fine_Delta`` is 2**(-63)
kono
parents:
diff changeset
150
kono
parents:
diff changeset
151 *
kono
parents:
diff changeset
152 "What combinations of small, range, and digits are
kono
parents:
diff changeset
153 supported for fixed point types. See 3.5.9(10)."
kono
parents:
diff changeset
154
kono
parents:
diff changeset
155 Any combinations are permitted that do not result in a small less than
kono
parents:
diff changeset
156 ``Fine_Delta`` and do not result in a mantissa larger than 63 bits.
kono
parents:
diff changeset
157 If the mantissa is larger than 53 bits on machines where Long_Long_Float
kono
parents:
diff changeset
158 is 64 bits (true of all architectures except ia32), then the output from
kono
parents:
diff changeset
159 Text_IO is accurate to only 53 bits, rather than the full mantissa. This
kono
parents:
diff changeset
160 is because floating-point conversions are used to convert fixed point.
kono
parents:
diff changeset
161
kono
parents:
diff changeset
162
kono
parents:
diff changeset
163 *
kono
parents:
diff changeset
164 "The result of ``Tags.Expanded_Name`` for types declared
kono
parents:
diff changeset
165 within an unnamed *block_statement*. See 3.9(10)."
kono
parents:
diff changeset
166
kono
parents:
diff changeset
167 Block numbers of the form :samp:`B{nnn}`, where *nnn* is a
kono
parents:
diff changeset
168 decimal integer are allocated.
kono
parents:
diff changeset
169
kono
parents:
diff changeset
170 *
kono
parents:
diff changeset
171 "Implementation-defined attributes. See 4.1.4(12)."
kono
parents:
diff changeset
172
kono
parents:
diff changeset
173 See :ref:`Implementation_Defined_Attributes`.
kono
parents:
diff changeset
174
kono
parents:
diff changeset
175 *
kono
parents:
diff changeset
176 "Any implementation-defined time types. See 9.6(6)."
kono
parents:
diff changeset
177
kono
parents:
diff changeset
178 There are no implementation-defined time types.
kono
parents:
diff changeset
179
kono
parents:
diff changeset
180 *
kono
parents:
diff changeset
181 "The time base associated with relative delays."
kono
parents:
diff changeset
182
kono
parents:
diff changeset
183 See 9.6(20). The time base used is that provided by the C library
kono
parents:
diff changeset
184 function ``gettimeofday``.
kono
parents:
diff changeset
185
kono
parents:
diff changeset
186 *
kono
parents:
diff changeset
187 "The time base of the type ``Calendar.Time``. See
kono
parents:
diff changeset
188 9.6(23)."
kono
parents:
diff changeset
189
kono
parents:
diff changeset
190 The time base used is that provided by the C library function
kono
parents:
diff changeset
191 ``gettimeofday``.
kono
parents:
diff changeset
192
kono
parents:
diff changeset
193 *
kono
parents:
diff changeset
194 "The time zone used for package ``Calendar``
kono
parents:
diff changeset
195 operations. See 9.6(24)."
kono
parents:
diff changeset
196
kono
parents:
diff changeset
197 The time zone used by package ``Calendar`` is the current system time zone
kono
parents:
diff changeset
198 setting for local time, as accessed by the C library function
kono
parents:
diff changeset
199 ``localtime``.
kono
parents:
diff changeset
200
kono
parents:
diff changeset
201 *
kono
parents:
diff changeset
202 "Any limit on *delay_until_statements* of
kono
parents:
diff changeset
203 *select_statements*. See 9.6(29)."
kono
parents:
diff changeset
204
kono
parents:
diff changeset
205 There are no such limits.
kono
parents:
diff changeset
206
kono
parents:
diff changeset
207 *
kono
parents:
diff changeset
208 "Whether or not two non-overlapping parts of a composite
kono
parents:
diff changeset
209 object are independently addressable, in the case where packing, record
kono
parents:
diff changeset
210 layout, or ``Component_Size`` is specified for the object. See
kono
parents:
diff changeset
211 9.10(1)."
kono
parents:
diff changeset
212
kono
parents:
diff changeset
213 Separate components are independently addressable if they do not share
kono
parents:
diff changeset
214 overlapping storage units.
kono
parents:
diff changeset
215
kono
parents:
diff changeset
216 *
kono
parents:
diff changeset
217 "The representation for a compilation. See 10.1(2)."
kono
parents:
diff changeset
218
kono
parents:
diff changeset
219 A compilation is represented by a sequence of files presented to the
kono
parents:
diff changeset
220 compiler in a single invocation of the *gcc* command.
kono
parents:
diff changeset
221
kono
parents:
diff changeset
222 *
kono
parents:
diff changeset
223 "Any restrictions on compilations that contain multiple
kono
parents:
diff changeset
224 compilation_units. See 10.1(4)."
kono
parents:
diff changeset
225
kono
parents:
diff changeset
226 No single file can contain more than one compilation unit, but any
kono
parents:
diff changeset
227 sequence of files can be presented to the compiler as a single
kono
parents:
diff changeset
228 compilation.
kono
parents:
diff changeset
229
kono
parents:
diff changeset
230 *
kono
parents:
diff changeset
231 "The mechanisms for creating an environment and for adding
kono
parents:
diff changeset
232 and replacing compilation units. See 10.1.4(3)."
kono
parents:
diff changeset
233
kono
parents:
diff changeset
234 See separate section on compilation model.
kono
parents:
diff changeset
235
kono
parents:
diff changeset
236 *
kono
parents:
diff changeset
237 "The manner of explicitly assigning library units to a
kono
parents:
diff changeset
238 partition. See 10.2(2)."
kono
parents:
diff changeset
239
kono
parents:
diff changeset
240 If a unit contains an Ada main program, then the Ada units for the partition
kono
parents:
diff changeset
241 are determined by recursive application of the rules in the Ada Reference
kono
parents:
diff changeset
242 Manual section 10.2(2-6). In other words, the Ada units will be those that
kono
parents:
diff changeset
243 are needed by the main program, and then this definition of need is applied
kono
parents:
diff changeset
244 recursively to those units, and the partition contains the transitive
kono
parents:
diff changeset
245 closure determined by this relationship. In short, all the necessary units
kono
parents:
diff changeset
246 are included, with no need to explicitly specify the list. If additional
kono
parents:
diff changeset
247 units are required, e.g., by foreign language units, then all units must be
kono
parents:
diff changeset
248 mentioned in the context clause of one of the needed Ada units.
kono
parents:
diff changeset
249
kono
parents:
diff changeset
250 If the partition contains no main program, or if the main program is in
kono
parents:
diff changeset
251 a language other than Ada, then GNAT
kono
parents:
diff changeset
252 provides the binder options *-z* and *-n* respectively, and in
kono
parents:
diff changeset
253 this case a list of units can be explicitly supplied to the binder for
kono
parents:
diff changeset
254 inclusion in the partition (all units needed by these units will also
kono
parents:
diff changeset
255 be included automatically). For full details on the use of these
kono
parents:
diff changeset
256 options, refer to *GNAT Make Program gnatmake* in the
kono
parents:
diff changeset
257 :title:`GNAT User's Guide`.
kono
parents:
diff changeset
258
kono
parents:
diff changeset
259 *
kono
parents:
diff changeset
260 "The implementation-defined means, if any, of specifying
kono
parents:
diff changeset
261 which compilation units are needed by a given compilation unit. See
kono
parents:
diff changeset
262 10.2(2)."
kono
parents:
diff changeset
263
kono
parents:
diff changeset
264 The units needed by a given compilation unit are as defined in
kono
parents:
diff changeset
265 the Ada Reference Manual section 10.2(2-6). There are no
kono
parents:
diff changeset
266 implementation-defined pragmas or other implementation-defined
kono
parents:
diff changeset
267 means for specifying needed units.
kono
parents:
diff changeset
268
kono
parents:
diff changeset
269 *
kono
parents:
diff changeset
270 "The manner of designating the main subprogram of a
kono
parents:
diff changeset
271 partition. See 10.2(7)."
kono
parents:
diff changeset
272
kono
parents:
diff changeset
273 The main program is designated by providing the name of the
kono
parents:
diff changeset
274 corresponding :file:`ALI` file as the input parameter to the binder.
kono
parents:
diff changeset
275
kono
parents:
diff changeset
276 *
kono
parents:
diff changeset
277 "The order of elaboration of *library_items*. See
kono
parents:
diff changeset
278 10.2(18)."
kono
parents:
diff changeset
279
kono
parents:
diff changeset
280 The first constraint on ordering is that it meets the requirements of
kono
parents:
diff changeset
281 Chapter 10 of the Ada Reference Manual. This still leaves some
kono
parents:
diff changeset
282 implementation dependent choices, which are resolved by first
kono
parents:
diff changeset
283 elaborating bodies as early as possible (i.e., in preference to specs
kono
parents:
diff changeset
284 where there is a choice), and second by evaluating the immediate with
kono
parents:
diff changeset
285 clauses of a unit to determine the probably best choice, and
kono
parents:
diff changeset
286 third by elaborating in alphabetical order of unit names
kono
parents:
diff changeset
287 where a choice still remains.
kono
parents:
diff changeset
288
kono
parents:
diff changeset
289 *
kono
parents:
diff changeset
290 "Parameter passing and function return for the main
kono
parents:
diff changeset
291 subprogram. See 10.2(21)."
kono
parents:
diff changeset
292
kono
parents:
diff changeset
293 The main program has no parameters. It may be a procedure, or a function
kono
parents:
diff changeset
294 returning an integer type. In the latter case, the returned integer
kono
parents:
diff changeset
295 value is the return code of the program (overriding any value that
kono
parents:
diff changeset
296 may have been set by a call to ``Ada.Command_Line.Set_Exit_Status``).
kono
parents:
diff changeset
297
kono
parents:
diff changeset
298 *
kono
parents:
diff changeset
299 "The mechanisms for building and running partitions. See
kono
parents:
diff changeset
300 10.2(24)."
kono
parents:
diff changeset
301
kono
parents:
diff changeset
302 GNAT itself supports programs with only a single partition. The GNATDIST
kono
parents:
diff changeset
303 tool provided with the GLADE package (which also includes an implementation
kono
parents:
diff changeset
304 of the PCS) provides a completely flexible method for building and running
kono
parents:
diff changeset
305 programs consisting of multiple partitions. See the separate GLADE manual
kono
parents:
diff changeset
306 for details.
kono
parents:
diff changeset
307
kono
parents:
diff changeset
308 *
kono
parents:
diff changeset
309 "The details of program execution, including program
kono
parents:
diff changeset
310 termination. See 10.2(25)."
kono
parents:
diff changeset
311
kono
parents:
diff changeset
312 See separate section on compilation model.
kono
parents:
diff changeset
313
kono
parents:
diff changeset
314 *
kono
parents:
diff changeset
315 "The semantics of any non-active partitions supported by the
kono
parents:
diff changeset
316 implementation. See 10.2(28)."
kono
parents:
diff changeset
317
kono
parents:
diff changeset
318 Passive partitions are supported on targets where shared memory is
kono
parents:
diff changeset
319 provided by the operating system. See the GLADE reference manual for
kono
parents:
diff changeset
320 further details.
kono
parents:
diff changeset
321
kono
parents:
diff changeset
322 *
kono
parents:
diff changeset
323 "The information returned by ``Exception_Message``. See
kono
parents:
diff changeset
324 11.4.1(10)."
kono
parents:
diff changeset
325
kono
parents:
diff changeset
326 Exception message returns the null string unless a specific message has
kono
parents:
diff changeset
327 been passed by the program.
kono
parents:
diff changeset
328
kono
parents:
diff changeset
329 *
kono
parents:
diff changeset
330 "The result of ``Exceptions.Exception_Name`` for types
kono
parents:
diff changeset
331 declared within an unnamed *block_statement*. See 11.4.1(12)."
kono
parents:
diff changeset
332
kono
parents:
diff changeset
333 Blocks have implementation defined names of the form :samp:`B{nnn}`
kono
parents:
diff changeset
334 where *nnn* is an integer.
kono
parents:
diff changeset
335
kono
parents:
diff changeset
336 *
kono
parents:
diff changeset
337 "The information returned by
kono
parents:
diff changeset
338 ``Exception_Information``. See 11.4.1(13)."
kono
parents:
diff changeset
339
kono
parents:
diff changeset
340 ``Exception_Information`` returns a string in the following format::
kono
parents:
diff changeset
341
kono
parents:
diff changeset
342 *Exception_Name:* nnnnn
kono
parents:
diff changeset
343 *Message:* mmmmm
kono
parents:
diff changeset
344 *PID:* ppp
kono
parents:
diff changeset
345 *Load address:* 0xhhhh
kono
parents:
diff changeset
346 *Call stack traceback locations:*
kono
parents:
diff changeset
347 0xhhhh 0xhhhh 0xhhhh ... 0xhhh
kono
parents:
diff changeset
348
kono
parents:
diff changeset
349 where
kono
parents:
diff changeset
350
kono
parents:
diff changeset
351 * ``nnnn`` is the fully qualified name of the exception in all upper
kono
parents:
diff changeset
352 case letters. This line is always present.
kono
parents:
diff changeset
353
kono
parents:
diff changeset
354 * ``mmmm`` is the message (this line present only if message is non-null)
kono
parents:
diff changeset
355
kono
parents:
diff changeset
356 * ``ppp`` is the Process Id value as a decimal integer (this line is
kono
parents:
diff changeset
357 present only if the Process Id is nonzero). Currently we are
kono
parents:
diff changeset
358 not making use of this field.
kono
parents:
diff changeset
359
kono
parents:
diff changeset
360 * The Load address line, the Call stack traceback locations line and the
kono
parents:
diff changeset
361 following values are present only if at least one traceback location was
kono
parents:
diff changeset
362 recorded. The Load address indicates the address at which the main executable
kono
parents:
diff changeset
363 was loaded; this line may not be present if operating system hasn't relocated
kono
parents:
diff changeset
364 the main executable. The values are given in C style format, with lower case
kono
parents:
diff changeset
365 letters for a-f, and only as many digits present as are necessary.
kono
parents:
diff changeset
366 The line terminator sequence at the end of each line, including
kono
parents:
diff changeset
367 the last line is a single ``LF`` character (``16#0A#``).
kono
parents:
diff changeset
368
kono
parents:
diff changeset
369 *
kono
parents:
diff changeset
370 "Implementation-defined check names. See 11.5(27)."
kono
parents:
diff changeset
371
kono
parents:
diff changeset
372 The implementation defined check names include Alignment_Check,
kono
parents:
diff changeset
373 Atomic_Synchronization, Duplicated_Tag_Check, Container_Checks,
kono
parents:
diff changeset
374 Tampering_Check, Predicate_Check, and Validity_Check. In addition, a user
kono
parents:
diff changeset
375 program can add implementation-defined check names by means of the pragma
kono
parents:
diff changeset
376 Check_Name. See the description of pragma ``Suppress`` for full details.
kono
parents:
diff changeset
377
kono
parents:
diff changeset
378 *
kono
parents:
diff changeset
379 "The interpretation of each aspect of representation. See
kono
parents:
diff changeset
380 13.1(20)."
kono
parents:
diff changeset
381
kono
parents:
diff changeset
382 See separate section on data representations.
kono
parents:
diff changeset
383
kono
parents:
diff changeset
384 *
kono
parents:
diff changeset
385 "Any restrictions placed upon representation items. See
kono
parents:
diff changeset
386 13.1(20)."
kono
parents:
diff changeset
387
kono
parents:
diff changeset
388 See separate section on data representations.
kono
parents:
diff changeset
389
kono
parents:
diff changeset
390 *
kono
parents:
diff changeset
391 "The meaning of ``Size`` for indefinite subtypes. See
kono
parents:
diff changeset
392 13.3(48)."
kono
parents:
diff changeset
393
kono
parents:
diff changeset
394 Size for an indefinite subtype is the maximum possible size, except that
kono
parents:
diff changeset
395 for the case of a subprogram parameter, the size of the parameter object
kono
parents:
diff changeset
396 is the actual size.
kono
parents:
diff changeset
397
kono
parents:
diff changeset
398 *
kono
parents:
diff changeset
399 "The default external representation for a type tag. See
kono
parents:
diff changeset
400 13.3(75)."
kono
parents:
diff changeset
401
kono
parents:
diff changeset
402 The default external representation for a type tag is the fully expanded
kono
parents:
diff changeset
403 name of the type in upper case letters.
kono
parents:
diff changeset
404
kono
parents:
diff changeset
405 *
kono
parents:
diff changeset
406 "What determines whether a compilation unit is the same in
kono
parents:
diff changeset
407 two different partitions. See 13.3(76)."
kono
parents:
diff changeset
408
kono
parents:
diff changeset
409 A compilation unit is the same in two different partitions if and only
kono
parents:
diff changeset
410 if it derives from the same source file.
kono
parents:
diff changeset
411
kono
parents:
diff changeset
412 *
kono
parents:
diff changeset
413 "Implementation-defined components. See 13.5.1(15)."
kono
parents:
diff changeset
414
kono
parents:
diff changeset
415 The only implementation defined component is the tag for a tagged type,
kono
parents:
diff changeset
416 which contains a pointer to the dispatching table.
kono
parents:
diff changeset
417
kono
parents:
diff changeset
418 *
kono
parents:
diff changeset
419 "If ``Word_Size`` = ``Storage_Unit``, the default bit
kono
parents:
diff changeset
420 ordering. See 13.5.3(5)."
kono
parents:
diff changeset
421
kono
parents:
diff changeset
422 ``Word_Size`` (32) is not the same as ``Storage_Unit`` (8) for this
kono
parents:
diff changeset
423 implementation, so no non-default bit ordering is supported. The default
kono
parents:
diff changeset
424 bit ordering corresponds to the natural endianness of the target architecture.
kono
parents:
diff changeset
425
kono
parents:
diff changeset
426 *
kono
parents:
diff changeset
427 "The contents of the visible part of package ``System``
kono
parents:
diff changeset
428 and its language-defined children. See 13.7(2)."
kono
parents:
diff changeset
429
kono
parents:
diff changeset
430 See the definition of these packages in files :file:`system.ads` and
kono
parents:
diff changeset
431 :file:`s-stoele.ads`. Note that two declarations are added to package
kono
parents:
diff changeset
432 System.
kono
parents:
diff changeset
433
kono
parents:
diff changeset
434 .. code-block:: ada
kono
parents:
diff changeset
435
kono
parents:
diff changeset
436 Max_Priority : constant Positive := Priority'Last;
kono
parents:
diff changeset
437 Max_Interrupt_Priority : constant Positive := Interrupt_Priority'Last;
kono
parents:
diff changeset
438
kono
parents:
diff changeset
439 *
kono
parents:
diff changeset
440 "The contents of the visible part of package
kono
parents:
diff changeset
441 ``System.Machine_Code``, and the meaning of
kono
parents:
diff changeset
442 *code_statements*. See 13.8(7)."
kono
parents:
diff changeset
443
kono
parents:
diff changeset
444 See the definition and documentation in file :file:`s-maccod.ads`.
kono
parents:
diff changeset
445
kono
parents:
diff changeset
446 *
kono
parents:
diff changeset
447 "The effect of unchecked conversion. See 13.9(11)."
kono
parents:
diff changeset
448
kono
parents:
diff changeset
449 Unchecked conversion between types of the same size
kono
parents:
diff changeset
450 results in an uninterpreted transmission of the bits from one type
kono
parents:
diff changeset
451 to the other. If the types are of unequal sizes, then in the case of
kono
parents:
diff changeset
452 discrete types, a shorter source is first zero or sign extended as
kono
parents:
diff changeset
453 necessary, and a shorter target is simply truncated on the left.
kono
parents:
diff changeset
454 For all non-discrete types, the source is first copied if necessary
kono
parents:
diff changeset
455 to ensure that the alignment requirements of the target are met, then
kono
parents:
diff changeset
456 a pointer is constructed to the source value, and the result is obtained
kono
parents:
diff changeset
457 by dereferencing this pointer after converting it to be a pointer to the
kono
parents:
diff changeset
458 target type. Unchecked conversions where the target subtype is an
kono
parents:
diff changeset
459 unconstrained array are not permitted. If the target alignment is
kono
parents:
diff changeset
460 greater than the source alignment, then a copy of the result is
kono
parents:
diff changeset
461 made with appropriate alignment
kono
parents:
diff changeset
462
kono
parents:
diff changeset
463 *
kono
parents:
diff changeset
464 "The semantics of operations on invalid representations.
kono
parents:
diff changeset
465 See 13.9.2(10-11)."
kono
parents:
diff changeset
466
kono
parents:
diff changeset
467 For assignments and other operations where the use of invalid values cannot
kono
parents:
diff changeset
468 result in erroneous behavior, the compiler ignores the possibility of invalid
kono
parents:
diff changeset
469 values. An exception is raised at the point where an invalid value would
kono
parents:
diff changeset
470 result in erroneous behavior. For example executing:
kono
parents:
diff changeset
471
kono
parents:
diff changeset
472 .. code-block:: ada
kono
parents:
diff changeset
473
kono
parents:
diff changeset
474 procedure invalidvals is
kono
parents:
diff changeset
475 X : Integer := -1;
kono
parents:
diff changeset
476 Y : Natural range 1 .. 10;
kono
parents:
diff changeset
477 for Y'Address use X'Address;
kono
parents:
diff changeset
478 Z : Natural range 1 .. 10;
kono
parents:
diff changeset
479 A : array (Natural range 1 .. 10) of Integer;
kono
parents:
diff changeset
480 begin
kono
parents:
diff changeset
481 Z := Y; -- no exception
kono
parents:
diff changeset
482 A (Z) := 3; -- exception raised;
kono
parents:
diff changeset
483 end;
kono
parents:
diff changeset
484
kono
parents:
diff changeset
485 As indicated, an exception is raised on the array assignment, but not
kono
parents:
diff changeset
486 on the simple assignment of the invalid negative value from Y to Z.
kono
parents:
diff changeset
487
kono
parents:
diff changeset
488 *
kono
parents:
diff changeset
489 "The manner of choosing a storage pool for an access type
kono
parents:
diff changeset
490 when ``Storage_Pool`` is not specified for the type. See 13.11(17)."
kono
parents:
diff changeset
491
kono
parents:
diff changeset
492 There are 3 different standard pools used by the compiler when
kono
parents:
diff changeset
493 ``Storage_Pool`` is not specified depending whether the type is local
kono
parents:
diff changeset
494 to a subprogram or defined at the library level and whether
kono
parents:
diff changeset
495 ``Storage_Size``is specified or not. See documentation in the runtime
kono
parents:
diff changeset
496 library units ``System.Pool_Global``, ``System.Pool_Size`` and
kono
parents:
diff changeset
497 ``System.Pool_Local`` in files :file:`s-poosiz.ads`,
kono
parents:
diff changeset
498 :file:`s-pooglo.ads` and :file:`s-pooloc.ads` for full details on the
kono
parents:
diff changeset
499 default pools used.
kono
parents:
diff changeset
500
kono
parents:
diff changeset
501 *
kono
parents:
diff changeset
502 "Whether or not the implementation provides user-accessible
kono
parents:
diff changeset
503 names for the standard pool type(s). See 13.11(17)."
kono
parents:
diff changeset
504
kono
parents:
diff changeset
505 See documentation in the sources of the run time mentioned in the previous
kono
parents:
diff changeset
506 paragraph. All these pools are accessible by means of `with`\ ing
kono
parents:
diff changeset
507 these units.
kono
parents:
diff changeset
508
kono
parents:
diff changeset
509 *
kono
parents:
diff changeset
510 "The meaning of ``Storage_Size``. See 13.11(18)."
kono
parents:
diff changeset
511
kono
parents:
diff changeset
512 ``Storage_Size`` is measured in storage units, and refers to the
kono
parents:
diff changeset
513 total space available for an access type collection, or to the primary
kono
parents:
diff changeset
514 stack space for a task.
kono
parents:
diff changeset
515
kono
parents:
diff changeset
516 *
kono
parents:
diff changeset
517 "Implementation-defined aspects of storage pools. See
kono
parents:
diff changeset
518 13.11(22)."
kono
parents:
diff changeset
519
kono
parents:
diff changeset
520 See documentation in the sources of the run time mentioned in the
kono
parents:
diff changeset
521 paragraph about standard storage pools above
kono
parents:
diff changeset
522 for details on GNAT-defined aspects of storage pools.
kono
parents:
diff changeset
523
kono
parents:
diff changeset
524 *
kono
parents:
diff changeset
525 "The set of restrictions allowed in a pragma
kono
parents:
diff changeset
526 ``Restrictions``. See 13.12(7)."
kono
parents:
diff changeset
527
kono
parents:
diff changeset
528 See :ref:`Standard_and_Implementation_Defined_Restrictions`.
kono
parents:
diff changeset
529
kono
parents:
diff changeset
530 *
kono
parents:
diff changeset
531 "The consequences of violating limitations on
kono
parents:
diff changeset
532 ``Restrictions`` pragmas. See 13.12(9)."
kono
parents:
diff changeset
533
kono
parents:
diff changeset
534 Restrictions that can be checked at compile time result in illegalities
kono
parents:
diff changeset
535 if violated. Currently there are no other consequences of violating
kono
parents:
diff changeset
536 restrictions.
kono
parents:
diff changeset
537
kono
parents:
diff changeset
538 *
kono
parents:
diff changeset
539 "The representation used by the ``Read`` and
kono
parents:
diff changeset
540 ``Write`` attributes of elementary types in terms of stream
kono
parents:
diff changeset
541 elements. See 13.13.2(9)."
kono
parents:
diff changeset
542
kono
parents:
diff changeset
543 The representation is the in-memory representation of the base type of
kono
parents:
diff changeset
544 the type, using the number of bits corresponding to the
kono
parents:
diff changeset
545 ``type'Size`` value, and the natural ordering of the machine.
kono
parents:
diff changeset
546
kono
parents:
diff changeset
547 *
kono
parents:
diff changeset
548 "The names and characteristics of the numeric subtypes
kono
parents:
diff changeset
549 declared in the visible part of package ``Standard``. See A.1(3)."
kono
parents:
diff changeset
550
kono
parents:
diff changeset
551 See items describing the integer and floating-point types supported.
kono
parents:
diff changeset
552
kono
parents:
diff changeset
553 *
kono
parents:
diff changeset
554 "The string returned by ``Character_Set_Version``.
kono
parents:
diff changeset
555 See A.3.5(3)."
kono
parents:
diff changeset
556
kono
parents:
diff changeset
557 ``Ada.Wide_Characters.Handling.Character_Set_Version`` returns
kono
parents:
diff changeset
558 the string "Unicode 4.0", referring to version 4.0 of the
kono
parents:
diff changeset
559 Unicode specification.
kono
parents:
diff changeset
560
kono
parents:
diff changeset
561 *
kono
parents:
diff changeset
562 "The accuracy actually achieved by the elementary
kono
parents:
diff changeset
563 functions. See A.5.1(1)."
kono
parents:
diff changeset
564
kono
parents:
diff changeset
565 The elementary functions correspond to the functions available in the C
kono
parents:
diff changeset
566 library. Only fast math mode is implemented.
kono
parents:
diff changeset
567
kono
parents:
diff changeset
568 *
kono
parents:
diff changeset
569 "The sign of a zero result from some of the operators or
kono
parents:
diff changeset
570 functions in ``Numerics.Generic_Elementary_Functions``, when
kono
parents:
diff changeset
571 ``Float_Type'Signed_Zeros`` is ``True``. See A.5.1(46)."
kono
parents:
diff changeset
572
kono
parents:
diff changeset
573 The sign of zeroes follows the requirements of the IEEE 754 standard on
kono
parents:
diff changeset
574 floating-point.
kono
parents:
diff changeset
575
kono
parents:
diff changeset
576 *
kono
parents:
diff changeset
577 "The value of
kono
parents:
diff changeset
578 ``Numerics.Float_Random.Max_Image_Width``. See A.5.2(27)."
kono
parents:
diff changeset
579
kono
parents:
diff changeset
580 Maximum image width is 6864, see library file :file:`s-rannum.ads`.
kono
parents:
diff changeset
581
kono
parents:
diff changeset
582 *
kono
parents:
diff changeset
583 "The value of
kono
parents:
diff changeset
584 ``Numerics.Discrete_Random.Max_Image_Width``. See A.5.2(27)."
kono
parents:
diff changeset
585
kono
parents:
diff changeset
586 Maximum image width is 6864, see library file :file:`s-rannum.ads`.
kono
parents:
diff changeset
587
kono
parents:
diff changeset
588 *
kono
parents:
diff changeset
589 "The algorithms for random number generation. See
kono
parents:
diff changeset
590 A.5.2(32)."
kono
parents:
diff changeset
591
kono
parents:
diff changeset
592 The algorithm is the Mersenne Twister, as documented in the source file
kono
parents:
diff changeset
593 :file:`s-rannum.adb`. This version of the algorithm has a period of
kono
parents:
diff changeset
594 2**19937-1.
kono
parents:
diff changeset
595
kono
parents:
diff changeset
596 *
kono
parents:
diff changeset
597 "The string representation of a random number generator's
kono
parents:
diff changeset
598 state. See A.5.2(38)."
kono
parents:
diff changeset
599
kono
parents:
diff changeset
600 The value returned by the Image function is the concatenation of
kono
parents:
diff changeset
601 the fixed-width decimal representations of the 624 32-bit integers
kono
parents:
diff changeset
602 of the state vector.
kono
parents:
diff changeset
603
kono
parents:
diff changeset
604 *
kono
parents:
diff changeset
605 "The minimum time interval between calls to the
kono
parents:
diff changeset
606 time-dependent Reset procedure that are guaranteed to initiate different
kono
parents:
diff changeset
607 random number sequences. See A.5.2(45)."
kono
parents:
diff changeset
608
kono
parents:
diff changeset
609 The minimum period between reset calls to guarantee distinct series of
kono
parents:
diff changeset
610 random numbers is one microsecond.
kono
parents:
diff changeset
611
kono
parents:
diff changeset
612 *
kono
parents:
diff changeset
613 "The values of the ``Model_Mantissa``,
kono
parents:
diff changeset
614 ``Model_Emin``, ``Model_Epsilon``, ``Model``,
kono
parents:
diff changeset
615 ``Safe_First``, and ``Safe_Last`` attributes, if the Numerics
kono
parents:
diff changeset
616 Annex is not supported. See A.5.3(72)."
kono
parents:
diff changeset
617
kono
parents:
diff changeset
618 Run the compiler with *-gnatS* to produce a listing of package
kono
parents:
diff changeset
619 ``Standard``, has the values of all numeric attributes.
kono
parents:
diff changeset
620
kono
parents:
diff changeset
621 *
kono
parents:
diff changeset
622 "Any implementation-defined characteristics of the
kono
parents:
diff changeset
623 input-output packages. See A.7(14)."
kono
parents:
diff changeset
624
kono
parents:
diff changeset
625 There are no special implementation defined characteristics for these
kono
parents:
diff changeset
626 packages.
kono
parents:
diff changeset
627
kono
parents:
diff changeset
628 *
kono
parents:
diff changeset
629 "The value of ``Buffer_Size`` in ``Storage_IO``. See
kono
parents:
diff changeset
630 A.9(10)."
kono
parents:
diff changeset
631
kono
parents:
diff changeset
632 All type representations are contiguous, and the ``Buffer_Size`` is
kono
parents:
diff changeset
633 the value of ``type'Size`` rounded up to the next storage unit
kono
parents:
diff changeset
634 boundary.
kono
parents:
diff changeset
635
kono
parents:
diff changeset
636 *
kono
parents:
diff changeset
637 "External files for standard input, standard output, and
kono
parents:
diff changeset
638 standard error See A.10(5)."
kono
parents:
diff changeset
639
kono
parents:
diff changeset
640 These files are mapped onto the files provided by the C streams
kono
parents:
diff changeset
641 libraries. See source file :file:`i-cstrea.ads` for further details.
kono
parents:
diff changeset
642
kono
parents:
diff changeset
643 *
kono
parents:
diff changeset
644 "The accuracy of the value produced by ``Put``. See
kono
parents:
diff changeset
645 A.10.9(36)."
kono
parents:
diff changeset
646
kono
parents:
diff changeset
647 If more digits are requested in the output than are represented by the
kono
parents:
diff changeset
648 precision of the value, zeroes are output in the corresponding least
kono
parents:
diff changeset
649 significant digit positions.
kono
parents:
diff changeset
650
kono
parents:
diff changeset
651 *
kono
parents:
diff changeset
652 "The meaning of ``Argument_Count``, ``Argument``, and
kono
parents:
diff changeset
653 ``Command_Name``. See A.15(1)."
kono
parents:
diff changeset
654
kono
parents:
diff changeset
655 These are mapped onto the ``argv`` and ``argc`` parameters of the
kono
parents:
diff changeset
656 main program in the natural manner.
kono
parents:
diff changeset
657
kono
parents:
diff changeset
658 *
kono
parents:
diff changeset
659 "The interpretation of the ``Form`` parameter in procedure
kono
parents:
diff changeset
660 ``Create_Directory``. See A.16(56)."
kono
parents:
diff changeset
661
kono
parents:
diff changeset
662 The ``Form`` parameter is not used.
kono
parents:
diff changeset
663
kono
parents:
diff changeset
664 *
kono
parents:
diff changeset
665 "The interpretation of the ``Form`` parameter in procedure
kono
parents:
diff changeset
666 ``Create_Path``. See A.16(60)."
kono
parents:
diff changeset
667
kono
parents:
diff changeset
668 The ``Form`` parameter is not used.
kono
parents:
diff changeset
669
kono
parents:
diff changeset
670 *
kono
parents:
diff changeset
671 "The interpretation of the ``Form`` parameter in procedure
kono
parents:
diff changeset
672 ``Copy_File``. See A.16(68)."
kono
parents:
diff changeset
673
kono
parents:
diff changeset
674 The ``Form`` parameter is case-insensitive.
kono
parents:
diff changeset
675 Two fields are recognized in the ``Form`` parameter::
kono
parents:
diff changeset
676
kono
parents:
diff changeset
677 *preserve=<value>*
kono
parents:
diff changeset
678 *mode=<value>*
kono
parents:
diff changeset
679
kono
parents:
diff changeset
680 <value> starts immediately after the character '=' and ends with the
kono
parents:
diff changeset
681 character immediately preceding the next comma (',') or with the last
kono
parents:
diff changeset
682 character of the parameter.
kono
parents:
diff changeset
683
kono
parents:
diff changeset
684 The only possible values for preserve= are:
kono
parents:
diff changeset
685
kono
parents:
diff changeset
686 ================== ===================================================================
kono
parents:
diff changeset
687 Value Meaning
kono
parents:
diff changeset
688 ================== ===================================================================
kono
parents:
diff changeset
689 *no_attributes* Do not try to preserve any file attributes. This is the
kono
parents:
diff changeset
690 default if no preserve= is found in Form.
kono
parents:
diff changeset
691 *all_attributes* Try to preserve all file attributes (timestamps, access rights).
kono
parents:
diff changeset
692 *timestamps* Preserve the timestamp of the copied file, but not the other
kono
parents:
diff changeset
693 file attributes.
kono
parents:
diff changeset
694 ================== ===================================================================
kono
parents:
diff changeset
695
kono
parents:
diff changeset
696 The only possible values for mode= are:
kono
parents:
diff changeset
697
kono
parents:
diff changeset
698 ============== ===============================================================================
kono
parents:
diff changeset
699 Value Meaning
kono
parents:
diff changeset
700 ============== ===============================================================================
kono
parents:
diff changeset
701 *copy* Only do the copy if the destination file does not already exist.
kono
parents:
diff changeset
702 If it already exists, Copy_File fails.
kono
parents:
diff changeset
703 *overwrite* Copy the file in all cases. Overwrite an already existing destination file.
kono
parents:
diff changeset
704 *append* Append the original file to the destination file. If the destination file
kono
parents:
diff changeset
705 does not exist, the destination file is a copy of the source file.
kono
parents:
diff changeset
706 When mode=append, the field preserve=, if it exists, is not taken into account.
kono
parents:
diff changeset
707 ============== ===============================================================================
kono
parents:
diff changeset
708
kono
parents:
diff changeset
709 If the Form parameter includes one or both of the fields and the value or
kono
parents:
diff changeset
710 values are incorrect, Copy_file fails with Use_Error.
kono
parents:
diff changeset
711
kono
parents:
diff changeset
712 Examples of correct Forms::
kono
parents:
diff changeset
713
kono
parents:
diff changeset
714 Form => "preserve=no_attributes,mode=overwrite" (the default)
kono
parents:
diff changeset
715 Form => "mode=append"
kono
parents:
diff changeset
716 Form => "mode=copy, preserve=all_attributes"
kono
parents:
diff changeset
717
kono
parents:
diff changeset
718 Examples of incorrect Forms::
kono
parents:
diff changeset
719
kono
parents:
diff changeset
720 Form => "preserve=junk"
kono
parents:
diff changeset
721 Form => "mode=internal, preserve=timestamps"
kono
parents:
diff changeset
722
kono
parents:
diff changeset
723 *
kono
parents:
diff changeset
724 "The interpretation of the ``Pattern`` parameter, when not the null string,
kono
parents:
diff changeset
725 in the ``Start_Search`` and ``Search`` procedures.
kono
parents:
diff changeset
726 See A.16(104) and A.16(112)."
kono
parents:
diff changeset
727
kono
parents:
diff changeset
728 When the ``Pattern`` parameter is not the null string, it is interpreted
kono
parents:
diff changeset
729 according to the syntax of regular expressions as defined in the
kono
parents:
diff changeset
730 ``GNAT.Regexp`` package.
kono
parents:
diff changeset
731
kono
parents:
diff changeset
732 See :ref:`GNAT.Regexp_(g-regexp.ads)`.
kono
parents:
diff changeset
733
kono
parents:
diff changeset
734 *
kono
parents:
diff changeset
735 "Implementation-defined convention names. See B.1(11)."
kono
parents:
diff changeset
736
kono
parents:
diff changeset
737 The following convention names are supported
kono
parents:
diff changeset
738
kono
parents:
diff changeset
739 ======================= ==============================================================================
kono
parents:
diff changeset
740 Convention Name Interpretation
kono
parents:
diff changeset
741 ======================= ==============================================================================
kono
parents:
diff changeset
742 *Ada* Ada
kono
parents:
diff changeset
743 *Ada_Pass_By_Copy* Allowed for any types except by-reference types such as limited
kono
parents:
diff changeset
744 records. Compatible with convention Ada, but causes any parameters
kono
parents:
diff changeset
745 with this convention to be passed by copy.
kono
parents:
diff changeset
746 *Ada_Pass_By_Reference* Allowed for any types except by-copy types such as scalars.
kono
parents:
diff changeset
747 Compatible with convention Ada, but causes any parameters
kono
parents:
diff changeset
748 with this convention to be passed by reference.
kono
parents:
diff changeset
749 *Assembler* Assembly language
kono
parents:
diff changeset
750 *Asm* Synonym for Assembler
kono
parents:
diff changeset
751 *Assembly* Synonym for Assembler
kono
parents:
diff changeset
752 *C* C
kono
parents:
diff changeset
753 *C_Pass_By_Copy* Allowed only for record types, like C, but also notes that record
kono
parents:
diff changeset
754 is to be passed by copy rather than reference.
kono
parents:
diff changeset
755 *COBOL* COBOL
kono
parents:
diff changeset
756 *C_Plus_Plus (or CPP)* C++
kono
parents:
diff changeset
757 *Default* Treated the same as C
kono
parents:
diff changeset
758 *External* Treated the same as C
kono
parents:
diff changeset
759 *Fortran* Fortran
kono
parents:
diff changeset
760 *Intrinsic* For support of pragma ``Import`` with convention Intrinsic, see
kono
parents:
diff changeset
761 separate section on Intrinsic Subprograms.
kono
parents:
diff changeset
762 *Stdcall* Stdcall (used for Windows implementations only). This convention correspond
kono
parents:
diff changeset
763 to the WINAPI (previously called Pascal convention) C/C++ convention under
kono
parents:
diff changeset
764 Windows. A routine with this convention cleans the stack before
kono
parents:
diff changeset
765 exit. This pragma cannot be applied to a dispatching call.
kono
parents:
diff changeset
766 *DLL* Synonym for Stdcall
kono
parents:
diff changeset
767 *Win32* Synonym for Stdcall
kono
parents:
diff changeset
768 *Stubbed* Stubbed is a special convention used to indicate that the body of the
kono
parents:
diff changeset
769 subprogram will be entirely ignored. Any call to the subprogram
kono
parents:
diff changeset
770 is converted into a raise of the ``Program_Error`` exception. If a
kono
parents:
diff changeset
771 pragma ``Import`` specifies convention ``stubbed`` then no body need
kono
parents:
diff changeset
772 be present at all. This convention is useful during development for the
kono
parents:
diff changeset
773 inclusion of subprograms whose body has not yet been written.
kono
parents:
diff changeset
774 In addition, all otherwise unrecognized convention names are also
kono
parents:
diff changeset
775 treated as being synonymous with convention C. In all implementations
kono
parents:
diff changeset
776 except for VMS, use of such other names results in a warning. In VMS
kono
parents:
diff changeset
777 implementations, these names are accepted silently.
kono
parents:
diff changeset
778 ======================= ==============================================================================
kono
parents:
diff changeset
779
kono
parents:
diff changeset
780 *
kono
parents:
diff changeset
781 "The meaning of link names. See B.1(36)."
kono
parents:
diff changeset
782
kono
parents:
diff changeset
783 Link names are the actual names used by the linker.
kono
parents:
diff changeset
784
kono
parents:
diff changeset
785 *
kono
parents:
diff changeset
786 "The manner of choosing link names when neither the link
kono
parents:
diff changeset
787 name nor the address of an imported or exported entity is specified. See
kono
parents:
diff changeset
788 B.1(36)."
kono
parents:
diff changeset
789
kono
parents:
diff changeset
790 The default linker name is that which would be assigned by the relevant
kono
parents:
diff changeset
791 external language, interpreting the Ada name as being in all lower case
kono
parents:
diff changeset
792 letters.
kono
parents:
diff changeset
793
kono
parents:
diff changeset
794 *
kono
parents:
diff changeset
795 "The effect of pragma ``Linker_Options``. See B.1(37)."
kono
parents:
diff changeset
796
kono
parents:
diff changeset
797 The string passed to ``Linker_Options`` is presented uninterpreted as
kono
parents:
diff changeset
798 an argument to the link command, unless it contains ASCII.NUL characters.
kono
parents:
diff changeset
799 NUL characters if they appear act as argument separators, so for example
kono
parents:
diff changeset
800
kono
parents:
diff changeset
801 .. code-block:: ada
kono
parents:
diff changeset
802
kono
parents:
diff changeset
803 pragma Linker_Options ("-labc" & ASCII.NUL & "-ldef");
kono
parents:
diff changeset
804
kono
parents:
diff changeset
805 causes two separate arguments ``-labc`` and ``-ldef`` to be passed to the
kono
parents:
diff changeset
806 linker. The order of linker options is preserved for a given unit. The final
kono
parents:
diff changeset
807 list of options passed to the linker is in reverse order of the elaboration
kono
parents:
diff changeset
808 order. For example, linker options for a body always appear before the options
kono
parents:
diff changeset
809 from the corresponding package spec.
kono
parents:
diff changeset
810
kono
parents:
diff changeset
811 *
kono
parents:
diff changeset
812 "The contents of the visible part of package
kono
parents:
diff changeset
813 ``Interfaces`` and its language-defined descendants. See B.2(1)."
kono
parents:
diff changeset
814
kono
parents:
diff changeset
815 See files with prefix :file:`i-` in the distributed library.
kono
parents:
diff changeset
816
kono
parents:
diff changeset
817 *
kono
parents:
diff changeset
818 "Implementation-defined children of package
kono
parents:
diff changeset
819 ``Interfaces``. The contents of the visible part of package
kono
parents:
diff changeset
820 ``Interfaces``. See B.2(11)."
kono
parents:
diff changeset
821
kono
parents:
diff changeset
822 See files with prefix :file:`i-` in the distributed library.
kono
parents:
diff changeset
823
kono
parents:
diff changeset
824 *
kono
parents:
diff changeset
825 "The types ``Floating``, ``Long_Floating``,
kono
parents:
diff changeset
826 ``Binary``, ``Long_Binary``, ``Decimal_ Element``, and
kono
parents:
diff changeset
827 ``COBOL_Character``; and the initialization of the variables
kono
parents:
diff changeset
828 ``Ada_To_COBOL`` and ``COBOL_To_Ada``, in
kono
parents:
diff changeset
829 ``Interfaces.COBOL``. See B.4(50)."
kono
parents:
diff changeset
830
kono
parents:
diff changeset
831 ===================== ====================================
kono
parents:
diff changeset
832 COBOL Ada
kono
parents:
diff changeset
833 ===================== ====================================
kono
parents:
diff changeset
834 *Floating* Float
kono
parents:
diff changeset
835 *Long_Floating* (Floating) Long_Float
kono
parents:
diff changeset
836 *Binary* Integer
kono
parents:
diff changeset
837 *Long_Binary* Long_Long_Integer
kono
parents:
diff changeset
838 *Decimal_Element* Character
kono
parents:
diff changeset
839 *COBOL_Character* Character
kono
parents:
diff changeset
840 ===================== ====================================
kono
parents:
diff changeset
841
kono
parents:
diff changeset
842 For initialization, see the file :file:`i-cobol.ads` in the distributed library.
kono
parents:
diff changeset
843
kono
parents:
diff changeset
844 *
kono
parents:
diff changeset
845 "Support for access to machine instructions. See C.1(1)."
kono
parents:
diff changeset
846
kono
parents:
diff changeset
847 See documentation in file :file:`s-maccod.ads` in the distributed library.
kono
parents:
diff changeset
848
kono
parents:
diff changeset
849 *
kono
parents:
diff changeset
850 "Implementation-defined aspects of access to machine
kono
parents:
diff changeset
851 operations. See C.1(9)."
kono
parents:
diff changeset
852
kono
parents:
diff changeset
853 See documentation in file :file:`s-maccod.ads` in the distributed library.
kono
parents:
diff changeset
854
kono
parents:
diff changeset
855 *
kono
parents:
diff changeset
856 "Implementation-defined aspects of interrupts. See C.3(2)."
kono
parents:
diff changeset
857
kono
parents:
diff changeset
858 Interrupts are mapped to signals or conditions as appropriate. See
kono
parents:
diff changeset
859 definition of unit
kono
parents:
diff changeset
860 ``Ada.Interrupt_Names`` in source file :file:`a-intnam.ads` for details
kono
parents:
diff changeset
861 on the interrupts supported on a particular target.
kono
parents:
diff changeset
862
kono
parents:
diff changeset
863 *
kono
parents:
diff changeset
864 "Implementation-defined aspects of pre-elaboration. See
kono
parents:
diff changeset
865 C.4(13)."
kono
parents:
diff changeset
866
kono
parents:
diff changeset
867 GNAT does not permit a partition to be restarted without reloading,
kono
parents:
diff changeset
868 except under control of the debugger.
kono
parents:
diff changeset
869
kono
parents:
diff changeset
870 *
kono
parents:
diff changeset
871 "The semantics of pragma ``Discard_Names``. See C.5(7)."
kono
parents:
diff changeset
872
kono
parents:
diff changeset
873 Pragma ``Discard_Names`` causes names of enumeration literals to
kono
parents:
diff changeset
874 be suppressed. In the presence of this pragma, the Image attribute
kono
parents:
diff changeset
875 provides the image of the Pos of the literal, and Value accepts
kono
parents:
diff changeset
876 Pos values.
kono
parents:
diff changeset
877
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
878 For tagged types, when pragmas ``Discard_Names`` and ``No_Tagged_Streams``
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
879 simultaneously apply, their Expanded_Name and External_Tag are initialized
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
880 with empty strings. This is useful to avoid exposing entity names at binary
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
881 level.
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
882
111
kono
parents:
diff changeset
883 *
kono
parents:
diff changeset
884 "The result of the ``Task_Identification.Image``
kono
parents:
diff changeset
885 attribute. See C.7.1(7)."
kono
parents:
diff changeset
886
kono
parents:
diff changeset
887 The result of this attribute is a string that identifies
kono
parents:
diff changeset
888 the object or component that denotes a given task. If a variable ``Var``
kono
parents:
diff changeset
889 has a task type, the image for this task will have the form :samp:`Var_{XXXXXXXX}`,
kono
parents:
diff changeset
890 where the suffix *XXXXXXXX*
kono
parents:
diff changeset
891 is the hexadecimal representation of the virtual address of the corresponding
kono
parents:
diff changeset
892 task control block. If the variable is an array of tasks, the image of each
kono
parents:
diff changeset
893 task will have the form of an indexed component indicating the position of a
kono
parents:
diff changeset
894 given task in the array, e.g., :samp:`Group(5)_{XXXXXXX}`. If the task is a
kono
parents:
diff changeset
895 component of a record, the image of the task will have the form of a selected
kono
parents:
diff changeset
896 component. These rules are fully recursive, so that the image of a task that
kono
parents:
diff changeset
897 is a subcomponent of a composite object corresponds to the expression that
kono
parents:
diff changeset
898 designates this task.
kono
parents:
diff changeset
899
kono
parents:
diff changeset
900 If a task is created by an allocator, its image depends on the context. If the
kono
parents:
diff changeset
901 allocator is part of an object declaration, the rules described above are used
kono
parents:
diff changeset
902 to construct its image, and this image is not affected by subsequent
kono
parents:
diff changeset
903 assignments. If the allocator appears within an expression, the image
kono
parents:
diff changeset
904 includes only the name of the task type.
kono
parents:
diff changeset
905
kono
parents:
diff changeset
906 If the configuration pragma Discard_Names is present, or if the restriction
kono
parents:
diff changeset
907 No_Implicit_Heap_Allocation is in effect, the image reduces to
kono
parents:
diff changeset
908 the numeric suffix, that is to say the hexadecimal representation of the
kono
parents:
diff changeset
909 virtual address of the control block of the task.
kono
parents:
diff changeset
910
kono
parents:
diff changeset
911 *
kono
parents:
diff changeset
912 "The value of ``Current_Task`` when in a protected entry
kono
parents:
diff changeset
913 or interrupt handler. See C.7.1(17)."
kono
parents:
diff changeset
914
kono
parents:
diff changeset
915 Protected entries or interrupt handlers can be executed by any
kono
parents:
diff changeset
916 convenient thread, so the value of ``Current_Task`` is undefined.
kono
parents:
diff changeset
917
kono
parents:
diff changeset
918 *
kono
parents:
diff changeset
919 "The effect of calling ``Current_Task`` from an entry
kono
parents:
diff changeset
920 body or interrupt handler. See C.7.1(19)."
kono
parents:
diff changeset
921
kono
parents:
diff changeset
922 When GNAT can determine statically that ``Current_Task`` is called directly in
kono
parents:
diff changeset
923 the body of an entry (or barrier) then a warning is emitted and ``Program_Error``
kono
parents:
diff changeset
924 is raised at run time. Otherwise, the effect of calling ``Current_Task`` from an
kono
parents:
diff changeset
925 entry body or interrupt handler is to return the identification of the task
kono
parents:
diff changeset
926 currently executing the code.
kono
parents:
diff changeset
927
kono
parents:
diff changeset
928 *
kono
parents:
diff changeset
929 "Implementation-defined aspects of
kono
parents:
diff changeset
930 ``Task_Attributes``. See C.7.2(19)."
kono
parents:
diff changeset
931
kono
parents:
diff changeset
932 There are no implementation-defined aspects of ``Task_Attributes``.
kono
parents:
diff changeset
933
kono
parents:
diff changeset
934 *
kono
parents:
diff changeset
935 "Values of all ``Metrics``. See D(2)."
kono
parents:
diff changeset
936
kono
parents:
diff changeset
937 The metrics information for GNAT depends on the performance of the
kono
parents:
diff changeset
938 underlying operating system. The sources of the run-time for tasking
kono
parents:
diff changeset
939 implementation, together with the output from *-gnatG* can be
kono
parents:
diff changeset
940 used to determine the exact sequence of operating systems calls made
kono
parents:
diff changeset
941 to implement various tasking constructs. Together with appropriate
kono
parents:
diff changeset
942 information on the performance of the underlying operating system,
kono
parents:
diff changeset
943 on the exact target in use, this information can be used to determine
kono
parents:
diff changeset
944 the required metrics.
kono
parents:
diff changeset
945
kono
parents:
diff changeset
946 *
kono
parents:
diff changeset
947 "The declarations of ``Any_Priority`` and
kono
parents:
diff changeset
948 ``Priority``. See D.1(11)."
kono
parents:
diff changeset
949
kono
parents:
diff changeset
950 See declarations in file :file:`system.ads`.
kono
parents:
diff changeset
951
kono
parents:
diff changeset
952 *
kono
parents:
diff changeset
953 "Implementation-defined execution resources. See D.1(15)."
kono
parents:
diff changeset
954
kono
parents:
diff changeset
955 There are no implementation-defined execution resources.
kono
parents:
diff changeset
956
kono
parents:
diff changeset
957 *
kono
parents:
diff changeset
958 "Whether, on a multiprocessor, a task that is waiting for
kono
parents:
diff changeset
959 access to a protected object keeps its processor busy. See D.2.1(3)."
kono
parents:
diff changeset
960
kono
parents:
diff changeset
961 On a multi-processor, a task that is waiting for access to a protected
kono
parents:
diff changeset
962 object does not keep its processor busy.
kono
parents:
diff changeset
963
kono
parents:
diff changeset
964 *
kono
parents:
diff changeset
965 "The affect of implementation defined execution resources
kono
parents:
diff changeset
966 on task dispatching. See D.2.1(9)."
kono
parents:
diff changeset
967
kono
parents:
diff changeset
968 Tasks map to threads in the threads package used by GNAT. Where possible
kono
parents:
diff changeset
969 and appropriate, these threads correspond to native threads of the
kono
parents:
diff changeset
970 underlying operating system.
kono
parents:
diff changeset
971
kono
parents:
diff changeset
972 *
kono
parents:
diff changeset
973 "Implementation-defined *policy_identifiers* allowed
kono
parents:
diff changeset
974 in a pragma ``Task_Dispatching_Policy``. See D.2.2(3)."
kono
parents:
diff changeset
975
kono
parents:
diff changeset
976 There are no implementation-defined policy-identifiers allowed in this
kono
parents:
diff changeset
977 pragma.
kono
parents:
diff changeset
978
kono
parents:
diff changeset
979 *
kono
parents:
diff changeset
980 "Implementation-defined aspects of priority inversion. See
kono
parents:
diff changeset
981 D.2.2(16)."
kono
parents:
diff changeset
982
kono
parents:
diff changeset
983 Execution of a task cannot be preempted by the implementation processing
kono
parents:
diff changeset
984 of delay expirations for lower priority tasks.
kono
parents:
diff changeset
985
kono
parents:
diff changeset
986 *
kono
parents:
diff changeset
987 "Implementation-defined task dispatching. See D.2.2(18)."
kono
parents:
diff changeset
988
kono
parents:
diff changeset
989 The policy is the same as that of the underlying threads implementation.
kono
parents:
diff changeset
990
kono
parents:
diff changeset
991 *
kono
parents:
diff changeset
992 "Implementation-defined *policy_identifiers* allowed
kono
parents:
diff changeset
993 in a pragma ``Locking_Policy``. See D.3(4)."
kono
parents:
diff changeset
994
kono
parents:
diff changeset
995 The two implementation defined policies permitted in GNAT are
kono
parents:
diff changeset
996 ``Inheritance_Locking`` and ``Concurrent_Readers_Locking``. On
kono
parents:
diff changeset
997 targets that support the ``Inheritance_Locking`` policy, locking is
kono
parents:
diff changeset
998 implemented by inheritance, i.e., the task owning the lock operates
kono
parents:
diff changeset
999 at a priority equal to the highest priority of any task currently
kono
parents:
diff changeset
1000 requesting the lock. On targets that support the
kono
parents:
diff changeset
1001 ``Concurrent_Readers_Locking`` policy, locking is implemented with a
kono
parents:
diff changeset
1002 read/write lock allowing multiple protected object functions to enter
kono
parents:
diff changeset
1003 concurrently.
kono
parents:
diff changeset
1004
kono
parents:
diff changeset
1005 *
kono
parents:
diff changeset
1006 "Default ceiling priorities. See D.3(10)."
kono
parents:
diff changeset
1007
kono
parents:
diff changeset
1008 The ceiling priority of protected objects of the type
kono
parents:
diff changeset
1009 ``System.Interrupt_Priority'Last`` as described in the Ada
kono
parents:
diff changeset
1010 Reference Manual D.3(10),
kono
parents:
diff changeset
1011
kono
parents:
diff changeset
1012 *
kono
parents:
diff changeset
1013 "The ceiling of any protected object used internally by
kono
parents:
diff changeset
1014 the implementation. See D.3(16)."
kono
parents:
diff changeset
1015
kono
parents:
diff changeset
1016 The ceiling priority of internal protected objects is
kono
parents:
diff changeset
1017 ``System.Priority'Last``.
kono
parents:
diff changeset
1018
kono
parents:
diff changeset
1019 *
kono
parents:
diff changeset
1020 "Implementation-defined queuing policies. See D.4(1)."
kono
parents:
diff changeset
1021
kono
parents:
diff changeset
1022 There are no implementation-defined queuing policies.
kono
parents:
diff changeset
1023
kono
parents:
diff changeset
1024 *
kono
parents:
diff changeset
1025 "On a multiprocessor, any conditions that cause the
kono
parents:
diff changeset
1026 completion of an aborted construct to be delayed later than what is
kono
parents:
diff changeset
1027 specified for a single processor. See D.6(3)."
kono
parents:
diff changeset
1028
kono
parents:
diff changeset
1029 The semantics for abort on a multi-processor is the same as on a single
kono
parents:
diff changeset
1030 processor, there are no further delays.
kono
parents:
diff changeset
1031
kono
parents:
diff changeset
1032 *
kono
parents:
diff changeset
1033 "Any operations that implicitly require heap storage
kono
parents:
diff changeset
1034 allocation. See D.7(8)."
kono
parents:
diff changeset
1035
kono
parents:
diff changeset
1036 The only operation that implicitly requires heap storage allocation is
kono
parents:
diff changeset
1037 task creation.
kono
parents:
diff changeset
1038
kono
parents:
diff changeset
1039 *
kono
parents:
diff changeset
1040 "What happens when a task terminates in the presence of
kono
parents:
diff changeset
1041 pragma ``No_Task_Termination``. See D.7(15)."
kono
parents:
diff changeset
1042
kono
parents:
diff changeset
1043 Execution is erroneous in that case.
kono
parents:
diff changeset
1044
kono
parents:
diff changeset
1045 *
kono
parents:
diff changeset
1046 "Implementation-defined aspects of pragma
kono
parents:
diff changeset
1047 ``Restrictions``. See D.7(20)."
kono
parents:
diff changeset
1048
kono
parents:
diff changeset
1049 There are no such implementation-defined aspects.
kono
parents:
diff changeset
1050
kono
parents:
diff changeset
1051 *
kono
parents:
diff changeset
1052 "Implementation-defined aspects of package
kono
parents:
diff changeset
1053 ``Real_Time``. See D.8(17)."
kono
parents:
diff changeset
1054
kono
parents:
diff changeset
1055 There are no implementation defined aspects of package ``Real_Time``.
kono
parents:
diff changeset
1056
kono
parents:
diff changeset
1057 *
kono
parents:
diff changeset
1058 "Implementation-defined aspects of
kono
parents:
diff changeset
1059 *delay_statements*. See D.9(8)."
kono
parents:
diff changeset
1060
kono
parents:
diff changeset
1061 Any difference greater than one microsecond will cause the task to be
kono
parents:
diff changeset
1062 delayed (see D.9(7)).
kono
parents:
diff changeset
1063
kono
parents:
diff changeset
1064 *
kono
parents:
diff changeset
1065 "The upper bound on the duration of interrupt blocking
kono
parents:
diff changeset
1066 caused by the implementation. See D.12(5)."
kono
parents:
diff changeset
1067
kono
parents:
diff changeset
1068 The upper bound is determined by the underlying operating system. In
kono
parents:
diff changeset
1069 no cases is it more than 10 milliseconds.
kono
parents:
diff changeset
1070
kono
parents:
diff changeset
1071 *
kono
parents:
diff changeset
1072 "The means for creating and executing distributed
kono
parents:
diff changeset
1073 programs. See E(5)."
kono
parents:
diff changeset
1074
kono
parents:
diff changeset
1075 The GLADE package provides a utility GNATDIST for creating and executing
kono
parents:
diff changeset
1076 distributed programs. See the GLADE reference manual for further details.
kono
parents:
diff changeset
1077
kono
parents:
diff changeset
1078 *
kono
parents:
diff changeset
1079 "Any events that can result in a partition becoming
kono
parents:
diff changeset
1080 inaccessible. See E.1(7)."
kono
parents:
diff changeset
1081
kono
parents:
diff changeset
1082 See the GLADE reference manual for full details on such events.
kono
parents:
diff changeset
1083
kono
parents:
diff changeset
1084 *
kono
parents:
diff changeset
1085 "The scheduling policies, treatment of priorities, and
kono
parents:
diff changeset
1086 management of shared resources between partitions in certain cases. See
kono
parents:
diff changeset
1087 E.1(11)."
kono
parents:
diff changeset
1088
kono
parents:
diff changeset
1089 See the GLADE reference manual for full details on these aspects of
kono
parents:
diff changeset
1090 multi-partition execution.
kono
parents:
diff changeset
1091
kono
parents:
diff changeset
1092 *
kono
parents:
diff changeset
1093 "Events that cause the version of a compilation unit to
kono
parents:
diff changeset
1094 change. See E.3(5)."
kono
parents:
diff changeset
1095
kono
parents:
diff changeset
1096 Editing the source file of a compilation unit, or the source files of
kono
parents:
diff changeset
1097 any units on which it is dependent in a significant way cause the version
kono
parents:
diff changeset
1098 to change. No other actions cause the version number to change. All changes
kono
parents:
diff changeset
1099 are significant except those which affect only layout, capitalization or
kono
parents:
diff changeset
1100 comments.
kono
parents:
diff changeset
1101
kono
parents:
diff changeset
1102 *
kono
parents:
diff changeset
1103 "Whether the execution of the remote subprogram is
kono
parents:
diff changeset
1104 immediately aborted as a result of cancellation. See E.4(13)."
kono
parents:
diff changeset
1105
kono
parents:
diff changeset
1106 See the GLADE reference manual for details on the effect of abort in
kono
parents:
diff changeset
1107 a distributed application.
kono
parents:
diff changeset
1108
kono
parents:
diff changeset
1109 *
kono
parents:
diff changeset
1110 "Implementation-defined aspects of the PCS. See E.5(25)."
kono
parents:
diff changeset
1111
kono
parents:
diff changeset
1112 See the GLADE reference manual for a full description of all implementation
kono
parents:
diff changeset
1113 defined aspects of the PCS.
kono
parents:
diff changeset
1114
kono
parents:
diff changeset
1115 *
kono
parents:
diff changeset
1116 "Implementation-defined interfaces in the PCS. See
kono
parents:
diff changeset
1117 E.5(26)."
kono
parents:
diff changeset
1118
kono
parents:
diff changeset
1119 See the GLADE reference manual for a full description of all
kono
parents:
diff changeset
1120 implementation defined interfaces.
kono
parents:
diff changeset
1121
kono
parents:
diff changeset
1122 *
kono
parents:
diff changeset
1123 "The values of named numbers in the package
kono
parents:
diff changeset
1124 ``Decimal``. See F.2(7)."
kono
parents:
diff changeset
1125
kono
parents:
diff changeset
1126 ==================== ==========
kono
parents:
diff changeset
1127 Named Number Value
kono
parents:
diff changeset
1128 ==================== ==========
kono
parents:
diff changeset
1129 *Max_Scale* +18
kono
parents:
diff changeset
1130 *Min_Scale* -18
kono
parents:
diff changeset
1131 *Min_Delta* 1.0E-18
kono
parents:
diff changeset
1132 *Max_Delta* 1.0E+18
kono
parents:
diff changeset
1133 *Max_Decimal_Digits* 18
kono
parents:
diff changeset
1134 ==================== ==========
kono
parents:
diff changeset
1135
kono
parents:
diff changeset
1136 *
kono
parents:
diff changeset
1137 "The value of ``Max_Picture_Length`` in the package
kono
parents:
diff changeset
1138 ``Text_IO.Editing``. See F.3.3(16)."
kono
parents:
diff changeset
1139
kono
parents:
diff changeset
1140 64
kono
parents:
diff changeset
1141
kono
parents:
diff changeset
1142 *
kono
parents:
diff changeset
1143 "The value of ``Max_Picture_Length`` in the package
kono
parents:
diff changeset
1144 ``Wide_Text_IO.Editing``. See F.3.4(5)."
kono
parents:
diff changeset
1145
kono
parents:
diff changeset
1146 64
kono
parents:
diff changeset
1147
kono
parents:
diff changeset
1148 *
kono
parents:
diff changeset
1149 "The accuracy actually achieved by the complex elementary
kono
parents:
diff changeset
1150 functions and by other complex arithmetic operations. See G.1(1)."
kono
parents:
diff changeset
1151
kono
parents:
diff changeset
1152 Standard library functions are used for the complex arithmetic
kono
parents:
diff changeset
1153 operations. Only fast math mode is currently supported.
kono
parents:
diff changeset
1154
kono
parents:
diff changeset
1155 *
kono
parents:
diff changeset
1156 "The sign of a zero result (or a component thereof) from
kono
parents:
diff changeset
1157 any operator or function in ``Numerics.Generic_Complex_Types``, when
kono
parents:
diff changeset
1158 ``Real'Signed_Zeros`` is True. See G.1.1(53)."
kono
parents:
diff changeset
1159
kono
parents:
diff changeset
1160 The signs of zero values are as recommended by the relevant
kono
parents:
diff changeset
1161 implementation advice.
kono
parents:
diff changeset
1162
kono
parents:
diff changeset
1163 *
kono
parents:
diff changeset
1164 "The sign of a zero result (or a component thereof) from
kono
parents:
diff changeset
1165 any operator or function in
kono
parents:
diff changeset
1166 ``Numerics.Generic_Complex_Elementary_Functions``, when
kono
parents:
diff changeset
1167 ``Real'Signed_Zeros`` is ``True``. See G.1.2(45)."
kono
parents:
diff changeset
1168
kono
parents:
diff changeset
1169 The signs of zero values are as recommended by the relevant
kono
parents:
diff changeset
1170 implementation advice.
kono
parents:
diff changeset
1171
kono
parents:
diff changeset
1172 *
kono
parents:
diff changeset
1173 "Whether the strict mode or the relaxed mode is the
kono
parents:
diff changeset
1174 default. See G.2(2)."
kono
parents:
diff changeset
1175
kono
parents:
diff changeset
1176 The strict mode is the default. There is no separate relaxed mode. GNAT
kono
parents:
diff changeset
1177 provides a highly efficient implementation of strict mode.
kono
parents:
diff changeset
1178
kono
parents:
diff changeset
1179 *
kono
parents:
diff changeset
1180 "The result interval in certain cases of fixed-to-float
kono
parents:
diff changeset
1181 conversion. See G.2.1(10)."
kono
parents:
diff changeset
1182
kono
parents:
diff changeset
1183 For cases where the result interval is implementation dependent, the
kono
parents:
diff changeset
1184 accuracy is that provided by performing all operations in 64-bit IEEE
kono
parents:
diff changeset
1185 floating-point format.
kono
parents:
diff changeset
1186
kono
parents:
diff changeset
1187 *
kono
parents:
diff changeset
1188 "The result of a floating point arithmetic operation in
kono
parents:
diff changeset
1189 overflow situations, when the ``Machine_Overflows`` attribute of the
kono
parents:
diff changeset
1190 result type is ``False``. See G.2.1(13)."
kono
parents:
diff changeset
1191
kono
parents:
diff changeset
1192 Infinite and NaN values are produced as dictated by the IEEE
kono
parents:
diff changeset
1193 floating-point standard.
kono
parents:
diff changeset
1194 Note that on machines that are not fully compliant with the IEEE
kono
parents:
diff changeset
1195 floating-point standard, such as Alpha, the *-mieee* compiler flag
kono
parents:
diff changeset
1196 must be used for achieving IEEE conforming behavior (although at the cost
kono
parents:
diff changeset
1197 of a significant performance penalty), so infinite and NaN values are
kono
parents:
diff changeset
1198 properly generated.
kono
parents:
diff changeset
1199
kono
parents:
diff changeset
1200 *
kono
parents:
diff changeset
1201 "The result interval for division (or exponentiation by a
kono
parents:
diff changeset
1202 negative exponent), when the floating point hardware implements division
kono
parents:
diff changeset
1203 as multiplication by a reciprocal. See G.2.1(16)."
kono
parents:
diff changeset
1204
kono
parents:
diff changeset
1205 Not relevant, division is IEEE exact.
kono
parents:
diff changeset
1206
kono
parents:
diff changeset
1207 *
kono
parents:
diff changeset
1208 "The definition of close result set, which determines the
kono
parents:
diff changeset
1209 accuracy of certain fixed point multiplications and divisions. See
kono
parents:
diff changeset
1210 G.2.3(5)."
kono
parents:
diff changeset
1211
kono
parents:
diff changeset
1212 Operations in the close result set are performed using IEEE long format
kono
parents:
diff changeset
1213 floating-point arithmetic. The input operands are converted to
kono
parents:
diff changeset
1214 floating-point, the operation is done in floating-point, and the result
kono
parents:
diff changeset
1215 is converted to the target type.
kono
parents:
diff changeset
1216
kono
parents:
diff changeset
1217 *
kono
parents:
diff changeset
1218 "Conditions on a *universal_real* operand of a fixed
kono
parents:
diff changeset
1219 point multiplication or division for which the result shall be in the
kono
parents:
diff changeset
1220 perfect result set. See G.2.3(22)."
kono
parents:
diff changeset
1221
kono
parents:
diff changeset
1222 The result is only defined to be in the perfect result set if the result
kono
parents:
diff changeset
1223 can be computed by a single scaling operation involving a scale factor
kono
parents:
diff changeset
1224 representable in 64-bits.
kono
parents:
diff changeset
1225
kono
parents:
diff changeset
1226 *
kono
parents:
diff changeset
1227 "The result of a fixed point arithmetic operation in
kono
parents:
diff changeset
1228 overflow situations, when the ``Machine_Overflows`` attribute of the
kono
parents:
diff changeset
1229 result type is ``False``. See G.2.3(27)."
kono
parents:
diff changeset
1230
kono
parents:
diff changeset
1231 Not relevant, ``Machine_Overflows`` is ``True`` for fixed-point
kono
parents:
diff changeset
1232 types.
kono
parents:
diff changeset
1233
kono
parents:
diff changeset
1234 *
kono
parents:
diff changeset
1235 "The result of an elementary function reference in
kono
parents:
diff changeset
1236 overflow situations, when the ``Machine_Overflows`` attribute of the
kono
parents:
diff changeset
1237 result type is ``False``. See G.2.4(4)."
kono
parents:
diff changeset
1238
kono
parents:
diff changeset
1239 IEEE infinite and Nan values are produced as appropriate.
kono
parents:
diff changeset
1240
kono
parents:
diff changeset
1241 *
kono
parents:
diff changeset
1242 "The value of the angle threshold, within which certain
kono
parents:
diff changeset
1243 elementary functions, complex arithmetic operations, and complex
kono
parents:
diff changeset
1244 elementary functions yield results conforming to a maximum relative
kono
parents:
diff changeset
1245 error bound. See G.2.4(10)."
kono
parents:
diff changeset
1246
kono
parents:
diff changeset
1247 Information on this subject is not yet available.
kono
parents:
diff changeset
1248
kono
parents:
diff changeset
1249 *
kono
parents:
diff changeset
1250 "The accuracy of certain elementary functions for
kono
parents:
diff changeset
1251 parameters beyond the angle threshold. See G.2.4(10)."
kono
parents:
diff changeset
1252
kono
parents:
diff changeset
1253 Information on this subject is not yet available.
kono
parents:
diff changeset
1254
kono
parents:
diff changeset
1255 *
kono
parents:
diff changeset
1256 "The result of a complex arithmetic operation or complex
kono
parents:
diff changeset
1257 elementary function reference in overflow situations, when the
kono
parents:
diff changeset
1258 ``Machine_Overflows`` attribute of the corresponding real type is
kono
parents:
diff changeset
1259 ``False``. See G.2.6(5)."
kono
parents:
diff changeset
1260
kono
parents:
diff changeset
1261 IEEE infinite and Nan values are produced as appropriate.
kono
parents:
diff changeset
1262
kono
parents:
diff changeset
1263 *
kono
parents:
diff changeset
1264 "The accuracy of certain complex arithmetic operations and
kono
parents:
diff changeset
1265 certain complex elementary functions for parameters (or components
kono
parents:
diff changeset
1266 thereof) beyond the angle threshold. See G.2.6(8)."
kono
parents:
diff changeset
1267
kono
parents:
diff changeset
1268 Information on those subjects is not yet available.
kono
parents:
diff changeset
1269
kono
parents:
diff changeset
1270 *
kono
parents:
diff changeset
1271 "Information regarding bounded errors and erroneous
kono
parents:
diff changeset
1272 execution. See H.2(1)."
kono
parents:
diff changeset
1273
kono
parents:
diff changeset
1274 Information on this subject is not yet available.
kono
parents:
diff changeset
1275
kono
parents:
diff changeset
1276 *
kono
parents:
diff changeset
1277 "Implementation-defined aspects of pragma
kono
parents:
diff changeset
1278 ``Inspection_Point``. See H.3.2(8)."
kono
parents:
diff changeset
1279
kono
parents:
diff changeset
1280 Pragma ``Inspection_Point`` ensures that the variable is live and can
kono
parents:
diff changeset
1281 be examined by the debugger at the inspection point.
kono
parents:
diff changeset
1282
kono
parents:
diff changeset
1283 *
kono
parents:
diff changeset
1284 "Implementation-defined aspects of pragma
kono
parents:
diff changeset
1285 ``Restrictions``. See H.4(25)."
kono
parents:
diff changeset
1286
kono
parents:
diff changeset
1287 There are no implementation-defined aspects of pragma ``Restrictions``. The
kono
parents:
diff changeset
1288 use of pragma ``Restrictions [No_Exceptions]`` has no effect on the
kono
parents:
diff changeset
1289 generated code. Checks must suppressed by use of pragma ``Suppress``.
kono
parents:
diff changeset
1290
kono
parents:
diff changeset
1291 *
kono
parents:
diff changeset
1292 "Any restrictions on pragma ``Restrictions``. See
kono
parents:
diff changeset
1293 H.4(27)."
kono
parents:
diff changeset
1294
kono
parents:
diff changeset
1295 There are no restrictions on pragma ``Restrictions``.