Module: Fzeet::Windows::COM::Instance

Defined in:
lib/fzeet/windows/com/Common.rb

Class Method Summary collapse

Class Method Details

.[](iface) ⇒ Object



157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# File 'lib/fzeet/windows/com/Common.rb', line 157

def self.[](iface)
	Class.new(iface) {
		send(:include, Helpers)

		def initialize(pointer)
			self.pointer = pointer

			@vtbl = self.class::VTBL.new(self[:lpVtbl])
		end

		attr_reader :vtbl

		self::VTBL.members.each { |name|
			define_method(name) { |*args|
				raise "#{self}.#{name} failed." if Windows.FAILED(result = @vtbl[name].call(self, *args)); result
			}
		}
	}
end