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

Public Class Methods

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