class Fzeet::Windows::SAFEARRAY
Public Class Methods
vector(length, vt = :variant) { |sa;| ... }
click to toggle source
# File lib/fzeet/windows/oleaut/SafeArray.rb, line 22 def self.vector(length, vt = :variant) raise 'Not implemented.' if vt != :variant raise 'SafeArrayCreateVector failed.' if (psa = Windows.SafeArrayCreateVector(Windows.const_get("VT_#{vt.upcase}"), 0, length)).null? sa = new(psa) if block_given? yield sa; sa.dispose; return nil end sa end
Public Instance Methods
[](i)
click to toggle source
# File lib/fzeet/windows/oleaut/SafeArray.rb, line 49 def [](i) return old_get(i) if i.kind_of?(Symbol) FFI::MemoryPointer.new(:long) { |pi| pi.put_long(0, i) Windows.DetonateHresult(:SafeArrayGetElement, self, pi, v = VARIANT.new) return v } end
[]=(i, v)
click to toggle source
# File lib/fzeet/windows/oleaut/SafeArray.rb, line 65 def []=(i, v) return old_put(i, v) if i.kind_of?(Symbol) FFI::MemoryPointer.new(:long) { |pi| pi.put_long(0, i) Windows.DetonateHresult(:SafeArrayPutElement, self, pi, v) } self end
destroy()
click to toggle source
# File lib/fzeet/windows/oleaut/SafeArray.rb, line 79 def destroy; Windows.DetonateHresult(:SafeArrayDestroy, self) end
Also aliased as: dispose
each() { |self| ... }
click to toggle source
# File lib/fzeet/windows/oleaut/SafeArray.rb, line 82 def each; length.times { |i| yield self[i] }; self end
length(dim = 0)
click to toggle source
# File lib/fzeet/windows/oleaut/SafeArray.rb, line 37 def length(dim = 0) raise 'Not implemented.' if dim != 0; self[:rgsabound][dim][:cElements] end
vt()
click to toggle source
# File lib/fzeet/windows/oleaut/SafeArray.rb, line 39 def vt FFI::MemoryPointer.new(:ushort) { |pvt| Windows.DetonateHresult(:SafeArrayGetVartype, self, pvt) return pvt.get_ushort(0) } end