in kll/items_sketch_validate.go [58:101]
func newItemsSketchMemoryValidate[C comparable](srcMem []byte, serde common.ItemSketchSerde[C]) (*itemsSketchMemoryValidate[C], error) {
capa := cap(srcMem)
if capa < 8 {
return nil, fmt.Errorf("Memory too small: %d", capa)
}
preInts := getPreInts(srcMem)
serVer := getSerVer(srcMem)
sketchStructure := getSketchStructure(preInts, serVer)
familyID := getFamilyID(srcMem)
if familyID != internal.FamilyEnum.Kll.Id {
return nil, fmt.Errorf("Source not KLL: %d", familyID)
}
flags := getFlags(srcMem)
k := getK(srcMem)
m := getM(srcMem)
err := checkM(m)
if err != nil {
return nil, err
}
err = checkK(k, m)
if err != nil {
return nil, err
}
//flags
emptyFlag := getEmptyFlag(srcMem)
level0SortedFlag := getLevelZeroSortedFlag(srcMem)
typeBytes := 0
vlid := &itemsSketchMemoryValidate[C]{
srcMem: srcMem,
serde: serde,
sketchStructure: sketchStructure,
preInts: preInts,
serVer: serVer,
familyID: familyID,
flags: flags,
k: k,
m: m,
emptyFlag: emptyFlag,
level0SortedFlag: level0SortedFlag,
typeBytes: typeBytes,
}
err = vlid.validate()
return vlid, err
}