2017-10-18 19:05 GMT+02:00 Todd Blanchard <[email protected]>:

> I'm working through Ben's great blog post about playing with libclang and
> I am puzzled by something.
>
> invalidateSessionData
>    handle atAllPut: 0.
>
> zero;s out the handle.  Cool.  However,
>
> handle isNull
>
> does not return true despite it being used in the getString method as
>
> ^ handle isNull
>          ifTrue: ['external memory invalidated by session restart']
>          ifFalse:[LibClang clang_getCString__cxString: self].
>
> Looks like there should be an isNull on ByteArray that returns true if all
> bytes are zero but it isn't  there.  Was it dropped for some reason?
>
>
>
In original FFI, a ByteArray could not represent a pointer, so it answered:
ByteArray>>isNull
    "Answer false since only external addresses can be null"
    ^false

There was an ExternalAddress subclass for this purpose where isNull was
defined:
ExternalAddress>>isNull
    "Answer true if I am a null pointer"
    1 to: self size do:[:i| (self at: i) = 0 ifFalse:[^false]].
    ^true

and there was also a #beNull to nullify the address...


What happens now with UnifiedFFI, is the old FFI API supported (and thus
the example correct), what about Alien, are questions that you must
inquire, but once upon a time, it worked.

Should isNull be defined as you suggest in ByteArray? If the semantic is
#isNullPointer, then I don't think so. If it's a more general message, then
maybe...

What is the class of handle?



> On Oct 18, 2017, at 2:58 AM, Dimitris Chloupis <[email protected]>
> wrote:
>
> Sure the documentation could be better, that is definetly important, but
> is already good enough and UFFI is a very technical subject much more
> suited to a mailing list . Its not physical possible to cover the massive
> potential of UFFI.
>
> On Wed, Oct 18, 2017 at 9:32 AM Stephane Ducasse <[email protected]>
> wrote:
>
>> Please do not hesitate to do Pull Requests.
>> Luc told me that he wants to do a pass on it and Esteban promises that to
>> me
>> but he is super busy.
>>
>> Stef
>>
>>
>> On Wed, Oct 18, 2017 at 5:54 AM, Todd Blanchard <[email protected]>
>> wrote:
>> > Wonderful!  Thanks.
>> >
>> >> On Oct 17, 2017, at 3:45 PM, stephan <[email protected]> wrote:
>> >>
>> >> On 17-10-17 23:06, Todd Blanchard wrote:
>> >>> Anyone know what happened to this?
>> >>> https://ci.inria.fr/pharo-contribution/view/Books/job/
>> PharoBookWorkInProgress/lastSuccessfulBuild/artifact/
>> book-result/UnifiedFFI/UnifiedFFI.pdf
>> >>
>> >> https://github.com/SquareBracketAssociates/Booklet-uFFI
>> >>
>> >> has a link to a bintray pdf download
>> >>
>> >> Stephan
>> >>
>> >>
>> >>
>> >
>> >
>>
>>
>

Reply via email to