aboutsummaryrefslogtreecommitdiff
path: root/core/slice
diff options
context:
space:
mode:
authorGiuliano Macedo <giuliano.programador@gmail.com>2024-12-08 16:20:09 -0300
committerGiuliano Macedo <giuliano.programador@gmail.com>2024-12-14 10:10:06 -0300
commit6785a485e3cdb330f1df4124b2ae9a1c48faff31 (patch)
tree2aa928b6aea4add486681756a54d4884a4229b96 /core/slice
parentdb1b67dabad560cae3c90d49964c2aec982cbc94 (diff)
docs: improved reinterpret docstring
Diffstat (limited to 'core/slice')
-rw-r--r--core/slice/slice.odin51
1 files changed, 35 insertions, 16 deletions
diff --git a/core/slice/slice.odin b/core/slice/slice.odin
index c31edf281..66166bddb 100644
--- a/core/slice/slice.odin
+++ b/core/slice/slice.odin
@@ -48,22 +48,41 @@ to_type :: proc(buf: []u8, $T: typeid) -> (T, bool) #optional_ok {
}
/*
- Turn a slice of one type, into a slice of another type.
-
- Only converts the type and length of the slice itself.
- The length is rounded down to the nearest whole number of items.
-
- ```
- large_items := []i64{1, 2, 3, 4}
- small_items := slice.reinterpret([]i32, large_items)
- assert(len(small_items) == 8)
- ```
- ```
- small_items := []byte{1, 0, 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0}
- large_items := slice.reinterpret([]i64, small_items)
- assert(len(large_items) == 1) // only enough bytes to make 1 x i64; two would need at least 8 bytes.
- ```
+Turn a slice of one type, into a slice of another type.
+
+Only converts the type and length of the slice itself.
+The length is rounded down to the nearest whole number of items.
+
+Example:
+
+ import "core:fmt"
+ import "core:slice"
+
+ i64s_as_i32s :: proc() {
+ large_items := []i64{1, 2, 3, 4}
+ small_items := slice.reinterpret([]i32, large_items)
+ assert(len(small_items) == 8)
+ fmt.println(large_items, "->", small_items)
+ }
+
+ bytes_as_i64s :: proc() {
+ small_items := [12]byte{}
+ small_items[0] = 1
+ small_items[8] = 2
+ large_items := slice.reinterpret([]i64, small_items[:])
+ assert(len(large_items) == 1) // only enough bytes to make 1 x i64; two would need at least 8 bytes.
+ fmt.println(small_items, "->", large_items)
+ }
+
+ reinterpret_example :: proc() {
+ i64s_as_i32s()
+ bytes_as_i64s()
+ }
+
+Output:
+ [1, 2, 3, 4] -> [1, 0, 2, 0, 3, 0, 4, 0]
+ [1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0] -> [1]
+
*/
@(require_results)
reinterpret :: proc "contextless" ($T: typeid/[]$U, s: []$V) -> []U {