Charles Mills
2/8/2006 5:29:00 PM
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