module Fiddley::Utils
Constants
- SIZET_FORMAT
assumes short = 16bit, int = 32bit, long long = 64bit
- SIZET_TYPE
Public Instance Methods
str2value(type, str)
click to toggle source
# File lib/fiddley/utils.rb, line 71 def str2value(type, str) case type when :char, :int8 str.unpack1('c') when :uchar, :uint8 str.unpack1('C') when :short, :int16 str.unpack1('s') when :ushort, :uint16 str.unpack1('S') when :int32 str.unpack1('l') when :uint32 str.unpack1('L') when :int str.unpack1('i!') when :uint str.unpack1('I!') when :bool str.unpack1('i!') != 0 when :long str.unpack1('l!') when :ulong str.unpack1('L!') when :long_long, :int64 str.unpack1('q') when :ulong_long, :uint64 str.unpack1('Q') when :size_t str.unpack1(SIZET_FORMAT) when :float str.unpack1('f') when :double str.unpack1('d') when :string, :pointer str.unpack1('p') else raise RuntimeError, "unknown type #{type}" end end
type2offset_size(type)
click to toggle source
# File lib/fiddley/utils.rb, line 46 def type2offset_size(type) case type when :char, :uchar, :int8, :uint8 Fiddle::ALIGN_CHAR when :short, :ushort, :int16, :uint16 Fiddle::ALIGN_SHORT when :int, :uint, :int32, :uint32, :bool Fiddle::ALIGN_INT when :long, :ulong Fiddle::ALIGN_LONG when :int64, :uint64, :long_long, :ulong_long Fiddle::ALIGN_LONG_LONG when :float Fiddle::ALIGN_FLOAT when :double Fiddle::ALIGN_DOUBLE when :size_t Fiddle::ALIGN_SIZE_T when :string, :pointer Fiddle::ALIGN_VOIDP else raise RuntimeError, "unknown type #{type}" end end
type2size(type)
click to toggle source
# File lib/fiddley/utils.rb, line 21 def type2size(type) case type when :char, :uchar, :int8, :uint8 Fiddle::SIZEOF_CHAR when :short, :ushort, :int16, :uint16 Fiddle::SIZEOF_SHORT when :int, :uint, :int32, :uint32, :bool Fiddle::SIZEOF_INT when :long, :ulong Fiddle::SIZEOF_LONG when :int64, :uint64, :long_long, :ulong_long Fiddle::SIZEOF_LONG_LONG when :float Fiddle::SIZEOF_FLOAT when :double Fiddle::SIZEOF_DOUBLE when :size_t Fiddle::SIZEOF_SIZE_T when :string, :pointer Fiddle::SIZEOF_VOIDP else raise RuntimeError, "unknown type #{type}" end end
type2str(type)
click to toggle source
# File lib/fiddley/utils.rb, line 153 def type2str(type) case type when :char, :int8 "char" when :uchar, :uint8 "unsigned char" when :short, :int16 "short" when :ushort, :uint16 "unsigned short" when :int, :int32 "int" when :uint, :uint32 "unsigned int" when :bool "int" when :long "long" when :ulong "unsigned long" when :long_long, :int64 "long long" when :ulong_long, :uint64 "unsigned long long" when :size_t SIZET_TYPE when :float "float" when :double "double" when :string, :pointer "void *" else if @enums && @enums.find{|e| type == e.tag} "int" else type.to_s end end end
type2type(type)
click to toggle source
# File lib/fiddley/utils.rb, line 194 def type2type(type) case type when :char, :int8 Fiddle::TYPE_CHAR when :uchar, :uint8 -Fiddle::TYPE_CHAR when :short, :int16 Fiddle::TYPE_SHORT when :ushort, :uint16 -Fiddle::TYPE_SHORT when :int, :int32 Fiddle::TYPE_INT when :uint, :uint32 -Fiddle::TYPE_INT when :bool Fiddle::TYPE_INT when :long Fiddle::TYPE_LONG when :ulong -Fiddle::TYPE_LONG when :long_long, :int64 Fiddle::TYPE_LONG_LONG when :ulong_long, :uint64 -Fiddle::TYPE_LONG_LONG when :float Fiddle::TYPE_FLOAT when :double Fiddle::TYPE_DOUBLE when :size_t Fiddle::TYPE_SIZE_T when :string, :pointer Fiddle::TYPE_VOIDP when :void Fiddle::TYPE_VOID else raise RuntimeError, "unknown type #{type}" end end
value2str(type, value)
click to toggle source
# File lib/fiddley/utils.rb, line 112 def value2str(type, value) case type when :char, :int8 [value].pack('c') when :uchar, :uint8 [value].pack('C') when :short, :int16 [value].pack('s') when :ushort, :uint16 [value].pack('S') when :int32 [value].pack('l') when :uint32 [value].pack('L') when :int [value].pack('i!') when :uint [value].pack('I!') when :bool [value ? 1 : 0].pack('i!') when :long [value].pack('l!') when :ulong [value].pack('L!') when :long_long, :int64 [value].pack('q') when :ulong_long, :uint64 [value].pack('Q') when :size_t [value].pack(SIZET_FORMAT) when :float [value].pack('f') when :double [value].pack('d') when :string, :pointer [value].pack('p') else raise RuntimeError, "unknown type #{type}" end end