class RDoc::Parser::C

def do_classes

def do_classes
  @content.scan(/(\w+)\s* = \s*rb_define_module\s*\(\s*"(\w+)"\s*\)/mx) do
    |var_name, class_name|
    handle_class_module(var_name, "module", class_name, nil, nil)
  end
  # The '.' lets us handle SWIG-generated files
  @content.scan(/([\w\.]+)\s* = \s*rb_define_class\s*
            \(
               \s*"(\w+)",
               \s*(\w+)\s*
            \)/mx) do |var_name, class_name, parent|
    handle_class_module(var_name, "class", class_name, parent, nil)
  end
  @content.scan(/(\w+)\s*=\s*boot_defclass\s*\(\s*"(\w+?)",\s*(\w+?)\s*\)/) do
    |var_name, class_name, parent|
    parent = nil if parent == "0"
    handle_class_module(var_name, "class", class_name, parent, nil)
  end
  @content.scan(/(\w+)\s* = \s*rb_define_module_under\s*
            \(
               \s*(\w+),
               \s*"(\w+)"
            \s*\)/mx) do |var_name, in_module, class_name|
    handle_class_module(var_name, "module", class_name, nil, in_module)
  end
  @content.scan(/([\w\.]+)\s* = \s*rb_define_class_under\s*
            \(
               \s*(\w+),
               \s*"(\w+)",
               \s*([\w\*\s\(\)\.\->]+)\s*  # for SWIG
            \s*\)/mx) do |var_name, in_module, class_name, parent|
    handle_class_module(var_name, "class", class_name, parent, in_module)
  end
end