#ifndef __V8_MACROS_H #define __V8_MACROS_H /* Symbol to string cast method for ruby < 1.9 */ #ifndef rb_sym_to_s #define rb_sym_to_s(sym) \ rb_funcall2(sym, rb_intern("to_s"), 0, NULL) #endif /* Converts any object to array by triggering #to_a on it. */ #define rb_any_to_ary(range) \ rb_funcall2(value, rb_intern("to_a"), 0, NULL) /* Name of hidden value which contains ruby peer object. */ #define RUBY_PEER_ATTR "__RUBY_PEER__" /* Assigns ruby peer object as hidden value of reflected v8 object. */ #define v8_set_peer2(handle, obj) \ handle->SetHiddenValue(String::New(RUBY_PEER_ATTR), External::Wrap((void*)obj)) #define v8_set_peer(obj) \ v8_set_peer2(unwrap(obj), obj) /* Automaticly declares unwrap method for given type */ #define UNWRAPPER(T) \ static Local<T> unwrap(VALUE self) \ { \ return v8_ref_get<T>(self); \ } #endif//__V8_MACROS_H