From: Chris <enderx12@my-deja.com>
Subject: Interface to C; Storage_Error
Date: Tue, 19 Dec 2000 22:28:11 GMT
Date: 2000-12-19T22:28:11+00:00 [thread overview]
Message-ID: <91ondg$lpu$1@nnrp1.deja.com> (raw)
Hi, all... after a long hiatus in the C++ world, I'm finally getting a
chance to do some more Ada work, at my own suggestion. The ability to
write production-quality multithread code an order of magnitude faster
in Ada might have something to do with it.
Anyway, I'm having an irritating problem interfacing with a vendor C
library. The relevant stuff:
typedef void* SRV_HANDLE;
typedef void* CTX_HANDLE;
typedef void* RSLT_HANDLE;
typedef void* FLT_HANDLE;
int GetNextVal(SRV_HANDLE srv, RSLT_HANDLE rslt, CTX_HANDLE *ctx,
char* name, double* dbl, FLT_HANDLE flt);
My take on it in Ada (GNAT 3.13p) is:
type Srv_Handle is new System.Address;
-- same for the other handles
procedure GetNextVal(Ret : out int;
Srv : Srv_Handle;
Rslt : Rslt_Handle;
Ctx : access Ctx_Handle;
Name : out chars_ptr;
Dbl : access double;
Flt : Flt_Handle);
pragma Import(C, GetNextVal);
pragma Import_Valued_Procedure(GetNextVal);
Both Name and Dbl are supposedly set/alloc'd by the library. When I
call this, it raises Storage_Error on the library call. I am totally
stumped as to what to fix, or even where to look. Is my Ada declaration
even remotely correct?
Other suggestions?
Many thanks.
--chris
Sent via Deja.com
http://www.deja.com/
next reply other threads:[~2000-12-19 22:28 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2000-12-19 22:28 Chris [this message]
2000-12-20 3:52 ` Interface to C; Storage_Error Ted Dennison
2000-12-20 8:55 ` Robert Dewar
2000-12-20 11:39 ` Thomas Wolf
2000-12-20 17:05 ` Chris
2000-12-20 23:57 ` Chris
2000-12-21 15:35 ` Thomas Wolf
2000-12-21 18:07 ` Chris
2000-12-21 3:25 ` DuckE
2000-12-21 11:38 ` Robert Dewar
2000-12-23 2:45 ` DuckE
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox