From: Brian Marick Date: 2008-12-18T23:13:54+09:00 Subject: Re: [RubyCocoa] C pointers, and documentation On Dec 17, 2008, at 12:13 PM, Christophe Mckeon wrote: > error:(NSError **)outError > > is there a standard way of handling it? is this > kind of thing documented anywhere? There's a class called ObjcPtr that's used to translate to/from such arguments. Google around for that word and you'll find sketchy documentation. Here's an example of stuffing a value into such an "out" parameter: def getObjectValue_forString_errorDescription(objptr, s, errdesc) case s.to_ruby.downcase when 'yes': objptr.assign(true) when 'no': objptr.assign(false) else return false end true end To pull an object out of a pointer-to-object, you do this: def observeValueForKeyPath_ofObject_change_context( keyPath, object, change, rawContext) context = rawContext.cast_as('@') puts "Context: #{context.inspect}" end The '@' identifies the thing-being-pointed-to as an object. There are other symbols to identify things like raw machine integers, etc. I forget where you find them, but they're not RubyCocoa-specific, so they're somewhere in Apple documentation. For non-objects there are also methods like "int_at", "bool_at", "bool", and "int". I haven't had reason to use them yet, so I don't know the details. ----- Brian Marick, independent consultant Mostly on agile methods with a testing slant www.exampler.com, www.exampler.com/blog, www.twitter.com/marick ----- Brian Marick, independent consultant Mostly on agile methods with a testing slant www.exampler.com, www.exampler.com/blog, www.twitter.com/marick