Class: Ruby2CExtension::Tools::GlobalManager
- Inherits:
-
Object
- Object
- Ruby2CExtension::Tools::GlobalManager
- Defined in:
- lib/ruby2cext/tools.rb
Instance Method Summary collapse
-
#get(str, allow_reuse, register_gc) ⇒ Object
returns the var name for sym.
-
#initialize ⇒ GlobalManager
constructor
A new instance of GlobalManager.
- #to_c_code(init_fun_name = "init_globals") ⇒ Object
Constructor Details
#initialize ⇒ GlobalManager
Returns a new instance of GlobalManager.
33 34 35 36 37 |
# File 'lib/ruby2cext/tools.rb', line 33 def initialize @cnt = 0 @src = [] @reusable = {} end |
Instance Method Details
#get(str, allow_reuse, register_gc) ⇒ Object
returns the var name for sym
40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/ruby2cext/tools.rb', line 40 def get(str, allow_reuse, register_gc) if allow_reuse && (name = @reusable[str]) return name end name = "global[#{@cnt}]" @cnt += 1 @src << "#{name} = #{str};" @src << "rb_global_variable(&(#{name}));" if register_gc if allow_reuse @reusable[str] = name end name end |
#to_c_code(init_fun_name = "init_globals") ⇒ Object
54 55 56 57 58 59 60 61 |
# File 'lib/ruby2cext/tools.rb', line 54 def to_c_code(init_fun_name = "init_globals") res = [] res << "static VALUE global[#{@cnt}];" if @cnt > 0 res << "static void #{init_fun_name}() {" res.concat(@src) res << "}" res.join("\n") end |