class RDoc::Parser::C

def handle_method(type, var_name, meth_name, meth_body, param_count,

def handle_method(type, var_name, meth_name, meth_body, param_count,
                  source_file = nil)
  class_name = @known_classes[var_name]
  return unless class_name
  class_obj = find_class var_name, class_name
  if class_obj then
    if meth_name == "initialize" then
      meth_name = "new"
      type = "singleton_method"
    end
    meth_obj = RDoc::AnyMethod.new '', meth_name
    meth_obj.singleton = %w[singleton_method module_function].include? type
    p_count = Integer(param_count) rescue -1
    if p_count < 0 then
      meth_obj.params = "(...)"
    elsif p_count == 0
      meth_obj.params = "()"
    else
      meth_obj.params = "(" + (1..p_count).map{|i| "p#{i}"}.join(", ") + ")"
    end
    if source_file then
      file_name = File.join @file_dir, source_file
      if File.exist? file_name then
        body = (@@known_bodies[file_name] ||= File.read(file_name))
      else
        warn "unknown source #{source_file} for #{meth_name} in #{@file_name}"
      end
    else
      body = @content
    end
    if find_body(class_name, meth_body, meth_obj, body) and meth_obj.document_self then
      class_obj.add_method meth_obj
      @stats.add_method meth_obj
      meth_obj.visibility = :private if 'private_method' == type
    end
  end
end