class RDoc::Parser::C

def handle_class_module(var_name, type, class_name, parent, in_module)

def handle_class_module(var_name, type, class_name, parent, in_module)
  parent_name = @known_classes[parent] || parent
  if in_module then
    enclosure = @classes[in_module] || @store.find_c_enclosure(in_module)
    if enclosure.nil? and enclosure = @known_classes[in_module] then
      enc_type = /^rb_m/ =~ in_module ? :module : :class
      handle_class_module in_module, enc_type, enclosure, nil, nil
      enclosure = @classes[in_module]
    end
    unless enclosure then
      @enclosure_dependencies[in_module] << var_name
      @missing_dependencies[var_name] =
        [var_name, type, class_name, parent, in_module]
      return
    end
  else
    enclosure = @top_level
  end
  if type == :class then
    full_name = if RDoc::ClassModule === enclosure then
                  enclosure.full_name + "::#{class_name}"
                else
                  class_name
                end
    if @content =~ %r%Document-class:\s+#{full_name}\s*<\s+([:,\w]+)% then
      parent_name = $1
    end
    cm = enclosure.add_class RDoc::NormalClass, class_name, parent_name
  else
    cm = enclosure.add_module RDoc::NormalModule, class_name
  end
  cm.record_location enclosure.top_level
  find_class_comment cm.full_name, cm
  case cm
  when RDoc::NormalClass
    @stats.add_class cm
  when RDoc::NormalModule
    @stats.add_module cm
  end
  @classes[var_name] = cm
  @known_classes[var_name] = cm.full_name
  @store.add_c_enclosure var_name, cm
end