2017-10-18 19:05 GMT+02:00 Todd Blanchard <tblanchard@mac.com>:
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 <kilon.alios@gmail.com> 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 <stepharo.self@gmail.com> 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 <tblanchard@mac.com> wrote:
Wonderful! Thanks.
On Oct 17, 2017, at 3:45 PM, stephan <stephan@stack.nl> 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