mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* ext/dl/cfunc.c (**) updating documentation
* test/dl/test_cfunc.rb (test_ptr=, test_ptr) testing the pointer accessor methods on CFunc git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25686 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
355a7bc3a5
commit
5de564634d
2 changed files with 46 additions and 6 deletions
|
@ -112,7 +112,7 @@ rb_dlcfunc2ptr(VALUE val)
|
||||||
return func;
|
return func;
|
||||||
}
|
}
|
||||||
|
|
||||||
VALUE
|
static VALUE
|
||||||
rb_dlcfunc_s_allocate(VALUE klass)
|
rb_dlcfunc_s_allocate(VALUE klass)
|
||||||
{
|
{
|
||||||
VALUE obj;
|
VALUE obj;
|
||||||
|
@ -241,8 +241,13 @@ rb_dlcfunc_set_calltype(VALUE self, VALUE sym)
|
||||||
return sym;
|
return sym;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
VALUE
|
* call-seq:
|
||||||
|
* cfunc.ptr
|
||||||
|
*
|
||||||
|
* Get the underlying function pointer as a DL::CPtr object.
|
||||||
|
*/
|
||||||
|
static VALUE
|
||||||
rb_dlcfunc_ptr(VALUE self)
|
rb_dlcfunc_ptr(VALUE self)
|
||||||
{
|
{
|
||||||
struct cfunc_data *cfunc;
|
struct cfunc_data *cfunc;
|
||||||
|
@ -251,7 +256,13 @@ rb_dlcfunc_ptr(VALUE self)
|
||||||
return PTR2NUM(cfunc->ptr);
|
return PTR2NUM(cfunc->ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
VALUE
|
/*
|
||||||
|
* call-seq:
|
||||||
|
* cfunc.ptr = pointer
|
||||||
|
*
|
||||||
|
* Set the underlying function pointer to a DL::CPtr named +pointer+.
|
||||||
|
*/
|
||||||
|
static VALUE
|
||||||
rb_dlcfunc_set_ptr(VALUE self, VALUE addr)
|
rb_dlcfunc_set_ptr(VALUE self, VALUE addr)
|
||||||
{
|
{
|
||||||
struct cfunc_data *cfunc;
|
struct cfunc_data *cfunc;
|
||||||
|
@ -262,7 +273,13 @@ rb_dlcfunc_set_ptr(VALUE self, VALUE addr)
|
||||||
return Qnil;
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
|
||||||
VALUE
|
/*
|
||||||
|
* call-seq: inspect
|
||||||
|
*
|
||||||
|
* Returns a string formatted with an easily readable representation of the
|
||||||
|
* internal state of the DL::CFunc
|
||||||
|
*/
|
||||||
|
static VALUE
|
||||||
rb_dlcfunc_inspect(VALUE self)
|
rb_dlcfunc_inspect(VALUE self)
|
||||||
{
|
{
|
||||||
VALUE val;
|
VALUE val;
|
||||||
|
@ -302,6 +319,14 @@ rb_dlcfunc_inspect(VALUE self)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* call-seq:
|
||||||
|
* dlcfunc.call(ary) => some_value
|
||||||
|
* dlcfunc[ary] => some_value
|
||||||
|
*
|
||||||
|
* Calls the function pointer passing in +ary+ as values to the underlying
|
||||||
|
* C function. The return value depends on the ctype.
|
||||||
|
*/
|
||||||
static VALUE
|
static VALUE
|
||||||
rb_dlcfunc_call(VALUE self, VALUE ary)
|
rb_dlcfunc_call(VALUE self, VALUE ary)
|
||||||
{
|
{
|
||||||
|
@ -550,7 +575,13 @@ rb_dlcfunc_call(VALUE self, VALUE ary)
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
VALUE
|
/*
|
||||||
|
* call-seq:
|
||||||
|
* dlfunc.to_i => integer
|
||||||
|
*
|
||||||
|
* Returns the memory location of this function pointer as an integer.
|
||||||
|
*/
|
||||||
|
static VALUE
|
||||||
rb_dlcfunc_to_i(VALUE self)
|
rb_dlcfunc_to_i(VALUE self)
|
||||||
{
|
{
|
||||||
struct cfunc_data *cfunc;
|
struct cfunc_data *cfunc;
|
||||||
|
|
|
@ -9,6 +9,15 @@ module DL
|
||||||
@cf = CFunc.new(@libc[@name], TYPE_VOIDP, @name)
|
@cf = CFunc.new(@libc[@name], TYPE_VOIDP, @name)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_ptr=
|
||||||
|
@cf.ptr = @libc['malloc']
|
||||||
|
assert_equal @cf.ptr, @libc['malloc']
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_ptr
|
||||||
|
assert_equal @cf.ptr, @libc[@name]
|
||||||
|
end
|
||||||
|
|
||||||
def test_set_calltype
|
def test_set_calltype
|
||||||
@cf.calltype = :foo
|
@cf.calltype = :foo
|
||||||
assert_equal :foo, @cf.calltype
|
assert_equal :foo, @cf.calltype
|
||||||
|
|
Loading…
Reference in a new issue