Class: Emfrp::NodeDef
- Inherits:
-
Object
- Object
- Emfrp::NodeDef
- Defined in:
- lib/emfrp/compile/c/syntax_codegen.rb
Instance Method Summary collapse
- #func_gen(ct) ⇒ Object
- #init_func_gen(ct) ⇒ Object
- #init_func_name(ct) ⇒ Object
- #node_func_name(ct) ⇒ Object
- #node_var_gen(ct) ⇒ Object
- #node_var_name(ct) ⇒ Object
- #var_name(ct, name) ⇒ Object
- #var_suffix(ct) ⇒ Object
Instance Method Details
#func_gen(ct) ⇒ Object
248 249 250 251 252 253 254 255 |
# File 'lib/emfrp/compile/c/syntax_codegen.rb', line 248 def func_gen(ct) params = self[:params].map{|x| [ct.tref(x), ct.escape_name(x[:as][:desc])]} output_param = [ct.tref(self) + "*", "output"] ct.define_func("int", node_func_name(ct), params + [output_param]) do |x| x << "*output = #{self[:exp].codegen(ct, x)};" x << "return 1;" end end |
#init_func_gen(ct) ⇒ Object
257 258 259 260 261 |
# File 'lib/emfrp/compile/c/syntax_codegen.rb', line 257 def init_func_gen(ct) ct.define_func(ct.tref(self), init_func_name(ct), []) do |x| x << "return #{self[:init_exp].codegen(ct, x)};" end end |
#init_func_name(ct) ⇒ Object
267 268 269 |
# File 'lib/emfrp/compile/c/syntax_codegen.rb', line 267 def init_func_name(ct) "init_#{ct.escape_name(self[:name][:desc])}" end |
#node_func_name(ct) ⇒ Object
271 272 273 |
# File 'lib/emfrp/compile/c/syntax_codegen.rb', line 271 def node_func_name(ct) "node_#{ct.escape_name(self[:name][:desc])}" end |
#node_var_gen(ct) ⇒ Object
263 264 265 |
# File 'lib/emfrp/compile/c/syntax_codegen.rb', line 263 def node_var_gen(ct) ct.define_global_var(ct.tref(self), "#{node_var_name(ct)}[2]") end |
#node_var_name(ct) ⇒ Object
275 276 277 |
# File 'lib/emfrp/compile/c/syntax_codegen.rb', line 275 def node_var_name(ct) "node_memory_#{ct.escape_name(self[:name][:desc])}" end |
#var_name(ct, name) ⇒ Object
283 284 285 |
# File 'lib/emfrp/compile/c/syntax_codegen.rb', line 283 def var_name(ct, name) ct.escape_name(name) end |
#var_suffix(ct) ⇒ Object
279 280 281 |
# File 'lib/emfrp/compile/c/syntax_codegen.rb', line 279 def var_suffix(ct) "_nvar#{ct.serial(nil, self)}" end |