Spec-Zone.ru › Ruby 2.6

class Fiddle::CUnionEntity

Parent:
Fiddle::CStructEntity

Обёртка над C объединением

Публичные методы класса

malloc(types, func=nil) Показать исходный код
# File ext/fiddle/lib/fiddle/struct.rb, line 217
def CUnionEntity.malloc(types, func=nil)
  addr = Fiddle.malloc(CUnionEntity.size(types))
  CUnionEntity.new(addr, types, func)
end

Выделяет память для C объединения с заданными types.

При сборке мусора вызывается C функция func.

size(types) Показать исходный код
# File ext/fiddle/lib/fiddle/struct.rb, line 229
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

Публичные методы экземпляра

set_ctypes(types) Показать исходный код
# File ext/fiddle/lib/fiddle/struct.rb, line 237
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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API