Skip to content

sinisterchipmunk/sizes

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sizes

A very simple gem that exposes the C sizeof keyword to Ruby.

This does not check the memory footprint of a given Ruby object. I may implement that sometime in the future if it’s really needed, but for now this gem is only useful for checking primitive C types such as float, short, and so on.

I wrote this because I couldn’t find any cross-platform way to get these sizes from within Ruby. If it exists, then I’ve just reinvented the wheel, but at least I’m documenting it. :)

Installation

gem install sizes

Usage

require 'sizes'
import Sizes
sizeof(:short)
#=> 2

The sizeof method can also be called as a module function:

require 'sizes'
Sizes.sizeof(:float)
#=> 4

More info

Arguments to the #sizeof method can be either symbols or strings, and must be one of the following supported types:

:char
:unsigned_char
:signed_char
:signed_int
:int
:signed_short_int
:signed_long_int
:long_int
:long
:unsigned_int
:unsigned
:unsigned_short_int
:unsigned_short
:unsigned_long_int
:unsigned_long
:float
:double
:long_double
:int8            
:int16           
:int32           
:int64           
:uint8           
:uint16          
:uint32          
:uint64          
:int_least8      
:int_least16     
:int_least32     
:int_least64     
:uint_least8     
:uint_least16    
:uint_least32    
:uint_least64    
:int_fast8       
:int_fast16      
:int_fast32      
:int_fast64      
:uint_fast8      
:uint_fast16     
:uint_fast32     
:uint_fast64     
:intptr          
:uintptr         
:intmax          
:uintmax         
:size_t, :size   
:wchar_t, :wchar

As you can see, some types are represented more than once with varying names. This is purely for convenience.

If the argument does not appear in the above list, an ArgumentError will be raised.

Note on Patches/Pull Requests

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.

Copyright © 2010 Colin MacKenzie IV. See LICENSE for details. thoughtsincomputation.com

About

A very simple gem that exposes the C *sizeof* keyword to Ruby.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published