research/hhe/gen-ptr-table
Simon Howard 2af089c09f Add script to generate pointer table.
Subversion-branch: /research
Subversion-revision: 1892
2010-04-18 14:18:53 +00:00

61 lines
960 B
Ruby
Executable file

#!/usr/bin/env ruby
#
# Generate the table of offsets for different action pointers
# in the different Heretic versions.
#
require "common.rb"
def action_func_names
names = {}
for config in CONFIGS
config::ACTION_POINTERS.each_value do |name|
names[name] = true
end
end
names.keys
end
def get_func_offset(config, name)
config::ACTION_POINTERS.each_pair do |offset, funcname|
if name == funcname
return offset
end
end
0
end
def func_offsets(name)
CONFIGS.map do |config|
get_func_offset(config, name)
end
end
def format_func_offsets(offsets)
formatted = offsets.map do |offset|
if offset == 0
" NULL"
else
sprintf("%6i", offset)
end
end
"{ " + formatted.join(", ") + " }"
end
puts "static HHEActionPointer action_pointers[] = {"
for name in action_func_names.sort
offsets = func_offsets(name)
print " { "
print format_func_offsets(offsets) + ", "
print name.to_json
print " },\n"
end
puts "};"
puts