On Aug 17, 2007, at 01:59, unbewust wrote:

> i'd like to have, in my module options (is in FileUtils for ex) like
> that in the Ruby side:
>
> symt = SYMBOL_TEST.new( "/my/src/path", :verbose => true, :noop =>
> true )
>
> i know, from experiment, that, in my C init i get 2 VALUES in that
> case the first being a RString the second an RHash.
>
> if i look at ruby.h i get :
>
>
> struct RHash {
>     struct RBasic basic;
>     struct st_table *tbl;
>     int iter_lev;
>     VALUE ifnone;
> };
>
> i didn't found anything about "struct st_table *tbl" i imagine that's
> here the key/value pairs are stored ???
>
> but how to retrieve them ???

Use rb_hash_aset and rb_hash_aref from hash.c.  Jump down to the  
Init_Hash() to get a list of what you can do.

> generally speaking where could i find examples for each type of
> struct ???

The pickaxe (including first edition) has a section on this.  The C  
API hasn't changed much.

http://www.rubycentral.com/pickaxe/ext_ruby.html

> because i'll need in the near future the same kind of knoledge about :
>
>
> struct RRegexp {
>     struct RBasic basic;
>     struct re_pattern_buffer *ptr;
>     long len;
>     char *str;
> };

re.c

> struct RFile {
>     struct RBasic basic;
>     struct OpenFile *fptr;
> };

io.c and file.c

> struct RData {
>     struct RBasic basic;
>     void (*dmark)(void*);
>     void (*dfree)(void*);
>     void *data;
> };

I think the pickaxe has a section on this.

--
Poor workers blame their tools. Good workers build better tools. The
best workers get their tools to do the work for them. -- Syndicate Wars