Sha256: a022761673fde564d5f8dc5e9c51da897cd3a9b6de09b4da3e346ce62bbf9bd6

Contents?: true

Size: 1.01 KB

Versions: 7

Compression:

Stored size: 1.01 KB

Contents

require 'gir_ffi/builder/type'
require 'gir_ffi/builder/module'
require 'gir_ffi/builder_helper'
require 'gir_ffi/unintrospectable_type_info'

module GirFFI
  # Builds modules and classes based on information found in the
  # introspection repository. Call its build_module and build_class methods
  # to create the modules and classes used in your program.
  module Builder
    extend BuilderHelper

    def self.build_class info
      Builder::Type.build(info)
    end

    def self.build_by_gtype gtype
      info = GObjectIntrospection::IRepository.default.find_by_gtype gtype
      info ||= UnintrospectableTypeInfo.new gtype

      build_class info
    end

    def self.build_module namespace, version=nil
      Builder::Module.new(namespace, version).generate
    end

    # TODO: Move elsewhere, perhaps to Builder::Function.
    def self.attach_ffi_function lib, info
      sym = info.symbol
      return if lib.method_defined? sym

      lib.attach_function sym, info.argument_ffi_types, info.return_ffi_type
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
gir_ffi-0.6.6 lib/gir_ffi/builder.rb
gir_ffi-0.6.5 lib/gir_ffi/builder.rb
gir_ffi-0.6.4 lib/gir_ffi/builder.rb
gir_ffi-0.6.3 lib/gir_ffi/builder.rb
gir_ffi-0.6.2 lib/gir_ffi/builder.rb
gir_ffi-0.6.1 lib/gir_ffi/builder.rb
gir_ffi-0.6.0 lib/gir_ffi/builder.rb