Module: Mitie::Utils

Defined in:
lib/mitie/utils.rb

Class Method Summary collapse

Class Method Details

.array_to_pointer(text) ⇒ Object



3
4
5
6
7
8
9
10
11
12
# File 'lib/mitie/utils.rb', line 3

def self.array_to_pointer(text)
  # malloc uses memset to set all bytes to 0
  tokens_ptr = Fiddle::Pointer.malloc(Fiddle::SIZEOF_VOIDP * (text.size + 1), Fiddle::RUBY_FREE)
  text_ptrs = text.map { |v| Fiddle::Pointer[v] }
  text.size.times do |i|
    tokens_ptr[i * Fiddle::SIZEOF_VOIDP, Fiddle::SIZEOF_VOIDP] = text_ptrs[i].ref
  end
  tokens_ptr.instance_variable_set(:@mitie_refs, text_ptrs)
  tokens_ptr
end

.check_range(range, num_tokens) ⇒ Object



14
15
16
17
18
# File 'lib/mitie/utils.rb', line 14

def self.check_range(range, num_tokens)
  if range.none? || !(0..(num_tokens - 1)).cover?(range)
    raise ArgumentError, "Invalid range"
  end
end

.read_double(ptr) ⇒ Object



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

def self.read_double(ptr)
  ptr.to_str(Fiddle::SIZEOF_DOUBLE).unpack1("d")
end