Class: GirFFI::Builder::Module
Overview
Builds a module based on information found in the introspection repository.
Instance Method Summary
collapse
#const_defined_for, #optionally_define_constant
Constructor Details
#initialize(namespace, version = nil) ⇒ Module
Returns a new instance of Module.
12
13
14
15
16
17
|
# File 'lib/gir_ffi/builder/module.rb', line 12
def initialize namespace, version=nil
@namespace = namespace
@version = version
@safe_namespace = @namespace.gsub(/^(.)/) { $1.upcase }
end
|
Instance Method Details
#build_module ⇒ Object
47
48
49
50
51
52
53
54
55
|
# File 'lib/gir_ffi/builder/module.rb', line 47
def build_module
unless defined? @module
build_dependencies
instantiate_module
setup_lib_for_ffi
setup_module unless already_set_up
end
@module
end
|
#build_namespaced_class(classname) ⇒ Object
38
39
40
41
42
43
44
45
|
# File 'lib/gir_ffi/builder/module.rb', line 38
def build_namespaced_class classname
info = gir.find_by_name @namespace, classname.to_s
if info.nil?
raise NameError.new(
"Class #{classname} not found in namespace #{@namespace}")
end
Builder.build_class info
end
|
#generate ⇒ Object
19
20
21
|
# File 'lib/gir_ffi/builder/module.rb', line 19
def generate
build_module
end
|
#setup_method(method) ⇒ Object
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
# File 'lib/gir_ffi/builder/module.rb', line 23
def setup_method method
go = function_introspection_data method.to_s
return false if go.nil?
modul = build_module
lib = modul.const_get(:Lib)
Builder.attach_ffi_function lib, go
definition = function_definition(go, lib)
modul.class_eval definition
true
end
|