Make raw_data return [^]T types

This commit is contained in:
gingerBill
2022-05-23 11:48:05 +01:00
parent 7d2eedee73
commit 8c1499dbc2
3 changed files with 15 additions and 15 deletions
+5 -5
View File
@@ -9,8 +9,8 @@ crc32 :: proc(data: []byte, seed := u32(0)) -> u32 #no_bounds_check {
length := len(data) length := len(data)
for length != 0 && uintptr(buffer) & 7 != 0 { for length != 0 && uintptr(buffer) & 7 != 0 {
crc = crc32_table[0][byte(crc) ~ buffer^] ~ (crc >> 8) crc = crc32_table[0][byte(crc) ~ buffer[0]] ~ (crc >> 8)
buffer = intrinsics.ptr_offset(buffer, 1) buffer = buffer[1:]
length -= 1 length -= 1
} }
@@ -28,14 +28,14 @@ crc32 :: proc(data: []byte, seed := u32(0)) -> u32 #no_bounds_check {
crc32_table[1][buf[6]] ~ crc32_table[1][buf[6]] ~
crc32_table[0][buf[7]] crc32_table[0][buf[7]]
buffer = intrinsics.ptr_offset(buffer, 8) buffer = buffer[8:]
length -= 8 length -= 8
} }
for length != 0 { for length != 0 {
crc = crc32_table[0][byte(crc) ~ buffer^] ~ (crc >> 8) crc = crc32_table[0][byte(crc) ~ buffer[0]] ~ (crc >> 8)
buffer = intrinsics.ptr_offset(buffer, 1) buffer = buffer[1:]
length -= 1 length -= 1
} }
+3 -3
View File
@@ -15,7 +15,7 @@ adler32 :: proc(data: []byte, seed := u32(1)) -> u32 #no_bounds_check {
for len(buf) != 0 && uintptr(buffer) & 7 != 0 { for len(buf) != 0 && uintptr(buffer) & 7 != 0 {
a = (a + u64(buf[0])) a = (a + u64(buf[0]))
b = (b + a) b = (b + a)
buffer = intrinsics.ptr_offset(buffer, 1) buffer = buffer[1:]
buf = buf[1:] buf = buf[1:]
} }
@@ -130,9 +130,9 @@ murmur32 :: proc(data: []byte, seed := u32(0)) -> u32 {
h1: u32 = seed h1: u32 = seed
nblocks := len(data)/4 nblocks := len(data)/4
p := raw_data(data) p := raw_data(data)
p1 := mem.ptr_offset(p, 4*nblocks) p1 := p[4*nblocks:]
for ; p < p1; p = mem.ptr_offset(p, 4) { for ; p < p1; p = p[4:] {
k1 := (cast(^u32)p)^ k1 := (cast(^u32)p)^
k1 *= c1_32 k1 *= c1_32
+7 -7
View File
@@ -600,21 +600,21 @@ card :: proc(s: $S/bit_set[$E; $U]) -> int {
@builtin @builtin
raw_array_data :: proc "contextless" (a: $P/^($T/[$N]$E)) -> ^E { raw_array_data :: proc "contextless" (a: $P/^($T/[$N]$E)) -> [^]E {
return (^E)(a) return ([^]E)(a)
} }
@builtin @builtin
raw_slice_data :: proc "contextless" (s: $S/[]$E) -> ^E { raw_slice_data :: proc "contextless" (s: $S/[]$E) -> [^]E {
ptr := (transmute(Raw_Slice)s).data ptr := (transmute(Raw_Slice)s).data
return (^E)(ptr) return ([^]E)(ptr)
} }
@builtin @builtin
raw_dynamic_array_data :: proc "contextless" (s: $S/[dynamic]$E) -> ^E { raw_dynamic_array_data :: proc "contextless" (s: $S/[dynamic]$E) -> [^]E {
ptr := (transmute(Raw_Dynamic_Array)s).data ptr := (transmute(Raw_Dynamic_Array)s).data
return (^E)(ptr) return ([^]E)(ptr)
} }
@builtin @builtin
raw_string_data :: proc "contextless" (s: $S/string) -> ^u8 { raw_string_data :: proc "contextless" (s: $S/string) -> [^]u8 {
return (transmute(Raw_String)s).data return (transmute(Raw_String)s).data
} }