Initial QSfera import
This commit is contained in:
+42
@@ -0,0 +1,42 @@
|
||||
//go:build arm64 && !purego
|
||||
// +build arm64,!purego
|
||||
|
||||
package base64
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
)
|
||||
|
||||
const (
|
||||
encLutSize = 16
|
||||
decLutSize = 2
|
||||
minEncodeLen = 16 * 3
|
||||
minDecodeLen = 8 * 4
|
||||
)
|
||||
|
||||
func newEncoding(encoder string) *Encoding {
|
||||
e := &Encoding{base: base64.NewEncoding(encoder)}
|
||||
e.enableEncodeARM64(encoder)
|
||||
e.enableDecodeARM64(encoder)
|
||||
return e
|
||||
}
|
||||
|
||||
func (e *Encoding) enableEncodeARM64(encoder string) {
|
||||
c62, c63 := int8(encoder[62]), int8(encoder[63])
|
||||
tab := [encLutSize]int8{
|
||||
'a' - 26, '0' - 52, '0' - 52, '0' - 52, '0' - 52, '0' - 52, '0' - 52, '0' - 52,
|
||||
'0' - 52, '0' - 52, '0' - 52, c62 - 62, c63 - 63, 'A', 0, 0,
|
||||
}
|
||||
|
||||
e.enc = encodeARM64
|
||||
e.enclut = tab
|
||||
}
|
||||
|
||||
func (e *Encoding) enableDecodeARM64(encoder string) {
|
||||
if encoder == encodeStd {
|
||||
e.dec = decodeStdARM64
|
||||
} else {
|
||||
e.dec = decodeARM64
|
||||
}
|
||||
e.declut = [decLutSize]int8{int8(encoder[62]), int8(encoder[63])}
|
||||
}
|
||||
Reference in New Issue
Block a user