152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
|
# File 'lib/windows_com/common.rb', line 152
def self.[](parent_vtbl, spec)
spec.each { |name, sig|
sig[0].unshift(:pointer) }
Class.new(FFI::Struct) {
const_set :ParentVtbl, parent_vtbl
const_set :Spec, {}
self::Spec.merge!(self::ParentVtbl::Spec) if self::ParentVtbl
self::Spec.merge!(spec)
layout_args = self::Spec.map { |name, sig|
params, ret = sig
[name, callback(params, ret)]
}
layout_args.flatten!
layout(*layout_args)
}
end
|