Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: expr_tree
Fetching contributors…

Cannot retrieve contributors at this time

84 lines (66 sloc) 1.883 kb
require 'erb'
SRC_DIR = "src"
MAX_ARITY = 10
TEMPLATES = %w[
org/jruby/internal/runtime/methods/DynamicMethod
org/jruby/internal/runtime/methods/DefaultMethod
org/jruby/internal/runtime/methods/InterpretedMethod
org/jruby/ast/ArgsNode
org/jruby/runtime/DynamicScope
org/jruby/runtime/Block
org/jruby/runtime/BlockBody
org/jruby/runtime/NullBlockBody
]
GENERATED_WARNING = "
////////////////////////////////////////////////////////////////////////////////
// NOTE: THIS FILE IS GENERATED! DO NOT EDIT THIS FILE!
// generated from: <%= file_src %>
// using arities: <%= arities_src %>
////////////////////////////////////////////////////////////////////////////////
"
def n_args_in(n)
", " + n_args_in_bare(n) if n > 0
end
def n_args_in_bare(n)
n_args_array(n, "IRubyObject ")
end
def n_args_out(n)
", " + n_args_out_bare(n) if n > 0
end
def n_args_out_bare(n)
n_args_array(n)
end
def n_args_ary(n)
", " + n_args_ary_bare(n)
end
def n_args_ary_bare(n)
return "IRubyObject.NULL_ARRAY" if n == 0
"new IRubyObject[] {#{n_args_array(n)}}"
end
def n_args_array(n, arg_prefix="")
(0..(n-1)).to_a.map { |i| "#{arg_prefix}arg#{i}" }.join(", ")
end
def generate(file_src, arities_src)
file_template = ERB.new(File.read(file_src))
file_template.filename = file_src
arities_template = ERB.new(File.read(arities_src))
arities_template.filename = arities_src
arity_range = 0..MAX_ARITY
generated_arities = ""
for arity in arity_range do
generated_arities << arities_template.result(binding)
end
generated_warning = ERB.new(GENERATED_WARNING).result(binding)
file_template.result(binding)
end
def generate_all
TEMPLATES.map do |name|
name = "#{SRC_DIR}/" + name
File.open(name +".java", 'w') do |f|
f.write(generate(name + ".erb", name + ".arities.erb"))
end
end
end
if $0 == __FILE__
generate_all
end
Jump to Line
Something went wrong with that request. Please try again.