One option could be to create a small shared library that you compile for
each platform that just exported the member offsets...
https://www.embedded.com/design/prototyping-and-development/4024941/Learn-a-new-trick-with-the-offsetof--macro

You first FFI to that read struct member offsets and dynamically create the
definitions for your target library.
I haven't tried it in practice.

cheers -ben

P.S. Occasionally I dream about compilers being able to embed a
pre-compiled header declaration block in the library for FFI users to
iterate...
https://clang.llvm.org/docs/PCHInternals.html#declarations-block


On Sun, 2 Dec 2018 at 17:04, Alistair Grant <akgrant0...@gmail.com> wrote:

> Hi Phil and Esteban,
>
> Thanks for your replies.
>
> I've realised that I badly worded my question.  By "opaque" I meant that
> it is difficult to determine the underlying type of the
> variables, but I still want to be access the values of typeA and typeB
> in my example structure.
>
> Phil, I had a look through your XMPP code, if it does show an example of
> actually retrieving a structure member such as "typeA" in my example, my
> apologies and please let me know where it is.
>
> Thanks again,
> Alistair
>
>
> On Fri, 30 Nov 2018 at 23:46, Esteban Lorenzano <esteba...@gmail.com>
> wrote:
> >
> > On 30 Nov 2018, at 19:50, phil--- via Pharo-users <
> pharo-users@lists.pharo.org> wrote:
> >
> > From: "p...@highoctane.be" <p...@highoctane.be>
> > Subject: Re: [Pharo-users] UFFI and opaque(ish) types
> > Date: 30 November 2018 at 19:50:03 CET
> > To: Any question about pharo is welcome <pharo-users@lists.pharo.org>
> >
> >
> > Inherit from FFIOpaqueObject
> >
> > + initialize TypeMap
> >
> > I have a few here:
> >
> > https://github.com/Pharophile/XmppTalk
> >
> >
> https://github.com/Pharophile/XmppTalk/tree/master/packages/XmppTalk-ExternalStructures.package
> >
> https://github.com/Pharophile/XmppTalk/blob/master/packages/XmppTalk-LibStrophe.package/StropheLib.class/class/initializeTypeMap.st
> >
> > HTH
> > Phil
> >
> >
> > Yes, as he says/shows :)
> >
> > Esteban
>
> > On Fri, Nov 30, 2018 at 2:39 PM Alistair Grant <akgrant0...@gmail.com>
> wrote:
> >>
> >> How are opaque(ish) types normally handled in UFFI (or FFI)?
> >>
> >> E.g. if I want to use libstuff which defines the following structure:
> >>
> >> struct stuffstruct {
> >>     typeA a;
> >>     typeB b;
> >>     } stufftype;
> >>
> >>
> >> I might know they're integers, but not the size, signed vs. unsigned,
> >> etc.
> >>
> >> The definitions of typeA and typeB are buried in multiple layers of
> >> header files, dependent on #if tests, can be different sizes on
> >> different platforms (e.g. Linux vs. MacOS), etc.?
> >>
> >> Is this documented somewhere?
> >>
> >> Thanks,
> >> Alistair
>
>

Reply via email to