#!/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