class RDoc::Parser::C

def gen_const_table file_content

def gen_const_table file_content
  table = {}
  @content.scan(%r{
    (?<doc>(?>^\s*/\*.*?\*/\s+))
      rb_define_(?<type>\w+)\(\s*(?:\w+),\s*
                         "(?<name>\w+)"\s*,
                         .*?\)\s*;
  | (?<doc>(?>^\s*/\*.*?\*/\s+))
      rb_define_global_(?<type>const)\(\s*
                         "(?<name>\w+)"\s*,
                         .*?\)\s*;
  |  (?<doc>(?>^\s*/\*.*?\*/\s+))
      rb_file_(?<type>const)\(\s*
                         "(?<name>\w+)"\s*,
                         .*?\)\s*;
  |  (?<doc>(?>^\s*/\*.*?\*/\s+))
      rb_curses_define_(?<type>const)\(\s*
                         (?<name>\w+)
                         \s*\)\s*;
  | Document-(?:const|global|variable):\s
      (?<name>(?:\w+::)*\w+)
      \s*?\n(?<doc>(?>.*?\*/))
  }mxi) do
    name, doc, type = $~.values_at(:name, :doc, :type)
    if type
      table[[type, name]] = doc
    else
      table[name] = "/*\n" + doc
    end
  end
  table
end