Руководство по Ada (Ada 2022)
13.7.2 Пакет System.Address_To_Access_Conversions
Статические Семантика
Существует следующий определяемый языком обобщённый пакет библиотеки:
generic
type Object(<>) is limited private;
package System.Address_To_Access_Conversions
with Preelaborate, Nonblocking, Global => in out synchronized is
type Object(<>) is limited private;
package System.Address_To_Access_Conversions
with Preelaborate, Nonblocking, Global => in out synchronized is
type Object_Pointer is access all Object;
function To_Pointer(Value : Address) return Object_Pointer
with Convention => Intrinsic;
function To_Address(Value : Object_Pointer) return Address
with Convention => Intrinsic;
function To_Pointer(Value : Address) return Object_Pointer
with Convention => Intrinsic;
function To_Address(Value : Object_Pointer) return Address
with Convention => Intrinsic;
end System.Address_To_Access_Conversions;
Подпрограммы To_Pointer и To_Address преобразуют значения между типами Object_Pointer и Address. To_Pointer(X'Address) равно X'Unchecked_Access для любого X, допускающего Unchecked_Access. To_Pointer(Null_Address) возвращает null. Для других адресов поведение не определено. To_Address(null) возвращает Null_Address. To_Address(Y), где Y /= null, возвращает Y.all'Address.
Разрешения на реализацию
Реализация может установить ограничения на экземпляры Address_To_Access_Conversions.