On 8 November 2016 at 13:11, Esteban Lorenzano <[email protected]> wrote:

>
> On 8 Nov 2016, at 12:55, Dimitris Chloupis <[email protected]> wrote:
>
> Thank you Esteban
>
> By the way I really love the design of UFFI , very clean and quite easy to
> understand , great work to you and Igor :)
>
>
> UFFI is just mine ;)
> (but I sanded in giant shoulders as I took Igor work as inspiration… and
> to “borrow” many cool ideas)
>
> Your credit is too generous :)
Btw, is this expression:

 FFITypeArray ofType: #char.

creates anonymous class, or you making an instance of something?

Because if it anonymous class, i was always warned against use it in such
form, and instead use some kind of class initializers to
generate all the 'types' you will use in future i.e.

MyCalss class>>initialize
   MyCharr100Type := FFITypeArray ofType: #char size:100.

and then just use it wherever you need i.e.:

mychars := MyChar100Type new.

.. whatever.


> Esteban
>
>
> On Tue, Nov 8, 2016 at 1:54 PM Esteban Lorenzano <[email protected]>
> wrote:
>
>> On 8 Nov 2016, at 12:49, Dimitris Chloupis <[email protected]> wrote:
>>
>> I was reaching a similar conclusion
>>
>> Currently I have a void pointer to the struct with the members I
>> mentioned
>>
>> I can get char[100]
>>
>> pointerToStruct fromCString
>>
>> and I can get the int with
>>
>> pointerToStruct getHandle integerAt: 101 size:4  signed: false
>>
>> so if I want to pass the address of the pointer to my YourStruct instance
>> will I have to initialize with
>>
>> YourStruct fromHandler: (pointerToStruct getHandle)
>>
>> is this a correct and safe way to pass the address ?
>>
>>
>> yes.
>>
>> Esteban
>>
>>
>>
>> On Tue, Nov 8, 2016 at 1:21 PM Esteban Lorenzano <[email protected]>
>> wrote:
>>
>> it never could.
>> you need to do a “special type”, who has to be something like:
>>
>> YourStruct class>>initialize
>>         Char100 := FFITypeArray ofType: #char.
>>
>> fieldsDesc
>>         ^ #(
>>         Char100 data;
>>         int count;
>>         )
>>
>> but then… you want to optimise that and in field accessors, who will look
>> something like this:
>>
>> YourStruct >>data
>>         "This method was automatically generated"
>>         ^(FFITypeArray ofType: #char size: 100) fromHandle: (handle
>> copyFrom: 1 to: 100)
>>
>> you can change that for:
>>
>> YourStruct >>data
>>         "This method was automatically generated"
>>         ^Char100 fromHandle: (handle copyFrom: 1 to: 100)
>>
>> and same for setter.
>> (other way will work, but it will be suboptimal)
>>
>> Esteban
>>
>> > On 8 Nov 2016, at 12:10, Dimitris Chloupis <[email protected]>
>> wrote:
>> >
>> > I have FFIExternalStructure which has at class side
>> >
>> > fieldsDesc
>> > ^#(
>> > char data[100];
>> > int count;
>> > )
>> >
>> > if I try to do
>> >
>> > EphCPPTestStructure rebuildFieldAccessors .
>> >
>> > in order to generate the accessors for the members of the struct it
>> complains with an error that it does not recognise the type of " [ "
>> >
>> > Does that mean that char arrays are other arrays are not supported as
>> struct members or will I have to do this manually ?
>>
>>
>>
>


-- 
Best regards,
Igor Stasenko.

Reply via email to