This class manages C types.
It embbed {FFI::Type::Builtin} objects as constants (for names, see {FFI::NativeType}).
static VALUE type_initialize(VALUE self, VALUE value) { Type* type; Type* other; Data_Get_Struct(self, Type, type); if (FIXNUM_P(value)) { type->nativeType = FIX2INT(value); } else if (rb_obj_is_kind_of(value, rbffi_TypeClass)) { Data_Get_Struct(value, Type, other); type->nativeType = other->nativeType; type->ffiType = other->ffiType; } else { rb_raise(rb_eArgError, "wrong type"); } return self; }
static VALUE type_alignment(VALUE self) { Type *type; Data_Get_Struct(self, Type, type); return INT2FIX(type->ffiType->alignment); }
static VALUE type_inspect(VALUE self) { char buf[100]; Type *type; Data_Get_Struct(self, Type, type); snprintf(buf, sizeof(buf), "#<%s:%p size=%d alignment=%d>", rb_obj_classname(self), type, (int) type->ffiType->size, (int) type->ffiType->alignment); return rb_str_new2(buf); }
Generated with the Darkfish Rdoc Generator 2.