|
@@ -46,7 +46,7 @@ Returns:
|
|
|
- str: The allocated and converted string.
|
|
|
- error: An optional allocator error if one occured, `nil` otherwise.
|
|
|
*/
|
|
|
-to_string :: proc(
|
|
|
+to_string_allocated :: proc(
|
|
|
id: Identifier,
|
|
|
allocator := context.allocator,
|
|
|
loc := #caller_location,
|
|
@@ -59,3 +59,32 @@ to_string :: proc(
|
|
|
write(strings.to_writer(&builder), id)
|
|
|
return strings.to_string(builder), nil
|
|
|
}
|
|
|
+
|
|
|
+/*
|
|
|
+Convert a UUID to a string in the 8-4-4-4-12 format.
|
|
|
+
|
|
|
+Inputs:
|
|
|
+- id: The identifier to convert.
|
|
|
+- buffer: A byte buffer to store the result. Must be at least 32 bytes large.
|
|
|
+- loc: The caller location for debugging purposes (default: #caller_location)
|
|
|
+
|
|
|
+Returns:
|
|
|
+- str: The converted string which will be stored in `buffer`.
|
|
|
+*/
|
|
|
+to_string_buffer :: proc(
|
|
|
+ id: Identifier,
|
|
|
+ buffer: []byte,
|
|
|
+ loc := #caller_location,
|
|
|
+) -> (
|
|
|
+ str: string,
|
|
|
+) {
|
|
|
+ assert(len(buffer) >= EXPECTED_LENGTH, "The buffer provided is not at least 32 bytes large.", loc)
|
|
|
+ builder := strings.builder_from_bytes(buffer)
|
|
|
+ write(strings.to_writer(&builder), id)
|
|
|
+ return strings.to_string(builder)
|
|
|
+}
|
|
|
+
|
|
|
+to_string :: proc {
|
|
|
+ to_string_allocated,
|
|
|
+ to_string_buffer,
|
|
|
+}
|