generic type User_Data_Type (<>) is private; with procedure Destroy (Data : in out User_Data_Type); package User_Data_Closure is
type Data_Access is access all User_Data_Type;
type Internal_Data is record Func : System.Address; -- The actual user callback Data : Data_Access; end record;
type Internal_Data_Access is access all Internal_Data;
procedure Destroy
( | Data | : in out User_Data_Type); |
function Convert is new Ada.Unchecked_Conversion
( | System.Address, Internal_Data_Access); |
function Build
( | Func | : System.Address; |
Data | : User_Data_Type) return System.Address; |