On 25 March 2011 04:58, Charles Strahan <charles.c.stra...@gmail.com> wrote: > >> Another idea… what about starting from http://github.com/ffi and replacing >> the C extension with C# code? > > That's a great idea, Tomas. I'll need some immediate gratification to keep > me from getting discouraged; porting the C funcs piecemeal sounds like a > good way to get something working. I've forked FFI - I'll try to lay out a > foundation tonight.
If you want some easy wins, The first classes you'll want to implement are: 1) FFI::Type - this is used by much of the rest of the system, e.g. to identify arguments and struct field types. At a minimum, you need to implement #size and #alignment, and have FFI::Type instances for 8, 16, 32, 64 bit signed/unsigned integers, float, double and pointer defined as the constants FFI::Type::UINT8, FFI::Type::INT8, etc. 2) FFI::Pointer - instances of this are used to represent a native pointer. To get things up and running, you can stub this out with just the basic initialize() method. Most of the accessor methods can be done later. 3) FFI::DynamicLibrary - kinda useful for loading libraries and locating symbols within said library. 4) FFI::Function - the swiss army knife class for calling functions, and creating C => ruby callbacks. Ignore the callback aspect of this for now, and just get ruby => C calling working. That will take you a little while, but you'll be able to at least get simple functions like 'puts' from libc callable from FFI. _______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core