class Fzeet::Windows::VARIANT
Public Class Methods
[](type, value)
click to toggle source
# File lib/fzeet/windows/oleaut/Variant.rb, line 125 def self.[](type, value) new.tap { |variant| variant.send("#{type}=", value) } end
Public Instance Methods
array()
click to toggle source
# File lib/fzeet/windows/oleaut/Variant.rb, line 233 def array raise 'Wrong type tag.' unless self[:vt] & VT_ARRAY == VT_ARRAY SAFEARRAY.new(self[:parray]) end
array=(array)
click to toggle source
# File lib/fzeet/windows/oleaut/Variant.rb, line 239 def array=(array) clear; self[:vt] = VT_ARRAY | VT_VARIANT; self[:parray] = array end
bool()
click to toggle source
# File lib/fzeet/windows/oleaut/Variant.rb, line 127 def bool; raise 'Wrong type tag.' unless self[:vt] == VT_BOOL; self[:boolVal] != 0 end
bool=(bool)
click to toggle source
# File lib/fzeet/windows/oleaut/Variant.rb, line 128 def bool=(bool) clear; self[:vt] = VT_BOOL; self[:boolVal] = (bool) ? -1 : 0 end
bstr()
click to toggle source
# File lib/fzeet/windows/oleaut/Variant.rb, line 163 def bstr; raise 'Wrong type tag.' unless self[:vt] == VT_BSTR; BSTR.new(self[:bstrVal]).multibyte end
Also aliased as: string
bstr=(str)
click to toggle source
# File lib/fzeet/windows/oleaut/Variant.rb, line 164 def bstr=(str) clear; self[:vt] = VT_BSTR; self[:bstrVal] = BSTR[str].pointer end
Also aliased as: string=
byref(deref = nil)
click to toggle source
# File lib/fzeet/windows/oleaut/Variant.rb, line 241 def byref(deref = nil) raise 'Wrong type tag.' unless self[:vt] & VT_BYREF == VT_BYREF (deref) ? self[:byref].send("get_#{deref}", 0) : self[:byref] end
byref=(byref)
click to toggle source
# File lib/fzeet/windows/oleaut/Variant.rb, line 247 def byref=(byref) clear; self[:vt] = VT_BYREF; self[:byref] = byref end
clear()
click to toggle source
# File lib/fzeet/windows/oleaut/Variant.rb, line 252 def clear; Windows.DetonateHresult(:VariantClear, self); self end
date()
click to toggle source
# File lib/fzeet/windows/oleaut/Variant.rb, line 169 def date raise 'Wrong type tag.' unless self[:vt] == VT_DATE raise 'VariantTimeToSystemTime failed.' if Windows.VariantTimeToSystemTime(self[:date], st = SYSTEMTIME.new) == 0 st.get end
Also aliased as: time
date=(date)
click to toggle source
# File lib/fzeet/windows/oleaut/Variant.rb, line 177 def date=(date) clear self[:vt] = VT_DATE FFI::MemoryPointer.new(:double) { |pdate| raise 'SystemTimeToVariantTime failed.' if Windows.SystemTimeToVariantTime(SYSTEMTIME[date], pdate) == 0 self[:date] = pdate.get_double(0) } end
Also aliased as: time=
decimal(as = :double)
click to toggle source
# File lib/fzeet/windows/oleaut/Variant.rb, line 192 def decimal(as = :double) raise 'Wrong type tag.' unless self[:vt] == VT_DECIMAL DECIMAL.new(self[:decVal].pointer).send(as) end
decimal=(decimal)
click to toggle source
# File lib/fzeet/windows/oleaut/Variant.rb, line 198 def decimal=(decimal) clear self[:vt] = VT_DECIMAL DECIMAL[decimal].tap { |dec| self[:decVal].members.each { |member| next if member == :wReserved # This is self[:vt] self[:decVal][member] = dec[member] } } end
object()
click to toggle source
# File lib/fzeet/windows/oleaut/Variant.rb, line 249 def object; ObjectSpace._id2ref(i4) end
object=(object)
click to toggle source
# File lib/fzeet/windows/oleaut/Variant.rb, line 250 def object=(object) self.i4 = object.object_id end