From: Tucker Taft <stt@averstar.com>
To: Stephen Leake <Stephen.Leake@gsfc.nasa.gov>
Subject: Re: import a C function returning char *
Date: 1999/02/03
Date: 1999-02-03T00:00:00+00:00 [thread overview]
Message-ID: <36B89E5D.DC082B5B@averstar.com> (raw)
In-Reply-To: ud83r4c6w.fsf@gsfc.nasa.gov
Stephen Leake wrote:
>
> I need to import the C function:
>
> char *sbs_read_error (void);
>
> I'd like to use the facilities in Interfaces.C, but since there is no
> char_ptr type, I'm not clear what the correct method is. LRM B.3 (63
> .. 75) talk about various parameter passing modes, but there's no
> discussion of function results.
>
> Since all parameters of an array type are passed by pointers, I could
> assume function results are also passed by pointer, and try:
>
> declare
>
> function Sbs_Read_Error return Interfaces.C.char_array;
> pragma Import (C, Sbs_Read_Error, "sbs_read_error");
>
> Result : String (1 .. 30);
> Result_Last : Natural;
>
> begin
>
> Interfaces.C.To_Ada (Sbs_Read_Error, Result, Result_Last);
>
> Text_Io.Put_Line (Result (1 .. Result_Last));
>
> end;
>
> Is this going to work (I'll get around to compiling this soon)? I'm
> using GNAT 3.11p and ObjectAda 7.12 on Windows NT; what about other
> Ada compilers?
This should work on ObjectAda, I believe.
> -- Stephen Leake
--
-Tucker Taft stt@averstar.com http://www.averstar.com/~stt/
Technical Director, Distributed IT Solutions (www.averstar.com/tools)
AverStar (formerly Intermetrics, Inc.) Burlington, MA USA
next prev parent reply other threads:[~1999-02-03 0:00 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
1999-02-03 0:00 import a C function returning char * Stephen Leake
1999-02-03 0:00 ` Tucker Taft [this message]
1999-02-03 0:00 ` Samuel Tardieu
1999-02-04 0:00 ` Stephen Leake
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox