[#4341] DRY and embedded docs. — Hugh Sasse Staff Elec Eng <hgs@...>
If I have a here document in some ruby program:
[#4347] Re: DATA and rewind. — ts <decoux@...>
>>>>> "H" == Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
[#4350] Re: Thirty-seven Reasons [Hal Fulton] Love[s] Ruby — "David Douthitt" <DDouthitt@...>
[#4396] Re: New Require (was: RAA development ideas (was: RE: Looking for inp ut on a 'links' page)) — Hugh Sasse Staff Elec Eng <hgs@...>
On 9 Aug 2000, Dave Thomas wrote:
[#4411] Re: RAA development ideas (was: RE: Lookin g for inp ut on a 'links' page) — Aleksi Niemel<aleksi.niemela@...>
Me:
On Thu, 10 Aug 2000, [iso-8859-1] Aleksi Niemelwrote:
[#4465] More RubyUnit questions. — Hugh Sasse Staff Elec Eng <hgs@...>
I am beginning to get a feel for this, but I still have a few more
[#4478] Re: RubyUnit. Warnings to be expected? — ts <decoux@...>
>>>>> "H" == Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
[#4481] Invoking an extension after compilation — Dave Thomas <Dave@...>
Hi,
[#4501] What's the biggest Ruby development? — Dave Thomas <Dave@...>
[#4502] methods w/ ! giving nil — Hugh Sasse Staff Elec Eng <hgs@...>
I have got used to the idea that methods that end in '!' return nil if
[#4503] RubyUnit and encapsulation. — Hugh Sasse Staff Elec Eng <hgs@...>
My_class's instance variables are not all "attr :<name>" type variables,
[#4537] Process.wait bug + fix — Brian Fundakowski Feldman <green@...>
If your system uses the rb_waitpid() codepath of rb_f_wait(),
[#4567] Re: What's the biggest Ruby development? — Aleksi Niemel<aleksi.niemela@...>
Dave said:
Robert Feldt <feldt@ce.chalmers.se> writes:
On Sat, 26 Aug 2000, Dave Thomas wrote:
Robert Feldt <feldt@ce.chalmers.se> writes:
On Mon, 28 Aug 2000, Dave Thomas wrote:
Robert Feldt <feldt@ce.chalmers.se> writes:
[#4591] Can't get Tcl/Tk working — Stephen White <steve@...>
I can't get any of the samples in the ext/tk/sample directory working. All
I'm sure looking forwards to buying the book. :)
Stephen White <steve@deaf.org> writes:
On Sun, 27 Aug 2000, Dave Thomas wrote:
Stephen White <steve@deaf.org> writes:
[#4608] Class methods — Mark Slagell <ms@...>
Reading the thread about regexp matches made me wonder about this:
[#4611] mod_ruby 0.1.19 — shreeve@...2s.org (Steve Shreeve)
Shugo (and others),
[#4633] Printing tables — DaVinci <bombadil@...>
Hi.
[#4647] Function argument lists in parentheses? — Toby Hutton <thutton@...>
Hello,
[#4652] Andy and Dave's European Tour 2000 — Dave Thomas <Dave@...>
Hi,
[#4672] calling super from c — Robert Feldt <feldt@...>
[#4699] Double parenthesis — Klaus Spreckelsen <ks@...1.ruhr-uni-bochum.de>
Why is the first line ok, but the second line is not?
[ruby-talk:4539] Re: a question about extension modules
>>>>> "Jon" == Jon Aseltine <aseltine@cs.umass.edu> writes:
Jon> I asked once, but perhaps I wasn't clear enough. Is it
Jon> possible to implement an extension module for a C++ library
^^^^^^^^^^^^^^^^^
And again, you are not clear enough (sorry to say!) ;-)
Jon> (for example, TrollTech's QT library)? The README.EXT file
Jon> focuses on C libraries, not C++.
Reading this I assume you want to wrap a C++ library to be used as an
extension in Ruby, isn't it?
If yes, you could follow Yasushi Shoji's advice to try out
swigruby. To use this you have to install SWIG as well. It will wrap
your library for you. But be warned: SWIG has some ugly restrictions
that may not permit you to wrap your code (I am not sure for QT,
however). Furthermore the code that is generated is not optimal all
the time. But OTOH, it is easy to use and its result is often very
useable.
If you want to do it manually, you have to pay attention to certain
points. Roughly spoken, you have to wrap the C++ library to be useable
under Plain C! Then you can also wrap it for Ruby! You couldn't use
classes on the C interface side! And you have to look for name
mangeling that a C++ compiler do. For example the Init_<extension>
function has to use C linkage and naming instead of C++ one!
Then you have to write functions for every method you want to call!
This because C cannot call the method of an instance. Last but not
least you would have to compile you extension with a C++ compiler and
do not forget to link-in the C++ runtime library (e.g. libstdc++).
I have attached a small example to this message. Here two files will
define the C++ class that we want to wrap for Ruby.
point_t.h
point_t.cpp
Both files defines a C++ class point_t with methods. We want to make
instances of this class available as class Point in Ruby. For the
methods
point_t::point_t // constructor
point_t::move
point_t::show
we define functions that call the methods on the corresponding
instance. The instance itself will be wrapped with
Data_Wrap_Struct. Consider the macro RUBYFN that casts a function
pointer to the one Ruby need to store it into its method table. The
wrapping will be done in file
point.cpp
To compile all these simply first run
ruby extconf.rb
make
Then try
ruby test.rb
Jon> TYIA,
Jon> Jon --
HTH,
\cle