Sha256: 05c500628d77b5c8c1188f517f13e6d09fab89bb88c20dd3cc6fef2ca1b2a21f

Contents?: true

Size: 1.3 KB

Versions: 18

Compression:

Stored size: 1.3 KB

Contents

#include <ruby.h>

#include <ffi.h>
#include "rbffi.h"

#include "Type.h"
#include "MappedType.h"


VALUE rbffi_DataConverterClass = Qnil;
static ID id_native_type_ivar;

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");
    }
}

static VALUE
conv_to_native(VALUE self, VALUE value, VALUE ctx)
{
    return value;
}

static VALUE
conv_from_native(VALUE self, VALUE value, VALUE ctx)
{
    return value;
}



void
rbffi_DataConverter_Init(VALUE moduleFFI)
{
    rbffi_DataConverterClass = rb_define_module_under(moduleFFI, "DataConverter");

    rb_define_method(rbffi_DataConverterClass, "native_type", conv_native_type, -1);
    rb_define_method(rbffi_DataConverterClass, "to_native", conv_to_native, 2);
    rb_define_method(rbffi_DataConverterClass, "from_native", conv_from_native, 2);

    id_native_type_ivar = rb_intern("@native_type");
}


Version data entries

18 entries across 18 versions & 2 rubygems

Version Path
ffi-1.0.9-x86-mingw32 ext/ffi_c/DataConverter.c
ffi-1.0.9 ext/ffi_c/DataConverter.c
ffi-1.0.7-x86-mingw32 ext/ffi_c/DataConverter.c
ffi-1.0.7 ext/ffi_c/DataConverter.c
ffi-1.0.6-x86-mingw32 ext/ffi_c/DataConverter.c
ffi-1.0.6 ext/ffi_c/DataConverter.c
ffi-1.0.5-x86-mingw32 ext/ffi_c/DataConverter.c
ffi-1.0.5 ext/ffi_c/DataConverter.c
ffi-1.0.4-x86-mingw32 ext/ffi_c/DataConverter.c
ffi-1.0.4 ext/ffi_c/DataConverter.c
ffi-1.0.3-x86-mingw32 ext/ffi_c/DataConverter.c
ffi-1.0.3 ext/ffi_c/DataConverter.c
ffi-1.0.2-x86-mingw32 ext/ffi_c/DataConverter.c
ffi-1.0.2 ext/ffi_c/DataConverter.c
ffi-1.0.1-x86-mingw32 ext/ffi_c/DataConverter.c
ffi-1.0.1 ext/ffi_c/DataConverter.c
ffi-1.0.0 ext/ffi_c/DataConverter.c
ffi-aitrus-0.9.0.beta ext/ffi_c/DataConverter.c