[#13775] Problems with racc rule definitions — Michael Neumann <neumann@...>

15 messages 2001/04/17
[#13795] Re: Problems with racc rule definitions — Minero Aoki <aamine@...> 2001/04/18

Hi,

[#13940] From Guido, with love... — Dave Thomas <Dave@...>

52 messages 2001/04/20

[#13953] regexp — James Ponder <james@...>

Hi, I'm new to ruby and am coming from a perl background - therefore I

19 messages 2001/04/21

[#14033] Distributed Ruby and heterogeneous networks — harryo@... (Harry Ohlsen)

I wrote my first small distributed application yesterday and it worked

15 messages 2001/04/22

[#14040] RCR: getClassFromString method — ptkwt@...1.aracnet.com (Phil Tomson)

It would be nice to have a function that returns a class type given a

20 messages 2001/04/22

[#14130] Re: Ruby mascot proposal — "Conrad Schneiker" <schneik@...>

Guy N. Hurst wrote:

21 messages 2001/04/24
[#14148] Re: Ruby mascot proposal — Stephen White <spwhite@...> 2001/04/24

On Tue, 24 Apr 2001, Conrad Schneiker wrote:

[#14188] Re: Ruby mascot proposal — matz@... (Yukihiro Matsumoto) 2001/04/25

Hi,

[#14193] Re: Ruby mascot proposal — "W. Kent Starr" <elderburn@...> 2001/04/25

On Tuesday 24 April 2001 23:02, Yukihiro Matsumoto wrote:

[#14138] Re: python on the smalltalk VM — Conrad Schneiker <schneik@...>

FYI: Thought this might be of interest to the JRuby and Ruby/GUI folks.

27 messages 2001/04/24
[#14153] Re: python on the smalltalk VM — Andrew Kuchling <akuchlin@...> 2001/04/24

Conrad Schneiker <schneik@austin.ibm.com> writes:

[#14154] array#flatten! question — Jim Freeze <jim@...> 2001/04/24

Hello.

[#14159] Can I insert into an array — Jim Freeze <jim@...> 2001/04/24

Ok, this may be a dumb question, but, is it possible to insert into an

[#14162] Re: Can I insert into an array — Dave Thomas <Dave@...> 2001/04/24

Jim Freeze <jim@freeze.org> writes:

[#14289] RCR: Array#insert — Shugo Maeda <shugo@...> 2001/04/27

At Wed, 25 Apr 2001 01:28:36 +0900,

[#14221] An or in an if. — Tim Pettman <tjp@...>

Hi there,

18 messages 2001/04/25

[#14267] Re: Ruby mascot proposal — "Conrad Schneiker" <schneik@...>

Danny van Bruggen,

16 messages 2001/04/26

[#14452] How to do it the Ruby-way 3 — Stefan Matthias Aust <sma@3plus4.de>

First a question: Why is

21 messages 2001/04/30

[ruby-talk:13656] create/init ruby object in C

From: Chris Uzdavinis <chris@...>
Date: 2001-04-14 07:11:11 UTC
List: ruby-talk #13656
Hi, Ruby is great, kudos to all who are involved.

I'm trying to embed ruby into an application, and I'm having a bit of
trouble.  I want to write a function (in C) that returns a ruby object
from a class that I defined.

For example, given this ruby class:

class X
  attr_reader :x, :y, :z
  attr_writer :x, :y, :z  
end


I want to write a C function that creates an instance of class X and
initializes it.  Here is how I'd do it in ruby, but how do I do it in C?

def example
  a = X.new
  a.x = 111
  a.y = 222
  a.z = 333
  return a
end


I've spent a while trying to come up with something, and most of that
time has been spent reading ruby source code, since I don't know which
API functions to call.  Here is pseudo-code that is pretty close to
what I want, except for all the errors in it.  :)


static VALUE
example(VALUE self)
{
  VALUE type, obj;
  ID id;

  // lookup type of X  (how?)
  type = ....

  //
  // instantiate object of that type 
  // (is this the Right Way to do it?)
  //
  obj = rb_obj_alloc(type);

  //
  // initialize members of obj x,y,z
  // (is this the Right Way to do it?)
  //
  id = rb_intern("X#x=");
  rb_funcall(obj, id, 1, INT2NUM(111));

  id = rb_intern("X#y=");
  rb_funcall(obj, id, 1, INT2NUM(222));

  id = rb_intern("X#z=");
  rb_funcall(obj, id, 1, INT2NUM(333));

  //
  // the following is the only line in this function where I have
  // confidence in what I wrote.  :) 
  //
  return obj; 
}


This isn't compiled or tested, but I think it shows what I'm trying to
do (and shows how new I am to the internals of ruby.)  I'm probably
doing this all wrong, but if someone could help me finish/fix the
above code such that it's equivalent to the ruby version, I'd be very
appreciative. 

Many thanks for any help!

-- 
Chris

In This Thread

Prev Next