comp.lang.ada
 help / color / mirror / Atom feed
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




  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