package bytealg
import (
)
const (
offsetPPC64HasPOWER9 = unsafe.Offsetof(cpu.PPC64.IsPOWER9)
offsetRISCV64HasV = unsafe.Offsetof(cpu.RISCV64.HasV)
offsetLOONG64HasLSX = unsafe.Offsetof(cpu.Loong64.HasLSX)
offsetLOONG64HasLASX = unsafe.Offsetof(cpu.Loong64.HasLASX)
offsetS390xHasVX = unsafe.Offsetof(cpu.S390X.HasVX)
offsetX86HasSSE42 = unsafe.Offsetof(cpu.X86.HasSSE42)
offsetX86HasAVX2 = unsafe.Offsetof(cpu.X86.HasAVX2)
offsetX86HasPOPCNT = unsafe.Offsetof(cpu.X86.HasPOPCNT)
)
var MaxLen int
const PrimeRK = 16777619
func [ string | []byte]( ) (uint32, uint32) {
:= uint32(0)
for := 0; < len(); ++ {
= *PrimeRK + uint32([])
}
var , uint32 = 1, PrimeRK
for := len(); > 0; >>= 1 {
if &1 != 0 {
*=
}
*=
}
return ,
}
func [ string | []byte]( ) (uint32, uint32) {
:= uint32(0)
for := len() - 1; >= 0; -- {
= *PrimeRK + uint32([])
}
var , uint32 = 1, PrimeRK
for := len(); > 0; >>= 1 {
if &1 != 0 {
*=
}
*=
}
return ,
}
func [ string | []byte](, ) int {
, := HashStr()
:= len()
var uint32
for := 0; < ; ++ {
= *PrimeRK + uint32([])
}
if == && string([:]) == string() {
return 0
}
for := ; < len(); {
*= PrimeRK
+= uint32([])
-= * uint32([-])
++
if == && string([-:]) == string() {
return -
}
}
return -1
}
func [ string | []byte](, ) int {
, := HashStrRev()
:= len()
:= len() -
var uint32
for := len() - 1; >= ; -- {
= *PrimeRK + uint32([])
}
if == && string([:]) == string() {
return
}
for := - 1; >= 0; -- {
*= PrimeRK
+= uint32([])
-= * uint32([+])
if == && string([:+]) == string() {
return
}
}
return -1
}
func ( int) []byte