PowerAda 44

From OC Systems Wiki!
< PowerAda:APPENDIX C. Implementation Characteristics‎ | Annex M
Revision as of 10:03, 24 April 2019 by imported>WikiVisor
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

(44) Any restrictions placed upon representation items.

See 13.1(20).


enumeration_representation_clause
Representation clauses for enumeration types are supported for all types except for types derived from the predefined type BOOLEAN. The value specified for the enumeration type must fit in 32 bits (i.e., must be in the range SYSTEM.MIN_INT ..SYSTEM.MAX_INT).
record_representation_clause
No restrictions are placed on record_representation_clauses.
Component_Size clause
Component_Size clauses are supported in record representation clauses as described in Section 13.5.1 of the RM. Component_Size clauses are not supported in a record_definition.
External_Tag clause
There is no practical limit to the size of a user specified external tag.
Small clause
The value of the expression of the length clause must not be greater than the delta attribute of the first named subtype.
Bit_Order clause
The 'bit_order attribute can only be set to SYSTEM.HIGH_ORDER_FIRST.
Storage_Size clause
Storage_Size clauses are supported for both task and access types. The only restriction is that the size specified must be available from the global heap.
Read clause
The 'Read clause has no additional restrictions other than those specified in 13.13.2(36).
Write clause
The 'Write clause has no additional restrictions other than those specified in 13.13.2(36).
Input clause
The 'Input clause has no additional restrictions other than those specified in 13.13.2(36).
Output clause
The 'Output clause has no additional restrictions other than those specified in 13.13.2(36).
Machine_Radix clause
The only allowed value of the Machine_Radix attribute is 2.
pragma Pack
No restrictions are placed on pragma Pack.
pragmas Import, Export, and Convention (when applied to a type)
There are no restrictions on the use of these pragmas.
pragmas Atomic and Volatile (when applied to a type)
Pragmas Atomic and Volatile have no additional restrictions other than those specified in annex C.6.
pragmas Atomic_Components and Volatile_Components (when applied to an array type)
Pragmas Atomic_Components and Volatile_Components have no additional restrictions other than those specified in annex C.6.
pragma Discard_Names (when applied to an enumeration or tagged type)
There are no additional restrictions for pragma DISCARD_NAMES over what is specified in annex C.5.
Alignment clause (when applied to a first subtype)
The only allowed alignment clause values are 1, 2, 4, and 8 (bytes).
Size clause (when applied to a first subtype)
In a size specification of the formfor T'SIZE use Expression;

where T is a scalar type, the expression may not be greater than 32. That is, the maximum space that may be allocated to scalar objects is 32 bits.

Address clause
Address clauses are supported for objects and task entries only. Address clauses are also supported for subprograms but the address specified must be of a user initialized function descriptor.
Size clause (when applied to an object)
There are no additional restrictions for size clauses.
pragmas Import, Export, and Convention (when applied to anything other than a type)
There are no restrictions on the use of these pragmas. However, the user is strongly discouraged from applying pragma EXPORT to Ada subprograms which have parameters or function results of an unconstrained type, since only the most pessimistic assumptions may be made about the attributes of the actual parameters.
pragmas Atomic and Volatile (when applied to an object or a component)
Objects to which an Atomic or Volatile pragma are applied must be equal to or less then 32 bits in size..
pragmas Atomic_Components and Volatile_Components (when applied to an array object)
The size of a component to which pragma Atomic or Volatile are applied must be 32 bits or less..
pragma Discard_Names (when applied to an exception)
There are no additional restrictions for Discard_Names..
pragma Asynchronous (applies to procedures)
Pragma Asynchronous is not yet implemented.