module Unknownr::Windows::COM::Interface
Public Class Methods
[](*args)
click to toggle source
# File lib/unknownr.rb, line 105 def self.[](*args) spec, iid, *ifaces = args.reverse spec.each { |name, signature| signature[0].unshift(:pointer) } Class.new(FFI::Struct) { const_set(:IID, iid) const_set(:VTBL, Class.new(FFI::Struct) { const_set(:SPEC, Hash[(ifaces.map { |iface| iface::VTBL::SPEC.to_a } << spec.to_a).flatten(1)]) layout \ *self::SPEC.map { |name, signature| [name, callback(*signature)] }.flatten }) layout \ :lpVtbl, :pointer } end