Module: Qt::Bridge

Extended by:
FFI::Library
Defined in:
lib/qt/bridge.rb

Overview

Bridge helpers for registering and disposing wrapped native objects.

Class Method Summary collapse

Class Method Details

.gem_extension_library_candidates(ext) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/qt/bridge.rb', line 59

def gem_extension_library_candidates(ext)
  spec = Gem::Specification.find_by_name('qt')
  extension_dir = spec&.extension_dir
  return [] if extension_dir.nil? || extension_dir.empty?

  [
    File.join(extension_dir, 'qt', "qt_ruby_bridge.#{ext}"),
    File.join(extension_dir, "qt_ruby_bridge.#{ext}")
  ]
rescue Gem::LoadError
  []
end

.library_candidatesObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/qt/bridge.rb', line 33

def library_candidates
  @library_candidates ||= begin
    ext = RbConfig::CONFIG['DLEXT']
    root = File.expand_path('../..', __dir__)
    load_path_candidates = load_path_library_candidates(ext)
    gem_extension_candidates = gem_extension_library_candidates(ext)

    [
      File.join(root, 'build', 'qt', "qt_ruby_bridge.#{ext}"),
      File.join(root, 'lib', 'qt', "qt_ruby_bridge.#{ext}"),
      *gem_extension_candidates,
      *load_path_candidates,
      'qt_ruby_bridge'
    ].uniq
  end
end

.load!Object



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/qt/bridge.rb', line 13

def load!
  return true if @loaded

  ffi_lib(library_candidates)
  attach_api
  @loaded = true
rescue LoadError, FFI::NotFoundError => e
  @loaded = false
  @load_error = e
  false
end

.load_errorObject



29
30
31
# File 'lib/qt/bridge.rb', line 29

def load_error
  @load_error
end

.load_path_library_candidates(ext) ⇒ Object



50
51
52
53
54
55
56
57
# File 'lib/qt/bridge.rb', line 50

def load_path_library_candidates(ext)
  $LOAD_PATH.flat_map do |entry|
    [
      File.join(entry, 'qt', "qt_ruby_bridge.#{ext}"),
      File.join(entry, "qt_ruby_bridge.#{ext}")
    ]
  end
end

.loaded?Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/qt/bridge.rb', line 25

def loaded?
  !!@loaded
end