c api, getting class

  • Thread starter Patrick Gundlach
  • Start date
P

Patrick Gundlach

Hi,

q: How do I throw a custom exception in the c-part of a ruby program?


I have a mixed ruby/c class and I'd like to throw an exception that is
defined in the ruby side from the c side:


myklass.rb

class Myclass
class UnknownFormat < Exception
end
end


myklass_c.c

....
VALUE eUnknownFormatError;
eUnknownFormatError=rb_gv_get("Myclass::UnknownFormat");
rb_raise(eUnknownFormatError,"fatal: format not found");


This does not work. I have no idea how to proceed. Some small hints
would probably enough to point me in the right direction. I have seen
(pickaxe) that I can define the class in the c part with
rb_define_class(), but I want to reuse the class that is already
defined on the ruby side.

Patrick
 
F

Florian Frank

This does not work. I have no idea how to proceed. Some small hints
would probably enough to point me in the right direction. I have seen
(pickaxe) that I can define the class in the c part with
rb_define_class(), but I want to reuse the class that is already
defined on the ruby side.

Use rb_path2class("Myclass::UnknownFormat").
 
P

Patrick Gundlach

Hello Florian,
Use rb_path2class("Myclass::UnknownFormat").

This is exactly what I was looking for; seems somewhat undocumented.

Thank you,

Patrick
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,202
Messages
2,571,057
Members
47,662
Latest member
salsusa

Latest Threads

Top