From 07e7b817c59c3dce263bfb89b51248316c343f0e Mon Sep 17 00:00:00 2001 From: Jedidiah Barber Date: Mon, 7 Oct 2024 19:51:28 +1300 Subject: Now using Integer_Address for C interface --- src/portaudio.ads | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'src/portaudio.ads') diff --git a/src/portaudio.ads b/src/portaudio.ads index 2744047..282f994 100644 --- a/src/portaudio.ads +++ b/src/portaudio.ads @@ -11,7 +11,7 @@ private with Ada.Finalization, Interfaces.C.Strings, - System; + System.Storage_Elements; package Portaudio is @@ -190,9 +190,27 @@ package Portaudio is private + package Storage renames System.Storage_Elements; + use type Interfaces.C.size_t, Storage.Integer_Address; + + + Null_Pointer : constant Storage.Integer_Address := Storage.To_Integer (System.Null_Address); + + pragma Linker_Options ("-lportaudio"); + function c_pointer_size + return Interfaces.C.size_t; + pragma Import (C, c_pointer_size, "c_pointer_size"); + + -- If this fails then we are on an architecture that for whatever reason + -- has significant problems interfacing between C and Ada + pragma Assert + (c_pointer_size * Interfaces.C.CHAR_BIT = Storage.Integer_Address'Size, + "Size of C void pointers and size of Ada address values do not match"); + + type C_Version_Info is record My_Major : Interfaces.C.int; My_Minor : Interfaces.C.int; -- cgit