You can set pointers using:
Pointer.new_with_type and using one of the following types: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html#//apple_ref/doc/uid/TP40008048-CH100-SW1
Note, that not none of the types are supported.
Here is some more information: http://jonathan.waddilove.net/macruby_pointers.html
To dereference a pointer, simply get its value:
pointer = Pointer.new_with_type("f")
pointer.assign(3.2)
pointer's value = pointer[0]
I'll soon update my book draft with a section on pointers.
- Matt
Hi,
I've been trying to play with using the Accessibility API to do some automated testing.
>From what I have researched, I have to use some C functions that often need a reference passed to the them.
I am at a loss when trying to deal with Pointer objects. I've tried playing with them and googling it, but I just cannot figure out how to turn a pointer into a more useful type or to get what I want out of them.
For example, I can start like this:
framework 'Cocoa'
unless AXAPIEnabled() # only works if I include the parenthesis
puts 'Please enable Access for Assistive Devices first'
exit 2
end
mail = NSRunningApplication.runningApplicationsWithBundleIdentifier('com.apple.Mail').first
mail_object = AXUIElementCreateApplication mail.processIdentifier
names = Pointer.new :object
AXUIElementCopyAttributeNames mail_object, names
But then how do I get the values out of the names pointer? For reference, I found the functions in AXUIElement.h.
Thanks,
Mark
_______________________________________________
MacRuby-devel mailing list
MacRuby-devel@lists.macosforge.org
http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel