* ext/dl/cptr.c (rb_dlptr_ptr, rb_dlptr_ref) adding documentation

* test/dl/test_cptr.rb (test_ref_ptr) testing CPtr#ref and CPtr#ptr

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25608 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
tenderlove 2009-11-01 01:47:08 +00:00
Родитель 4b76900a55
Коммит a9e662ac7a
2 изменённых файлов: 20 добавлений и 0 удалений

Просмотреть файл

@ -210,6 +210,12 @@ rb_dlptr_to_value(VALUE self)
return (VALUE)(data->ptr);
}
/*
* call-seq: ptr
*
* Returns a DL::CPtr that is a dereferenced pointer for this DL::CPtr.
* Analogous to the star operator in C.
*/
VALUE
rb_dlptr_ptr(VALUE self)
{
@ -219,6 +225,12 @@ rb_dlptr_ptr(VALUE self)
return rb_dlptr_new(*((void**)(data->ptr)),0,0);
}
/*
* call-seq: ref
*
* Returns a DL::CPtr that is a reference pointer for this DL::CPtr.
* Analogous to the ampersand operator in C.
*/
VALUE
rb_dlptr_ref(VALUE self)
{

Просмотреть файл

@ -3,6 +3,14 @@ require_relative '../ruby/envutil'
module DL
class TestCPtr < TestBase
def test_ref_ptr
ary = [0,1,2,4,5]
addr = CPtr.new(dlwrap(ary))
assert_equal addr.to_i, addr.ref.ptr.to_i
assert_equal addr.to_i, (+ (- addr)).to_i
end
def test_to_value
ary = [0,1,2,4,5]
addr = CPtr.new(dlwrap(ary))