From: Konrad Meyer Date: 2007-09-22T09:34:22+09:00 Subject: Re: CplusRuby - Gluing C and Ruby --nextPart2750306.cXgpGYuoH4 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Quoth Konrad Meyer: > Quoth Daniel Berger: > >=20 > > On Sep 21, 1:01 pm, Michael Neumann wrote: > > > Hi all, > > > > > > I am proud to announce my latest project called CplusRuby. > > > Below I pasted it's README for further explanation. > > > Alternatively read the following blog article: > > > > > > http://www.ntecs.de/blog/articles/2007/09/21/cplusruby-gluing-c-and-r= uby > >=20 > > > >=20 > > First patch! > >=20 > > C:\Documents and Settings\djberge\My Documents\My Downloads\Ruby>diff - > > u cplusruby.orig cplusruby.rb > > --- cplusruby.orig Fri Sep 21 15:50:38 2007 > > +++ cplusruby.rb Fri Sep 21 15:49:04 2007 > > @@ -11,6 +11,10 @@ > > # > > # Implements a simple ordered Hash > > # > > +require 'rbconfig' > > +require 'win32/process' if RUBY_PLATFORM.match('mswin') > > +include Config > > + > > class OHash < Hash > > def []=3D(k, v) > > @order ||=3D [] > > @@ -146,20 +150,28 @@ > > dir =3D File.dirname(file) > > mod, ext =3D base.split(".") > >=20 > > + make =3D RUBY_PLATFORM.match('mswin') ? 'nmake' : 'make' > > + > > File.open(file, 'w+') {|f| f << self.generate_code(mod) } > > Dir.chdir(dir) do > > - system("make clean") > > + system("#{make} clean") > > + > > pid =3D fork do > > require 'mkmf' > > $CFLAGS =3D cflags > > $LIBS << (" " + libs) > > create_makefile(mod) > > - exec "make" > > + exec "#{make}" > > end > > _, status =3D Process.waitpid2(pid) > > - raise if status.exitstatus !=3D 0 > > + > > + if RUBY_PLATFORM.match('mswin') > > + raise if status !=3D 0 > > + else > > + raise if status.exitstatus !=3D 0 > > + end > > end > > - require "#{dir}/#{mod}.so" > > + require "#{dir}/#{mod}." + CONFIG['DLEXT'] > > end > >=20 > > def self.generate_code_for_class > >=20 > > Mostly fixes MS Windows issues, but the DLEXT bit also fixes platforms > > that don't generate .so files (OS X, HP-UX). > >=20 > > Regards, > >=20 > > Dan >=20 > Does the C->ruby mapping map between char * and Strings? >=20 > Thanks, > --=20 > Konrad Meyer http://konrad.sobertillnoon.com/ Also, is there a way to define C functions from ruby that return a C type? =2D-=20 Konrad Meyer http://konrad.sobertillnoon.com/ --nextPart2750306.cXgpGYuoH4 Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (GNU/Linux) iD8DBQBG9GMECHB0oCiR2cwRAp9GAJ9kJazwIyQ7vo6cIFXoffLdbeskqACfeqIX WZeyve3R/k3nvJ5C7vrW2vU= =UFRT -----END PGP SIGNATURE----- --nextPart2750306.cXgpGYuoH4--