[Pharo-users] [squeak-dev] FFI syntax

Nicolai Hess nicolaihess at web.de
Thu Oct 16 12:00:28 UTC 2014


2014-10-16 11:53 GMT+02:00 Annick Fron <list at afceurope.com>:

> Hi Eliot,
>
> Thank you. Meanwhile I have tried to use only pointers to structs by
> writing some C code.
>
> I confirm that in Pharo you can load FFI and OldAlien in the
> ConfigurationBrowser.
> Yet it seems both FFI and Alien versions in the ConfigurationBrowser are
> behind the squeak repositories.
> I did not try if  the new versions worked.
>
> I have posted some time ago an example for X11 windows on Linux, and I
> never got an answer why it was failing.
>

actually I did answer ;)
http://forum.world.st/FFI-on-Linux-again-td4780236.html
and  you changed the argument "ourWindow" to "ourWindow xid" like I
proposed. But yes,
actually this didn't help, I guess. You still get the error "bad argument" ?

My next bet would be:
Maybe we cannot mix Alien calls with (old) FFI structures (display is a
externalstructure defined for FFI).




>
> It was the following
> testGetOurWindowLocation
>   "self new testGetOurWindowLocation"
>
>   | display ourWindow aParent anX anY aWidth aHeight aBorderWidth aDepth |
>   display := X11Display XOpenDisplay: nil.
>   ourWindow := display ourWindow.
>   (Alien lookup: 'XGetGeometry' inLibrary: 'X11')
>       primFFICallResult: nil
>       withArguments:
>           {display.
>           ourWindow xid.
>           (aParent := Alien new: 4).
>           (anX := Alien new: 4).
>           (anY := Alien new: 4).
>           (aWidth := Alien new: 4).
>           (aHeight := Alien new: 4).
>           (aBorderWidth := Alien new: 4).
>           (aDepth := Alien new: 4)}.
>   (anX unsignedLongAt: 1) inspect.
>
> Has anybody looked at Wayland (replacement of X11) on Linux ?
>
> Annick
>
> Le 15 oct. 2014 à 19:18, Eliot Miranda <eliot.miranda at gmail.com> a écrit :
>
> Hi Annick,
>
> On Wed, Oct 15, 2014 at 7:57 AM, Annick Fron <list at afceurope.com> wrote:
>
>> What is the syntax to describe an external structure with an array of int
>> of size 6 ?
>>
>> I know only the syntax
>>
>> fields
>> ^#(
>> (param1 ‘long’)
>> (param2 ‘long’)
>> (param3 ‘long’)
>> (param4 ‘long’)
>> (param5 ‘long’)
>> (param6 ‘long’)
>> )
>>
>
> Hmm.  Good question.  It seems you can write
>
> fields
> "IAXCallStateEvent defineFields"
> ^#(
> (type 'long')
> (callNo 'long')
> (state 'long')
> (format 'long')
> (vformat 'long')
> (remote 'char[256]')
> (remoteName 'char[256]')
> (local 'char[256]')
> (localContext 'char[256]')
> )
>
> But as a community we really need to document the FFI more thoroughly :-/
>
>
>>
>> Annick
>>
>
>
>
> --
> best,
> Eliot
>
> Le 15 oct. 2014 à 19:18, Eliot Miranda <eliot.miranda at gmail.com> a écrit :
>
> Hi Annick,
>
> On Wed, Oct 15, 2014 at 7:57 AM, Annick Fron <list at afceurope.com> wrote:
>
>> What is the syntax to describe an external structure with an array of int
>> of size 6 ?
>>
>> I know only the syntax
>>
>> fields
>> ^#(
>> (param1 ‘long’)
>> (param2 ‘long’)
>> (param3 ‘long’)
>> (param4 ‘long’)
>> (param5 ‘long’)
>> (param6 ‘long’)
>> )
>>
>
> Hmm.  Good question.  It seems you can write
>
> fields
> "IAXCallStateEvent defineFields"
> ^#(
> (type 'long')
> (callNo 'long')
> (state 'long')
> (format 'long')
> (vformat 'long')
> (remote 'char[256]')
> (remoteName 'char[256]')
> (local 'char[256]')
> (localContext 'char[256]')
> )
>
> But as a community we really need to document the FFI more thoroughly :-/
>
>
>>
>> Annick
>>
>
>
>
> --
> best,
> Eliot
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20141016/99320cf4/attachment.htm


More information about the Squeak-dev mailing list