Sha256: 2bb0ff71983a5c12dbf7cf99442bc0fb202c1544c261f612c5c97b9150d285fd
Contents?: true
Size: 1.66 KB
Versions: 2
Compression:
Stored size: 1.66 KB
Contents
#include <ruby.h> #include "MemoryPointer.h" #include "Types.h" ffi_type* rb_FFI_NativeTypeToFFI(NativeType type) { switch (type) { case VOID: return &ffi_type_void; case INT8: return &ffi_type_sint8; case UINT8: return &ffi_type_uint8; case INT32: return &ffi_type_sint32; case UINT32: return &ffi_type_uint32; case INT64: return &ffi_type_sint64; case UINT64: return &ffi_type_uint64; case FLOAT32: return &ffi_type_float; case FLOAT64: return &ffi_type_double; case STRING: case RBXSTRING: case POINTER: return &ffi_type_pointer; default: return NULL; } } VALUE rb_FFI_NativeValueToRuby(NativeType type, const void* ptr) { switch (type) { case VOID: return Qnil; case INT8: case INT16: case INT32: return INT2FIX(*(int *) ptr); case UINT8: case UINT16: case UINT32: return INT2FIX(*(unsigned int *) ptr); case INT64: return LL2NUM(*(signed long long *) ptr); case UINT64: return ULL2NUM(*(unsigned long long *) ptr); case FLOAT32: return rb_float_new(*(float *) ptr); case FLOAT64: return rb_float_new(*(double *) ptr); case STRING: return rb_str_new2(*(char **) ptr); case POINTER: return rb_FFI_MemoryPointer_new(*(void **) ptr); default: rb_raise(rb_eRuntimeError, "Unknown type: %d", type); } }
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ffi-0.1.0 | ext/Types.c |
ffi-0.1.1 | ext/Types.c |