module FFI::DataConverter

This module is used to extend somes classes and give then a common API.

Most of methods defined here must be overriden.

Public Instance Methods

from_native(value, ctx) click to toggle source
@param value
@param ctx
@return [value]
Convert from a native type.
static VALUE
conv_from_native(VALUE self, VALUE value, VALUE ctx)
{
    return value;
}
native_type(*args) click to toggle source

Get native type. @overload #native_type(type)

@param [String, Symbol, Type] type
@return [Type]
Get native type from +type+.

@overload #native_type

@raise {NotImplementedError} This method must be overriden.
static VALUE
conv_native_type(int argc, VALUE* argv, VALUE self)
{
    if (argc == 0) {
        if (!rb_ivar_defined(self, id_native_type_ivar)) {
            rb_raise(rb_eNotImpError, "native_type method not overridden and no native_type set");
        }

        return rb_ivar_get(self, id_native_type_ivar);

    } else if (argc == 1) {
        VALUE type = rbffi_Type_Find(argv[0]);

        rb_ivar_set(self, id_native_type_ivar, type);

        return type;

    } else {
        rb_raise(rb_eArgError, "incorrect arguments");
    }
}
to_native(value, ctx) click to toggle source
@param value
@param ctx
@return [value]
Convert to a native type.
static VALUE
conv_to_native(VALUE self, VALUE value, VALUE ctx)
{
    return value;
}