On 17 ao?t, 11:16, Eric Hodel <drbr... / segment7.net> 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