Lib_RE := RE_Put_Image_Access_Prot_Subp;
elsif Is_Access_Subprogram_Type (Base_Type (U_Type)) then
Lib_RE := RE_Put_Image_Access_Subp;
+ elsif Is_Extended_Access_Type (Base_Type (U_Type)) then
+ pragma Assert (No (P_Size));
+ Lib_RE := RE_Put_Image_Extended_Access_Pointer;
elsif P_Size = System_Address_Size then
Lib_RE := RE_Put_Image_Thin_Pointer;
else
Fat_Instance (S, X, "access");
end Put_Image_Fat_Pointer;
+ procedure Ext_Acc_Instance is new
+ Put_Image_Pointer (Byte_String, Ext_Access_Pointer);
+
+ procedure Put_Image_Extended_Access_Pointer
+ (S : in out Sink'Class; X : Ext_Access_Pointer)
+ is
+ begin
+ Ext_Acc_Instance (S, X, "extended access");
+ end Put_Image_Extended_Access_Pointer;
+
procedure Put_Image_Access_Subp (S : in out Sink'Class; X : Thin_Pointer) is
begin
Thin_Instance (S, X, "access subprogram");
type Byte_String is array (Positive range <>) of Byte with Alignment => 1;
type Thin_Pointer is access all Byte with Storage_Size => 0;
type Fat_Pointer is access all Byte_String with Storage_Size => 0;
+ type Ext_Access_Pointer is access all Byte_String with Storage_Size => 0;
+
procedure Put_Image_Thin_Pointer (S : in out Sink'Class; X : Thin_Pointer);
+ -- Print "(access)" followed by "null", or the address of the designated
+ -- object as an unsigned hexadecimal integer.
+
procedure Put_Image_Fat_Pointer (S : in out Sink'Class; X : Fat_Pointer);
- -- Print "null", or the address of the designated object as an unsigned
- -- hexadecimal integer.
+ -- Print "(access)" followed by "null", or the address of the designated
+ -- object as an unsigned hexadecimal integer.
+
+ procedure Put_Image_Extended_Access_Pointer
+ (S : in out Sink'Class; X : Ext_Access_Pointer);
+ -- Print "(extended access)" followed by "null", or the address of the
+ -- designated object as an unsigned hexadecimal integer.
procedure Put_Image_Access_Subp (S : in out Sink'Class; X : Thin_Pointer);
-- For access-to-subprogram types
RE_Put_Image_Long_Long_Long_Unsigned, -- System.Put_Images
RE_Put_Image_Thin_Pointer, -- System.Put_Images
RE_Put_Image_Fat_Pointer, -- System.Put_Images
+ RE_Put_Image_Extended_Access_Pointer, -- System.Put_Images
RE_Put_Image_Access_Subp, -- System.Put_Images
RE_Put_Image_Access_Prot_Subp, -- System.Put_Images
RE_Put_Image_String, -- System.Put_Images
RE_Put_Image_Long_Long_Long_Unsigned => System_Put_Images,
RE_Put_Image_Thin_Pointer => System_Put_Images,
RE_Put_Image_Fat_Pointer => System_Put_Images,
+ RE_Put_Image_Extended_Access_Pointer => System_Put_Images,
RE_Put_Image_Access_Subp => System_Put_Images,
RE_Put_Image_Access_Prot_Subp => System_Put_Images,
RE_Put_Image_String => System_Put_Images,