/*
* call-seq:
* rd.decr(index[, number]) -> result
*
* Decrements the value referred to by the +index+ by +number+.
* +number+ defaults to +1+ if unspecified.
*/
static VALUE decr(int argc, VALUE *argv, VALUE self)
{
unsigned long nr = incr_decr_arg(argc, argv);
return ULONG2NUM(__sync_sub_and_fetch(addr_of(self, argv[0]), nr));
}