$words = {}
def trans(fname, lines)
  File.open(fname, "w") do |f|
    switch_i_included = false
    lines.each do |line|
      if not line =~ /^[cC\*]/
        if line =~ / include /
          if not switch_i_included
            line = "      include 'switch.i'\n" + line
            switch_i_included = true
          end
        else
          switch_i_included = false
          if fname =~ /\/switch.f/
            line.gsub! /mode\s*\(\s*\d+\s*:\s*\d+\s*\)\s*\.eq\.\s*'(\w+)'/ do
              w = "ENUM_SWITCH_#{$1}"
              "mode .eq. " + w
            end
          else
            line.gsub! /(\scall\s+switch\s*\(\s*)'(\w+)'(\s*\))/ do
              w = "ENUM_SWITCH_#{$2}"
              $words[w] = true
              $1 + w + $3
            end
          end
        end
      end
      f.print line
    end
  end
end

ARGV.each do |fname|
  lines = IO.readlines(fname)
  if lines.join("") =~ / call switch\s*\(\s*'/ or fname =~ /\/switch.f/
    p fname
    trans(fname, lines)
  end
end


File.open("source/switch.i", "w") do |f|
  $words.keys.each_with_index do |w, i|
    f.print "      integer #{w}\n      parameter (#{w}=#{i})\n"
  end
end

    
