diff options
author | ttate <ttate@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-02-06 06:54:12 +0000 |
---|---|---|
committer | ttate <ttate@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2005-02-06 06:54:12 +0000 |
commit | 93711e5bd35203e6622f89fe72b38b13478b9313 (patch) | |
tree | 165dde56bed8257b9f3028135dc50b438f8d5060 /ext/dl/lib/dl | |
parent | b393a2bc5fe07abef59656a6358f7ee7113bbe8b (diff) |
added DL::Importer.sizeof().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/dl/lib/dl')
-rw-r--r-- | ext/dl/lib/dl/import.rb | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/ext/dl/lib/dl/import.rb b/ext/dl/lib/dl/import.rb index 2f21e9195c..2ad805598a 100644 --- a/ext/dl/lib/dl/import.rb +++ b/ext/dl/lib/dl/import.rb @@ -62,6 +62,38 @@ module DL @type_alias[alias_type] = orig_type end + def sizeof(ty) + case ty + when String + ty = parse_ctype(ty, @type_alias).abs() + case ty + when TYPE_CHAR + return SIZEOF_CHAR + when TYPE_SHORT + return SIZEOF_SHORT + when TYPE_INT + return SIZEOF_INT + when TYPE_LONG + return SIZEOF_LONG + when TYPE_LONG_LONG + return SIZEOF_LONG_LON + when TYPE_FLOAT + return SIZEOF_FLOAT + when TYPE_DOUBLE + return SIZEOF_DOUBLE + when TYPE_VOIDP + return SIZEOF_VOIDP + else + raise(DLError, "unknown type: #{ty}") + end + when Class + if( ty.instance_methods().include?("to_ptr") ) + return ty.size() + end + end + return CPtr[ty].size() + end + def parse_bind_options(opts) h = {} prekey = nil |