Method: Fiddle::ValueUtil#signed_value

Defined in:
lib/fiddle/value.rb

#signed_value(val, ty) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/fiddle/value.rb', line 26

def signed_value(val, ty)
  case ty.abs
  when TYPE_CHAR
    [val].pack("C").unpack1("c")
  when TYPE_SHORT
    [val].pack("S!").unpack1("s!")
  when TYPE_INT
    [val].pack("I!").unpack1("i!")
  when TYPE_LONG
    [val].pack("L!").unpack1("l!")
  else
    if defined?(TYPE_LONG_LONG) and
      ty.abs == TYPE_LONG_LONG
      [val].pack("Q").unpack1("q")
    else
      val
    end
  end
end