Class: Rubber::C_Module
Instance Attribute Summary collapse
#source_file, #source_line
Instance Method Summary
collapse
#cname, #register_children
Instance Attribute Details
#child_names ⇒ Object
Returns the value of attribute child_names.
5
6
7
|
# File 'lib/rubber/codegen/module.rb', line 5
def child_names
@child_names
end
|
#doc ⇒ Object
Returns the value of attribute doc.
5
6
7
|
# File 'lib/rubber/codegen/module.rb', line 5
def doc
@doc
end
|
Instance Method Details
#add_alias(from, to) ⇒ Object
41
42
43
|
# File 'lib/rubber/codegen/module.rb', line 41
def add_alias(from, to)
(@aliases ||= []) << [from, to]
end
|
#code(io) ⇒ Object
9
10
11
|
# File 'lib/rubber/codegen/module.rb', line 9
def code(io)
contents .each { |f| f.code(io) }
end
|
#contents ⇒ Object
6
7
8
|
# File 'lib/rubber/codegen/module.rb', line 6
def contents()
(functions + methods + classes)
end
|
#declare(io) ⇒ Object
12
13
14
15
|
# File 'lib/rubber/codegen/module.rb', line 12
def declare(io)
io.puts "static VALUE #{cname};" unless external?
contents .each { |f| f.declare(io) }
end
|
#default_cname ⇒ Object
17
18
19
|
# File 'lib/rubber/codegen/module.rb', line 17
def default_cname
"m"+name
end
|
#doc_rd(io) ⇒ Object
20
21
22
23
24
25
|
# File 'lib/rubber/codegen/module.rb', line 20
def doc_rd(io)
depth = (fullname.gsub(/[^:]/,'').size >> 1)
io.puts "=#{'=' * depth} module #{fullname}"
io.puts @doc if @doc
contents .each { |f| f.doc_rd(io) }
end
|
#external? ⇒ Boolean
ie. defined externally…
38
39
40
|
# File 'lib/rubber/codegen/module.rb', line 38
def external? cname == 'mGtk' || cname == 'mGdk' || cname == "mGLib"
end
|
#fullname ⇒ Object
30
31
32
33
34
35
36
37
|
# File 'lib/rubber/codegen/module.rb', line 30
def fullname()
if is_root?
name
else
"#{parent.fullname}::#{name}"
end
end
|
#get_root ⇒ Object
26
|
# File 'lib/rubber/codegen/module.rb', line 26
def get_root(); is_root? ? self : parent.get_root; end
|
#is_root? ⇒ Boolean
27
28
29
|
# File 'lib/rubber/codegen/module.rb', line 27
def is_root?()
not parent.respond_to?(:fullname)
end
|
#register(io, already_defined = false) ⇒ Object
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/rubber/codegen/module.rb', line 51
def register(io, already_defined=false)
unless external?
if parent and not parent.kind_of?(C_RootModule)
io.puts " #{cname} = rb_define_module_under(#{parent.cname}, #{name.inspect});"
else
io.puts " #{cname} = rb_define_module(#{name.inspect});"
end
end
register_children(io)
end
|
#register_aliases(io) ⇒ Object
44
45
46
47
48
49
50
|
# File 'lib/rubber/codegen/module.rb', line 44
def register_aliases(io)
if @aliases
@aliases.each do |from,to|
io.puts " rb_define_alias(#{cname},#{from.inspect},#{to.inspect});"
end
end
end
|