//
// Package hamming distance calculations in Go
//
// https://github.com/steakknife/hamming
//
// Copyright © 2014, 2015, 2016, 2018 Barry Allard
//
// MIT license
//
package hamming

// CountBitsInt8s count 1's in b
func CountBitsInt8s(b []int8) int {
	c := 0
	for _, x := range b {
		c += CountBitsInt8(x)
	}
	return c
}

// CountBitsInt16s count 1's in b
func CountBitsInt16s(b []int16) int {
	c := 0
	for _, x := range b {
		c += CountBitsInt16(x)
	}
	return c
}

// CountBitsInt32s count 1's in b
func CountBitsInt32s(b []int32) int {
	c := 0
	for _, x := range b {
		c += CountBitsInt32(x)
	}
	return c
}

// CountBitsInt64s count 1's in b
func CountBitsInt64s(b []int64) int {
	c := 0
	for _, x := range b {
		c += CountBitsInt64(x)
	}
	return c
}

// CountBitsInts count 1's in b
func CountBitsInts(b []int) int {
	c := 0
	for _, x := range b {
		c += CountBitsInt(x)
	}
	return c
}

// CountBitsUint8s count 1's in b
func CountBitsUint8s(b []uint8) int {
	c := 0
	for _, x := range b {
		c += CountBitsUint8(x)
	}
	return c
}

// CountBitsUint16s count 1's in b
func CountBitsUint16s(b []uint16) int {
	c := 0
	for _, x := range b {
		c += CountBitsUint16(x)
	}
	return c
}

// CountBitsUint32s count 1's in b
func CountBitsUint32s(b []uint32) int {
	c := 0
	for _, x := range b {
		c += CountBitsUint32(x)
	}
	return c
}

// CountBitsUint64s count 1's in b
func CountBitsUint64s(b []uint64) int {
	c := 0
	for _, x := range b {
		c += CountBitsUint64(x)
	}
	return c
}

// CountBitsUints count 1's in b
func CountBitsUints(b []uint) int {
	c := 0
	for _, x := range b {
		c += CountBitsUint(x)
	}
	return c
}

// CountBitsBytes count 1's in b
func CountBitsBytes(b []byte) int {
	c := 0
	for _, x := range b {
		c += CountBitsByte(x)
	}
	return c
}

// CountBitsRunes count 1's in b
func CountBitsRunes(b []rune) int {
	c := 0
	for _, x := range b {
		c += CountBitsRune(x)
	}
	return c
}

// CountBitsString count 1's in s
func CountBitsString(s string) int {
	return CountBitsBytes([]byte(s))
}