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 68 def self.[](*args) 69 spec, iid, *ifaces = args.reverse 70 71 spec.each { |name, signature| signature[0].unshift(:pointer) } 72 73 Class.new(FFI::Struct) do 74 const_set(:IID, iid) 75 76 vtable = Class.new(FFI::Struct) do 77 vtable_hash = Hash[(ifaces.map { |iface| iface::VTBL::SPEC.to_a } << spec.to_a).flatten(1)] 78 const_set(:SPEC, vtable_hash) 79 80 layout( 81 *self::SPEC.map { |name, signature| [name, callback(*signature)] }.flatten 82 ) 83 end 84 85 const_set(:VTBL, vtable) 86 87 layout \ 88 :lpVtbl, :pointer 89 end 90 end