class Fiddle::CUnionEntity
Обёртка над C объединением
Публичные методы класса
# File ext/fiddle/lib/fiddle/struct.rb, line 216 def CUnionEntity.malloc(types, func=nil) addr = Fiddle.malloc(CUnionEntity.size(types)) CUnionEntity.new(addr, types, func) end
Выделяет память для C объединения с указанными types.
При сборке мусора вызывается C функция func.
# File ext/fiddle/lib/fiddle/struct.rb, line 228
def CUnionEntity.size(types)
types.map { |type, count = 1|
PackInfo::SIZE_MAP[type] * count
}.max
end Возвращает размер объединения с заданными types.
Fiddle::CUnionEntity.size(
[ Fiddle::TYPE_DOUBLE,
Fiddle::TYPE_INT,
Fiddle::TYPE_CHAR,
Fiddle::TYPE_VOIDP ]) #=> 8
Публичные методы экземпляра
# File ext/fiddle/lib/fiddle/struct.rb, line 236 def set_ctypes(types) @ctypes = types @offset = Array.new(types.length, 0) @size = self.class.size types end
Вычисляет необходимые смещения для каждого члена объединения с учётом заданных types.
Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.