func NewHllSketchFromSlice()

in hll/hll_sketch.go [181:222]


func NewHllSketchFromSlice(bytes []byte, checkRebuild bool) (HllSketch, error) {
	if len(bytes) < 8 {
		return nil, fmt.Errorf("input array too small: %d", len(bytes))
	}
	curMode, err := checkPreamble(bytes)
	if err != nil {
		return nil, err
	}
	if curMode == curModeHll {
		tgtHllType := extractTgtHllType(bytes)
		if tgtHllType == TgtHllTypeHll4 {
			sk, err := deserializeHll4(bytes)
			if err != nil {
				return nil, err
			}
			return newHllSketchState(sk), nil
		} else if tgtHllType == TgtHllTypeHll6 {
			return newHllSketchState(deserializeHll6(bytes)), nil
		} else {
			a := newHllSketchState(deserializeHll8(bytes))
			if checkRebuild {
				err := checkRebuildCurMinNumKxQ(a)
				if err != nil {
					return nil, err
				}
			}
			return a, nil
		}
	} else if curMode == curModeList {
		cp, err := deserializeCouponList(bytes)
		if err != nil {
			return nil, err
		}
		return newHllSketchState(cp), nil
	} else {
		chs, err := deserializeCouponHashSet(bytes)
		if err != nil {
			return nil, err
		}
		return newHllSketchState(chs), nil
	}
}