Contents Index Search Previous Next
13.7.1 The Package System.Storage_Elements
The following language-defined
library package exists:
package System.Storage_Elements is
type Storage_Offset is range implementation-defined;
subtype Storage_Count is Storage_Offset range 0..Storage_Offset'Last;
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;
function "+"(Left : Address; Right : Storage_Offset)
function "+"(Left : Storage_Offset; Right : Address)
function "-"(Left : Address; Right : Storage_Offset)
function "-"(Left, Right : Address)
function "mod"(Left : Address; Right : Storage_Offset)
-- Conversion to/from integers:
type Integer_Address is implementation-defined;
function To_Address(Value : Integer_Address) return Address;
function To_Integer(Value : Address) return Integer_Address;
pragma Convention(Intrinsic, "+");
-- ...and so on for all language-defined subprograms declared in this package.
Storage_Element represents a storage element.
Storage_Offset represents an offset in storage elements. Storage_Count
represents a number of storage elements.
represents a contiguous sequence of storage elements.
Integer_Address is a (signed or modular) integer
subtype. To_Address and To_Integer convert back and forth between this
type and Address.
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).
Package System.Storage_Elements may be declared
Operations in System and its children should
reflect the target environment semantics as closely as is reasonable.
For example, on most machines, it makes sense for address arithmetic
to ``wrap around.''
Operations that do not make sense
should raise Program_Error.
Contents Index Search Previous Next Legal