From 1df7f359d1ce916b34d141e6fbc0f591a2bc8428 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 27 Dec 2022 11:19:25 -0800 Subject: [ruby/fiddle] Update documentation (https://github.com/ruby/fiddle/pull/119) The documentation for `Fiddle.dlwrap` and `Fiddle.dlunwrap` were not very accurate and pretty confusing. This commit updates the documentation so it's easier to understand what the methods do. --- ext/fiddle/fiddle.c | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) (limited to 'ext/fiddle') diff --git a/ext/fiddle/fiddle.c b/ext/fiddle/fiddle.c index c06cd5634a..aee3a4b42b 100644 --- a/ext/fiddle/fiddle.c +++ b/ext/fiddle/fiddle.c @@ -58,18 +58,16 @@ rb_fiddle_free(VALUE self, VALUE addr) /* * call-seq: Fiddle.dlunwrap(addr) * - * Returns the hexadecimal representation of a memory pointer address +addr+ + * Returns the Ruby object stored at the memory address +addr+ * * Example: * - * lib = Fiddle.dlopen('/lib64/libc-2.15.so') - * => # - * - * lib['strcpy'].to_s(16) - * => "7f59de6dd240" - * - * Fiddle.dlunwrap(Fiddle.dlwrap(lib['strcpy'].to_s(16))) - * => "7f59de6dd240" + * >> x = Object.new + * => # + * >> Fiddle.dlwrap(x) + * => 4425504880 + * >> Fiddle.dlunwrap(_) + * => # */ VALUE rb_fiddle_ptr2value(VALUE self, VALUE addr) @@ -80,15 +78,22 @@ rb_fiddle_ptr2value(VALUE self, VALUE addr) /* * call-seq: Fiddle.dlwrap(val) * - * Returns a memory pointer of a function's hexadecimal address location +val+ + * Returns the memory address of the Ruby object stored at +val+ * * Example: * - * lib = Fiddle.dlopen('/lib64/libc-2.15.so') - * => # + * >> x = Object.new + * => # + * >> Fiddle.dlwrap(x) + * => 4425504880 + * + * In the case +val+ is not a heap allocated object, this method will return + * the tagged pointer value. + * + * Example: * - * Fiddle.dlwrap(lib['strcpy'].to_s(16)) - * => 25522520 + * >> Fiddle.dlwrap(123) + * => 247 */ static VALUE rb_fiddle_value2ptr(VALUE self, VALUE val) -- cgit v1.2.1