module Puppet::Util::Windows::COM::Instance

Public Class Methods

[](iface) click to toggle source
    # File lib/puppet/util/windows/com.rb
129 def self.[](iface)
130   Class.new(iface) do
131     send(:include, Helpers)
132 
133     def initialize(pointer)
134       self.pointer = pointer
135 
136       @vtbl = self.class::VTBL.new(self[:lpVtbl])
137     end
138 
139     attr_reader :vtbl
140 
141     self::VTBL.members.each do |name|
142       define_method(name) do |*args|
143         if Puppet::Util::Windows::COM.FAILED(result = @vtbl[name].call(self, *args))
144           raise Puppet::Util::Windows::Error.new(_("Failed to call %{klass}::%{name} with HRESULT: %{result}.") % { klass: self, name: name, result: result }, result)
145         end
146         result
147       end
148     end
149 
150     layout \
151       :lpVtbl, :pointer
152   end
153 end
new(pointer) click to toggle source
    # File lib/puppet/util/windows/com.rb
133 def initialize(pointer)
134   self.pointer = pointer
135 
136   @vtbl = self.class::VTBL.new(self[:lpVtbl])
137 end