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
string()
Alias for: bstr
string=(str)
Alias for: bstr=
time()
Alias for: date
time=(date)
Alias for: date=