From: unbewust Date: 2007-08-17T20:10:06+09:00 Subject: Re: how to get the key, value pairs of RHASH ??? On 17 ao�t, 11:16, Eric Hodel wrote: > 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 thanks a lot ! Yvon