module Puppet::Util::Windows::COM::Interface
code modified from Unknownr project github.com/rpeev/Unknownr licensed under MIT
Public Class Methods
[](*args)
click to toggle source
# File lib/puppet/util/windows/com.rb 67 def self.[](*args) 68 spec, iid, *ifaces = args.reverse 69 70 spec.each { |name, signature| signature[0].unshift(:pointer) } 71 72 Class.new(FFI::Struct) do 73 const_set(:IID, iid) 74 75 vtable = Class.new(FFI::Struct) do 76 vtable_hash = Hash[(ifaces.map { |iface| iface::VTBL::SPEC.to_a } << spec.to_a).flatten(1)] 77 const_set(:SPEC, vtable_hash) 78 79 layout( 80 *self::SPEC.map { |name, signature| [name, callback(*signature)] }.flatten 81 ) 82 end 83 84 const_set(:VTBL, vtable) 85 86 layout \ 87 :lpVtbl, :pointer 88 end 89 end