func ToPackedOffsets()

in pkg/unpack/unpack.go [119:143]


func ToPackedOffsets(off, blockSize, len int64, dpw int) (start, n int64, pre, post int) {
	if dpw <= 0 {
		panic("ToPackedOffsets: zero or negative dpw")
	}
	padding := int64(dpw) - blockSize%int64(dpw)
	if padding == int64(dpw) {
		padding = 0
	}

	len += padding * ((off+len)/blockSize - off/blockSize)
	off += padding * (off / blockSize)
	start = off / int64(dpw)
	pre = int(off - start*int64(dpw))
	if len == 0 {
		n = 0
		post = 0
	} else {
		n = (len + int64(pre) + int64(dpw) - 1) / int64(dpw)
		post = int(n*int64(dpw) - (len + int64(pre)))
	}

	start *= WordSize
	n *= WordSize
	return
}