Contents   Index   Previous   Next


13.7.1 The Package System.Storage_Elements

Static Semantics

1
   The following language-defined library package exists:
2
package System.Storage_Elements is
   pragma Preelaborate(System.Storage_Elements);
3
   type Storage_Offset is range implementation-defined;
4
   subtype Storage_Count is Storage_Offset range 0..Storage_Offset'Last;
5
   type Storage_Element is mod implementation-defined;
   for Storage_Element'Size use Storage_Unit;
   type Storage_Array is array
     (Storage_Offset range <>) of aliased Storage_Element;
   for Storage_Array'Component_Size use Storage_Unit;
6
   -- Address Arithmetic:
7
   function "+"(Left : Address; Right : Storage_Offset)
     return Address;
   function "+"(Left : Storage_Offset; Right : Address)
     return Address;
   function "-"(Left : Address; Right : Storage_Offset)
     return Address;
   function "-"(Left, Right : Address)
     return Storage_Offset;
8
   function "mod"(Left : Address; Right : Storage_Offset)
     return Storage_Offset;
9
   -- Conversion to/from integers:
10
   type Integer_Address is implementation-defined;
   function To_Address(Value : Integer_Address) return Address;
   function To_Integer(Value : Address) return Integer_Address;
11
   pragma Convention(Intrinsic, "+");
      -- ...and so on for all language-defined subprograms declared in this package.
end System.Storage_Elements;
12
    Storage_Element represents a storage element. Storage_Offset represents an offset in storage elements. Storage_Count represents a number of storage elements. Storage_Array represents a contiguous sequence of storage elements.
13
    Integer_Address is a (signed or modular) integer subtype. To_Address and To_Integer convert back and forth between this type and Address.

Implementation Requirements

14
    Storage_Offset'Last shall be greater than or equal to Integer'Last or the largest possible storage offset, whichever is smaller. Storage_Offset'First shall be <= (-Storage_Offset'Last).

Implementation Permissions

15
    Package System.Storage_Elements may be declared pure.

Implementation Advice

16
    Operations in System and its children should reflect the target environment semantics6.0em; margin-top: 0em; margin-bottom: 0.5em} UL.CodeIndentedNestedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 8.0em; margin-right: 8.0em; margin-top: 0em; margin-bottom: 0.5em} UL.SyntaxIndentedBulleted {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; margin-top: 0em; margin-bottom: 0.5em} UL.NotesBulleted {font-family: "Times New Roman", Times, serif; margin-left: 4.0em; margin-right: 4.0em; ma