Sha256: 265546dd7a07ab403da602c6635461d5d2eb20c414fafb72220d8e85a54b8907
Contents?: true
Size: 1.13 KB
Versions: 3
Compression:
Stored size: 1.13 KB
Contents
# frozen_string_literal: true require 'gir_ffi/builders/field_builder' module GirFFI module Builders # Implements the creation of classes representing types with layout, # i.e., :union, :struct, :object. # NOTE: This module depends on methods in RegisteredTypeBuilder. module WithLayout def layout_specification spec = base_layout_specification if spec.empty? dummy_layout_specification else spec end end private def setup_layout spec = layout_specification struct_class.class_eval do layout(*spec) end end def dummy_layout_specification if parent_info [:parent, superclass::Struct, 0] else [:dummy, :char, 0] end end def base_layout_specification fields.map(&:layout_specification).flatten(1) end def klass @klass ||= get_or_define_class namespace_module, @classname, superclass end def struct_class @struct_class ||= get_or_define_class klass, :Struct, layout_superclass end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
gir_ffi-0.14.1 | lib/gir_ffi/builders/with_layout.rb |
gir_ffi-0.14.0 | lib/gir_ffi/builders/with_layout.rb |
gir_ffi-0.13.1 | lib/gir_ffi/builders/with_layout.rb |