[MacRuby-devel] Pointers for BOOL types

Vincent Isambart vincent.isambart at gmail.com
Thu Jan 1 16:15:18 PST 2009


> The following doesn't work:
>
> framework 'Cocoa'
> p1 = Pointer.new_with_type('@')
> p1.assign(false)
> p1[0] == false # => false, but should be true
>
> Then I figured I should be able to pass BOOL to -new_with_type as it
> is the data type, but BOOL isn't recognised.

The type for bool is upper case B. If you replace @ with B in your
example it works fine.

Just a little warning about pointers: they tend to forget their type
if you read the value returned by a function twice. Do not try to read
more than once their value (just store the value returned by #[] in a
Ruby variable). However, reusing the same pointer in multiple calls
seems to work fine.
For example the following code:
# rects was retuned by  NSLayoutManager#rectArrayForCharacterRange
puts rects[0]
puts rects[0]

Displays:
#<NSRect origin=#<NSPoint x=5.0 y=0.0> size=#<NSSize width=0.0 height=19.0>>
xxxxx.rb:222:in `[]': unrecognized octype `?_?' (RuntimeError)


More information about the MacRuby-devel mailing list