Method: OpenC3::Win32API#initialize

Defined in:
lib/openc3/win32/win32_main.rb

#initialize(dll_name, function_name, import, export = "0") ⇒ Win32API

Returns a new instance of Win32API.



36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/openc3/win32/win32_main.rb', line 36

def initialize(dll_name, function_name, import, export = "0")
  # Convert all input parameters into either 0, S, or I
  @function_prototype = [import].join.tr("VPpNnLlIiCc", "0SSI")
  params = []
  @function_prototype.split('').each do |param|
    params << VALUE_TYPEMAP[param]
  end

  # Get handle to dll file and add to cache if necessary
  dll_handle = DLL_CACHE[dll_name] ||= Fiddle.dlopen(dll_name)

  # Create Fiddle::Function necessary to call a function with proper return type and name
  @function = Fiddle::Function.new(dll_handle[function_name], params, VALUE_TYPEMAP[export.tr("VPpNnLlIi", "0SSI")])
end