Class: Fzeet::Windows::VARIANT
- Inherits:
-
FFI::Union
- Object
- FFI::Union
- Fzeet::Windows::VARIANT
- Includes:
- AnonymousSupport
- Defined in:
- lib/fzeet/windows/oleaut/Variant.rb
Class Method Summary collapse
Instance Method Summary collapse
- #array ⇒ Object
- #array=(array) ⇒ Object
- #bool ⇒ Object
- #bool=(bool) ⇒ Object
- #bstr ⇒ Object (also: #string)
- #bstr=(str) ⇒ Object (also: #string=)
- #byref(deref = nil) ⇒ Object
- #byref=(byref) ⇒ Object
- #clear ⇒ Object
- #date ⇒ Object (also: #time)
- #date=(date) ⇒ Object (also: #time=)
- #decimal(as = :double) ⇒ Object
- #decimal=(decimal) ⇒ Object
- #object ⇒ Object
- #object=(object) ⇒ Object
Methods included from AnonymousSupport
Class Method Details
.[](type, value) ⇒ Object
125 |
# File 'lib/fzeet/windows/oleaut/Variant.rb', line 125 def self.[](type, value) new.tap { |variant| variant.send("#{type}=", value) } end |
Instance Method Details
#array ⇒ Object
233 234 235 236 237 |
# 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) ⇒ Object
239 |
# File 'lib/fzeet/windows/oleaut/Variant.rb', line 239 def array=(array) clear; self[:vt] = VT_ARRAY | VT_VARIANT; self[:parray] = array end |
#bool ⇒ Object
127 |
# 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) ⇒ Object
128 |
# File 'lib/fzeet/windows/oleaut/Variant.rb', line 128 def bool=(bool) clear; self[:vt] = VT_BOOL; self[:boolVal] = (bool) ? -1 : 0 end |
#bstr ⇒ Object Also known as: string
163 |
# 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 |
#bstr=(str) ⇒ Object Also known as: string=
164 |
# File 'lib/fzeet/windows/oleaut/Variant.rb', line 164 def bstr=(str) clear; self[:vt] = VT_BSTR; self[:bstrVal] = BSTR[str].pointer end |
#byref(deref = nil) ⇒ Object
241 242 243 244 245 |
# 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) ⇒ Object
247 |
# File 'lib/fzeet/windows/oleaut/Variant.rb', line 247 def byref=(byref) clear; self[:vt] = VT_BYREF; self[:byref] = byref end |
#clear ⇒ Object
252 |
# File 'lib/fzeet/windows/oleaut/Variant.rb', line 252 def clear; Windows.DetonateHresult(:VariantClear, self); self end |
#date ⇒ Object Also known as: time
169 170 171 172 173 174 175 |
# 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 |
#date=(date) ⇒ Object Also known as: time=
177 178 179 180 181 182 183 184 185 186 187 |
# 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 |
#decimal(as = :double) ⇒ Object
192 193 194 195 196 |
# 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) ⇒ Object
198 199 200 201 202 203 204 205 206 207 208 209 210 |
# 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 ⇒ Object
249 |
# File 'lib/fzeet/windows/oleaut/Variant.rb', line 249 def object; ObjectSpace._id2ref(i4) end |
#object=(object) ⇒ Object
250 |
# File 'lib/fzeet/windows/oleaut/Variant.rb', line 250 def object=(object) self.i4 = object.object_id end |