whspbrd-final/typio/splco/splco.go
2026-05-02 22:09:19 +02:00

48 lines
1013 B
Go

package splco
// why doesnt Go have this built in
// 30% of AI generated code
// simple helper
import "errors"
var (
ErrDataTooShort = errors.New("data too short for specified sizes")
ErrInvalidDataLength = errors.New("data length does not match sum of specified sizes")
)
func Append(data ...[]byte) []byte {
expLen := 0
for _, b := range data {
expLen += len(b)
}
return AppendWithSize(expLen, data...)
}
func AppendWithSize(size int, data ...[]byte) []byte {
return AppendInto(make([]byte, 0, size), data...)
}
func AppendInto(dest []byte, data ...[]byte) []byte {
for _, b := range data {
dest = append(dest, b...)
}
return dest
}
func Split(data []byte, sizes ...int) ([][]byte, error) {
result := make([][]byte, len(sizes))
offset := 0
for i, size := range sizes {
if offset+size > len(data) {
return nil, ErrDataTooShort
}
result[i] = data[offset : offset+size]
offset += size
}
if offset != len(data) {
return nil, ErrInvalidDataLength
}
return result, nil
}