From: Charles Mills Date: 2006-02-09T02:33:22+09:00 Subject: Re: c extension: symbols Patrick Gundlach wrote: > Hi, > > in pure ruby, I sometimes access hashes with symbols as keys: > > { :foo => "this", :bar => "other" } > > > Q: How would I create this kind of hash on the c part? > > OK, the hash is easy (rb_hash_new()). But how do I specify the key? > When I use rb_intern("foo"), I get a hash like: > > { 1234 => "this", 2345 => "other" } > > > Patrick rb_intern() returns an ID (ID type is defined in ruby.h). To convert it to a symbol use the ID2SYM() macro function. For example (untested code): VALUE h = rb_hash_new(), v = ID2SYM(rb_intern("foo")); rb_hash_aset(h, v, rb_str_new2("bar")); rb_p(h); -Charlie