System_Name : constant Name := implementation-defined;
Max_Int : constant := root_integer'Last;
Max_Nonbinary_Modulus : constant := implementation-defined;
Max_Digits : constant := implementation-defined;
Fine_Delta : constant := implementation-defined;
Null_Address : constant Address;
Word_Size : constant := implementation-defined * Storage_Unit;
Memory_Size : constant := implementation-defined;
function "<" (Left, Right : Address) return Boolean;
function "<="(Left, Right : Address) return Boolean;
function ">" (Left, Right : Address) return Boolean;
function ">="(Left, Right : Address) return Boolean;
function "=" (Left, Right : Address) return Boolean;
-- function "/=" (Left, Right : Address) return Boolean;
--"/=" is implicitly defined
pragma Convention(Intrinsic, "<");
... --and so on for all language-defined subprograms in this package
type Bit_Order is (High_Order_First, Low_Order_First);
Default_Bit_Order : constant Bit_Order;
subtype Any_Priority is Integer range implementation-defined;
subtype Priority is Any_Priority range Any_Priority'First .. implementation-defined;
subtype Interrupt_Priority is Any_Priority range Priority'Last+1 .. Any_Priority'Last;
... -- not specified by the language
end System;
pragma Preelaborate(System.Storage_Elements);
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;
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;
return Storage_Offset;
function To_Address(Value : Integer_Address) return Address;
function To_Integer(Value : Address) return Integer_Address;
-- ...and so on for all language-defined subprograms declared in this package.
end System.Storage_Elements;
type Object(<>) is limited private;
package System.Address_To_Access_Conversions is
pragma Preelaborate(Address_To_Access_Conversions);
function To_Pointer(Value : Address) return Object_Pointer;
function To_Address(Value : Object_Pointer) return Address;
pragma Convention(Intrinsic, To_Address);
end System.Address_To_Access_Conversions;