Class: FFI::StructLayout::Function
- Defined in:
- ext/ffi_c/StructLayout.c
Instance Method Summary collapse
Methods inherited from Field
#alignment, #initialize, #name, #offset, #size, #type
Constructor Details
This class inherits a constructor from FFI::StructLayout::Field
Instance Method Details
#get(pointer) ⇒ Object
183 184 185 186 187 188 189 190 191 |
# File 'ext/ffi_c/StructLayout.c', line 183
static VALUE
function_field_get(VALUE self, VALUE pointer)
{
StructField* f;
Data_Get_Struct(self, StructField, f);
return rbffi_Function_NewInstance(f->rbType, (*rbffi_AbstractMemoryOps.pointer->get)(MEMORY(pointer), f->offset));
}
|
#put(pointer, proc) ⇒ Object
193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 |
# File 'ext/ffi_c/StructLayout.c', line 193
static VALUE
function_field_put(VALUE self, VALUE pointer, VALUE proc)
{
StructField* f;
VALUE value = Qnil;
Data_Get_Struct(self, StructField, f);
if (NIL_P(proc) || rb_obj_is_kind_of(proc, rbffi_FunctionClass)) {
value = proc;
} else if (rb_obj_is_kind_of(proc, rb_cProc) || rb_respond_to(proc, rb_intern("call"))) {
value = rbffi_Function_ForProc(f->rbType, proc);
} else {
rb_raise(rb_eTypeError, "wrong type (expected Proc or Function)");
}
(*rbffi_AbstractMemoryOps.pointer->put)(MEMORY(pointer), f->offset, value);
return self;
}
|