You can see the VALUE definition in the ruby/ruby.h header file:
#if defined HAVE_UINTPTR_T && 0 typedef uintptr_t VALUE; ... #elif SIZEOF_LONG == SIZEOF_VOIDP typedef unsigned long VALUE; ... #else # error #endif
So this is just a pointer to an object. As described in the Priti link, there is a TYPE() macro in the same file that can be used to identify the type of data that VALUE points to.
source share