Simplify bitset_to_enum_slice

This commit is contained in:
Jeroen van Rijn
2024-05-09 17:55:50 +02:00
parent 858c78b844
commit e5af98eabe

View File

@@ -731,18 +731,9 @@ bitset_to_enum_slice_with_buffer :: proc(buf: []$E, bs: $T) -> (slice: []E) wher
// sl := slice.bitset_to_enum_slice(bs)
@(require_results)
bitset_to_enum_slice_with_make :: proc(bs: $T, $E: typeid) -> (slice: []E) where intrinsics.type_is_enum(E), intrinsics.type_bit_set_elem_type(T) == E {
count := 0
for _ in bs {
count += 1
}
slice = make([]E, count)
i := 0
for v in bs {
slice[i] = v
i += 1
}
return
ones := intrinsics.count_ones(transmute(E)bs)
buf := make([]E, int(ones))
return bitset_to_enum_slice(buf, bs)
}
bitset_to_enum_slice :: proc{bitset_to_enum_slice_with_make, bitset_to_enum_slice_with_buffer}