Sweet - thank you for the tip, Wayne! Here's my current plan:
- All Ruby classes defined inside of ffi_c will be ported to Ruby, where I'll call into my C# lib where it makes sense. - Because my poor brain can only handle so much context-switching, I'll stub out all of the Ruby classes with methods that will simply *raise "not implemented"*. - I'll follow Wayne's advice to get some simple clib funcs working. - Port the rest of ffi_c When all is said and done, it looks like I shouldn't need to touch a single line of FFI's Ruby code - I *should* only need to implement classes (or parts thereof) that are defined in ffi_c. One thing I will need to figure later is the name of the dll that contains dlopen/dlsym/etc for each platform. I'm willing to be that I'll be able to piece that together with decent accuracy by looking at FFI.map_library_name. -Charles On Thu, Mar 24, 2011 at 6:11 PM, Wayne Meissner <wmeiss...@gmail.com> wrote: > 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 >
_______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core