Class: Fzeet::Windows::PROPVARIANT

Inherits:
FFI::Union
  • Object
show all
Includes:
AnonymousSupport
Defined in:
lib/fzeet/windows/ole/PropVariant.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from AnonymousSupport

#[], #[]=

Class Method Details

.[](t, *v) ⇒ Object



95
# File 'lib/fzeet/windows/ole/PropVariant.rb', line 95

def self.[](t, *v) new.tap { |var| var.send("#{t}=", *v) } end

Instance Method Details

#boolObject



97
# File 'lib/fzeet/windows/ole/PropVariant.rb', line 97

def bool; raise 'Wrong type tag.' unless self[:vt] == VT_BOOL; self[:boolVal] != 0 end

#bool=(bool) ⇒ Object



98
# File 'lib/fzeet/windows/ole/PropVariant.rb', line 98

def bool=(bool) self[:vt] = VT_BOOL; self[:boolVal] = (bool) ? -1 : 0 end

#decimalObject



128
129
130
131
132
# File 'lib/fzeet/windows/ole/PropVariant.rb', line 128

def decimal
	raise 'Wrong type tag.' unless self[:vt] == VT_DECIMAL

	Rational(self[:decVal][:Lo64], 10 ** self[:decVal][:scale]) + self[:decVal][:Hi32]
end

#decimal=(decimal) ⇒ Object



134
# File 'lib/fzeet/windows/ole/PropVariant.rb', line 134

def decimal=(decimal) self[:vt] = VT_DECIMAL; self[:decVal][:Lo64] = decimal end

#intObject



100
# File 'lib/fzeet/windows/ole/PropVariant.rb', line 100

def int; raise 'Wrong type tag.' unless self[:vt] == VT_I4; self[:intVal] end

#int=(int) ⇒ Object



101
# File 'lib/fzeet/windows/ole/PropVariant.rb', line 101

def int=(int) self[:vt] = VT_I4; self[:intVal] = int end

#uintObject



103
# File 'lib/fzeet/windows/ole/PropVariant.rb', line 103

def uint; raise 'Wrong type tag.' unless self[:vt] == VT_UI4; self[:uintVal] end

#uint=(uint) ⇒ Object



104
# File 'lib/fzeet/windows/ole/PropVariant.rb', line 104

def uint=(uint) self[:vt] = VT_UI4; self[:uintVal] = uint end

#unknownObject



106
107
108
109
110
111
112
# File 'lib/fzeet/windows/ole/PropVariant.rb', line 106

def unknown
	raise 'Wrong type tag.' unless self[:vt] == VT_UNKNOWN

	yield Unknown.new(self[:punkVal])
ensure
	Windows.PropVariantClear(self)
end

#unknown=(unknown) ⇒ Object



114
# File 'lib/fzeet/windows/ole/PropVariant.rb', line 114

def unknown=(unknown) self[:vt] = VT_UNKNOWN; self[:punkVal] = unknown.pointer; unknown.AddRef end

#wstringObject



116
# File 'lib/fzeet/windows/ole/PropVariant.rb', line 116

def wstring; raise 'Wrong type tag.' unless self[:vt] == VT_LPWSTR; Windows.WCSTOMBS(self[:pwszVal]) end

#wstring=(string) ⇒ Object



118
119
120
121
122
123
124
125
126
# File 'lib/fzeet/windows/ole/PropVariant.rb', line 118

def wstring=(string)
	self[:vt] = VT_LPWSTR

	FFI::MemoryPointer.new(:pointer) { |p|
		Windows.DetonateHresult(:SHStrDup, string, p)

		self[:pwszVal] = p.read_pointer
	}
end