mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* tool/gen_ruby_tapset.rb: add tapset generator.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39692 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
c38469f453
commit
d71a8880b4
2 changed files with 109 additions and 0 deletions
|
@ -1,3 +1,7 @@
|
|||
Wed Mar 6 00:30:40 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
|
||||
|
||||
* tool/gen_ruby_tapset.rb: add tapset generator.
|
||||
|
||||
Wed Mar 6 03:27:43 2013 KOSAKI Motohiro <kosaki.motohiro@gmail.com>
|
||||
|
||||
* probes.d (symbol-create): change argument name `string' to
|
||||
|
|
105
tool/gen_ruby_tapset.rb
Executable file
105
tool/gen_ruby_tapset.rb
Executable file
|
@ -0,0 +1,105 @@
|
|||
#!/usr/bin/ruby
|
||||
# -*- coding: us-ascii -*-
|
||||
# usage: ./ruby gen_ruby_tapset.rb --ruby-path=/path/to/ruby probes.d > output
|
||||
|
||||
require "optparse"
|
||||
|
||||
def set_argument (argname, nth)
|
||||
# remove C style type info
|
||||
argname.gsub!(/.+ (.+)/, '\1') # e.g. char *hoge -> *hoge
|
||||
argname.gsub!(/^\*/, '') # e.g. *filename -> filename
|
||||
|
||||
"#{argname} = $arg#{nth}"
|
||||
end
|
||||
|
||||
ruby_path = "/usr/local/ruby"
|
||||
|
||||
opts = OptionParser.new
|
||||
opts.on("--ruby-path=PATH"){|v| ruby_path = v}
|
||||
opts.parse!(ARGV)
|
||||
|
||||
text = ARGF.read
|
||||
|
||||
# remove preprocessor directives
|
||||
text.gsub!(/^#.*$/, '')
|
||||
|
||||
# remove provider name
|
||||
text.gsub!(/^provider ruby \{/, "")
|
||||
text.gsub!(/^\};/, "")
|
||||
|
||||
# probename()
|
||||
text.gsub!(/probe (.+)\( *\);/) {
|
||||
probe_name = $1
|
||||
probe = <<-End
|
||||
probe #{probe_name} = process("ruby").provider("ruby").mark("#{probe_name}")
|
||||
{
|
||||
}
|
||||
End
|
||||
}
|
||||
|
||||
# probename(arg1)
|
||||
text.gsub!(/ *probe (.+)\(([^,)]+)\);/) {
|
||||
probe_name = $1
|
||||
arg1 = $2
|
||||
|
||||
probe = <<-End
|
||||
probe #{probe_name} = process("ruby").provider("ruby").mark("#{probe_name}")
|
||||
{
|
||||
#{set_argument(arg1, 1)}
|
||||
}
|
||||
End
|
||||
}
|
||||
|
||||
# probename(arg1, arg2)
|
||||
text.gsub!(/ *probe (.+)\(([^,)]+),([^,)]+)\);/) {
|
||||
probe_name = $1
|
||||
arg1 = $2
|
||||
arg2 = $3
|
||||
|
||||
probe = <<-End
|
||||
probe #{probe_name} = process("#{ruby_path}").provider("ruby").mark("#{probe_name}")
|
||||
{
|
||||
#{set_argument(arg1, 1)}
|
||||
#{set_argument(arg2, 2)}
|
||||
}
|
||||
End
|
||||
}
|
||||
|
||||
# probename(arg1, arg2, arg3)
|
||||
text.gsub!(/ *probe (.+)\(([^,)]+),([^,)]+),([^,)]+)\);/) {
|
||||
probe_name = $1
|
||||
arg1 = $2
|
||||
arg2 = $3
|
||||
arg3 = $4
|
||||
|
||||
probe = <<-End
|
||||
probe #{probe_name} = process("#{ruby_path}").provider("ruby").mark("#{probe_name}")
|
||||
{
|
||||
#{set_argument(arg1, 1)}
|
||||
#{set_argument(arg2, 2)}
|
||||
#{set_argument(arg3, 3)}
|
||||
}
|
||||
End
|
||||
}
|
||||
|
||||
# probename(arg1, arg2, arg3, arg4)
|
||||
text.gsub!(/ *probe (.+)\(([^,)]+),([^,)]+),([^,)]+),([^,)]+)\);/) {
|
||||
probe_name = $1
|
||||
arg1 = $2
|
||||
arg2 = $3
|
||||
arg3 = $4
|
||||
arg4 = $5
|
||||
|
||||
probe = <<-End
|
||||
probe #{probe_name} = process("#{ruby_path}").provider("ruby").mark("#{probe_name}")
|
||||
{
|
||||
#{set_argument(arg1, 1)}
|
||||
#{set_argument(arg2, 2)}
|
||||
#{set_argument(arg3, 3)}
|
||||
#{set_argument(arg4, 4)}
|
||||
}
|
||||
End
|
||||
}
|
||||
|
||||
print text
|
||||
|
Loading…
Reference in a new issue