Class: FFI::Type
- Inherits:
-
Object
- Object
- FFI::Type
- Defined in:
- ext/ffi_c/Type.c,
ext/ffi_c/Type.c
Overview
This class manages C types.
It embbed Builtin objects as constants (for names, see NativeType).
Direct Known Subclasses
Defined Under Namespace
Constant Summary collapse
- Struct =
rbffi_StructByValueClass
Instance Method Summary collapse
-
#alignment ⇒ Fixnum
Get Type alignment.
- #initialize(value) ⇒ self constructor
-
#inspect ⇒ String
Inspect Type object.
-
#size ⇒ Fixnum
Return type’s size, in bytes.
Constructor Details
#initialize(value) ⇒ self
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'ext/ffi_c/Type.c', line 75 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; } |
Instance Method Details
#alignment ⇒ Fixnum
Get Type alignment.
116 117 118 119 120 121 122 123 124 |
# File 'ext/ffi_c/Type.c', line 116 static VALUE type_alignment(VALUE self) { Type *type; Data_Get_Struct(self, Type, type); return INT2FIX(type->ffiType->alignment); } |
#inspect ⇒ String
Inspect FFI::Type object.
131 132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'ext/ffi_c/Type.c', line 131 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); } |
#size ⇒ Fixnum
Return type’s size, in bytes.
101 102 103 104 105 106 107 108 109 |
# File 'ext/ffi_c/Type.c', line 101 static VALUE type_size(VALUE self) { Type *type; Data_Get_Struct(self, Type, type); return INT2FIX(type->ffiType->size); } |