research/hhe/gen-ptr-table

59 lines
920 B
Text
Raw Normal View History

#!/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|
sprintf("%6i", offset)
end
"{ " + formatted.join(", ") + " }"
end
puts "static hhe_action_pointer_t action_pointers[] ="
puts "{"
for name in action_func_names.sort
offsets = func_offsets(name)
print " { "
print format_func_offsets(offsets) + ", "
print name
print " },\n"
end
puts "};"
puts