module WinFFI::LibBase

Public Class Methods

extended(c) click to toggle source
# File lib/win-ffi/core/lib_base.rb, line 47
def self.extended(c)
  c.extend FFI::Library
  instance_variables.each do |v|
    value = instance_variable_get(v)
    value = value.dup unless value.is_a?(Integer) || value.is_a?(Symbol)
    c.instance_variable_set(v, value)
  end
end

Public Instance Methods

define_prefix(prefix, target_enum, without_underscore = false) click to toggle source
# File lib/win-ffi/core/lib_base.rb, line 33
def define_prefix(prefix, target_enum, without_underscore = false)
  target_enum.to_h.each do |k, v|
    name = "#{prefix}#{without_underscore ? '' : '_'}#{k}"
    const_set(name, v) unless const_defined? name
  end
end
define_suffix(suffix, target_enum, without_underscore = false) click to toggle source
# File lib/win-ffi/core/lib_base.rb, line 40
def define_suffix(suffix, target_enum, without_underscore = false)
  target_enum.to_h.each do |k, v|
    name = "#{k}#{without_underscore ? '' : '_'}#{suffix}"
    const_set(name, v) unless const_defined? name
  end
end
encoded_function(name, *args, ruby_name: nil) click to toggle source
# File lib/win-ffi/core/lib_base.rb, line 28
def encoded_function(name, *args, ruby_name: nil)
  ruby_name = name unless ruby_name
  attach_function ruby_name, name + WinFFI.encoding, *args
end