class RDoc::Parser::C

def handle_constants(type, var_name, const_name, definition)

def handle_constants(type, var_name, const_name, definition)
  class_name = @known_classes[var_name]
  return unless class_name
  class_obj = find_class var_name, class_name, class_name[/::\K[^:]+\z/]
  unless class_obj then
    @options.warn 'Enclosing class or module %p is not known' % [const_name]
    return
  end
  comment = find_const_comment type, const_name, class_name
  comment.normalize
  # In the case of rb_define_const, the definition and comment are in
  # "/* definition: comment */" form.  The literal ':' and '\' characters
  # can be escaped with a backslash.
  if type.downcase == 'const' then
    if /\A(.+?)?:(?!\S)/ =~ comment.text
      new_definition, new_comment = $1, $'
      if !new_definition # Default to literal C definition
        new_definition = definition
      else
        new_definition = new_definition.gsub(/\\([\\:])/, '\1')
      end
      new_definition.sub!(/\A(\s+)/, '')
      new_comment = "#{$1}#{new_comment.lstrip}"
      new_comment = self.new_comment(new_comment, @top_level, :c)
      con = RDoc::Constant.new const_name, new_definition, new_comment
    else
      con = RDoc::Constant.new const_name, definition, comment
    end
  else
    con = RDoc::Constant.new const_name, definition, comment
  end
  con.record_location @top_level
  @stats.add_constant con
  class_obj.add_constant con
end