static VALUE
mapped_initialize(VALUE self, VALUE rbConverter)
{
MappedType* m = NULL;
if (!rb_respond_to(rbConverter, id_native_type)) {
rb_raise(rb_eNoMethodError, "native_type method not implemented");
}
if (!rb_respond_to(rbConverter, id_to_native)) {
rb_raise(rb_eNoMethodError, "to_native method not implemented");
}
if (!rb_respond_to(rbConverter, id_from_native)) {
rb_raise(rb_eNoMethodError, "from_native method not implemented");
}
Data_Get_Struct(self, MappedType, m);
m->rbType = rb_funcall2(rbConverter, id_native_type, 0, NULL);
if (!(rb_obj_is_kind_of(m->rbType, rbffi_TypeClass))) {
rb_raise(rb_eTypeError, "native_type did not return instance of FFI::Type");
}
m->rbConverter = rbConverter;
Data_Get_Struct(m->rbType, Type, m->type);
m->base.ffiType = m->type->ffiType;
return self;
}
static VALUE
mapped_from_native(int argc, VALUE* argv, VALUE self)
{
MappedType*m = NULL;
Data_Get_Struct(self, MappedType, m);
return rb_funcall2(m->rbConverter, id_from_native, argc, argv);
}
static VALUE
mapped_native_type(VALUE self)
{
MappedType*m = NULL;
Data_Get_Struct(self, MappedType, m);
return m->rbType;
}
Generated with the Darkfish Rdoc Generator 2.