[#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:13610] Data_Get_Struct wants a DATA... but I don't have one?

From: Colin Steele <colin@...2.com>
Date: 2001-04-11 20:47:59 UTC
List: ruby-talk #13610
I've got a headscratcher for y'all.  I have a C extension which uses
Data_Make_Struct, and then calls rb_obj_call_init.  In my init
function, I try to pull out my data pointer using Data_Get_Struct, but
it pukes in rb_check_type, claiming I'm passing it the wrong type of
data.

This is almost identical to the example in the pickaxe book... what am
I missing?

Any help is greatly appreciated.



Here's the output (the problem):

colin@ska$ ruby extconf.rb
creating Makefile
colin@ska$ make
gcc -fPIC -g -O2 -fPIC  -I/usr/local/lib/ruby/1.6/i686-linux -I/usr/local/include    -c -o foo.o foo.c
gcc -shared  -L/usr/local/lib/ruby/1.6/i686-linux -L/usr/local/lib  -o foo.so foo.o -L. -lruby -lc 
colin@ska$ ruby ./test.rb 
./test.rb:3:in `initialize': wrong argument type XXX::Process (expected Data) (TypeError)
	from ./test.rb:3:in `new'
	from ./test.rb:3
colin@ska$ 
----------------------------------------------------------------------
Here's the ruby test:

require "foo"

foo = XXX::Process.new(42)

----------------------------------------------------------------------

Here's the C code:

#include "ruby.h"

VALUE mXXX;
VALUE cProcess;

struct _foo {
    int something;
};

typedef struct _foo foo;

VALUE
process_init(VALUE self, VALUE pid)
{
    foo *ptr;

    Data_Get_Struct(self, foo, ptr);

    return self;
}

VALUE
process_new(VALUE class, VALUE thePID)
{
    foo                        *ptr;
    VALUE                       tdata;

    tdata                       = Data_Make_Struct(class,
                                                   foo,
                                                   0,
                                                   0,
                                                   ptr);
    Data_Get_Struct(tdata, foo, ptr);
    
    return tdata;
}

void Init_foo() {
    mXXX = rb_define_module("XXX");
    cProcess = rb_define_class_under(mXXX, "Process", rb_cObject);
    rb_define_method(cProcess, "initialize", process_init, 1);
    rb_define_method(cProcess, "new", process_new, 1);

}


-- 
Colin Steele
colin@webg2.com / www.colinsteele.org / www.rubycookbook.org


		   From "The Hacker's Dictionary":
   softy: [IBM] n. Hardware hackers' term for a software expert who
	  is largely ignorant of the mysteries of hardware.


In This Thread

Prev Next