Using Obj-C from R
FWIW, I have put the original package I developed to access ObjectiveC code from R on the Omegahat Web site http://www.omegahat.org/RObjectiveC I put there in case people can make use of the code in there to assist in filling in Simon's package (or vice versa) e.g. for the conversion of different data types, some reflectance material, etc. I imagine Simon's package is a very good start, and I am not offering this one as a competitor but hopefully to encourage others to help merge the facilities. I am happy to help make it do more things, so if there are any issues, please mail me. If I recall correctly, there was an issue with ObjectiveC on Linux and OSX handling references to structs (or something "primitive") slightly different. But I may just be forgetting. D.
Simon Urbanek wrote:
I have put together a small and crude package that allows you to send messages to Obj-C objects and classes and create references to objects, classes and selectors. For historical reasons it's called Cocoa (although Obj-C is strictly speaking not Cocoa) and you can get it from my nightly builds page ( http://www.rosuda.org/R/nightly/ ). It is interesting only for developers as it's only the first step in a complete Obj-C/R suite, but since some people seemed to be interested in this, I thought I share it here. Some (admittedly stupid) examples: # Class sc = [NSString class]
sc<-.MCall("NSString","class")
sc
Obj-C class: NSString # NSString *s = [NSString stringWithString:@"hello"]
s <- .MCall("NSString","stringWithString:","hello")
s
hello # [s stringByAppendingString: @" World!")
s2 <- .MCall(s, "stringByAppendingString:", " World!") s2
hello World! # [s respondsToSelector: @selector(length)]
.MCall(s, "respondsToSelector:", .MSelector("length"))
[1] TRUE
(the M is front of the calls was motivated by the .m extension of Obj-C
code)
and if you use Cocoa inside R.app you can do many stupid things like:
c<-.MCall("RController", "getRController")
.MCall(c, "toggleHistory:", c)
Currently only boolean, id and Class results are supported and only
strings are automatically converted to NSString as arguments. Main work
to be done now is the support for scalar types, especially Cocoa-native
types like NSRange and so on. Anyone interested in this is welcome to
enhance the code ... Comments are very welcome, too. But again, this is
just a draft - no documentation, no guarantees ;).
Cheers,
Simon
_______________________________________________ R-SIG-Mac mailing list R-SIG-Mac@stat.math.ethz.ch https://stat.ethz.ch/mailman/listinfo/r-sig-mac
Duncan Temple Lang duncan@wald.ucdavis.edu Department of Statistics work: (530) 752-4782 371 Kerr Hall fax: (530) 752-7099 One Shields Ave. University of California at Davis Davis, CA 95616, USA -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 184 bytes Desc: not available Url : https://stat.ethz.ch/pipermail/r-sig-mac/attachments/20041102/619f7a21/attachment.bin