From: "M. A. Alves" <maa@liacc.up.pt>
To: <comp.lang.ada@ada.eu.org>
Subject: Re: Ada Address = C pointer ?
Date: Tue, 30 Oct 2001 12:53:01 +0000 (GMT)
Date: 2001-10-30T12:53:01+00:00 [thread overview]
Message-ID: <mailman.1004446456.21280.comp.lang.ada@ada.eu.org> (raw)
In-Reply-To: <slrn9tt5m8.f2n.lutz@belenus.iks-jena.de>
On Tue, 30 Oct 2001, Lutz Donnerhacke wrote:
> How about:
>
> with Interfaces.C.Pointers;
>
> procedure t is
> type long_array is array (Integer range <>) of aliased Interfaces.C.long;
>
> package long_pointers is new Interfaces.C.Pointers (
> Index => Integer,
> Element => Interfaces.C.long,
> Element_Array => long_array,
> Default_Terminator => 0
> );
>
> function get (a : long_pointers.Pointer; i : Interfaces.C.ptrdiff_t)
> return Interfaces.C.long is
>
> use type long_pointers.Pointer;
>
> v : long_array (1 .. 1) :=
> long_pointers.Value (a + i, Interfaces.C.ptrdiff_t (1));
> begin
> return v (1);
> end get;
> pragma Inline (get);
>
> -- real work starts here
>
> function get_long_array return long_pointers.Pointer;
> pragma Import (C, get_long_array);
>
> my_array : constant long_pointers.Pointer := get_long_array;
> begin
> ... := get (my_array, 4);
> end t;
Seems right. The C.Pointers tutorial I was missing, thanks a lot.
However, I am still not sure of the equivalence between null (a value of
Pointer) and NULL (C), i.e. is it garanteed that if the C function returns
NULL get_long_array returns null?
--
,
M A R I O data miner, LIACC, room 221 tel 351+226078830, ext 121
A M A D O Rua Campo Alegre, 823 fax 351+226003654
A L V E S P-4150 PORTO, Portugal mob 351+939354002
next prev parent reply other threads:[~2001-10-30 12:53 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-10-26 18:53 Ada Address = C pointer ? M. A. Alves
2001-10-26 18:09 ` Lutz Donnerhacke
2001-10-26 21:06 ` Florian Weimer
2001-10-26 19:34 ` Mark Johnson
2001-10-26 23:39 ` tmoran
2001-10-29 13:07 ` M. A. Alves
2001-10-29 20:19 ` Matthew Heaney
2001-10-29 23:15 ` tmoran
2001-10-30 10:30 ` M. A. Alves
2001-10-30 19:53 ` tmoran
2001-10-31 13:01 ` M. A. Alves
2001-10-31 14:44 ` Marin David Condic
2001-10-30 9:58 ` M. A. Alves
2001-10-30 12:02 ` Lutz Donnerhacke
2001-10-30 12:53 ` M. A. Alves [this message]
2001-10-30 12:56 ` Lutz Donnerhacke
2001-10-30 14:26 ` M. A. Alves
2001-10-30 14:19 ` Matthew Heaney
2001-10-30 14:41 ` M. A. Alves
2001-10-30 17:10 ` Mark Johnson
2001-10-30 18:01 ` M. A. Alves
2001-10-30 20:23 ` tmoran
2001-10-31 13:13 ` M. A. Alves
2001-10-30 19:53 ` tmoran
2001-10-29 23:15 ` tmoran
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox