Module: Khiva::FFI

Extended by:
Fiddle::Importer
Defined in:
lib/khiva/ffi.rb

Class Method Summary collapse

Class Method Details

.call(method, *args) ⇒ Object



198
199
200
201
202
203
# File 'lib/khiva/ffi.rb', line 198

def call(method, *args)
  FFI.send(method, *args, error_code, error_message)
  if error_code.to_s(error_code.size).unpack1("i*") != 0
    raise Error, error_message.to_s
  end
end

.error_codeObject

thread-safe



189
190
191
# File 'lib/khiva/ffi.rb', line 189

def error_code
  Thread.current[:khiva_error_code] ||= Fiddle::Pointer.malloc(Fiddle::SIZEOF_INT)
end

.error_messageObject

thread-safe



194
195
196
# File 'lib/khiva/ffi.rb', line 194

def error_message
  Thread.current[:khiva_error_message] ||= Fiddle::Pointer.malloc(256)
end