// Copyright 2013 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// This file provides support for parsing coverage profiles
// generated by "go test -coverprofile=cover.out".
// It is a alias of golang.org/x/tools/cover/profile.go.

package main

import (
	"golang.org/x/tools/cover"
)

// Profile represents the profiling data for a specific file.
type Profile = cover.Profile

// ProfileBlock represents a single block of profiling data.
type ProfileBlock = cover.ProfileBlock

// ParseProfiles parses profile data in the specified file and returns a
// Profile for each source file described therein.
func ParseProfiles(fileName string) ([]*Profile, error) {
	return cover.ParseProfiles(fileName)
}

// Boundary represents the position in a source file of the beginning or end of a
// block as reported by the coverage profile. In HTML mode, it will correspond to
// the opening or closing of a <span> tag and will be used to colorize the source
type Boundary = cover.Boundary
