Sha256: c012dd9f34a557f113eb96719257d85e236fd41549dd013b955887d26b6ed799

Contents?: true

Size: 1.31 KB

Versions: 4

Compression:

Stored size: 1.31 KB

Contents

# frozen_string_literal: true

require "ffi"
require "ffi/bit_masks"

require "ffi-gobject_introspection"

require "gir_ffi-base"

require "gir_ffi/ffi_ext"
require "gir_ffi/class_base"
require "gir_ffi/type_map"
require "gir_ffi/info_ext"
require "gir_ffi/in_pointer"
require "gir_ffi/sized_array"
require "gir_ffi/zero_terminated"
require "gir_ffi/arg_helper"
require "gir_ffi/builder"
require "gir_ffi/user_defined_object_info"
require "gir_ffi/builders/user_defined_builder"
require "gir_ffi/version"

module GirFFI
  # Core GirFFI interface.
  module Core
    def setup(namespace, version = nil)
      namespace = namespace.to_s
      Builder.build_module namespace, version
    end

    def define_type(klass)
      unless klass < GirFFI::ObjectBase
        raise ArgumentError, "#{klass} is not a GObject class"
      end

      klass.prepare_user_defined_class
      info = klass.gir_info

      unless info.is_a? UserDefinedObjectInfo
        raise ArgumentError, "#{klass} is not a user-defined class"
      end

      if block_given?
        warn "Using define_type with a block is deprecated." \
          " Call the relevant functions inside the class definition instead."
        yield info
      end
      Builders::UserDefinedBuilder.new(info).build_class

      klass.gtype
    end
  end
end

GirFFI.extend GirFFI::Core

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
gir_ffi-0.15.7 lib/gir_ffi/core.rb
gir_ffi-0.15.6 lib/gir_ffi/core.rb
gir_ffi-0.15.5 lib/gir_ffi/core.rb
gir_ffi-0.15.4 lib/gir_ffi/core.rb