comp.lang.ada
 help / color / mirror / Atom feed
From: Stephen Leake <Stephen.Leake@gsfc.nasa.gov>
Subject: import a C function returning char *
Date: 1999/02/03
Date: 1999-02-03T00:00:00+00:00	[thread overview]
Message-ID: <ud83r4c6w.fsf@gsfc.nasa.gov> (raw)

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?

-- Stephen Leake




             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 Stephen Leake [this message]
1999-02-03  0:00 ` import a C function returning char * Tucker Taft
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