mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
tools: make v test-cleancode
test everything by default (#10050)
This commit is contained in:
@@ -23,10 +23,10 @@ mut:
|
||||
table []u32
|
||||
}
|
||||
|
||||
fn(mut c Crc32) generate_table(poly int) {
|
||||
for i in 0..256 {
|
||||
fn (mut c Crc32) generate_table(poly int) {
|
||||
for i in 0 .. 256 {
|
||||
mut crc := u32(i)
|
||||
for _ in 0..8 {
|
||||
for _ in 0 .. 8 {
|
||||
if crc & u32(1) == u32(1) {
|
||||
crc = (crc >> 1) ^ u32(poly)
|
||||
} else {
|
||||
@@ -37,15 +37,15 @@ fn(mut c Crc32) generate_table(poly int) {
|
||||
}
|
||||
}
|
||||
|
||||
fn(c &Crc32) sum32(b []byte) u32 {
|
||||
fn (c &Crc32) sum32(b []byte) u32 {
|
||||
mut crc := ~u32(0)
|
||||
for i in 0..b.len {
|
||||
crc = c.table[byte(crc)^b[i]] ^ (crc >> 8)
|
||||
for i in 0 .. b.len {
|
||||
crc = c.table[byte(crc) ^ b[i]] ^ (crc >> 8)
|
||||
}
|
||||
return ~crc
|
||||
}
|
||||
|
||||
pub fn(c &Crc32) checksum(b []byte) u32 {
|
||||
pub fn (c &Crc32) checksum(b []byte) u32 {
|
||||
return c.sum32(b)
|
||||
}
|
||||
|
||||
@@ -58,6 +58,6 @@ pub fn new(poly int) &Crc32 {
|
||||
|
||||
// calculate crc32 using ieee
|
||||
pub fn sum(b []byte) u32 {
|
||||
c := new(int(ieee))
|
||||
c := new(int(crc32.ieee))
|
||||
return c.sum32(b)
|
||||
}
|
||||
|
@@ -1,44 +1,44 @@
|
||||
module fnv1a
|
||||
|
||||
const (
|
||||
fnv64_prime = u64(1099511628211)
|
||||
fnv64_prime = u64(1099511628211)
|
||||
fnv64_offset_basis = u64(14695981039346656037)
|
||||
fnv32_offset_basis = u32(2166136261)
|
||||
fnv32_prime = u32(16777619)
|
||||
fnv32_prime = u32(16777619)
|
||||
)
|
||||
|
||||
[inline]
|
||||
pub fn sum32_string(data string) u32 {
|
||||
mut hash := fnv32_offset_basis
|
||||
for i in 0..data.len {
|
||||
hash = (hash ^ u32(data[i])) * fnv32_prime
|
||||
mut hash := fnv1a.fnv32_offset_basis
|
||||
for i in 0 .. data.len {
|
||||
hash = (hash ^ u32(data[i])) * fnv1a.fnv32_prime
|
||||
}
|
||||
return hash
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn sum32(data []byte) u32 {
|
||||
mut hash := fnv32_offset_basis
|
||||
for i in 0..data.len {
|
||||
hash = (hash ^ u32(data[i])) * fnv32_prime
|
||||
mut hash := fnv1a.fnv32_offset_basis
|
||||
for i in 0 .. data.len {
|
||||
hash = (hash ^ u32(data[i])) * fnv1a.fnv32_prime
|
||||
}
|
||||
return hash
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn sum64_string(data string) u64 {
|
||||
mut hash := fnv64_offset_basis
|
||||
for i in 0..data.len {
|
||||
hash = (hash ^ u64(data[i])) * fnv64_prime
|
||||
mut hash := fnv1a.fnv64_offset_basis
|
||||
for i in 0 .. data.len {
|
||||
hash = (hash ^ u64(data[i])) * fnv1a.fnv64_prime
|
||||
}
|
||||
return hash
|
||||
}
|
||||
|
||||
[inline]
|
||||
pub fn sum64(data []byte) u64 {
|
||||
mut hash := fnv64_offset_basis
|
||||
for i in 0..data.len {
|
||||
hash = (hash ^ u64(data[i])) * fnv64_prime
|
||||
mut hash := fnv1a.fnv64_offset_basis
|
||||
for i in 0 .. data.len {
|
||||
hash = (hash ^ u64(data[i])) * fnv1a.fnv64_prime
|
||||
}
|
||||
return hash
|
||||
}
|
||||
|
@@ -7,18 +7,10 @@ struct WyHashTest {
|
||||
}
|
||||
|
||||
fn test_wyhash() {
|
||||
tests := [WyHashTest{
|
||||
'',0,0x0},
|
||||
WyHashTest{
|
||||
'v',1,0xc72a8f8bdfdd82},
|
||||
WyHashTest{
|
||||
'is',2,0xa1099c1c58fc13e},
|
||||
WyHashTest{
|
||||
'the best',3,0x1b1215ef0b0b94c},
|
||||
WyHashTest{
|
||||
'abcdefghijklmnopqrstuvwxyz',4,0x6db0e773d1503fac},
|
||||
WyHashTest{
|
||||
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789',5,0xe062dfda99413626},
|
||||
tests := [WyHashTest{'', 0, 0x0}, WyHashTest{'v', 1, 0xc72a8f8bdfdd82},
|
||||
WyHashTest{'is', 2, 0xa1099c1c58fc13e}, WyHashTest{'the best', 3, 0x1b1215ef0b0b94c},
|
||||
WyHashTest{'abcdefghijklmnopqrstuvwxyz', 4, 0x6db0e773d1503fac},
|
||||
WyHashTest{'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', 5, 0xe062dfda99413626},
|
||||
]
|
||||
for test in tests {
|
||||
got := wyhash.sum64(test.s.bytes(), test.seed)
|
||||
|
@@ -2,11 +2,11 @@ module hash
|
||||
|
||||
//#flag -I @VEXEROOT/thirdparty/wyhash
|
||||
//#include "wyhash.h"
|
||||
fn C.wyhash(byteptr, u64, u64, &u64) u64
|
||||
fn C.wyhash(&byte, u64, u64, &u64) u64
|
||||
fn C.wyhash64(u64, u64) u64
|
||||
|
||||
[inline]
|
||||
pub fn wyhash_c(key byteptr, len u64, seed u64) u64 {
|
||||
pub fn wyhash_c(key &byte, len u64, seed u64) u64 {
|
||||
return C.wyhash(key, len, seed, &u64(C._wyp))
|
||||
}
|
||||
|
||||
|
@@ -30,39 +30,46 @@ pub fn sum64_string(key string, seed u64) u64 {
|
||||
|
||||
[inline]
|
||||
pub fn sum64(key []byte, seed u64) u64 {
|
||||
return wyhash64(byteptr(key.data), u64(key.len), seed)
|
||||
return wyhash64(&byte(key.data), u64(key.len), seed)
|
||||
}
|
||||
|
||||
[inline]
|
||||
fn wyhash64(key byteptr, len u64, seed_ u64) u64 {
|
||||
fn wyhash64(key &byte, len u64, seed_ u64) u64 {
|
||||
if len == 0 {
|
||||
return 0
|
||||
}
|
||||
mut p := key
|
||||
mut p := unsafe { key }
|
||||
mut seed := seed_
|
||||
mut i := len & 63
|
||||
seed = unsafe{match i {
|
||||
0...3 {
|
||||
wymum(wyr3(p, i) ^ seed ^ wyp0, seed ^ wyp1)
|
||||
seed = unsafe {
|
||||
match i {
|
||||
0...3 {
|
||||
wymum(wyr3(p, i) ^ seed ^ hash.wyp0, seed ^ hash.wyp1)
|
||||
}
|
||||
4...8 {
|
||||
wymum(wyr4(p) ^ seed ^ hash.wyp0, wyr4(p + i - 4) ^ seed ^ hash.wyp1)
|
||||
}
|
||||
9...16 {
|
||||
wymum(wyr8(p) ^ seed ^ hash.wyp0, wyr8(p + i - 8) ^ seed ^ hash.wyp1)
|
||||
}
|
||||
17...24 {
|
||||
wymum(wyr8(p) ^ seed ^ hash.wyp0, wyr8(p + 8) ^ seed ^ hash.wyp1) ^ wymum(wyr8(p + i - 8) ^ seed ^ hash.wyp2,
|
||||
seed ^ hash.wyp3)
|
||||
}
|
||||
25...32 {
|
||||
wymum(wyr8(p) ^ seed ^ hash.wyp0, wyr8(p + 8) ^ seed ^ hash.wyp1) ^ wymum(wyr8(p +
|
||||
16) ^ seed ^ hash.wyp2, wyr8(p + i - 8) ^ seed ^ hash.wyp3)
|
||||
}
|
||||
else {
|
||||
wymum(wyr8(p) ^ seed ^ hash.wyp0, wyr8(p + 8) ^ seed ^ hash.wyp1) ^ wymum(wyr8(p +
|
||||
16) ^ seed ^ hash.wyp2, wyr8(p + 24) ^ seed ^ hash.wyp3) ^ wymum(wyr8(p + i - 32) ^ seed ^ hash.wyp1,
|
||||
wyr8(p + i - 24) ^ seed ^ hash.wyp2) ^ wymum(wyr8(p + i - 16) ^ seed ^ hash.wyp3,
|
||||
wyr8(p + i - 8) ^ seed ^ hash.wyp0)
|
||||
}
|
||||
}
|
||||
4...8 {
|
||||
wymum(wyr4(p) ^ seed ^ wyp0, wyr4(p + i - 4) ^ seed ^ wyp1)
|
||||
}
|
||||
9...16 {
|
||||
wymum(wyr8(p) ^ seed ^ wyp0, wyr8(p + i - 8) ^ seed ^ wyp1)
|
||||
}
|
||||
17...24 {
|
||||
wymum(wyr8(p) ^ seed ^ wyp0, wyr8(p + 8) ^ seed ^ wyp1) ^ wymum(wyr8(p + i - 8) ^ seed ^ wyp2, seed ^ wyp3)
|
||||
}
|
||||
25...32 {
|
||||
wymum(wyr8(p) ^ seed ^ wyp0, wyr8(p + 8) ^ seed ^ wyp1) ^ wymum(wyr8(p + 16) ^ seed ^ wyp2, wyr8(p + i - 8) ^ seed ^ wyp3)
|
||||
}
|
||||
else {
|
||||
wymum(wyr8(p) ^ seed ^ wyp0, wyr8(p + 8) ^ seed ^ wyp1) ^ wymum(wyr8(p + 16) ^ seed ^ wyp2, wyr8(p + 24) ^ seed ^ wyp3) ^ wymum(wyr8(p + i - 32) ^ seed ^ wyp1, wyr8(p + i - 24) ^ seed ^ wyp2) ^ wymum(wyr8(p + i - 16) ^ seed ^ wyp3, wyr8(p + i - 8) ^ seed ^ wyp0)
|
||||
}
|
||||
}}
|
||||
}
|
||||
if i == len {
|
||||
return wymum(seed, len ^ wyp4)
|
||||
return wymum(seed, len ^ hash.wyp4)
|
||||
}
|
||||
mut see1 := seed
|
||||
mut see2 := seed
|
||||
@@ -70,19 +77,19 @@ fn wyhash64(key byteptr, len u64, seed_ u64) u64 {
|
||||
unsafe {
|
||||
p = p + i
|
||||
for i = len - i; i >= 64; i -= 64 {
|
||||
seed = wymum(wyr8(p) ^ seed ^ wyp0, wyr8(p + 8) ^ seed ^ wyp1)
|
||||
see1 = wymum(wyr8(p + 16) ^ see1 ^ wyp2, wyr8(p + 24) ^ see1 ^ wyp3)
|
||||
see2 = wymum(wyr8(p + 32) ^ see2 ^ wyp1, wyr8(p + 40) ^ see2 ^ wyp2)
|
||||
see3 = wymum(wyr8(p + 48) ^ see3 ^ wyp3, wyr8(p + 56) ^ see3 ^ wyp0)
|
||||
seed = wymum(wyr8(p) ^ seed ^ hash.wyp0, wyr8(p + 8) ^ seed ^ hash.wyp1)
|
||||
see1 = wymum(wyr8(p + 16) ^ see1 ^ hash.wyp2, wyr8(p + 24) ^ see1 ^ hash.wyp3)
|
||||
see2 = wymum(wyr8(p + 32) ^ see2 ^ hash.wyp1, wyr8(p + 40) ^ see2 ^ hash.wyp2)
|
||||
see3 = wymum(wyr8(p + 48) ^ see3 ^ hash.wyp3, wyr8(p + 56) ^ see3 ^ hash.wyp0)
|
||||
p = p + 64
|
||||
}
|
||||
}
|
||||
return wymum(seed ^ see1 ^ see2, see3 ^ len ^ wyp4)
|
||||
return wymum(seed ^ see1 ^ see2, see3 ^ len ^ hash.wyp4)
|
||||
}
|
||||
|
||||
[inline]
|
||||
fn wyrotr(v u64, k u32) u64 {
|
||||
return (v>>k) | (v<<(64 - k))
|
||||
return (v >> k) | (v << (64 - k))
|
||||
}
|
||||
|
||||
[inline]
|
||||
@@ -94,36 +101,36 @@ pub fn wymum(a u64, b u64) u64 {
|
||||
*/
|
||||
mask32 := u32(4294967295)
|
||||
x0 := a & mask32
|
||||
x1 := a>>32
|
||||
x1 := a >> 32
|
||||
y0 := b & mask32
|
||||
y1 := b>>32
|
||||
y1 := b >> 32
|
||||
w0 := x0 * y0
|
||||
t := x1 * y0 + (w0>>32)
|
||||
t := x1 * y0 + (w0 >> 32)
|
||||
mut w1 := t & mask32
|
||||
w2 := t>>32
|
||||
w2 := t >> 32
|
||||
w1 += x0 * y1
|
||||
hi := x1 * y1 + w2 + (w1>>32)
|
||||
hi := x1 * y1 + w2 + (w1 >> 32)
|
||||
lo := a * b
|
||||
return hi ^ lo
|
||||
}
|
||||
|
||||
[inline]
|
||||
fn wyr3(p byteptr, k u64) u64 {
|
||||
fn wyr3(p &byte, k u64) u64 {
|
||||
unsafe {
|
||||
return (u64(p[0])<<16) | (u64(p[k>>1])<<8) | u64(p[k - 1])
|
||||
return (u64(p[0]) << 16) | (u64(p[k >> 1]) << 8) | u64(p[k - 1])
|
||||
}
|
||||
}
|
||||
|
||||
[inline]
|
||||
fn wyr4(p byteptr) u64 {
|
||||
fn wyr4(p &byte) u64 {
|
||||
unsafe {
|
||||
return u32(p[0]) | (u32(p[1])<<u32(8)) | (u32(p[2])<<u32(16)) | (u32(p[3])<<u32(24))
|
||||
return u32(p[0]) | (u32(p[1]) << u32(8)) | (u32(p[2]) << u32(16)) | (u32(p[3]) << u32(24))
|
||||
}
|
||||
}
|
||||
|
||||
[inline]
|
||||
fn wyr8(p byteptr) u64 {
|
||||
fn wyr8(p &byte) u64 {
|
||||
unsafe {
|
||||
return u64(p[0]) | (u64(p[1])<<8) | (u64(p[2])<<16) | (u64(p[3])<<24) | (u64(p[4])<<32) | (u64(p[5])<<40) | (u64(p[6])<<48) | (u64(p[7])<<56)
|
||||
return u64(p[0]) | (u64(p[1]) << 8) | (u64(p[2]) << 16) | (u64(p[3]) << 24) | (u64(p[4]) << 32) | (u64(p[5]) << 40) | (u64(p[6]) << 48) | (u64(p[7]) << 56)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user