comp.lang.ada
 help / color / mirror / Atom feed
* import a C function returning char *
@ 1999-02-03  0:00 Stephen Leake
  1999-02-03  0:00 ` Samuel Tardieu
  1999-02-03  0:00 ` Tucker Taft
  0 siblings, 2 replies; 4+ messages in thread
From: Stephen Leake @ 1999-02-03  0:00 UTC (permalink / 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




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~1999-02-04  0:00 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-02-03  0:00 import a C function returning char * Stephen Leake
1999-02-03  0:00 ` Samuel Tardieu
1999-02-04  0:00   ` Stephen Leake
1999-02-03  0:00 ` Tucker Taft

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox