Bug #3861 » fiddle-sparcv9.patch
| trunk/ext/fiddle/closure.c 2011-08-08 21:37:57.586535000 +0900 | ||
|---|---|---|
|
*(long *)resp = NUM2LONG(ret);
|
||
|
break;
|
||
|
case TYPE_CHAR:
|
||
|
*(char *)resp = NUM2INT(ret);
|
||
|
case TYPE_SHORT:
|
||
|
case TYPE_INT:
|
||
|
*(ffi_sarg *)resp = NUM2INT(ret);
|
||
|
break;
|
||
|
case TYPE_VOIDP:
|
||
|
*(void **)resp = NUM2PTR(ret);
|
||
|
break;
|
||
|
case TYPE_INT:
|
||
|
*(int *)resp = NUM2INT(ret);
|
||
|
break;
|
||
|
case TYPE_DOUBLE:
|
||
|
*(double *)resp = NUM2DBL(ret);
|
||
|
break;
|
||
| trunk/ext/fiddle/conversions.c 2011-08-08 22:32:01.208345000 +0900 | ||
|---|---|---|
|
dst->pointer = NUM2PTR(rb_Integer(src));
|
||
|
break;
|
||
|
case TYPE_CHAR:
|
||
|
dst->schar = NUM2INT(src);
|
||
|
break;
|
||
|
case TYPE_SHORT:
|
||
|
dst->sshort = NUM2INT(src);
|
||
|
break;
|
||
|
case TYPE_INT:
|
||
|
dst->sint = NUM2INT(src);
|
||
|
break;
|
||
| ... | ... | |
|
return rb_funcall(cPointer, rb_intern("[]"), 1,
|
||
|
PTR2NUM((void *)retval.pointer));
|
||
|
case TYPE_CHAR:
|
||
|
if (signed_p) return INT2NUM((char)retval.fffi_sarg);
|
||
|
return INT2NUM((unsigned char)retval.fffi_arg);
|
||
|
case TYPE_SHORT:
|
||
|
if (signed_p) return INT2NUM((short)retval.fffi_sarg);
|
||
|
return INT2NUM((unsigned short)retval.fffi_arg);
|
||
|
case TYPE_INT:
|
||
|
return INT2NUM(retval.sint);
|
||
|
if (signed_p) return INT2NUM((int)retval.fffi_sarg);
|
||
|
return UINT2NUM((unsigned int)retval.fffi_arg);
|
||
|
case TYPE_LONG:
|
||
|
if (signed_p) return LONG2NUM(retval.slong);
|
||
|
return ULONG2NUM(retval.ulong);
|
||
| trunk/ext/fiddle/conversions.h 2011-08-08 21:40:43.368062000 +0900 | ||
|---|---|---|
|
typedef union
|
||
|
{
|
||
|
ffi_arg fffi_arg;
|
||
|
ffi_sarg fffi_sarg;
|
||
|
unsigned char uchar; /* ffi_type_uchar */
|
||
|
signed char schar; /* ffi_type_schar */
|
||
|
unsigned short ushort; /* ffi_type_sshort */
|
||