From: "Beard, Frank" <beardf@spawar.navy.mil>
To: "'comp.lang.ada@ada.eu.org'" <comp.lang.ada@ada.eu.org>
Subject: RE: Variable length raw-byte data
Date: Mon, 11 Dec 2000 22:30:12 -0500
Date: 2000-12-11T22:30:12-05:00 [thread overview]
Message-ID: <B6A1A9B09E52D31183ED00A0C9E0888C469933@nctswashxchg.nctswash.navy.mil> (raw)
Try looking at Interfaces.C and Interfaces.C.Pointers.
If it's string data, look at Interfaces.C.Strings.
I've used this successfully to interface to C.
Or
In your interface routine, receive the pointer as an
address, and then unchecked convert it.
type Byte is mod 2**8;
type Byte_Array is array (positive range <>) of Byte;
type Byte_Array_Pointer is access Byte_Array;
buffer_Address : System.Address;
buffer_Pointer : Byte_Array_Pointer;
begin
...
status := Get_C_Stuff(length => length,
buffer_Address => buffer_Address);
if (length > 0) then
declare
subtype Constrained_Byte_Array is Byte_Array(1..length);
function To_Buffer_Pointer is
new Ada.Unchecked_Conversion(System.Address,Constrained_Byte_Array);
begin
buffer_Pointer := To_Buffer_Pointer(buffer_Address);
end;
...
end if;
...
Something like that. (Constructive corrections only please!)
I haven't done it this way in a while.
Frank
-----Original Message-----
From: Julian Morrison [mailto:julian.morrison@virgin.net]
Sent: Monday, December 11, 2000 2:38 PM
To: comp.lang.ada@ada.eu.org
Subject: Variable length raw-byte data
I'm trying to shim to a C library that returns some data as a length in
bytes and a pointer to the first byte. The length is not known at compile
time. Is there any way I can morph this into an array of mod 2**8? I'm
using the latest Linux GNAT.
_______________________________________________
comp.lang.ada mailing list
comp.lang.ada@ada.eu.org
http://ada.eu.org/mailman/listinfo/comp.lang.ada
next reply other threads:[~2000-12-12 3:30 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2000-12-12 3:30 Beard, Frank [this message]
2000-12-12 5:54 ` Variable length raw-byte data tmoran
-- strict thread matches above, loose matches on Subject: below --
2000-12-13 20:39 Beard, Frank
2000-12-14 13:30 ` Robert Dewar
2000-12-13 2:56 Beard, Frank
2000-12-13 15:52 ` Robert Dewar
2000-12-13 18:23 ` Larry Kilgallen
2000-12-13 19:26 ` Robert Dewar
2000-12-12 21:11 Beard, Frank
2000-12-12 21:00 Beard, Frank
2000-12-13 15:48 ` David Botton
2000-12-13 15:51 ` Lutz Donnerhacke
2000-12-13 19:34 ` Robert Dewar
2000-12-14 8:54 ` Lutz Donnerhacke
2000-12-13 23:10 ` Jeff Carter
2000-12-11 19:38 Julian Morrison
2000-12-12 5:19 ` Jeff Carter
2000-12-13 0:50 ` Robert Dewar
2000-12-13 8:56 ` Tristan Gingold
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox