comp.lang.ada
 help / color / mirror / Atom feed
From: Maciej Sobczak <see.my.homepage@gmail.com>
Subject: Interfacing to C: API with structures but without binary layout
Date: Tue, 12 Jun 2007 13:09:43 -0700
Date: 2007-06-12T13:09:43-07:00	[thread overview]
Message-ID: <1181678983.377288.225770@d30g2000prg.googlegroups.com> (raw)

Another problem with interfacing: consider a C function that expects
some data structure that is defined in terms of C struct definition,
but without clear binary layout.
A motivating example might be the connect(2) system call, which
expects the sockaddr address structure. The only thing we know (by the
standard) about this structure is that it contains *at least* some
given fields. Depending on the actual system, however, it might
contain some more fields for implementation-defined reasons, or they
might be in different order, etc.

Now, in order to call such a function we need access to the
appropriate header file, where the actual structure definition is
provided. But Ada doesn't understand C headers and pragma Import(C,
connect) will not be enough.

A straightforward solution is to create a thin wrapper (in C) for the
given function that will expect parameters in well-defined form and
layout and just forward them to the interesting system call. This
wrapper will have to be compiled separately on each target system,
picking the actual structure definition from the appropriate system
header. Ada can then call the wrapper function.

Is this THE solution?

--
Maciej Sobczak
http://www.msobczak.com/




             reply	other threads:[~2007-06-12 20:09 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-12 20:09 Maciej Sobczak [this message]
2007-06-12 20:19 ` Interfacing to C: API with structures but without binary layout Lutz Donnerhacke
2007-06-12 22:36 ` Jeffrey Creem
replies disabled

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