Module: Khiva::Utils

Defined in:
lib/khiva/utils.rb

Class Method Summary collapse

Class Method Details

.bool_ptr(v) ⇒ Object



24
25
26
# File 'lib/khiva/utils.rb', line 24

def bool_ptr(v)
  Fiddle::Pointer[[v ? 1 : 0].pack("c")]
end

.create_ptrObject



4
5
6
# File 'lib/khiva/utils.rb', line 4

def create_ptr
  Fiddle::Pointer.malloc(Fiddle::SIZEOF_VOIDP)
end

.double_ptr(v) ⇒ Object



20
21
22
# File 'lib/khiva/utils.rb', line 20

def double_ptr(v)
  Fiddle::Pointer[[v].pack("d")]
end

.float_ptr(v) ⇒ Object



16
17
18
# File 'lib/khiva/utils.rb', line 16

def float_ptr(v)
  Fiddle::Pointer[[v].pack("f")]
end

.int_ptr(v) ⇒ Object



8
9
10
# File 'lib/khiva/utils.rb', line 8

def int_ptr(v)
  Fiddle::Pointer[[v].pack("i")]
end

.long_ptr(v) ⇒ Object



12
13
14
# File 'lib/khiva/utils.rb', line 12

def long_ptr(v)
  Fiddle::Pointer[[v].pack("L!")]
end

.reshape(arr, dims) ⇒ Object

TODO make more efficient



29
30
31
32
33
34
35
# File 'lib/khiva/utils.rb', line 29

def reshape(arr, dims)
  arr = arr.flatten
  dims[1..-1].reverse.each do |dim|
    arr = arr.each_slice(dim)
  end
  arr.to_a
end